mirror of
https://github.com/qrtc/ffmpeg-dev-go.git
synced 2025-10-04 23:33:15 +08:00
443 lines
18 KiB
Go
443 lines
18 KiB
Go
package ffmpeg
|
|
|
|
/*
|
|
#include <libavutil/opt.h>
|
|
|
|
int av_opt_set_int_list_wrap(void *obj, const char *name, void *val, uint64_t term, int flags, int size) {
|
|
if (av_int_list_length(val, term) > INT_MAX / size) {
|
|
return AVERROR(EINVAL);
|
|
}
|
|
return av_opt_set_bin(obj, name, (const uint8_t *)val, av_int_list_length(val, term) * size , flags);
|
|
}
|
|
*/
|
|
import "C"
|
|
import (
|
|
"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_CHANNEL_LAYOUT = AvOptionType(C.AV_OPT_TYPE_CHANNEL_LAYOUT)
|
|
AV_OPT_TYPE_BOOL = AvOptionType(C.AV_OPT_TYPE_BOOL)
|
|
)
|
|
|
|
type AvOption C.struct_AVOption
|
|
|
|
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)
|
|
)
|
|
|
|
type AvOptionRange C.struct_AVOptionRange
|
|
|
|
type AvOptionRanges C.struct_AVOptionRanges
|
|
|
|
// AvOptShow2 shows the obj options.
|
|
func AvOptShow2(obj, avLogObj unsafe.Pointer, reqFlags, rejFlags int32) int32 {
|
|
return (int32)(C.av_opt_show2(obj, avLogObj, (C.int)(reqFlags), (C.int)(rejFlags)))
|
|
}
|
|
|
|
// AvOptSetDefaults sets the values of all AVOption fields to their default values.
|
|
func AvOptSetDefaults(s unsafe.Pointer) {
|
|
C.av_opt_set_defaults(s)
|
|
}
|
|
|
|
// AvOptSetDefaults2 sets the values of all AVOption fields to their default values.
|
|
func AvOptSetDefaults2(s unsafe.Pointer, mask, flags int32) {
|
|
C.av_opt_set_defaults2(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 unsafe.Pointer, 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(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 unsafe.Pointer) {
|
|
C.av_opt_free(obj)
|
|
}
|
|
|
|
// AvOptFlagIsSet checks whether a particular flag is set in a flags field.
|
|
func AvOptFlagIsSet(obj unsafe.Pointer, fieldName, flagName string) int32 {
|
|
fieldNamePtr, fieldNameFunc := StringCasting(fieldName)
|
|
defer fieldNameFunc()
|
|
flagNamePtr, flagNameFunc := StringCasting(flagName)
|
|
defer flagNameFunc()
|
|
return (int32)(C.av_opt_flag_is_set(obj, (*C.char)(fieldNamePtr), (*C.char)(flagNamePtr)))
|
|
}
|
|
|
|
// AvOptSetDict sets all the options from a given dictionary on an object.
|
|
func AvOptSetDict(obj unsafe.Pointer, options **AvDictionary) int32 {
|
|
return (int32)(C.av_opt_set_dict(obj, (**C.struct_AVDictionary)(unsafe.Pointer(options))))
|
|
}
|
|
|
|
// AvOptSetDict2 sets all the options from a given dictionary on an object.
|
|
func AvOptSetDict2(obj unsafe.Pointer, options **AvDictionary, searchFlags int32) int32 {
|
|
return (int32)(C.av_opt_set_dict2(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 unsafe.Pointer, o *AvOption, val string, flags_out *int32) int32 {
|
|
valPtr, valFunc := StringCasting(val)
|
|
defer valFunc()
|
|
return (int32)(C.av_opt_eval_flags(obj, (*C.struct_AVOption)(o), (*C.char)(valPtr), (*C.int)(flags_out)))
|
|
}
|
|
|
|
// AvOptEvalInt
|
|
func AvOptEvalInt(obj unsafe.Pointer, o *AvOption, val string, int_out *int32) int32 {
|
|
valPtr, valFunc := StringCasting(val)
|
|
defer valFunc()
|
|
return (int32)(C.av_opt_eval_int(obj, (*C.struct_AVOption)(o), (*C.char)(valPtr), (*C.int)(int_out)))
|
|
}
|
|
|
|
// AvOptEvalInt64
|
|
func AvOptEvalInt64(obj unsafe.Pointer, o *AvOption, val string, int64_out *int64) int32 {
|
|
valPtr, valFunc := StringCasting(val)
|
|
defer valFunc()
|
|
return (int32)(C.av_opt_eval_int64(obj, (*C.struct_AVOption)(o), (*C.char)(valPtr), (*C.int64_t)(int64_out)))
|
|
}
|
|
|
|
// AvOptEvalFloat
|
|
func AvOptEvalFloat(obj unsafe.Pointer, o *AvOption, val string, float_out *float32) int32 {
|
|
valPtr, valFunc := StringCasting(val)
|
|
defer valFunc()
|
|
return (int32)(C.av_opt_eval_float(obj, (*C.struct_AVOption)(o), (*C.char)(valPtr), (*C.float)(float_out)))
|
|
}
|
|
|
|
// AvOptEvalDouble
|
|
func AvOptEvalDouble(obj unsafe.Pointer, o *AvOption, val string, double_out *float64) int32 {
|
|
valPtr, valFunc := StringCasting(val)
|
|
defer valFunc()
|
|
return (int32)(C.av_opt_eval_double(obj, (*C.struct_AVOption)(o), (*C.char)(valPtr), (*C.double)(double_out)))
|
|
}
|
|
|
|
// AvOptEvalQ
|
|
func AvOptEvalQ(obj unsafe.Pointer, o *AvOption, val string, q_out *AvRational) int32 {
|
|
valPtr, valFunc := StringCasting(val)
|
|
defer valFunc()
|
|
return (int32)(C.av_opt_eval_q(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 unsafe.Pointer, 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(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 unsafe.Pointer, name, unit string, optFlags, searchFlags int32,
|
|
targetObj *unsafe.Pointer) *AvOption {
|
|
namePtr, nameFunc := StringCasting(name)
|
|
defer nameFunc()
|
|
unitPtr, unitFunc := StringCasting(unit)
|
|
defer unitFunc()
|
|
return (*AvOption)(C.av_opt_find2(obj, (*C.char)(namePtr), (*C.char)(unitPtr),
|
|
(C.int)(optFlags), (C.int)(searchFlags), targetObj))
|
|
}
|
|
|
|
// AvOptNext iterates over all AVOptions belonging to obj.
|
|
func AvOptNext(obj unsafe.Pointer, prev *AvOption) *AvOption {
|
|
return (*AvOption)(C.av_opt_next(obj, (*C.struct_AVOption)(prev)))
|
|
}
|
|
|
|
// AvOptChildNext iterates over AVOptions-enabled children of obj.
|
|
func AvOptChildNext(obj, prev unsafe.Pointer) unsafe.Pointer {
|
|
return C.av_opt_child_next(obj, prev)
|
|
}
|
|
|
|
// Deprecated: Use AvOptChildClassIterate instead.
|
|
func AvOptChildClassNext(parent, prev *AvClass) *AvClass {
|
|
return (*AvClass)(C.av_opt_child_class_next((*C.struct_AVClass)(parent),
|
|
(*C.struct_AVClass)(prev)))
|
|
}
|
|
|
|
// AvOptChildClassIterate iterates over potential AVOptions-enabled children of parent.
|
|
func AvOptChildClassIterate(parent *AvClass, iter *unsafe.Pointer) *AvClass {
|
|
return (*AvClass)(C.av_opt_child_class_iterate((*C.struct_AVClass)(parent), iter))
|
|
}
|
|
|
|
// AvOptSet
|
|
func AvOptSet(obj unsafe.Pointer, 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(obj, (*C.char)(namePtr), (*C.char)(valPtr), (C.int)(searchFlags)))
|
|
}
|
|
|
|
// AvOptSetInt
|
|
func AvOptSetInt(obj unsafe.Pointer, name string, val int64, searchFlags int32) int32 {
|
|
namePtr, nameFunc := StringCasting(name)
|
|
defer nameFunc()
|
|
return (int32)(C.av_opt_set_int(obj, (*C.char)(namePtr), (C.int64_t)(val), (C.int)(searchFlags)))
|
|
}
|
|
|
|
// AvOptSetDouble
|
|
func AvOptSetDouble(obj unsafe.Pointer, name string, val float64, searchFlags int32) int32 {
|
|
namePtr, nameFunc := StringCasting(name)
|
|
defer nameFunc()
|
|
return (int32)(C.av_opt_set_double(obj, (*C.char)(namePtr), (C.double)(val), (C.int)(searchFlags)))
|
|
}
|
|
|
|
// AvOptSetQ
|
|
func AvOptSetQ(obj unsafe.Pointer, name string, val AvRational, searchFlags int32) int32 {
|
|
namePtr, nameFunc := StringCasting(name)
|
|
defer nameFunc()
|
|
return (int32)(C.av_opt_set_q(obj, (*C.char)(namePtr), (C.AVRational)(val), (C.int)(searchFlags)))
|
|
}
|
|
|
|
// AvOptSetBin
|
|
func AvOptSetBin(obj unsafe.Pointer, name string, val *uint8, size int32, searchFlags int32) int32 {
|
|
namePtr, nameFunc := StringCasting(name)
|
|
defer nameFunc()
|
|
return (int32)(C.av_opt_set_bin(obj, (*C.char)(namePtr), (*C.uint8_t)(val), (C.int)(size), (C.int)(searchFlags)))
|
|
}
|
|
|
|
// AvOptSetImageSize
|
|
func AvOptSetImageSize(obj unsafe.Pointer, name string, w, h int32, searchFlags int32) int32 {
|
|
namePtr, nameFunc := StringCasting(name)
|
|
defer nameFunc()
|
|
return (int32)(C.av_opt_set_image_size(obj, (*C.char)(namePtr), (C.int)(w), (C.int)(h), (C.int)(searchFlags)))
|
|
}
|
|
|
|
// AvOptSetPixelFmt
|
|
func AvOptSetPixelFmt(obj unsafe.Pointer, name string, fmt AvPixelFormat, searchFlags int32) int32 {
|
|
namePtr, nameFunc := StringCasting(name)
|
|
defer nameFunc()
|
|
return (int32)(C.av_opt_set_pixel_fmt(obj, (*C.char)(namePtr), (C.enum_AVPixelFormat)(fmt), (C.int)(searchFlags)))
|
|
}
|
|
|
|
// AvOptSetSampleFmt
|
|
func AvOptSetSampleFmt(obj unsafe.Pointer, name string, fmt AvSampleFormat, searchFlags int32) int32 {
|
|
namePtr, nameFunc := StringCasting(name)
|
|
defer nameFunc()
|
|
return (int32)(C.av_opt_set_sample_fmt(obj, (*C.char)(namePtr), (C.enum_AVSampleFormat)(fmt), (C.int)(searchFlags)))
|
|
}
|
|
|
|
// AvOptSetVideoRate
|
|
func AvOptSetVideoRate(obj unsafe.Pointer, name string, val AvRational, searchFlags int32) int32 {
|
|
namePtr, nameFunc := StringCasting(name)
|
|
defer nameFunc()
|
|
return (int32)(C.av_opt_set_video_rate(obj, (*C.char)(namePtr), (C.struct_AVRational)(val), (C.int)(searchFlags)))
|
|
}
|
|
|
|
// AvOptSetChannelLayout
|
|
func AvOptSetChannelLayout(obj unsafe.Pointer, name string, chLayout int64, searchFlags int32) int32 {
|
|
namePtr, nameFunc := StringCasting(name)
|
|
defer nameFunc()
|
|
return (int32)(C.av_opt_set_channel_layout(obj, (*C.char)(namePtr), (C.int64_t)(chLayout), (C.int)(searchFlags)))
|
|
}
|
|
|
|
// AvOptSetDictVal
|
|
func AvOptSetDictVal(obj unsafe.Pointer, name string, val *AvDictionary, searchFlags int32) int32 {
|
|
namePtr, nameFunc := StringCasting(name)
|
|
defer nameFunc()
|
|
return (int32)(C.av_opt_set_dict_val(obj, (*C.char)(namePtr), (*C.struct_AVDictionary)(val), (C.int)(searchFlags)))
|
|
}
|
|
|
|
// AvOptSetIntList sets a binary option to an integer list.
|
|
func av_opt_set_int_list[T HelperInteger](obj unsafe.Pointer, name string,
|
|
val *T, term uint64, flags int32) int32 {
|
|
namePtr, nameFunc := StringCasting(name)
|
|
defer nameFunc()
|
|
size := (int32)(unsafe.Sizeof(*val))
|
|
return (int32)(C.av_opt_set_int_list_wrap(obj, (*C.char)(namePtr),
|
|
unsafe.Pointer(val), (C.uint64_t)(term), (C.int)(flags), (C.int)(size)))
|
|
}
|
|
|
|
// AvOptGet
|
|
func AvOptGet(obj unsafe.Pointer, name string, searchFlags int32, outVal **uint8) int32 {
|
|
namePtr, nameFunc := StringCasting(name)
|
|
defer nameFunc()
|
|
return (int32)(C.av_opt_get(obj, (*C.char)(namePtr), (C.int)(searchFlags),
|
|
(**C.uint8_t)(unsafe.Pointer(outVal))))
|
|
}
|
|
|
|
// AvOptGetInt
|
|
func AvOptGetInt(obj unsafe.Pointer, name string, searchFlags int32, outVal *int64) int32 {
|
|
namePtr, nameFunc := StringCasting(name)
|
|
defer nameFunc()
|
|
return (int32)(C.av_opt_get_int(obj, (*C.char)(namePtr), (C.int)(searchFlags), (*C.int64_t)(outVal)))
|
|
}
|
|
|
|
// AvOptGetDouble
|
|
func AvOptGetDouble(obj unsafe.Pointer, name string, searchFlags int32, outVal *float64) int32 {
|
|
namePtr, nameFunc := StringCasting(name)
|
|
defer nameFunc()
|
|
return (int32)(C.av_opt_get_double(obj, (*C.char)(namePtr), (C.int)(searchFlags), (*C.double)(outVal)))
|
|
}
|
|
|
|
// AvOptGetQ
|
|
func AvOptGetQ(obj unsafe.Pointer, name string, searchFlags int32, outVal *AvRational) int32 {
|
|
namePtr, nameFunc := StringCasting(name)
|
|
defer nameFunc()
|
|
return (int32)(C.av_opt_get_q(obj, (*C.char)(namePtr), (C.int)(searchFlags), (*C.struct_AVRational)(outVal)))
|
|
}
|
|
|
|
// AvOptGetImageSize
|
|
func AvOptGetImageSize(obj unsafe.Pointer, name string, searchFlags int32, wOut, hOut *int32) int32 {
|
|
namePtr, nameFunc := StringCasting(name)
|
|
defer nameFunc()
|
|
return (int32)(C.av_opt_get_image_size(obj, (*C.char)(namePtr), (C.int)(searchFlags), (*C.int)(wOut), (*C.int)(hOut)))
|
|
}
|
|
|
|
// AvOptGetPixelFmt
|
|
func AvOptGetPixelFmt(obj unsafe.Pointer, name string, searchFlags int32, outFmt *AvPixelFormat) int32 {
|
|
namePtr, nameFunc := StringCasting(name)
|
|
defer nameFunc()
|
|
return (int32)(C.av_opt_get_pixel_fmt(obj, (*C.char)(namePtr), (C.int)(searchFlags), (*C.enum_AVPixelFormat)(outFmt)))
|
|
}
|
|
|
|
// AvOptGetSampleFmt
|
|
func AvOptGetSampleFmt(obj unsafe.Pointer, name string, searchFlags int32, outFmt *AvSampleFormat) int32 {
|
|
namePtr, nameFunc := StringCasting(name)
|
|
defer nameFunc()
|
|
return (int32)(C.av_opt_get_sample_fmt(obj, (*C.char)(namePtr), (C.int)(searchFlags), (*C.enum_AVSampleFormat)(outFmt)))
|
|
}
|
|
|
|
// AvOptGetVideoRate
|
|
func AvOptGetVideoRate(obj unsafe.Pointer, name string, searchFlags int32, outVal *AvRational) int32 {
|
|
namePtr, nameFunc := StringCasting(name)
|
|
defer nameFunc()
|
|
return (int32)(C.av_opt_get_video_rate(obj, (*C.char)(namePtr), (C.int)(searchFlags), (*C.struct_AVRational)(outVal)))
|
|
}
|
|
|
|
// AvOptGetChannelLayout
|
|
func AvOptGetChannelLayout(obj unsafe.Pointer, name string, searchFlags int32, outVal *int64) int32 {
|
|
namePtr, nameFunc := StringCasting(name)
|
|
defer nameFunc()
|
|
return (int32)(C.av_opt_get_channel_layout(obj, (*C.char)(namePtr), (C.int)(searchFlags), (*C.int64_t)(outVal)))
|
|
}
|
|
|
|
// AvOptGetDictVal
|
|
func AvOptGetDictVal(obj unsafe.Pointer, name string, searchFlags int32, outVal **AvDictionary) int32 {
|
|
namePtr, nameFunc := StringCasting(name)
|
|
defer nameFunc()
|
|
return (int32)(C.av_opt_get_dict_val(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 unsafe.Pointer, name string) {
|
|
namePtr, nameFunc := StringCasting(name)
|
|
defer nameFunc()
|
|
C.av_opt_ptr((*C.struct_AVClass)(avclass), 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 unsafe.Pointer, key string, flags int32) int32 {
|
|
keyPtr, keyFunc := StringCasting(key)
|
|
defer keyFunc()
|
|
return (int32)(C.av_opt_query_ranges((**C.struct_AVOptionRanges)(unsafe.Pointer(ranges)),
|
|
obj, (*C.char)(keyPtr), (C.int)(flags)))
|
|
}
|
|
|
|
// AvOptCopy copies options from src object into dest object.
|
|
func AvOptCopy(dest, src unsafe.Pointer) int32 {
|
|
return (int32)(C.av_opt_copy(dest, src))
|
|
}
|
|
|
|
// AvOptQueryRangesDefault gets a default list of allowed ranges for the given option.
|
|
func AvOptQueryRangesDefault(ranges **AvOptionRanges, obj unsafe.Pointer, 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)),
|
|
obj, (*C.char)(keyPtr), (C.int)(flags)))
|
|
}
|
|
|
|
// AvOptIsSetToDefault checks if given option is set to its default value.
|
|
func AvOptIsSetToDefault(obj unsafe.Pointer, o *AvOption) int32 {
|
|
return (int32)(C.av_opt_is_set_to_default(obj, (*C.struct_AVOption)(o)))
|
|
}
|
|
|
|
// AvOptIsSetToDefaultByName checks if given option is set to its default value.
|
|
func AvOptIsSetToDefaultByName(obj unsafe.Pointer, name string, searchFlags int32) int32 {
|
|
namePtr, nameFunc := StringCasting(name)
|
|
defer nameFunc()
|
|
return (int32)(C.av_opt_is_set_to_default_by_name(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 unsafe.Pointer, 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(obj, (C.int)(optFlags), (C.int)(flags),
|
|
(**C.char)(unsafe.Pointer(&buffer)), (C.char)(*keyValSepPtr), (C.char)(*pairsSepPtr)))
|
|
return C.GoString(buffer), ret
|
|
}
|