diff --git a/pkg/media/samplebuilder/samplebuilder.go b/pkg/media/samplebuilder/samplebuilder.go index 69f059f7..ac330396 100644 --- a/pkg/media/samplebuilder/samplebuilder.go +++ b/pkg/media/samplebuilder/samplebuilder.go @@ -300,6 +300,9 @@ func (s *SampleBuilder) Pop() *media.Sample { // no sample is compiled). func (s *SampleBuilder) PopWithTimestamp() (*media.Sample, uint32) { sample := s.Pop() + if sample == nil { + return nil, 0 + } return sample, sample.PacketTimestamp } diff --git a/pkg/media/samplebuilder/samplebuilder_test.go b/pkg/media/samplebuilder/samplebuilder_test.go index ea2498d1..a5a918a5 100644 --- a/pkg/media/samplebuilder/samplebuilder_test.go +++ b/pkg/media/samplebuilder/samplebuilder_test.go @@ -379,3 +379,12 @@ func TestSampleBuilderWithPacketReleaseHandler(t *testing.T) { t.Errorf("Unexpected packet released by samples built") } } + +func TestPopWithTimestamp(t *testing.T) { + t.Run("Crash on nil", func(t *testing.T) { + s := New(0, &fakeDepacketizer{}, 1) + sample, timestamp := s.PopWithTimestamp() + assert.Nil(t, sample) + assert.Equal(t, uint32(0), timestamp) + }) +}