diff --git a/src/Extension/Factory.cpp b/src/Extension/Factory.cpp index 1e7a6284..92771f38 100644 --- a/src/Extension/Factory.cpp +++ b/src/Extension/Factory.cpp @@ -118,7 +118,7 @@ RtpCodec::Ptr Factory::getRtpEncoderBySdp(const Sdp::Ptr &sdp) { case CodecH265 : return std::make_shared(ssrc,mtu,sample_rate,pt,interleaved); case CodecAAC : return std::make_shared(ssrc,mtu,sample_rate,pt,interleaved); case CodecG711A : - case CodecG711U : return std::make_shared(ssrc, mtu, sample_rate, pt, interleaved); + case CodecG711U : return std::make_shared(codec_id, ssrc, mtu, sample_rate, pt, interleaved); default : WarnL << "暂不支持该CodecId:" << codec_id; return nullptr; } } @@ -129,7 +129,7 @@ RtpCodec::Ptr Factory::getRtpDecoderByTrack(const Track::Ptr &track) { case CodecH265 : return std::make_shared(); case CodecAAC : return std::make_shared(track->clone()); case CodecG711A : - case CodecG711U : return std::make_shared(track->clone()); + case CodecG711U : return std::make_shared(track->getCodecId()); default : WarnL << "暂不支持该CodecId:" << track->getCodecName(); return nullptr; } } diff --git a/src/Extension/G711Rtp.cpp b/src/Extension/G711Rtp.cpp index 8e7a5cf8..48238db5 100644 --- a/src/Extension/G711Rtp.cpp +++ b/src/Extension/G711Rtp.cpp @@ -12,8 +12,8 @@ namespace mediakit{ -G711RtpDecoder::G711RtpDecoder(const Track::Ptr &track){ - _codecid = track->getCodecId(); +G711RtpDecoder::G711RtpDecoder(CodecId codecid){ + _codecid = codecid; _frame = obtainFrame(); } @@ -59,16 +59,10 @@ void G711RtpDecoder::onGetG711(const G711Frame::Ptr &frame) { ///////////////////////////////////////////////////////////////////////////////////// -G711RtpEncoder::G711RtpEncoder(uint32_t ui32Ssrc, - uint32_t ui32MtuSize, - uint32_t ui32SampleRate, - uint8_t ui8PayloadType, - uint8_t ui8Interleaved) : - RtpInfo(ui32Ssrc, - ui32MtuSize, - ui32SampleRate, - ui8PayloadType, - ui8Interleaved) { +G711RtpEncoder::G711RtpEncoder(CodecId codecid, uint32_t ui32Ssrc, uint32_t ui32MtuSize, + uint32_t ui32SampleRate, uint8_t ui8PayloadType, uint8_t ui8Interleaved) : + G711RtpDecoder(codecid), + RtpInfo(ui32Ssrc, ui32MtuSize, ui32SampleRate, ui8PayloadType, ui8Interleaved) { } void G711RtpEncoder::inputFrame(const Frame::Ptr &frame) { diff --git a/src/Extension/G711Rtp.h b/src/Extension/G711Rtp.h index f76f4a70..aca08e6d 100644 --- a/src/Extension/G711Rtp.h +++ b/src/Extension/G711Rtp.h @@ -21,7 +21,7 @@ class G711RtpDecoder : public RtpCodec , public ResourcePoolHelper { public: typedef std::shared_ptr Ptr; - G711RtpDecoder(const Track::Ptr &track); + G711RtpDecoder(CodecId codecid); ~G711RtpDecoder() {} /** @@ -35,9 +35,6 @@ public: return _codecid; } -protected: - G711RtpDecoder() {} - private: void onGetG711(const G711Frame::Ptr &frame); G711Frame::Ptr obtainFrame(); @@ -61,7 +58,8 @@ public: * @param ui8PayloadType pt类型 * @param ui8Interleaved rtsp interleaved 值 */ - G711RtpEncoder(uint32_t ui32Ssrc, + G711RtpEncoder(CodecId codecid, + uint32_t ui32Ssrc, uint32_t ui32MtuSize, uint32_t ui32SampleRate, uint8_t ui8PayloadType = 0,