mirror of
https://github.com/asticode/go-astiav.git
synced 2025-09-26 20:21:15 +08:00
Added error recognition flags
This commit is contained in:
@@ -140,6 +140,16 @@ func (cc *CodecContext) SetColorTransferCharacteristic(tc ColorTransferCharacter
|
||||
cc.c.color_trc = C.enum_AVColorTransferCharacteristic(tc)
|
||||
}
|
||||
|
||||
// https://ffmpeg.org/doxygen/7.0/structAVCodecContext.html#af9978d9bd6ac80a494ef1b78fe1d004f
|
||||
func (cc *CodecContext) ErrorRecognitionFlags() ErrorRecognitionFlags {
|
||||
return ErrorRecognitionFlags(cc.c.err_recognition)
|
||||
}
|
||||
|
||||
// https://ffmpeg.org/doxygen/7.0/structAVCodecContext.html#af9978d9bd6ac80a494ef1b78fe1d004f
|
||||
func (cc *CodecContext) SetErrorRecognitionFlags(fs ErrorRecognitionFlags) {
|
||||
cc.c.err_recognition = C.int(fs)
|
||||
}
|
||||
|
||||
// https://ffmpeg.org/doxygen/7.0/structAVCodecContext.html#abe964316aaaa61967b012efdcced79c4
|
||||
func (cc *CodecContext) ExtraData() []byte {
|
||||
return bytesFromC(func(size *C.size_t) *C.uint8_t {
|
||||
|
@@ -87,6 +87,7 @@ func TestCodecContext(t *testing.T) {
|
||||
cc4.SetColorRange(ColorRangeJpeg)
|
||||
cc4.SetColorSpace(ColorSpaceBt2020Cl)
|
||||
cc4.SetColorTransferCharacteristic(ColorTransferCharacteristicAribStdB67)
|
||||
cc4.SetErrorRecognitionFlags(NewErrorRecognitionFlags(ErrorRecognitionFlagAggressive))
|
||||
cc4.SetFlags(NewCodecContextFlags(4))
|
||||
cc4.SetFlags2(NewCodecContextFlags2(5))
|
||||
cc4.SetFramerate(NewRational(6, 1))
|
||||
@@ -115,6 +116,7 @@ func TestCodecContext(t *testing.T) {
|
||||
require.Equal(t, ColorRangeJpeg, cc4.ColorRange())
|
||||
require.Equal(t, ColorSpaceBt2020Cl, cc4.ColorSpace())
|
||||
require.Equal(t, ColorTransferCharacteristicAribStdB67, cc4.ColorTransferCharacteristic())
|
||||
require.True(t, cc4.ErrorRecognitionFlags().Has(ErrorRecognitionFlagAggressive))
|
||||
require.Equal(t, NewCodecContextFlags(4), cc4.Flags())
|
||||
require.Equal(t, NewCodecContextFlags2(5), cc4.Flags2())
|
||||
require.Equal(t, NewRational(6, 1), cc4.Framerate())
|
||||
|
18
error_recognition_flag.go
Normal file
18
error_recognition_flag.go
Normal file
@@ -0,0 +1,18 @@
|
||||
package astiav
|
||||
|
||||
//#include <libavcodec/defs.h>
|
||||
import "C"
|
||||
|
||||
// https://ffmpeg.org/doxygen/7.0/defs_8h.html#a16258b3283a3d34c893dd9a39e29e369
|
||||
type ErrorRecognitionFlag int64
|
||||
|
||||
const (
|
||||
ErrorRecognitionFlagAggressive = ErrorRecognitionFlag(C.AV_EF_AGGRESSIVE)
|
||||
ErrorRecognitionFlagBitstream = ErrorRecognitionFlag(C.AV_EF_BITSTREAM)
|
||||
ErrorRecognitionFlagBuffer = ErrorRecognitionFlag(C.AV_EF_BUFFER)
|
||||
ErrorRecognitionFlagCareful = ErrorRecognitionFlag(C.AV_EF_CAREFUL)
|
||||
ErrorRecognitionFlagCompliant = ErrorRecognitionFlag(C.AV_EF_COMPLIANT)
|
||||
ErrorRecognitionFlagCRCCheck = ErrorRecognitionFlag(C.AV_EF_CRCCHECK)
|
||||
ErrorRecognitionFlagExplode = ErrorRecognitionFlag(C.AV_EF_EXPLODE)
|
||||
ErrorRecognitionFlagIgnoreErr = ErrorRecognitionFlag(C.AV_EF_IGNORE_ERR)
|
||||
)
|
20
flags.go
20
flags.go
@@ -145,6 +145,26 @@ func (fs DispositionFlags) Del(f DispositionFlag) DispositionFlags {
|
||||
|
||||
func (fs DispositionFlags) Has(f DispositionFlag) bool { return astikit.BitFlags(fs).Has(uint64(f)) }
|
||||
|
||||
type ErrorRecognitionFlags astikit.BitFlags
|
||||
|
||||
func NewErrorRecognitionFlags(fs ...ErrorRecognitionFlag) ErrorRecognitionFlags {
|
||||
o := ErrorRecognitionFlags(0)
|
||||
for _, f := range fs {
|
||||
o = o.Add(f)
|
||||
}
|
||||
return o
|
||||
}
|
||||
|
||||
func (fs ErrorRecognitionFlags) Add(f ErrorRecognitionFlag) ErrorRecognitionFlags {
|
||||
return ErrorRecognitionFlags(astikit.BitFlags(fs).Add(uint64(f)))
|
||||
}
|
||||
|
||||
func (fs ErrorRecognitionFlags) Del(f ErrorRecognitionFlag) ErrorRecognitionFlags {
|
||||
return ErrorRecognitionFlags(astikit.BitFlags(fs).Del(uint64(f)))
|
||||
}
|
||||
|
||||
func (fs ErrorRecognitionFlags) Has(f ErrorRecognitionFlag) bool { return astikit.BitFlags(fs).Has(uint64(f)) }
|
||||
|
||||
type FilterFlags astikit.BitFlags
|
||||
|
||||
func NewFilterFlags(fs ...FilterFlag) FilterFlags {
|
||||
|
@@ -69,6 +69,15 @@ func TestDispositionFlags(t *testing.T) {
|
||||
require.False(t, fs.Has(DispositionFlag(2)))
|
||||
}
|
||||
|
||||
func TestErrorRecognitionFlags(t *testing.T) {
|
||||
fs := NewErrorRecognitionFlags(ErrorRecognitionFlag(1))
|
||||
require.True(t, fs.Has(ErrorRecognitionFlag(1)))
|
||||
fs = fs.Add(ErrorRecognitionFlag(2))
|
||||
require.True(t, fs.Has(ErrorRecognitionFlag(2)))
|
||||
fs = fs.Del(ErrorRecognitionFlag(2))
|
||||
require.False(t, fs.Has(ErrorRecognitionFlag(2)))
|
||||
}
|
||||
|
||||
func TestFilterFlags(t *testing.T) {
|
||||
fs := NewFilterFlags(FilterFlag(1))
|
||||
require.True(t, fs.Has(FilterFlag(1)))
|
||||
|
@@ -21,6 +21,7 @@ var list = []listItem{
|
||||
{Name: "CodecHardwareConfigMethod"},
|
||||
{Name: "Dictionary"},
|
||||
{Name: "Disposition"},
|
||||
{Name: "ErrorRecognition"},
|
||||
{Name: "Filter"},
|
||||
{Name: "FilterCommand"},
|
||||
{Name: "FormatContext"},
|
||||
|
Reference in New Issue
Block a user