Files
ffmpeg-dev-go/avutil_opt.go
2024-04-08 11:52:34 +08:00

809 lines
28 KiB
Go

// Copyright (c) 2023 QRTC. All rights reserved.
// Use of this source code is governed by a MIT
// license that can be found in the LICENSE file.
package ffmpeg
/*
#include <libavutil/opt.h>
int64_t get_av_option_default_val_i64(AVOption *opt) {
return opt->default_val.i64;
}
void set_av_option_default_val_i64(AVOption *opt, int64_t v) {
opt->default_val.i64 = v;
}
int64_t* get_av_option_default_val_i64_addr(AVOption *opt) {
return &opt->default_val.i64;
}
double get_av_option_default_val_dbl(AVOption *opt) {
return opt->default_val.dbl;
}
void set_av_option_default_val_dbl(AVOption *opt, double v) {
opt->default_val.dbl = v;
}
double* get_av_option_default_val_dbl_addr(AVOption *opt) {
return &opt->default_val.dbl;
}
const char* get_av_option_default_val_str(AVOption *opt) {
return opt->default_val.str;
}
void set_av_option_default_val_str(AVOption *opt, const char* v) {
opt->default_val.str = v;
}
const char** get_av_option_default_val_str_addr(AVOption *opt) {
return &opt->default_val.str;
}
AVRational get_av_option_default_val_q(AVOption *opt) {
return opt->default_val.q;
}
void set_av_option_default_val_q(AVOption *opt, AVRational v) {
opt->default_val.q = v;
}
AVRational* get_av_option_default_val_q_addr(AVOption *opt) {
return &opt->default_val.q;
}
*/
import "C"
import (
"math"
"syscall"
"unsafe"
)
// AVOptionType
type AVOptionType = int32
const (
AV_OPT_TYPE_FLAGS = AVOptionType(C.AV_OPT_TYPE_FLAGS)
AV_OPT_TYPE_INT = AVOptionType(C.AV_OPT_TYPE_INT)
AV_OPT_TYPE_INT64 = AVOptionType(C.AV_OPT_TYPE_INT64)
AV_OPT_TYPE_DOUBLE = AVOptionType(C.AV_OPT_TYPE_DOUBLE)
AV_OPT_TYPE_FLOAT = AVOptionType(C.AV_OPT_TYPE_FLOAT)
AV_OPT_TYPE_STRING = AVOptionType(C.AV_OPT_TYPE_STRING)
AV_OPT_TYPE_RATIONAL = AVOptionType(C.AV_OPT_TYPE_RATIONAL)
AV_OPT_TYPE_BINARY = AVOptionType(C.AV_OPT_TYPE_BINARY)
AV_OPT_TYPE_DICT = AVOptionType(C.AV_OPT_TYPE_DICT)
AV_OPT_TYPE_UINT64 = AVOptionType(C.AV_OPT_TYPE_UINT64)
AV_OPT_TYPE_CONST = AVOptionType(C.AV_OPT_TYPE_CONST)
AV_OPT_TYPE_IMAGE_SIZE = AVOptionType(C.AV_OPT_TYPE_IMAGE_SIZE)
AV_OPT_TYPE_PIXEL_FMT = AVOptionType(C.AV_OPT_TYPE_PIXEL_FMT)
AV_OPT_TYPE_SAMPLE_FMT = AVOptionType(C.AV_OPT_TYPE_SAMPLE_FMT)
AV_OPT_TYPE_VIDEO_RATE = AVOptionType(C.AV_OPT_TYPE_VIDEO_RATE)
AV_OPT_TYPE_DURATION = AVOptionType(C.AV_OPT_TYPE_DURATION)
AV_OPT_TYPE_COLOR = AVOptionType(C.AV_OPT_TYPE_COLOR)
AV_OPT_TYPE_BOOL = AVOptionType(C.AV_OPT_TYPE_BOOL)
AV_OPT_TYPE_CHLAYOUT = AVOptionType(C.AV_OPT_TYPE_CHLAYOUT)
AV_OPT_TYPE_FLAG_ARRAY = AVOptionType(C.AV_OPT_TYPE_FLAG_ARRAY)
)
// AVOptionArrayDef
type AVOptionArrayDef C.struct_AVOptionArrayDef
// GetDef gets `AVOptionArrayDef.def` value.
func (oadf *AVOptionArrayDef) GetDef() string {
return C.GoString(oadf.def)
}
// GetSizeMin gets `AVOptionArrayDef.siz` value.
func (oadf *AVOptionArrayDef) GetSizeMin() uint32 {
return (uint32)(oadf.size_min)
}
// SetSizeMin sets `AVOptionArrayDef.siz` value.
func (oadf *AVOptionArrayDef) SetSizeMin(v uint32) {
oadf.size_min = (C.uint)(v)
}
// GetSizeMinAddr gets `AVOptionArrayDef.siz` address.
func (oadf *AVOptionArrayDef) GetSizeMinAddr() *uint32 {
return (*uint32)(&oadf.size_min)
}
// GetSizeMax gets `AVOptionArrayDef.siz` value.
func (oadf *AVOptionArrayDef) GetSizeMax() uint32 {
return (uint32)(oadf.size_max)
}
// SetSizeMax sets `AVOptionArrayDef.siz` value.
func (oadf *AVOptionArrayDef) SetSizeMax(v uint32) {
oadf.size_max = (C.uint)(v)
}
// GetSizeMaxAddr gets `AVOptionArrayDef.siz` address.
func (oadf *AVOptionArrayDef) GetSizeMaxAddr() *uint32 {
return (*uint32)(&oadf.size_max)
}
// GetSep gets `AVOptionArrayDef.sep` value.
func (oadf *AVOptionArrayDef) GetSep() string {
return C.GoStringN(&oadf.sep, 1)
}
// SetSep sets `AVOptionArrayDef.sep` value.
func (oadf *AVOptionArrayDef) SetSep(v string) {
SepPtr, SepFunc := StringCasting(v)
defer SepFunc()
oadf.sep = (C.char)(*SepPtr)
}
// AVOption
type AVOption C.struct_AVOption
// GetName gets `AVOption.name` value.
func (opt *AVOption) GetName() string {
return C.GoString(opt.name)
}
// GetHelp gets `AVOption.help` value.
func (opt *AVOption) GetHelp() string {
return C.GoString(opt.help)
}
// GetOffset gets `AVOption.offset` value.
func (opt *AVOption) GetOffset() int32 {
return (int32)(opt.offset)
}
// SetOffset sets `AVOption.offset` value.
func (opt *AVOption) SetOffset(v int32) {
opt.offset = (C.int)(v)
}
// GetOffsetAddr gets `AVOption.offset` address.
func (opt *AVOption) GetOffsetAddr() *int32 {
return (*int32)(&opt.offset)
}
// GetType gets `AVOption.type` value.
func (opt *AVOption) GetType() AVOptionType {
return (AVOptionType)(opt._type)
}
// SetType sets `AVOption.type` value.
func (opt *AVOption) SetType(v AVOptionType) {
opt._type = (C.enum_AVOptionType)(v)
}
// GetTypeAddr gets `AVOption.type` address.
func (opt *AVOption) GetTypeAddr() *AVOptionType {
return (*AVOptionType)(unsafe.Pointer(&opt._type))
}
// GetDefaultValI64 gets `AVOption.default_val.i64` value.
func (opt *AVOption) GetDefaultValI64() int64 {
return (int64)(C.get_av_option_default_val_i64((*C.struct_AVOption)(opt)))
}
// SetDefaultValI64 sets `AVOption.default_val.i64` value.
func (opt *AVOption) SetDefaultValI64(v int64) {
C.set_av_option_default_val_i64((*C.struct_AVOption)(opt), (C.int64_t)(v))
}
// GetDefaultValI64Addr gets `AVOption.default_val.i64` address.
func (opt *AVOption) GetDefaultValI64Addr() *int64 {
return (*int64)(C.get_av_option_default_val_i64_addr((*C.struct_AVOption)(opt)))
}
// GetDefaultValDbl gets `AVOption.default_val.dbl` value.
func (opt *AVOption) GetDefaultValDbl() float64 {
return (float64)(C.get_av_option_default_val_dbl((*C.struct_AVOption)(opt)))
}
// SetDefaultValDbl sets `AVOption.default_val.dbl` value.
func (opt *AVOption) SetDefaultValDbl(v float64) {
C.set_av_option_default_val_dbl((*C.struct_AVOption)(opt), (C.double)(v))
}
// GetDefaultValDblAddr gets `AVOption.default_val.dbl` address.
func (opt *AVOption) GetDefaultValDblAddr() *float64 {
return (*float64)(C.get_av_option_default_val_dbl_addr((*C.struct_AVOption)(opt)))
}
// GetDefaultValStr gets `AVOption.default_val.str` value.
func (opt *AVOption) GetDefaultValStr() string {
return C.GoString(C.get_av_option_default_val_str((*C.struct_AVOption)(opt)))
}
// SetDefaultValStr sets `AVOption.default_val.str` value.
func (opt *AVOption) SetDefaultValStr(v *int8) {
C.set_av_option_default_val_str((*C.struct_AVOption)(opt), (*C.char)(v))
}
// GetDefaultValStrAddr gets `AVOption.default_val.str` address.
func (opt *AVOption) GetDefaultValStrAddr() **int8 {
return (**int8)(unsafe.Pointer(C.get_av_option_default_val_str_addr((*C.struct_AVOption)(opt))))
}
// GetDefaultValQ gets `AVOption.default_val.q` value.
func (opt *AVOption) GetDefaultValQ() AVRational {
return (AVRational)(C.get_av_option_default_val_q((*C.struct_AVOption)(opt)))
}
// SetDefaultValQ sets `AVOption.default_val.q` value.
func (opt *AVOption) SetDefaultValQ(v AVRational) {
C.set_av_option_default_val_q((*C.struct_AVOption)(opt), (C.struct_AVRational)(v))
}
// GetDefaultValQAddr gets `AVOption.default_val.q` address.
func (opt *AVOption) GetDefaultValQAddr() *AVRational {
return (*AVRational)(C.get_av_option_default_val_q_addr((*C.struct_AVOption)(opt)))
}
// GetMin gets `AVOption.min` value.
func (opt *AVOption) GetMin() float64 {
return (float64)(opt.min)
}
// SetMin sets `AVOption.min` value.
func (opt *AVOption) SetMin(v float64) {
opt.min = (C.double)(v)
}
// GetMinAddr gets `AVOption.min` address.
func (opt *AVOption) GetMinAddr() *float64 {
return (*float64)(&opt.min)
}
// GetMax gets `AVOption.max` value.
func (opt *AVOption) GetMax() float64 {
return (float64)(opt.max)
}
// SetMax sets `AVOption.max` value.
func (opt *AVOption) SetMax(v float64) {
opt.max = (C.double)(v)
}
// GetMaxAddr gets `AVOption.max` address.
func (opt *AVOption) GetMaxAddr() *float64 {
return (*float64)(&opt.max)
}
// GetFlags gets `AVOption.flags` value.
func (opt *AVOption) GetFlags() int32 {
return (int32)(opt.flags)
}
// SetFlags sets `AVOption.flags` value.
func (opt *AVOption) SetFlags(v int32) {
opt.flags = (C.int)(v)
}
// GetFlagsAddr gets `AVOption.flags` address.
func (opt *AVOption) GetFlagsAddr() *int32 {
return (*int32)(&opt.flags)
}
const (
AV_OPT_FLAG_ENCODING_PARAM = int32(C.AV_OPT_FLAG_ENCODING_PARAM)
AV_OPT_FLAG_DECODING_PARAM = int32(C.AV_OPT_FLAG_DECODING_PARAM)
AV_OPT_FLAG_AUDIO_PARAM = int32(C.AV_OPT_FLAG_AUDIO_PARAM)
AV_OPT_FLAG_VIDEO_PARAM = int32(C.AV_OPT_FLAG_VIDEO_PARAM)
AV_OPT_FLAG_SUBTITLE_PARAM = int32(C.AV_OPT_FLAG_SUBTITLE_PARAM)
AV_OPT_FLAG_EXPORT = int32(C.AV_OPT_FLAG_EXPORT)
AV_OPT_FLAG_READONLY = int32(C.AV_OPT_FLAG_READONLY)
AV_OPT_FLAG_BSF_PARAM = int32(C.AV_OPT_FLAG_BSF_PARAM)
AV_OPT_FLAG_RUNTIME_PARAM = int32(C.AV_OPT_FLAG_RUNTIME_PARAM)
AV_OPT_FLAG_FILTERING_PARAM = int32(C.AV_OPT_FLAG_FILTERING_PARAM)
AV_OPT_FLAG_DEPRECATED = int32(C.AV_OPT_FLAG_DEPRECATED)
AV_OPT_FLAG_CHILD_CONSTS = int32(C.AV_OPT_FLAG_CHILD_CONSTS)
)
// GetUnit gets `AVOption.unit` value.
func (opt *AVOption) GetUnit() string {
return C.GoString(opt.unit)
}
// AVOptionRange
type AVOptionRange C.struct_AVOptionRange
// GetStr gets `AVOptionRange.str` value.
func (optr *AVOptionRange) GetStr() string {
return C.GoString(optr.str)
}
// GetValueMin gets `AVOptionRange.value_min` value.
func (optr *AVOptionRange) GetValueMin() float64 {
return (float64)(optr.value_min)
}
// SetValueMin sets `AVOptionRange.value_min` value.
func (optr *AVOptionRange) SetValueMin(v float64) {
optr.value_min = (C.double)(v)
}
// GetValueMinAddr gets `AVOptionRange.value_min` address.
func (optr *AVOptionRange) GetValueMinAddr() *float64 {
return (*float64)(&optr.value_min)
}
// GetValueMax gets `AVOptionRange.value_max` value.
func (optr *AVOptionRange) GetValueMax() float64 {
return (float64)(optr.value_max)
}
// SetValueMax sets `AVOptionRange.value_max` value.
func (optr *AVOptionRange) SetValueMax(v float64) {
optr.value_max = (C.double)(v)
}
// GetValueMaxAddr gets `AVOptionRange.value_max` address.
func (optr *AVOptionRange) GetValueMaxAddr() *float64 {
return (*float64)(&optr.value_max)
}
// GetComponentMin gets `AVOptionRange.component_min` value.
func (optr *AVOptionRange) GetComponentMin() float64 {
return (float64)(optr.component_min)
}
// SetComponentMin sets `AVOptionRange.component_min` value.
func (optr *AVOptionRange) SetComponentMin(v float64) {
optr.component_min = (C.double)(v)
}
// GetComponentMinAddr gets `AVOptionRange.component_min` address.
func (optr *AVOptionRange) GetComponentMinAddr() *float64 {
return (*float64)(&optr.component_min)
}
// GetComponentMax gets `AVOptionRange.component_max` value.
func (optr *AVOptionRange) GetComponentMax() float64 {
return (float64)(optr.component_max)
}
// SetComponentMax sets `AVOptionRange.component_max` value.
func (optr *AVOptionRange) SetComponentMax(v float64) {
optr.component_max = (C.double)(v)
}
// GetComponentMaxAddr gets `AVOptionRange.component_max` address.
func (optr *AVOptionRange) GetComponentMaxAddr() *float64 {
return (*float64)(&optr.component_max)
}
// GetIsRange gets `AVOptionRange.isrange` value.
func (optr *AVOptionRange) GetIsRange() int32 {
return (int32)(optr.is_range)
}
// SetIsRange sets `AVOptionRange.isrange` value.
func (optr *AVOptionRange) SetIsRange(v int32) {
optr.is_range = (C.int)(v)
}
// GetIsRangeAddr gets `AVOptionRange.isrange` address.
func (optr *AVOptionRange) GetIsRangeAddr() *int32 {
return (*int32)(&optr.is_range)
}
// AVOptionRanges
type AVOptionRanges C.struct_AVOptionRanges
// GetRange gets `AVOptionRanges.range` value.
func (optrs *AVOptionRanges) GetRange() []*AVOptionRange {
return unsafe.Slice((**AVOptionRange)(unsafe.Pointer(optrs._range)),
optrs.nb_components*optrs.nb_ranges)
}
// GetNbRanges gets `AVOptionRanges.nb_ranges` value.
func (optrs *AVOptionRanges) GetNbRanges() int32 {
return (int32)(optrs.nb_ranges)
}
// GetNbComponents gets `AVOptionRanges.nb_components` value.
func (optrs *AVOptionRanges) GetNbComponents() int32 {
return (int32)(optrs.nb_components)
}
// AvOptShow2 shows the obj options.
func AvOptShow2(obj, avLogObj CVoidPointer, reqFlags, rejFlags int32) int32 {
return (int32)(C.av_opt_show2(VoidPointer(obj), VoidPointer(avLogObj), (C.int)(reqFlags), (C.int)(rejFlags)))
}
// AvOptSetDefaults sets the values of all AVOption fields to their default values.
func AvOptSetDefaults(s CVoidPointer) {
C.av_opt_set_defaults(VoidPointer(s))
}
// AvOptSetDefaults2 sets the values of all AVOption fields to their default values.
func AvOptSetDefaults2(s CVoidPointer, mask, flags int32) {
C.av_opt_set_defaults2(VoidPointer(s), (C.int)(mask), (C.int)(flags))
}
// AvSetOptionsString parses the key/value pairs list in opts. For each key/value pair
// found, stores the value in the field in ctx that is named like the
// key. ctx must be an AVClass context, storing is done using AVOptions.
func AvSetOptionsString(ctx CVoidPointer, opts, keyValSep, pairsSep string) int32 {
optsPtr, optsFunc := StringCasting(opts)
defer optsFunc()
keyValSepPtr, keyValSepFunc := StringCasting(keyValSep)
defer keyValSepFunc()
pairsSepPtr, pairsSepFunc := StringCasting(pairsSep)
defer pairsSepFunc()
return (int32)(C.av_set_options_string(VoidPointer(ctx), (*C.char)(optsPtr),
(*C.char)(keyValSepPtr), (*C.char)(pairsSepPtr)))
}
// NONEED: av_opt_set_from_string
// AvOptFree frees all allocated objects in obj.
func AvOptFree(obj CVoidPointer) {
C.av_opt_free(VoidPointer(obj))
}
// AvOptFlagIsSet checks whether a particular flag is set in a flags field.
func AvOptFlagIsSet(obj CVoidPointer, fieldName, flagName string) int32 {
fieldNamePtr, fieldNameFunc := StringCasting(fieldName)
defer fieldNameFunc()
flagNamePtr, flagNameFunc := StringCasting(flagName)
defer flagNameFunc()
return (int32)(C.av_opt_flag_is_set(VoidPointer(obj), (*C.char)(fieldNamePtr), (*C.char)(flagNamePtr)))
}
// AvOptSetDict sets all the options from a given dictionary on an object.
func AvOptSetDict(obj CVoidPointer, options **AVDictionary) int32 {
return (int32)(C.av_opt_set_dict(VoidPointer(obj), (**C.struct_AVDictionary)(unsafe.Pointer(options))))
}
// AvOptSetDict2 sets all the options from a given dictionary on an object.
func AvOptSetDict2(obj CVoidPointer, options **AVDictionary, searchFlags int32) int32 {
return (int32)(C.av_opt_set_dict2(VoidPointer(obj), (**C.struct_AVDictionary)(unsafe.Pointer(options)),
(C.int)(searchFlags)))
}
// NONEED: av_opt_get_key_value
const (
AV_OPT_FLAG_IMPLICIT_KEY = int32(C.AV_OPT_FLAG_IMPLICIT_KEY)
)
// AvOptEvalFlags
func AvOptEvalFlags(obj CVoidPointer, o *AVOption, val string, flags_out *int32) int32 {
valPtr, valFunc := StringCasting(val)
defer valFunc()
return (int32)(C.av_opt_eval_flags(VoidPointer(obj), (*C.struct_AVOption)(o), (*C.char)(valPtr), (*C.int)(flags_out)))
}
// AvOptEvalInt
func AvOptEvalInt(obj CVoidPointer, o *AVOption, val string, int_out *int32) int32 {
valPtr, valFunc := StringCasting(val)
defer valFunc()
return (int32)(C.av_opt_eval_int(VoidPointer(obj), (*C.struct_AVOption)(o), (*C.char)(valPtr), (*C.int)(int_out)))
}
// AvOptEvalInt64
func AvOptEvalInt64(obj CVoidPointer, o *AVOption, val string, int64_out *int64) int32 {
valPtr, valFunc := StringCasting(val)
defer valFunc()
return (int32)(C.av_opt_eval_int64(VoidPointer(obj), (*C.struct_AVOption)(o), (*C.char)(valPtr), (*C.int64_t)(int64_out)))
}
// AvOptEvalFloat
func AvOptEvalFloat(obj CVoidPointer, o *AVOption, val string, float_out *float32) int32 {
valPtr, valFunc := StringCasting(val)
defer valFunc()
return (int32)(C.av_opt_eval_float(VoidPointer(obj), (*C.struct_AVOption)(o), (*C.char)(valPtr), (*C.float)(float_out)))
}
// AvOptEvalDouble
func AvOptEvalDouble(obj CVoidPointer, o *AVOption, val string, double_out *float64) int32 {
valPtr, valFunc := StringCasting(val)
defer valFunc()
return (int32)(C.av_opt_eval_double(VoidPointer(obj), (*C.struct_AVOption)(o), (*C.char)(valPtr), (*C.double)(double_out)))
}
// AvOptEvalQ
func AvOptEvalQ(obj CVoidPointer, o *AVOption, val string, q_out *AVRational) int32 {
valPtr, valFunc := StringCasting(val)
defer valFunc()
return (int32)(C.av_opt_eval_q(VoidPointer(obj), (*C.struct_AVOption)(o), (*C.char)(valPtr), (*C.struct_AVRational)(q_out)))
}
const (
AV_OPT_SEARCH_CHILDREN = C.AV_OPT_SEARCH_CHILDREN
AV_OPT_SEARCH_FAKE_OBJ = C.AV_OPT_SEARCH_FAKE_OBJ
AV_OPT_ALLOW_NULL = C.AV_OPT_ALLOW_NULL
AV_OPT_MULTI_COMPONENT_RANGE = C.AV_OPT_MULTI_COMPONENT_RANGE
)
// AvOptFind looks for an option in an object. Consider only options which
// have all the specified flags set.
func AvOptFind(obj CVoidPointer, name, unit string, optFlags, searchFlags int32) *AVOption {
namePtr, nameFunc := StringCasting(name)
defer nameFunc()
unitPtr, unitFunc := StringCasting(unit)
defer unitFunc()
return (*AVOption)(C.av_opt_find(VoidPointer(obj), (*C.char)(namePtr), (*C.char)(unitPtr),
(C.int)(optFlags), (C.int)(searchFlags)))
}
// AvOptFind2 looks for an option in an object. Consider only options which
// have all the specified flags set.
func AvOptFind2(obj CVoidPointer, name, unit string, optFlags, searchFlags int32,
targetObj CVoidPointerPointer) *AVOption {
namePtr, nameFunc := StringCasting(name)
defer nameFunc()
unitPtr, unitFunc := StringCasting(unit)
defer unitFunc()
return (*AVOption)(C.av_opt_find2(VoidPointer(obj), (*C.char)(namePtr), (*C.char)(unitPtr),
(C.int)(optFlags), (C.int)(searchFlags), VoidPointerPointer(targetObj)))
}
// AvOptNext iterates over all AVOptions belonging to obj.
func AvOptNext(obj CVoidPointer, prev *AVOption) *AVOption {
return (*AVOption)(C.av_opt_next(VoidPointer(obj), (*C.struct_AVOption)(prev)))
}
// AvOptChildNext iterates over AVOptions-enabled children of obj.
func AvOptChildNext(obj, prev CVoidPointer) unsafe.Pointer {
return C.av_opt_child_next(VoidPointer(obj), VoidPointer(prev))
}
// AvOptChildClassIterate iterates over potential AVOptions-enabled children of parent.
func AvOptChildClassIterate(parent *AVClass, iter CVoidPointerPointer) *AVClass {
return (*AVClass)(C.av_opt_child_class_iterate((*C.struct_AVClass)(parent), VoidPointerPointer(iter)))
}
// AvOptSet
func AvOptSet(obj CVoidPointer, name string, val string, searchFlags int32) int32 {
namePtr, nameFunc := StringCasting(name)
defer nameFunc()
valPtr, valFunc := StringCasting(val)
defer valFunc()
return (int32)(C.av_opt_set(VoidPointer(obj), (*C.char)(namePtr),
(*C.char)(valPtr), (C.int)(searchFlags)))
}
// AvOptSetInt
func AvOptSetInt[T Integer](obj CVoidPointer, name string, val T, searchFlags int32) int32 {
namePtr, nameFunc := StringCasting(name)
defer nameFunc()
return (int32)(C.av_opt_set_int(VoidPointer(obj), (*C.char)(namePtr),
(C.int64_t)(val), (C.int)(searchFlags)))
}
// AvOptSetDouble
func AvOptSetDouble(obj CVoidPointer, name string, val float64, searchFlags int32) int32 {
namePtr, nameFunc := StringCasting(name)
defer nameFunc()
return (int32)(C.av_opt_set_double(VoidPointer(obj), (*C.char)(namePtr),
(C.double)(val), (C.int)(searchFlags)))
}
// AvOptSetQ
func AvOptSetQ(obj CVoidPointer, name string, val AVRational, searchFlags int32) int32 {
namePtr, nameFunc := StringCasting(name)
defer nameFunc()
return (int32)(C.av_opt_set_q(VoidPointer(obj), (*C.char)(namePtr),
(C.struct_AVRational)(val), (C.int)(searchFlags)))
}
// AvOptSetBin
func AvOptSetBin[U any, V Integer](obj CVoidPointer, name string, val *U, size V, searchFlags int32) int32 {
namePtr, nameFunc := StringCasting(name)
defer nameFunc()
return (int32)(C.av_opt_set_bin(VoidPointer(obj), (*C.char)(namePtr),
(*C.uint8_t)(unsafe.Pointer(val)), (C.int)(size), (C.int)(searchFlags)))
}
// AvOptSetImageSize
func AvOptSetImageSize(obj CVoidPointer, name string, w, h int32, searchFlags int32) int32 {
namePtr, nameFunc := StringCasting(name)
defer nameFunc()
return (int32)(C.av_opt_set_image_size(VoidPointer(obj), (*C.char)(namePtr),
(C.int)(w), (C.int)(h), (C.int)(searchFlags)))
}
// AvOptSetPixelFmt
func AvOptSetPixelFmt(obj CVoidPointer, name string, fmt AVPixelFormat, searchFlags int32) int32 {
namePtr, nameFunc := StringCasting(name)
defer nameFunc()
return (int32)(C.av_opt_set_pixel_fmt(VoidPointer(obj), (*C.char)(namePtr),
(C.enum_AVPixelFormat)(fmt), (C.int)(searchFlags)))
}
// AvOptSetSampleFmt
func AvOptSetSampleFmt(obj CVoidPointer, name string, fmt AVSampleFormat, searchFlags int32) int32 {
namePtr, nameFunc := StringCasting(name)
defer nameFunc()
return (int32)(C.av_opt_set_sample_fmt(VoidPointer(obj), (*C.char)(namePtr),
(C.enum_AVSampleFormat)(fmt), (C.int)(searchFlags)))
}
// AvOptSetVideoRate
func AvOptSetVideoRate(obj CVoidPointer, name string, val AVRational, searchFlags int32) int32 {
namePtr, nameFunc := StringCasting(name)
defer nameFunc()
return (int32)(C.av_opt_set_video_rate(VoidPointer(obj), (*C.char)(namePtr),
(C.struct_AVRational)(val), (C.int)(searchFlags)))
}
// AvOptSetChlayout
func AvOptSetChlayout(obj CVoidPointer, name string, layout *AVChannelLayout, searchFlags int32) int32 {
namePtr, nameFunc := StringCasting(name)
defer nameFunc()
return (int32)(C.av_opt_set_chlayout(VoidPointer(obj), (*C.char)(namePtr),
(*C.struct_AVChannelLayout)(layout), (C.int)(searchFlags)))
}
// AvOptSetDictVal
func AvOptSetDictVal(obj CVoidPointer, name string, val *AVDictionary, searchFlags int32) int32 {
namePtr, nameFunc := StringCasting(name)
defer nameFunc()
return (int32)(C.av_opt_set_dict_val(VoidPointer(obj), (*C.char)(namePtr),
(*C.struct_AVDictionary)(val), (C.int)(searchFlags)))
}
// AvOptSetIntList sets a binary option to an integer list.
func AvOptSetIntList[U, V Integer](obj CVoidPointer, name string,
val *U, term V, flags int32) int32 {
namePtr, nameFunc := StringCasting(name)
defer nameFunc()
elmSize := (uint32)(unsafe.Sizeof(*val))
lstSize := AvIntListLengthForSize(elmSize, val, term)
if lstSize > uint32(math.MaxInt32)/elmSize {
return AVERROR(syscall.EINVAL)
}
return (int32)(C.av_opt_set_bin(VoidPointer(obj), (*C.char)(namePtr),
(*C.uint8_t)(unsafe.Pointer(val)), (C.int)(elmSize*lstSize), (C.int)(flags)))
}
// AvOptGet
func AvOptGet(obj CVoidPointer, name string, searchFlags int32, outVal **uint8) int32 {
namePtr, nameFunc := StringCasting(name)
defer nameFunc()
return (int32)(C.av_opt_get(VoidPointer(obj), (*C.char)(namePtr), (C.int)(searchFlags),
(**C.uint8_t)(unsafe.Pointer(outVal))))
}
// AvOptGetInt
func AvOptGetInt(obj CVoidPointer, name string, searchFlags int32, outVal *int64) int32 {
namePtr, nameFunc := StringCasting(name)
defer nameFunc()
return (int32)(C.av_opt_get_int(VoidPointer(obj), (*C.char)(namePtr),
(C.int)(searchFlags), (*C.int64_t)(outVal)))
}
// AvOptGetDouble
func AvOptGetDouble(obj CVoidPointer, name string, searchFlags int32, outVal *float64) int32 {
namePtr, nameFunc := StringCasting(name)
defer nameFunc()
return (int32)(C.av_opt_get_double(VoidPointer(obj), (*C.char)(namePtr),
(C.int)(searchFlags), (*C.double)(outVal)))
}
// AvOptGetQ
func AvOptGetQ(obj CVoidPointer, name string, searchFlags int32, outVal *AVRational) int32 {
namePtr, nameFunc := StringCasting(name)
defer nameFunc()
return (int32)(C.av_opt_get_q(VoidPointer(obj), (*C.char)(namePtr),
(C.int)(searchFlags), (*C.struct_AVRational)(outVal)))
}
// AvOptGetImageSize
func AvOptGetImageSize(obj CVoidPointer, name string, searchFlags int32, wOut, hOut *int32) int32 {
namePtr, nameFunc := StringCasting(name)
defer nameFunc()
return (int32)(C.av_opt_get_image_size(VoidPointer(obj), (*C.char)(namePtr),
(C.int)(searchFlags), (*C.int)(wOut), (*C.int)(hOut)))
}
// AvOptGetPixelFmt
func AvOptGetPixelFmt(obj CVoidPointer, name string, searchFlags int32, outFmt *AVPixelFormat) int32 {
namePtr, nameFunc := StringCasting(name)
defer nameFunc()
return (int32)(C.av_opt_get_pixel_fmt(VoidPointer(obj), (*C.char)(namePtr),
(C.int)(searchFlags), (*C.enum_AVPixelFormat)(outFmt)))
}
// AvOptGetSampleFmt
func AvOptGetSampleFmt(obj CVoidPointer, name string, searchFlags int32, outFmt *AVSampleFormat) int32 {
namePtr, nameFunc := StringCasting(name)
defer nameFunc()
return (int32)(C.av_opt_get_sample_fmt(VoidPointer(obj), (*C.char)(namePtr),
(C.int)(searchFlags), (*C.enum_AVSampleFormat)(outFmt)))
}
// AvOptGetVideoRate
func AvOptGetVideoRate(obj CVoidPointer, name string, searchFlags int32, outVal *AVRational) int32 {
namePtr, nameFunc := StringCasting(name)
defer nameFunc()
return (int32)(C.av_opt_get_video_rate(VoidPointer(obj), (*C.char)(namePtr),
(C.int)(searchFlags), (*C.struct_AVRational)(outVal)))
}
// AvOptGetChlayout
func AvOptGetChlayout(obj CVoidPointer, name string, searchFlags int32, layout *AVChannelLayout) int32 {
namePtr, nameFunc := StringCasting(name)
defer nameFunc()
return (int32)(C.av_opt_get_chlayout(VoidPointer(obj), (*C.char)(namePtr),
(C.int)(searchFlags), (*C.struct_AVChannelLayout)(layout)))
}
// AvOptGetDictVal
func AvOptGetDictVal(obj CVoidPointer, name string, searchFlags int32, outVal **AVDictionary) int32 {
namePtr, nameFunc := StringCasting(name)
defer nameFunc()
return (int32)(C.av_opt_get_dict_val(VoidPointer(obj), (*C.char)(namePtr),
(C.int)(searchFlags), (**C.struct_AVDictionary)(unsafe.Pointer(outVal))))
}
// AvOptPtr gets a pointer to the requested field in a struct.
func AvOptPtr(avclass *AVClass, obj CVoidPointer, name string) {
namePtr, nameFunc := StringCasting(name)
defer nameFunc()
C.av_opt_ptr((*C.struct_AVClass)(avclass), VoidPointer(obj), (*C.char)(namePtr))
}
// AvOptFreepRanges frees an AVOptionRanges struct and set it to NULL.
func AvOptFreepRanges(ranges **AVOptionRanges) {
C.av_opt_freep_ranges((**C.struct_AVOptionRanges)(unsafe.Pointer(ranges)))
}
// AvOptQueryRanges gets a list of allowed ranges for the given option.
func AvOptQueryRanges(ranges **AVOptionRanges, obj CVoidPointer, key string, flags int32) int32 {
keyPtr, keyFunc := StringCasting(key)
defer keyFunc()
return (int32)(C.av_opt_query_ranges((**C.struct_AVOptionRanges)(unsafe.Pointer(ranges)),
VoidPointer(obj), (*C.char)(keyPtr), (C.int)(flags)))
}
// AvOptCopy copies options from src object into dest object.
func AvOptCopy(dest, src CVoidPointer) int32 {
return (int32)(C.av_opt_copy(VoidPointer(dest), VoidPointer(src)))
}
// AvOptQueryRangesDefault gets a default list of allowed ranges for the given option.
func AvOptQueryRangesDefault(ranges **AVOptionRanges, obj CVoidPointer, key string, flags int32) int32 {
keyPtr, keyFunc := StringCasting(key)
defer keyFunc()
return (int32)(C.av_opt_query_ranges_default((**C.struct_AVOptionRanges)(unsafe.Pointer(ranges)),
VoidPointer(obj), (*C.char)(keyPtr), (C.int)(flags)))
}
// AvOptIsSetToDefault checks if given option is set to its default value.
func AvOptIsSetToDefault(obj CVoidPointer, o *AVOption) int32 {
return (int32)(C.av_opt_is_set_to_default(VoidPointer(obj), (*C.struct_AVOption)(o)))
}
// AvOptIsSetToDefaultByName checks if given option is set to its default value.
func AvOptIsSetToDefaultByName(obj CVoidPointer, name string, searchFlags int32) int32 {
namePtr, nameFunc := StringCasting(name)
defer nameFunc()
return (int32)(C.av_opt_is_set_to_default_by_name(VoidPointer(obj), (*C.char)(namePtr), (C.int)(searchFlags)))
}
const (
AV_OPT_SERIALIZE_SKIP_DEFAULTS = int32(C.AV_OPT_SERIALIZE_SKIP_DEFAULTS)
AV_OPT_SERIALIZE_OPT_FLAGS_EXACT = int32(C.AV_OPT_SERIALIZE_OPT_FLAGS_EXACT)
)
// AvOptSerialize serializes object's options.
func AvOptSerialize(obj CVoidPointer, optFlags, flags int32, keyValSep, pairsSep string) (output string, ret int32) {
var buffer *C.char
keyValSepPtr, keyValSepFunc := StringCasting(keyValSep)
defer keyValSepFunc()
pairsSepPtr, pairsSepFunc := StringCasting(pairsSep)
defer pairsSepFunc()
ret = (int32)(C.av_opt_serialize(VoidPointer(obj), (C.int)(optFlags), (C.int)(flags),
(**C.char)(unsafe.Pointer(&buffer)), (C.char)(*keyValSepPtr), (C.char)(*pairsSepPtr)))
return C.GoString(buffer), ret
}