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  }