Made it possible for each encoder to add its own parameters.
Added preset option for libx264.
This commit is contained in:
@@ -1,7 +1,20 @@
|
||||
package encoder
|
||||
|
||||
import "errors"
|
||||
|
||||
type EncoderContract interface {
|
||||
GetName() string
|
||||
GetParams() []string
|
||||
GetParameter(name string) (ParameterContract, error)
|
||||
}
|
||||
|
||||
type ParameterContract interface {
|
||||
GetName() string
|
||||
Set(string) error
|
||||
Get() string
|
||||
IsEnabled() bool
|
||||
SetEnable()
|
||||
SetDisable()
|
||||
}
|
||||
|
||||
type EncoderDataContract interface {
|
||||
@@ -77,3 +90,80 @@ func GetListFileType() []FileTypeContract {
|
||||
FileType(Image),
|
||||
}
|
||||
}
|
||||
|
||||
type Encoder struct {
|
||||
name string
|
||||
parameters map[string]ParameterContract
|
||||
getParams func(parameters map[string]ParameterContract) []string
|
||||
}
|
||||
|
||||
func NewEncoder(name string, parameters map[string]ParameterContract, getParams func(parameters map[string]ParameterContract) []string) *Encoder {
|
||||
return &Encoder{
|
||||
name: name,
|
||||
parameters: parameters,
|
||||
getParams: getParams,
|
||||
}
|
||||
}
|
||||
|
||||
func (e *Encoder) GetName() string {
|
||||
return e.name
|
||||
}
|
||||
|
||||
func (e *Encoder) GetParams() []string {
|
||||
return e.getParams(e.parameters)
|
||||
}
|
||||
|
||||
func (e *Encoder) GetParameter(name string) (ParameterContract, error) {
|
||||
if e.parameters[name] == nil {
|
||||
return nil, errors.New("parameter not found")
|
||||
}
|
||||
|
||||
return e.parameters[name], nil
|
||||
}
|
||||
|
||||
type Parameter struct {
|
||||
name string
|
||||
isEnabled bool
|
||||
parameter string
|
||||
setParameter func(string) (string, error)
|
||||
}
|
||||
|
||||
func NewParameter(name string, isEnabled bool, defaultParameter string, setParameter func(string) (string, error)) *Parameter {
|
||||
return &Parameter{
|
||||
name: name,
|
||||
isEnabled: isEnabled,
|
||||
parameter: defaultParameter,
|
||||
setParameter: setParameter,
|
||||
}
|
||||
}
|
||||
|
||||
func (p *Parameter) GetName() string {
|
||||
return p.name
|
||||
}
|
||||
|
||||
func (p *Parameter) Set(s string) (err error) {
|
||||
if p.setParameter != nil {
|
||||
s, err = p.setParameter(s)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
p.parameter = s
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *Parameter) Get() string {
|
||||
return p.parameter
|
||||
}
|
||||
|
||||
func (p *Parameter) IsEnabled() bool {
|
||||
return p.isEnabled
|
||||
}
|
||||
|
||||
func (p *Parameter) SetEnable() {
|
||||
p.isEnabled = true
|
||||
}
|
||||
|
||||
func (p *Parameter) SetDisable() {
|
||||
p.isEnabled = false
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user