Updated frame/packet side data Get() signature

This commit is contained in:
Quentin Renard
2025-03-15 17:17:49 +01:00
parent 584153d458
commit eb1dc676fe
4 changed files with 33 additions and 25 deletions

View File

@@ -58,10 +58,10 @@ func (d *frameSideDataRegionsOfInterest) Add(rois []RegionOfInterest) error {
return nil return nil
} }
func (d *frameSideDataRegionsOfInterest) Get() ([]RegionOfInterest, error) { func (d *frameSideDataRegionsOfInterest) Get() ([]RegionOfInterest, bool) {
sd := C.av_frame_side_data_get(*d.d.sd, *d.d.size, C.AV_FRAME_DATA_REGIONS_OF_INTEREST) sd := C.av_frame_side_data_get(*d.d.sd, *d.d.size, C.AV_FRAME_DATA_REGIONS_OF_INTEREST)
if sd == nil { if sd == nil {
return nil, nil return nil, false
} }
crois := d.data(sd) crois := d.data(sd)
@@ -75,5 +75,5 @@ func (d *frameSideDataRegionsOfInterest) Get() ([]RegionOfInterest, error) {
Top: int(crois[i].top), Top: int(crois[i].top),
} }
} }
return rois, nil return rois, true
} }

View File

@@ -24,8 +24,8 @@ func testFrameSideData(sd *FrameSideData, t *testing.T) {
}, },
} }
require.NoError(t, sd.RegionsOfInterest().Add(rois1)) require.NoError(t, sd.RegionsOfInterest().Add(rois1))
rois2, err := sd.RegionsOfInterest().Get() rois2, ok := sd.RegionsOfInterest().Get()
require.NoError(t, err) require.True(t, ok)
require.Equal(t, rois1, rois2) require.Equal(t, rois1, rois2)
} }
@@ -35,8 +35,8 @@ func TestFrameSideData(t *testing.T) {
defer f.Free() defer f.Free()
sd := f.SideData() sd := f.SideData()
rois1, err := sd.RegionsOfInterest().Get() rois1, ok := sd.RegionsOfInterest().Get()
require.NoError(t, err) require.False(t, ok)
require.Nil(t, rois1) require.Nil(t, rois1)
rois1 = []RegionOfInterest{ rois1 = []RegionOfInterest{
{ {
@@ -55,7 +55,7 @@ func TestFrameSideData(t *testing.T) {
}, },
} }
require.NoError(t, sd.RegionsOfInterest().Add(rois1)) require.NoError(t, sd.RegionsOfInterest().Add(rois1))
rois2, err := sd.RegionsOfInterest().Get() rois2, ok := sd.RegionsOfInterest().Get()
require.NoError(t, err) require.True(t, ok)
require.Equal(t, rois1, rois2) require.Equal(t, rois1, rois2)
} }

View File

