diff --git a/codecs/h266_packet.go b/codecs/h266_packet.go index 17e39e7..f816aaa 100644 --- a/codecs/h266_packet.go +++ b/codecs/h266_packet.go @@ -662,6 +662,7 @@ func (d *H266Depacketizer) Unmarshal(packet []byte) ([]byte, error) { //nolint: if err != nil { return nil, err } + rebuilt.donl = nil output = append(output, rebuilt.packetize(make([]byte, 0))...) d.partials = d.partials[:0] @@ -690,6 +691,7 @@ func (d *H266Depacketizer) Unmarshal(packet []byte) ([]byte, error) { //nolint: } for _, p := range aggregated { output = append(output, annexbNALUStartCode...) + p.donl = nil output = p.packetize(output) } @@ -702,6 +704,7 @@ func (d *H266Depacketizer) Unmarshal(packet []byte) ([]byte, error) { //nolint: return nil, errNalCorrupted } + single.donl = nil output = single.packetize(output) return output, nil diff --git a/codecs/h266_packet_test.go b/codecs/h266_packet_test.go index db45dcc..9791773 100644 --- a/codecs/h266_packet_test.go +++ b/codecs/h266_packet_test.go @@ -540,7 +540,7 @@ func TestH266Depacketizer_Roundtrip(t *testing.T) { } emitH266Nalus(p, func(b []byte) { - parsed, err := parseH266Packet(b, withDonl) + parsed, err := parseH266Packet(b, false) assert.Nil(t, err) if err != nil { return @@ -567,8 +567,10 @@ func TestH266Depacketizer_Roundtrip(t *testing.T) { // with DONL basicPacket.donl = &testDonl + packetized := basicPacket.packetize(make([]byte, 0)) + basicPacket.donl = nil - testDepacketizer([][]byte{basicPacket.packetize(make([]byte, 0))}, []isH266Packet{basicPacket}, true) + testDepacketizer([][]byte{packetized}, []isH266Packet{basicPacket}, true) // Multiple NALs aggregated @@ -599,6 +601,9 @@ func TestH266Depacketizer_Roundtrip(t *testing.T) { assert.Nil(t, err) donlAggregationPacketized := donlAggregation.packetize(make([]byte, 0)) + firstPacket.donl = nil + secondPacket.donl = nil + testDepacketizer([][]byte{donlAggregationPacketized}, []isH266Packet{firstPacket, secondPacket}, true) // Large NAL that gets fragmented @@ -636,5 +641,7 @@ func TestH266Depacketizer_Roundtrip(t *testing.T) { donlFragmentsPacketized = append(donlFragmentsPacketized, f.packetize(make([]byte, 0))) } + largePacket.donl = nil + testDepacketizer(donlFragmentsPacketized, []isH266Packet{largePacket}, true) }