diff --git a/src/Http/HlsPlayer.cpp b/src/Http/HlsPlayer.cpp index d1b78186..0e5b55c9 100644 --- a/src/Http/HlsPlayer.cpp +++ b/src/Http/HlsPlayer.cpp @@ -241,7 +241,7 @@ void HlsPlayerImp::onPacket(const char *data,uint64_t len) { } if (!_decoder) { - _decoder = DecoderImp::createDecoder(DecoderImp::decoder_ts, dynamic_pointer_cast(shared_from_this())); + _decoder = DecoderImp::createDecoder(DecoderImp::decoder_ts, this); } if (_decoder) { diff --git a/src/Rtp/Decoder.cpp b/src/Rtp/Decoder.cpp index 2e3349dd..5c8a7662 100644 --- a/src/Rtp/Decoder.cpp +++ b/src/Rtp/Decoder.cpp @@ -42,7 +42,7 @@ static Decoder::Ptr createDecoder_l(DecoderImp::Type type) { ///////////////////////////////////////////////////////////// -DecoderImp::Ptr DecoderImp::createDecoder(Type type, const MediaSinkInterface::Ptr &sink){ +DecoderImp::Ptr DecoderImp::createDecoder(Type type, MediaSinkInterface *sink){ auto decoder = createDecoder_l(type); if(!decoder){ return nullptr; @@ -54,7 +54,7 @@ int DecoderImp::input(const uint8_t *data, int bytes){ return _decoder->input(data, bytes); } -DecoderImp::DecoderImp(const Decoder::Ptr &decoder,const MediaSinkInterface::Ptr &sink){ +DecoderImp::DecoderImp(const Decoder::Ptr &decoder, MediaSinkInterface *sink){ _decoder = decoder; _sink = sink; _decoder->setOnDecode([this](int stream,int codecid,int flags,int64_t pts,int64_t dts,const void *data,int bytes){ diff --git a/src/Rtp/Decoder.h b/src/Rtp/Decoder.h index c20bc65d..a74ee9f2 100644 --- a/src/Rtp/Decoder.h +++ b/src/Rtp/Decoder.h @@ -53,7 +53,7 @@ public: typedef std::shared_ptr Ptr; ~DecoderImp() = default; - static Ptr createDecoder(Type type, const MediaSinkInterface::Ptr &sink); + static Ptr createDecoder(Type type, MediaSinkInterface *sink); int input(const uint8_t *data, int bytes); protected: @@ -61,12 +61,12 @@ protected: void onFrame(const Frame::Ptr &frame); private: - DecoderImp(const Decoder::Ptr &decoder, const MediaSinkInterface::Ptr &sink); + DecoderImp(const Decoder::Ptr &decoder, MediaSinkInterface *sink); void onDecode(int stream,int codecid,int flags,int64_t pts,int64_t dts,const void *data,int bytes); private: Decoder::Ptr _decoder; - MediaSinkInterface::Ptr _sink; + MediaSinkInterface *_sink; FrameMerger _merger; int _codecid_video = 0; int _codecid_audio = 0; diff --git a/src/Rtp/RtpProcess.cpp b/src/Rtp/RtpProcess.cpp index 008c7406..a3c72a8d 100644 --- a/src/Rtp/RtpProcess.cpp +++ b/src/Rtp/RtpProcess.cpp @@ -152,11 +152,11 @@ void RtpProcess::onRtpDecode(const uint8_t *packet, int bytes, uint32_t timestam if (checkTS(packet, bytes)) { //猜测是ts负载 InfoP(this) << "judged to be TS"; - _decoder = DecoderImp::createDecoder(DecoderImp::decoder_ts, shared_from_this()); + _decoder = DecoderImp::createDecoder(DecoderImp::decoder_ts, this); } else { //猜测是ps负载 InfoP(this) << "judged to be PS"; - _decoder = DecoderImp::createDecoder(DecoderImp::decoder_ps, shared_from_this()); + _decoder = DecoderImp::createDecoder(DecoderImp::decoder_ps, this); } }