From e1342f06b71b3905db26264cc921bf9bb372e5df Mon Sep 17 00:00:00 2001 From: Alex X Date: Tue, 25 Mar 2025 15:31:43 +0300 Subject: [PATCH] Change codec channels from uint16 to uint8 --- pkg/aac/aac.go | 2 +- pkg/aac/adts.go | 4 ++-- pkg/core/codec.go | 2 +- pkg/core/media.go | 2 +- pkg/homekit/helpers.go | 2 +- pkg/mp4/muxer.go | 4 ++-- pkg/wav/producer.go | 2 +- pkg/webrtc/producer.go | 2 +- 8 files changed, 10 insertions(+), 10 deletions(-) diff --git a/pkg/aac/aac.go b/pkg/aac/aac.go index 5ce4e82d..dc961fc4 100644 --- a/pkg/aac/aac.go +++ b/pkg/aac/aac.go @@ -53,7 +53,7 @@ func ConfigToCodec(conf []byte) *core.Codec { codec.ClockRate = rd.ReadBits(24) } - codec.Channels = rd.ReadBits16(4) + codec.Channels = rd.ReadBits8(4) return codec } diff --git a/pkg/aac/adts.go b/pkg/aac/adts.go index 94a13ad7..6688d319 100644 --- a/pkg/aac/adts.go +++ b/pkg/aac/adts.go @@ -28,7 +28,7 @@ func ADTSToCodec(b []byte) *core.Codec { objType := rd.ReadBits8(2) + 1 // Profile, the MPEG-4 Audio Object Type minus 1 sampleRateIdx := rd.ReadBits8(4) // MPEG-4 Sampling Frequency Index _ = rd.ReadBit() // Private bit, guaranteed never to be used by MPEG, set to 0 when encoding, ignore when decoding - channels := rd.ReadBits16(3) // MPEG-4 Channel Configuration + channels := rd.ReadBits8(3) // MPEG-4 Channel Configuration //_ = rd.ReadBit() // Originality, set to 1 to signal originality of the audio and 0 otherwise //_ = rd.ReadBit() // Home, set to 1 to signal home usage of the audio and 0 otherwise @@ -43,7 +43,7 @@ func ADTSToCodec(b []byte) *core.Codec { wr := bits.NewWriter(nil) wr.WriteBits8(objType, 5) wr.WriteBits8(sampleRateIdx, 4) - wr.WriteBits16(channels, 4) + wr.WriteBits8(channels, 4) conf := wr.Bytes() codec := &core.Codec{ diff --git a/pkg/core/codec.go b/pkg/core/codec.go index b138df28..708839b3 100644 --- a/pkg/core/codec.go +++ b/pkg/core/codec.go @@ -13,7 +13,7 @@ import ( type Codec struct { Name string // H264, PCMU, PCMA, opus... ClockRate uint32 // 90000, 8000, 16000... - Channels uint16 // 0, 1, 2 + Channels uint8 // 0, 1, 2 FmtpLine string PayloadType uint8 } diff --git a/pkg/core/media.go b/pkg/core/media.go index a700bb62..367d8cb8 100644 --- a/pkg/core/media.go +++ b/pkg/core/media.go @@ -139,7 +139,7 @@ func MarshalSDP(name string, medias []*Media) ([]byte, error) { Protos: []string{"RTP", "AVP"}, }, } - md.WithCodec(codec.PayloadType, name, codec.ClockRate, codec.Channels, codec.FmtpLine) + md.WithCodec(codec.PayloadType, name, codec.ClockRate, uint16(codec.Channels), codec.FmtpLine) if media.Direction != "" { md.WithPropertyAttribute(media.Direction) diff --git a/pkg/homekit/helpers.go b/pkg/homekit/helpers.go index a1719671..f5a17319 100644 --- a/pkg/homekit/helpers.go +++ b/pkg/homekit/helpers.go @@ -50,7 +50,7 @@ func audioToMedia(codecs []camera.AudioCodec) *core.Media { mediaCodec := &core.Codec{ Name: audioCodecs[codec.CodecType], ClockRate: audioSampleRates[sampleRate], - Channels: uint16(param.Channels), + Channels: param.Channels, } if mediaCodec.Name == core.CodecELD { diff --git a/pkg/mp4/muxer.go b/pkg/mp4/muxer.go index 5533a9a3..b371f684 100644 --- a/pkg/mp4/muxer.go +++ b/pkg/mp4/muxer.go @@ -89,12 +89,12 @@ func (m *Muxer) GetInit() ([]byte, error) { } mv.WriteAudioTrack( - uint32(i+1), codec.Name, codec.ClockRate, codec.Channels, b, + uint32(i+1), codec.Name, codec.ClockRate, uint16(codec.Channels), b, ) case core.CodecOpus, core.CodecMP3, core.CodecPCMA, core.CodecPCMU, core.CodecFLAC: mv.WriteAudioTrack( - uint32(i+1), codec.Name, codec.ClockRate, codec.Channels, nil, + uint32(i+1), codec.Name, codec.ClockRate, uint16(codec.Channels), nil, ) } } diff --git a/pkg/wav/producer.go b/pkg/wav/producer.go index 63f6d01a..b9b3a878 100644 --- a/pkg/wav/producer.go +++ b/pkg/wav/producer.go @@ -45,7 +45,7 @@ func Open(r io.Reader) (*Producer, error) { codec.Name = core.CodecPCMU } - codec.Channels = uint16(data[2]) + codec.Channels = data[2] codec.ClockRate = binary.LittleEndian.Uint32(data[4:]) } } diff --git a/pkg/webrtc/producer.go b/pkg/webrtc/producer.go index 822b1644..32e958ee 100644 --- a/pkg/webrtc/producer.go +++ b/pkg/webrtc/producer.go @@ -21,7 +21,7 @@ func (c *Conn) GetTrack(media *core.Media, codec *core.Codec) (*core.Receiver, e RTPCodecCapability: webrtc.RTPCodecCapability{ MimeType: MimeType(codec), ClockRate: codec.ClockRate, - Channels: codec.Channels, + Channels: uint16(codec.Channels), }, PayloadType: 0, // don't know if this necessary }