Added filter flags

This commit is contained in:
Quentin Renard
2024-12-23 15:33:57 +01:00
parent b09923632f
commit 25626ad96a
6 changed files with 54 additions and 0 deletions

View File

@@ -25,6 +25,11 @@ func FindFilterByName(n string) *Filter {
return newFilterFromC(C.avfilter_get_by_name(cn))
}
// https://ffmpeg.org/doxygen/7.0/structAVFilter.html#a632c76418742ad4f4dccbd4db40badd0
func (f *Filter) Flags() FilterFlags {
return FilterFlags(f.c.flags)
}
// https://ffmpeg.org/doxygen/7.0/structAVFilter.html#a28a4776f344f91055f42a4c2a1b15c0c
func (f *Filter) Name() string {
return C.GoString(f.c.name)

18
filter_flag.go Normal file
View File

@@ -0,0 +1,18 @@
package astiav
//#include <libavfilter/avfilter.h>
import "C"
// https://ffmpeg.org/doxygen/7.0/group__lavfi.html#gae6ed6c10a03508829bdf17560e3e10e5
type FilterFlag int64
const (
FilterFlagDynamicInputs = FilterFlag(C.AVFILTER_FLAG_DYNAMIC_INPUTS)
FilterFlagDynamicOutputs = FilterFlag(C.AVFILTER_FLAG_DYNAMIC_OUTPUTS)
FilterFlagSliceThreads = FilterFlag(C.AVFILTER_FLAG_SLICE_THREADS)
FilterFlagMetadataOnly = FilterFlag(C.AVFILTER_FLAG_METADATA_ONLY)
FilterFlagHardwareDevice = FilterFlag(C.AVFILTER_FLAG_HWDEVICE)
FilterFlagSupportTimelineGeneric = FilterFlag(C.AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC)
FilterFlagSupportTimelineInternal = FilterFlag(C.AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL)
FilterFlagSupportTimeline = FilterFlag(C.AVFILTER_FLAG_SUPPORT_TIMELINE)
)

View File

@@ -11,4 +11,5 @@ func TestFilter(t *testing.T) {
require.NotNil(t, f)
require.Equal(t, "format", f.Name())
require.Equal(t, "format", f.String())
require.True(t, f.Flags().Has(FilterFlagMetadataOnly))
}

View File

@@ -125,6 +125,26 @@ func (fs DictionaryFlags) Del(f DictionaryFlag) DictionaryFlags {
func (fs DictionaryFlags) Has(f DictionaryFlag) bool { return astikit.BitFlags(fs).Has(uint64(f)) }
type FilterFlags astikit.BitFlags
func NewFilterFlags(fs ...FilterFlag) FilterFlags {
o := FilterFlags(0)
for _, f := range fs {
o = o.Add(f)
}
return o
}
func (fs FilterFlags) Add(f FilterFlag) FilterFlags {
return FilterFlags(astikit.BitFlags(fs).Add(uint64(f)))
}
func (fs FilterFlags) Del(f FilterFlag) FilterFlags {
return FilterFlags(astikit.BitFlags(fs).Del(uint64(f)))
}
func (fs FilterFlags) Has(f FilterFlag) bool { return astikit.BitFlags(fs).Has(uint64(f)) }
type FilterCommandFlags astikit.BitFlags
func NewFilterCommandFlags(fs ...FilterCommandFlag) FilterCommandFlags {

View File

@@ -60,6 +60,15 @@ func TestDictionaryFlags(t *testing.T) {
require.False(t, fs.Has(DictionaryFlag(2)))
}
func TestFilterFlags(t *testing.T) {
fs := NewFilterFlags(FilterFlag(1))
require.True(t, fs.Has(FilterFlag(1)))
fs = fs.Add(FilterFlag(2))
require.True(t, fs.Has(FilterFlag(2)))
fs = fs.Del(FilterFlag(2))
require.False(t, fs.Has(FilterFlag(2)))
}
func TestFilterCommandFlags(t *testing.T) {
fs := NewFilterCommandFlags(FilterCommandFlag(1))
require.True(t, fs.Has(FilterCommandFlag(1)))

View File

@@ -20,6 +20,7 @@ var list = []listItem{
{Name: "CodecContext", Suffix: "2"},
{Name: "CodecHardwareConfigMethod"},
{Name: "Dictionary"},
{Name: "Filter"},
{Name: "FilterCommand"},
{Name: "FormatContext"},
{Name: "FormatContextCtx"},