修复G711生成RTP类型无效的bug

This commit is contained in:
xiongziliang 2020-07-09 11:15:01 +08:00
parent d6d861c401
commit bc5931dce9
3 changed files with 11 additions and 19 deletions

View File

@ -118,7 +118,7 @@ RtpCodec::Ptr Factory::getRtpEncoderBySdp(const Sdp::Ptr &sdp) {
case CodecH265 : return std::make_shared<H265RtpEncoder>(ssrc,mtu,sample_rate,pt,interleaved); case CodecH265 : return std::make_shared<H265RtpEncoder>(ssrc,mtu,sample_rate,pt,interleaved);
case CodecAAC : return std::make_shared<AACRtpEncoder>(ssrc,mtu,sample_rate,pt,interleaved); case CodecAAC : return std::make_shared<AACRtpEncoder>(ssrc,mtu,sample_rate,pt,interleaved);
case CodecG711A : case CodecG711A :
case CodecG711U : return std::make_shared<G711RtpEncoder>(ssrc, mtu, sample_rate, pt, interleaved); case CodecG711U : return std::make_shared<G711RtpEncoder>(codec_id, ssrc, mtu, sample_rate, pt, interleaved);
default : WarnL << "暂不支持该CodecId:" << codec_id; return nullptr; 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<H265RtpDecoder>(); case CodecH265 : return std::make_shared<H265RtpDecoder>();
case CodecAAC : return std::make_shared<AACRtpDecoder>(track->clone()); case CodecAAC : return std::make_shared<AACRtpDecoder>(track->clone());
case CodecG711A : case CodecG711A :
case CodecG711U : return std::make_shared<G711RtpDecoder>(track->clone()); case CodecG711U : return std::make_shared<G711RtpDecoder>(track->getCodecId());
default : WarnL << "暂不支持该CodecId:" << track->getCodecName(); return nullptr; default : WarnL << "暂不支持该CodecId:" << track->getCodecName(); return nullptr;
} }
} }

View File

@ -12,8 +12,8 @@
namespace mediakit{ namespace mediakit{
G711RtpDecoder::G711RtpDecoder(const Track::Ptr &track){ G711RtpDecoder::G711RtpDecoder(CodecId codecid){
_codecid = track->getCodecId(); _codecid = codecid;
_frame = obtainFrame(); _frame = obtainFrame();
} }
@ -59,16 +59,10 @@ void G711RtpDecoder::onGetG711(const G711Frame::Ptr &frame) {
///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////
G711RtpEncoder::G711RtpEncoder(uint32_t ui32Ssrc, G711RtpEncoder::G711RtpEncoder(CodecId codecid, uint32_t ui32Ssrc, uint32_t ui32MtuSize,
uint32_t ui32MtuSize, uint32_t ui32SampleRate, uint8_t ui8PayloadType, uint8_t ui8Interleaved) :
uint32_t ui32SampleRate, G711RtpDecoder(codecid),
uint8_t ui8PayloadType, RtpInfo(ui32Ssrc, ui32MtuSize, ui32SampleRate, ui8PayloadType, ui8Interleaved) {
uint8_t ui8Interleaved) :
RtpInfo(ui32Ssrc,
ui32MtuSize,
ui32SampleRate,
ui8PayloadType,
ui8Interleaved) {
} }
void G711RtpEncoder::inputFrame(const Frame::Ptr &frame) { void G711RtpEncoder::inputFrame(const Frame::Ptr &frame) {

View File

@ -21,7 +21,7 @@ class G711RtpDecoder : public RtpCodec , public ResourcePoolHelper<G711Frame> {
public: public:
typedef std::shared_ptr<G711RtpDecoder> Ptr; typedef std::shared_ptr<G711RtpDecoder> Ptr;
G711RtpDecoder(const Track::Ptr &track); G711RtpDecoder(CodecId codecid);
~G711RtpDecoder() {} ~G711RtpDecoder() {}
/** /**
@ -35,9 +35,6 @@ public:
return _codecid; return _codecid;
} }
protected:
G711RtpDecoder() {}
private: private:
void onGetG711(const G711Frame::Ptr &frame); void onGetG711(const G711Frame::Ptr &frame);
G711Frame::Ptr obtainFrame(); G711Frame::Ptr obtainFrame();
@ -61,7 +58,8 @@ public:
* @param ui8PayloadType pt类型 * @param ui8PayloadType pt类型
* @param ui8Interleaved rtsp interleaved * @param ui8Interleaved rtsp interleaved
*/ */
G711RtpEncoder(uint32_t ui32Ssrc, G711RtpEncoder(CodecId codecid,
uint32_t ui32Ssrc,
uint32_t ui32MtuSize, uint32_t ui32MtuSize,
uint32_t ui32SampleRate, uint32_t ui32SampleRate,
uint8_t ui8PayloadType = 0, uint8_t ui8PayloadType = 0,