github.com/bluenviron/mediacommon@v1.9.3/pkg/codecs/mpeg4audio/adts_test.go (about) 1 package mpeg4audio 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 ) 8 9 var casesADTS = []struct { 10 name string 11 byts []byte 12 pkts ADTSPackets 13 }{ 14 { 15 "single", 16 []byte{0xff, 0xf1, 0x4c, 0x80, 0x1, 0x3f, 0xfc, 0xaa, 0xbb}, 17 ADTSPackets{ 18 { 19 Type: ObjectTypeAACLC, 20 SampleRate: 48000, 21 ChannelCount: 2, 22 AU: []byte{0xaa, 0xbb}, 23 }, 24 }, 25 }, 26 { 27 "multiple", 28 []byte{ 29 0xff, 0xf1, 0x50, 0x40, 0x1, 0x3f, 0xfc, 0xaa, 30 0xbb, 0xff, 0xf1, 0x4c, 0x80, 0x1, 0x3f, 0xfc, 31 0xcc, 0xdd, 32 }, 33 ADTSPackets{ 34 { 35 Type: ObjectTypeAACLC, 36 SampleRate: 44100, 37 ChannelCount: 1, 38 AU: []byte{0xaa, 0xbb}, 39 }, 40 { 41 Type: ObjectTypeAACLC, 42 SampleRate: 48000, 43 ChannelCount: 2, 44 AU: []byte{0xcc, 0xdd}, 45 }, 46 }, 47 }, 48 } 49 50 func TestADTSUnmarshal(t *testing.T) { 51 for _, ca := range casesADTS { 52 t.Run(ca.name, func(t *testing.T) { 53 var pkts ADTSPackets 54 err := pkts.Unmarshal(ca.byts) 55 require.NoError(t, err) 56 require.Equal(t, ca.pkts, pkts) 57 }) 58 } 59 } 60 61 func TestADTSMarshal(t *testing.T) { 62 for _, ca := range casesADTS { 63 t.Run(ca.name, func(t *testing.T) { 64 byts, err := ca.pkts.Marshal() 65 require.NoError(t, err) 66 require.Equal(t, ca.byts, byts) 67 }) 68 } 69 } 70 71 func FuzzADTSUnmarshal(f *testing.F) { 72 f.Fuzz(func(_ *testing.T, b []byte) { 73 var pkts ADTSPackets 74 pkts.Unmarshal(b) //nolint:errcheck 75 }) 76 }