diff --git a/internal/mp4/codec_box.go b/internal/mp4/codec_box.go index bb9630b..79c91ed 100644 --- a/internal/mp4/codec_box.go +++ b/internal/mp4/codec_box.go @@ -434,15 +434,15 @@ func WriteCodecBoxes(w *Writer, codec mp4.Codec, trackID int, info *CodecInfo, a }, DataReferenceIndex: 1, }, - ChannelCount: uint16(codec.ChannelCount), + ChannelCount: uint16(codec.Config.ChannelCount), SampleSize: 16, - SampleRate: uint32(codec.SampleRate * 65536), + SampleRate: uint32(codec.Config.SampleRate * 65536), }) if err != nil { return err } - enc, _ := codec.Marshal() + enc, _ := codec.Config.Marshal() _, err = w.WriteBox(&4.Esds{ // Descriptors: []amp4.Descriptor{ diff --git a/pkg/codecs/mpeg4audio/audio_specific_config.go b/pkg/codecs/mpeg4audio/audio_specific_config.go index c9b5181..9f33f50 100644 --- a/pkg/codecs/mpeg4audio/audio_specific_config.go +++ b/pkg/codecs/mpeg4audio/audio_specific_config.go @@ -7,6 +7,8 @@ import ( ) // Config is an alias for AudioSpecificConfig. +// +// Deprecated: replaced by AudioSpecificConfig. type Config = AudioSpecificConfig // AudioSpecificConfig is an AudioSpecificConfig. @@ -25,13 +27,13 @@ type AudioSpecificConfig struct { CoreCoderDelay uint16 } -// Unmarshal decodes a Config. +// Unmarshal decodes a AudioSpecificConfig. func (c *AudioSpecificConfig) Unmarshal(buf []byte) error { pos := 0 return c.UnmarshalFromPos(buf, &pos) } -// UnmarshalFromPos decodes a Config. +// UnmarshalFromPos decodes a AudioSpecificConfig. func (c *AudioSpecificConfig) UnmarshalFromPos(buf []byte, pos *int) error { tmp, err := bits.ReadBits(buf, pos, 5) if err != nil { @@ -187,7 +189,7 @@ func (c AudioSpecificConfig) marshalSize() int { return ret } -// Marshal encodes a Config. +// Marshal encodes a AudioSpecificConfig. func (c AudioSpecificConfig) Marshal() ([]byte, error) { buf := make([]byte, c.marshalSize()) pos := 0 diff --git a/pkg/formats/fmp4/init.go b/pkg/formats/fmp4/init.go index ae20a03..c578b8c 100644 --- a/pkg/formats/fmp4/init.go +++ b/pkg/formats/fmp4/init.go @@ -471,7 +471,7 @@ func (i *Init) Unmarshal(r io.ReadSeeker) error { return nil, fmt.Errorf("unable to find decoder specific info") } - var c mpeg4audio.Config + var c mpeg4audio.AudioSpecificConfig err := c.Unmarshal(spec) if err != nil { return nil, fmt.Errorf("invalid MPEG-4 Audio configuration: %w", err) diff --git a/pkg/formats/fmp4/init_test.go b/pkg/formats/fmp4/init_test.go index ba56f53..cc895df 100644 --- a/pkg/formats/fmp4/init_test.go +++ b/pkg/formats/fmp4/init_test.go @@ -24,7 +24,7 @@ var testVideoTrack = &mp4.CodecH264{ } var testAudioTrack = &mp4.CodecMPEG4Audio{ - Config: mpeg4audio.Config{ + Config: mpeg4audio.AudioSpecificConfig{ Type: 2, SampleRate: 44100, ChannelCount: 2, @@ -994,7 +994,7 @@ var casesInit = []struct { Tracks: []*InitTrack{ { ID: 1, - TimeScale: uint32(testAudioTrack.SampleRate), + TimeScale: uint32(testAudioTrack.Config.SampleRate), Codec: testAudioTrack, }, }, @@ -1461,7 +1461,7 @@ var casesInit = []struct { }, { ID: 2, - TimeScale: uint32(testAudioTrack.SampleRate), + TimeScale: uint32(testAudioTrack.Config.SampleRate), Codec: testAudioTrack, }, }, @@ -1886,7 +1886,7 @@ func TestInitUnmarshalExternal(t *testing.T) { ID: 257, TimeScale: 10000000, Codec: &mp4.CodecMPEG4Audio{ - Config: mpeg4audio.Config{ + Config: mpeg4audio.AudioSpecificConfig{ Type: mpeg4audio.ObjectTypeAACLC, SampleRate: 48000, ChannelCount: 2, diff --git a/pkg/formats/mp4/codec_mpeg4_audio.go b/pkg/formats/mp4/codec_mpeg4_audio.go index 7f0fb89..803220d 100644 --- a/pkg/formats/mp4/codec_mpeg4_audio.go +++ b/pkg/formats/mp4/codec_mpeg4_audio.go @@ -6,7 +6,7 @@ import ( // CodecMPEG4Audio is a MPEG-4 Audio codec. type CodecMPEG4Audio struct { - mpeg4audio.Config + Config mpeg4audio.AudioSpecificConfig } // IsVideo implements Codec. diff --git a/pkg/formats/mpegts/track.go b/pkg/formats/mpegts/track.go index fb78385..052f1ca 100644 --- a/pkg/formats/mpegts/track.go +++ b/pkg/formats/mpegts/track.go @@ -8,7 +8,7 @@ import ( "github.com/bluenviron/mediacommon/v2/pkg/codecs/mpeg4audio" ) -func findMPEG4AudioConfig(dem *astits.Demuxer, pid uint16) (*mpeg4audio.Config, error) { +func findMPEG4AudioConfig(dem *astits.Demuxer, pid uint16) (*mpeg4audio.AudioSpecificConfig, error) { for { data, err := dem.NextData() if err != nil { @@ -26,7 +26,7 @@ func findMPEG4AudioConfig(dem *astits.Demuxer, pid uint16) (*mpeg4audio.Config, } pkt := adtsPkts[0] - return &mpeg4audio.Config{ + return &mpeg4audio.AudioSpecificConfig{ Type: pkt.Type, SampleRate: pkt.SampleRate, ChannelCount: pkt.ChannelCount, diff --git a/pkg/formats/pmp4/presentation.go b/pkg/formats/pmp4/presentation.go index 21a1047..e1bf464 100644 --- a/pkg/formats/pmp4/presentation.go +++ b/pkg/formats/pmp4/presentation.go @@ -523,7 +523,7 @@ func (p *Presentation) Unmarshal(r io.ReadSeeker) error { return nil, fmt.Errorf("unable to find decoder specific info") } - var c mpeg4audio.Config + var c mpeg4audio.AudioSpecificConfig err := c.Unmarshal(spec) if err != nil { return nil, fmt.Errorf("invalid MPEG-4 Audio configuration: %w", err) diff --git a/pkg/formats/pmp4/presentation_test.go b/pkg/formats/pmp4/presentation_test.go index 158475c..5063691 100644 --- a/pkg/formats/pmp4/presentation_test.go +++ b/pkg/formats/pmp4/presentation_test.go @@ -188,7 +188,7 @@ var casesPresentation = []struct { ID: 8, TimeScale: 90000, Codec: &mp4.CodecMPEG4Audio{ - Config: mpeg4audio.Config{ + Config: mpeg4audio.AudioSpecificConfig{ Type: 2, SampleRate: 44100, ChannelCount: 2,