diff --git a/frame_side_data.go b/frame_side_data.go index 0328e99..6343f6c 100644 --- a/frame_side_data.go +++ b/frame_side_data.go @@ -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 } diff --git a/frame_side_data_test.go b/frame_side_data_test.go index 0fe9968..86b18b8 100644 --- a/frame_side_data_test.go +++ b/frame_side_data_test.go @@ -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) } diff --git a/packet_side_data.go b/packet_side_data.go index 4604f56..ad9c9b6 100644 --- a/packet_side_data.go +++ b/packet_side_data.go @@ -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 diff --git a/packet_side_data_test.go b/packet_side_data_test.go index 74eb2be..be12f06 100644 --- a/packet_side_data_test.go +++ b/packet_side_data_test.go @@ -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) }