Skip to content

Commit

Permalink
Merge pull request #426 from popcornmix/flip
Browse files Browse the repository at this point in the history
omxplayer: Update after FlipPage removal
  • Loading branch information
FernetMenta committed Jul 18, 2017
2 parents acb36f2 + 1390f82 commit 2338e2c
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 8 deletions.
2 changes: 1 addition & 1 deletion xbmc/cores/VideoPlayer/Process/VideoBuffer.cpp
Expand Up @@ -45,7 +45,7 @@ void CVideoBuffer::Acquire(std::shared_ptr<IVideoBufferPool> pool)

void CVideoBuffer::Release()
{
if (--m_refCount <= 0)
if (--m_refCount <= 0 && m_pool)
{
std::shared_ptr<IVideoBufferPool> pool = m_pool->GetPtr();
m_pool = nullptr;
Expand Down
Expand Up @@ -951,7 +951,13 @@ void CMMALRenderer::RenderUpdate(bool clear, DWORD flags, DWORD alpha)
goto exit;
}

if (omvb && omvb->mmal_buffer)
if (omvb && omvb->m_state == MMALStateBypass)
{
// dummy buffer from omxplayer
if (VERBOSE && g_advancedSettings.CanLogComponent(LOGVIDEO))
CLog::Log(LOGDEBUG, "%s::%s - OMX: clear:%d flags:%x alpha:%d source:%d omvb:%p", CLASSNAME, __func__, clear, flags, alpha, source, omvb);
}
else if (omvb && omvb->mmal_buffer)
{
if (flags & RENDER_FLAG_TOP)
omvb->mmal_buffer->flags |= MMAL_BUFFER_HEADER_VIDEO_FLAG_INTERLACED | MMAL_BUFFER_HEADER_VIDEO_FLAG_TOP_FIELD_FIRST;
Expand Down
Expand Up @@ -44,7 +44,7 @@ namespace MMAL {

class CMMALBuffer;

enum MMALState { MMALStateNone, MMALStateHWDec, MMALStateFFDec, MMALStateDeint, };
enum MMALState { MMALStateNone, MMALStateHWDec, MMALStateFFDec, MMALStateDeint, MMALStateBypass, };

class CMMALPool : public IVideoBufferPool
{
Expand Down Expand Up @@ -127,7 +127,7 @@ class CMMALBuffer : public CVideoBuffer

void SetVideoDeintMethod(std::string method);
const char *GetStateName() {
static const char *names[] = { "MMALStateNone", "MMALStateHWDec", "MMALStateFFDec", "MMALStateDeint", };
static const char *names[] = { "MMALStateNone", "MMALStateHWDec", "MMALStateFFDec", "MMALStateDeint", "MMALStateBypass", };
if ((size_t)m_state < vcos_countof(names))
return names[(size_t)m_state];
else
Expand Down
15 changes: 11 additions & 4 deletions xbmc/cores/omxplayer/OMXPlayerVideo.cpp
Expand Up @@ -43,6 +43,7 @@
#include "settings/Settings.h"
#include "settings/MediaSettings.h"
#include "cores/VideoPlayer/VideoRenderers/RenderFlags.h"
#include "cores/VideoPlayer/VideoRenderers/HwDecRender/MMALRenderer.h"
#include "guilib/GraphicContext.h"
#include "TimingConstants.h"

Expand Down Expand Up @@ -314,7 +315,15 @@ void OMXPlayerVideo::Output(double pts, bool bDropPacket)
ProcessOverlays(media_pts + preroll);

time += m_av_clock->GetAbsoluteClock();
m_renderManager.FlipPage(m_bAbortOutput, time/DVD_TIME_BASE, EINTERLACEMETHOD::VS_INTERLACEMETHOD_NONE, FS_NONE, false);

VideoPicture picture = {};
memset(&picture, 0, sizeof(VideoPicture));
picture.pts = time/DVD_TIME_BASE;
MMAL::CMMALBuffer *omvb = new MMAL::CMMALBuffer(0);
omvb->m_state = MMAL::MMALStateBypass;
picture.videoBuffer = omvb;

m_renderManager.AddVideoPicture(picture, m_bAbortOutput, EINTERLACEMETHOD::VS_INTERLACEMETHOD_NONE, (m_syncState == ESyncState::SYNC_STARTING));
}

bool OMXPlayerVideo::AcceptsData() const
Expand Down Expand Up @@ -776,9 +785,7 @@ void OMXPlayerVideo::ResolutionUpdateCallBack(uint32_t width, uint32_t height, f
CLog::Log(LOGDEBUG,"%s - change configuration. video:%dx%d. framerate: %4.2f. %dx%d format: BYPASS",
__FUNCTION__, video_width, video_height, m_fFrameRate, iDisplayWidth, iDisplayHeight);

VideoPicture picture;
memset(&picture, 0, sizeof(VideoPicture));

VideoPicture picture = {};
picture.iWidth = width;
picture.iHeight = height;
picture.iDisplayWidth = iDisplayWidth;
Expand Down

0 comments on commit 2338e2c

Please sign in to comment.