diff options
author | Martijn Kaijser <martijn@xbmc.org> | 2018-12-13 12:41:37 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-12-13 12:41:37 +0100 |
commit | 64da515bbca864adf65a35d0e2a579eef9fd5dac (patch) | |
tree | cd28aab5d1e9596e8fee18ba85f5f7b427ef1058 | |
parent | 6a77d66dae3f5ce9db78e46bf4f4f536d98dff74 (diff) | |
parent | ca5ce46da815a6c8cd86cac90dadf622c3096859 (diff) |
Merge pull request #15042 from popcornmix/mmaldvd
MMALCodec: Keep videBuffer valid until next decode picture
-rw-r--r-- | xbmc/cores/VideoPlayer/DVDCodecs/Video/MMALCodec.cpp | 6 | ||||
-rw-r--r-- | xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/MMALRenderer.cpp | 3 |
2 files changed, 4 insertions, 5 deletions
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/MMALCodec.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/MMALCodec.cpp index f17e509417..63d4c573be 100644 --- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/MMALCodec.cpp +++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/MMALCodec.cpp @@ -720,10 +720,6 @@ CDVDVideoCodec::VCReturn CMMALVideo::GetPicture(VideoPicture* picture) bool drain = (m_codecControlFlags & DVD_CODEC_CTRL_DRAIN) ? true : false; bool send_eos = drain && !m_got_eos && m_packet_num_eos != m_packet_num; - if (picture->videoBuffer) - picture->videoBuffer->Release(); - picture->videoBuffer = nullptr; - // we don't get an EOS response if no packets have been sent if (!drain) m_got_eos = false; @@ -799,6 +795,8 @@ CDVDVideoCodec::VCReturn CMMALVideo::GetPicture(VideoPicture* picture) if (ret == CDVDVideoCodec::VC_PICTURE) { assert(buffer && buffer->mmal_buffer); + if (picture->videoBuffer) + picture->videoBuffer->Release(); picture->videoBuffer = dynamic_cast<CVideoBuffer*>(buffer); assert(picture->videoBuffer); picture->color_range = 0; diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/MMALRenderer.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/MMALRenderer.cpp index 6202e66dab..99e0356121 100644 --- a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/MMALRenderer.cpp +++ b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/MMALRenderer.cpp @@ -172,11 +172,12 @@ CMMALPool::~CMMALPool() CLog::Log(LOGERROR, "%s::%s Failed to disable component %s (status=%x %s)", CLASSNAME, __func__, m_component->name, status, mmal_status_to_string(status)); } + mmal_port_pool_destroy(port, m_mmal_pool); + if (m_component) mmal_component_destroy(m_component); m_component = nullptr; - mmal_port_pool_destroy(port, m_mmal_pool); m_mmal_pool = nullptr; for (auto buf : m_all) { |