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
}
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)
if sd == nil {
return nil, nil
return nil, false
}
crois := d.data(sd)
@@ -75,5 +75,5 @@ func (d *frameSideDataRegionsOfInterest) Get() ([]RegionOfInterest, error) {
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))
rois2, err := sd.RegionsOfInterest().Get()
require.NoError(t, err)
rois2, ok := sd.RegionsOfInterest().Get()
require.True(t, ok)
require.Equal(t, rois1, rois2)
}
@@ -35,8 +35,8 @@ func TestFrameSideData(t *testing.T) {
defer f.Free()
sd := f.SideData()
rois1, err := sd.RegionsOfInterest().Get()
require.NoError(t, err)
rois1, ok := sd.RegionsOfInterest().Get()
require.False(t, ok)
require.Nil(t, rois1)
rois1 = []RegionOfInterest{
{
@@ -55,7 +55,7 @@ func TestFrameSideData(t *testing.T) {
},
}
require.NoError(t, sd.RegionsOfInterest().Add(rois1))
rois2, err := sd.RegionsOfInterest().Get()
require.NoError(t, err)
rois2, ok := sd.RegionsOfInterest().Get()
require.True(t, ok)
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())
}
func (d *packetSideDataDisplayMatrix) Get() (*DisplayMatrix, error) {
func (d *packetSideDataDisplayMatrix) Get() (*DisplayMatrix, bool) {
b := d.d.getBytes(C.AV_PKT_DATA_DISPLAYMATRIX)
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
@@ -63,12 +67,16 @@ func (d *packetSideDataSkipSamples) Add(ss *SkipSamples) error {
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)
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

View File

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