aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartijn Kaijser <martijn@xbmc.org>2018-12-13 12:41:37 +0100
committerGitHub <noreply@github.com>2018-12-13 12:41:37 +0100
commit64da515bbca864adf65a35d0e2a579eef9fd5dac (patch)
treecd28aab5d1e9596e8fee18ba85f5f7b427ef1058
parent6a77d66dae3f5ce9db78e46bf4f4f536d98dff74 (diff)
parentca5ce46da815a6c8cd86cac90dadf622c3096859 (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.cpp6
-rw-r--r--xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/MMALRenderer.cpp3
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)
{