@@ -38,12 +38,16 @@ func (d *packetSideDataDisplayMatrix) Add(m *DisplayMatrix) error {
return d.d.addBytes(C.AV_PKT_DATA_DISPLAYMATRIX, m.bytes()) return d.d.addBytes(C.AV_PKT_DATA_DISPLAYMATRIX, m.bytes())
} }
func (d *packetSideDataDisplayMatrix) Get() (*DisplayMatrix, error) { func (d *packetSideDataDisplayMatrix) Get() (*DisplayMatrix, bool) {
b := d.d.getBytes(C.AV_PKT_DATA_DISPLAYMATRIX) b := d.d.getBytes(C.AV_PKT_DATA_DISPLAYMATRIX)
if len(b) == 0 { if len(b) == 0 {
return nil, nil return nil, false
} }
return newDisplayMatrixFromBytes(b) m, err := newDisplayMatrixFromBytes(b)
if err != nil {
return nil, false
}
return m, true
} }
// https://ffmpeg.org/doxygen/7.0/group__lavc__packet__side__data.html#gga9a80bfcacc586b483a973272800edb97a2093332d8086d25a04942ede61007f6a // https://ffmpeg.org/doxygen/7.0/group__lavc__packet__side__data.html#gga9a80bfcacc586b483a973272800edb97a2093332d8086d25a04942ede61007f6a
@@ -63,12 +67,16 @@ func (d *packetSideDataSkipSamples) Add(ss *SkipSamples) error {
return d.d.addBytes(C.AV_PKT_DATA_SKIP_SAMPLES, ss.bytes()) return d.d.addBytes(C.AV_PKT_DATA_SKIP_SAMPLES, ss.bytes())
} }
func (d *packetSideDataSkipSamples) Get() (*SkipSamples, error) { func (d *packetSideDataSkipSamples) Get() (*SkipSamples, bool) {
b := d.d.getBytes(C.AV_PKT_DATA_SKIP_SAMPLES) b := d.d.getBytes(C.AV_PKT_DATA_SKIP_SAMPLES)
if len(b) == 0 { if len(b) == 0 {
return nil, nil return nil, false
} }
return newSkipSamplesFromBytes(b) ss, err := newSkipSamplesFromBytes(b)
if err != nil {
return nil, false
}
return ss, true
} }
// https://ffmpeg.org/doxygen/7.0/group__lavc__packet__side__data.html#gad208a666db035802403ea994912a83db // https://ffmpeg.org/doxygen/7.0/group__lavc__packet__side__data.html#gad208a666db035802403ea994912a83db

View File

@@ -9,8 +9,8 @@ import (
func testPacketSideData(sd *PacketSideData, t *testing.T) { func testPacketSideData(sd *PacketSideData, t *testing.T) {
m1 := NewDisplayMatrixFromRotation(90) m1 := NewDisplayMatrixFromRotation(90)
require.NoError(t, sd.DisplayMatrix().Add(m1)) require.NoError(t, sd.DisplayMatrix().Add(m1))
m2, err := sd.DisplayMatrix().Get() m2, ok := sd.DisplayMatrix().Get()
require.NoError(t, err) require.True(t, ok)
require.Equal(t, m1.Rotation(), m2.Rotation()) require.Equal(t, m1.Rotation(), m2.Rotation())
} }
@@ -19,17 +19,17 @@ func TestPacketSideData(t *testing.T) {
defer cp.Free() defer cp.Free()
sd := cp.SideData() sd := cp.SideData()
m1, err := sd.DisplayMatrix().Get() m1, ok := sd.DisplayMatrix().Get()
require.NoError(t, err) require.False(t, ok)
require.Nil(t, m1) require.Nil(t, m1)
m1 = NewDisplayMatrixFromRotation(90) m1 = NewDisplayMatrixFromRotation(90)
require.NoError(t, sd.DisplayMatrix().Add(m1)) require.NoError(t, sd.DisplayMatrix().Add(m1))
m2, err := sd.DisplayMatrix().Get() m2, ok := sd.DisplayMatrix().Get()
require.NoError(t, err) require.True(t, ok)
require.Equal(t, m1.Rotation(), m2.Rotation()) require.Equal(t, m1.Rotation(), m2.Rotation())
ss1, err := sd.SkipSamples().Get() ss1, ok := sd.SkipSamples().Get()
require.NoError(t, err) require.False(t, ok)
require.Nil(t, ss1) require.Nil(t, ss1)
ss1 = &SkipSamples{ ss1 = &SkipSamples{
ReasonEnd: 1, ReasonEnd: 1,
@@ -38,7 +38,7 @@ func TestPacketSideData(t *testing.T) {
SkipStart: 4, SkipStart: 4,
} }
require.NoError(t, sd.SkipSamples().Add(ss1)) require.NoError(t, sd.SkipSamples().Add(ss1))
ss2, err := sd.SkipSamples().Get() ss2, ok := sd.SkipSamples().Get()
require.NoError(t, err) require.True(t, ok)
require.Equal(t, ss1, ss2) require.Equal(t, ss1, ss2)
} }