From 13bbb7b0574bc951c32ac370a376e0352749692f Mon Sep 17 00:00:00 2001 From: xiongziliang <771730766@qq.com> Date: Mon, 19 Nov 2018 11:49:17 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=92=AD=E6=94=BE=E5=99=A8?= =?UTF-8?q?=E6=9E=90=E6=9E=84=E6=97=B6=E8=B0=83=E7=94=A8=E8=99=9A=E5=87=BD?= =?UTF-8?q?=E6=95=B0=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Player/MediaPlayer.cpp | 1 - src/Player/PlayerBase.cpp | 12 +++++++++--- src/Rtmp/RtmpPlayer.cpp | 1 - src/Rtmp/RtmpPlayerImp.h | 1 - src/Rtsp/RtspPlayer.cpp | 1 - src/Rtsp/RtspPlayerImp.h | 1 - 6 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/Player/MediaPlayer.cpp b/src/Player/MediaPlayer.cpp index 0e4a9a6f..11f8a3ab 100644 --- a/src/Player/MediaPlayer.cpp +++ b/src/Player/MediaPlayer.cpp @@ -36,7 +36,6 @@ MediaPlayer::MediaPlayer() { } MediaPlayer::~MediaPlayer() { - teardown(); } void MediaPlayer::play(const char* strUrl) { string strPrefix = FindField(strUrl, NULL, "://"); diff --git a/src/Player/PlayerBase.cpp b/src/Player/PlayerBase.cpp index 14b2295d..1f389aad 100644 --- a/src/Player/PlayerBase.cpp +++ b/src/Player/PlayerBase.cpp @@ -41,14 +41,20 @@ const char PlayerBase::kRtspPwdIsMD5[] = "rtsp_pwd_md5"; PlayerBase::Ptr PlayerBase::createPlayer(const char* strUrl) { + static auto releasePlayer = [](PlayerBase *ptr){ + onceToken token(nullptr,[&](){ + delete ptr; + }); + ptr->teardown(); + }; string prefix = FindField(strUrl, NULL, "://"); if (strcasecmp("rtsp",prefix.data()) == 0) { - return PlayerBase::Ptr(new RtspPlayerImp()); + return PlayerBase::Ptr(new RtspPlayerImp(),releasePlayer); } if (strcasecmp("rtmp",prefix.data()) == 0) { - return PlayerBase::Ptr(new RtmpPlayerImp()); + return PlayerBase::Ptr(new RtmpPlayerImp(),releasePlayer); } - return PlayerBase::Ptr(new RtspPlayerImp()); + return PlayerBase::Ptr(new RtspPlayerImp(),releasePlayer); } ///////////////////////////Demuxer////////////////////////////// diff --git a/src/Rtmp/RtmpPlayer.cpp b/src/Rtmp/RtmpPlayer.cpp index 62035567..d0c851ad 100644 --- a/src/Rtmp/RtmpPlayer.cpp +++ b/src/Rtmp/RtmpPlayer.cpp @@ -46,7 +46,6 @@ RtmpPlayer::RtmpPlayer() { } RtmpPlayer::~RtmpPlayer() { - teardown(); DebugL << endl; } void RtmpPlayer::teardown() { diff --git a/src/Rtmp/RtmpPlayerImp.h b/src/Rtmp/RtmpPlayerImp.h index e4d83d14..366d9738 100644 --- a/src/Rtmp/RtmpPlayerImp.h +++ b/src/Rtmp/RtmpPlayerImp.h @@ -45,7 +45,6 @@ public: RtmpPlayerImp(){}; virtual ~RtmpPlayerImp(){ DebugL< 0){ diff --git a/src/Rtsp/RtspPlayer.cpp b/src/Rtsp/RtspPlayer.cpp index 281c8bc7..cdbd744b 100644 --- a/src/Rtsp/RtspPlayer.cpp +++ b/src/Rtsp/RtspPlayer.cpp @@ -55,7 +55,6 @@ RtspPlayer::RtspPlayer(void){ _pktPool.setSize(64); } RtspPlayer::~RtspPlayer(void) { - RtspPlayer::teardown(); DebugL< 0){