From 4c8dffd4f05631a1ce79679a4a00bcfd97004606 Mon Sep 17 00:00:00 2001 From: Thomas Reufer Date: Wed, 19 Feb 2014 21:16:57 +0100 Subject: set clock latency target according omxplayer --- HISTORY | 1 + omx.c | 21 +++++++++++++++++++++ omx.h | 1 + 3 files changed, 23 insertions(+) diff --git a/HISTORY b/HISTORY index 7ee2108..65496ae 100644 --- a/HISTORY +++ b/HISTORY @@ -3,6 +3,7 @@ VDR Plugin 'rpihddevice' Revision History - fixed: - suppress buffer stall when clock is halted + - set clock latency target according omxplayer 2014-02-10: Version 0.0.8 ------------------------- diff --git a/omx.c b/omx.c index c201310..afc1f98 100644 --- a/omx.c +++ b/omx.c @@ -358,6 +358,7 @@ int cOmx::Init(void) DBG("started with %d video and %d audio buffers", m_freeVideoBuffers, m_freeAudioBuffers); + SetClockLatencyTarget(); SetBufferStall(1500); FlushVideo(); @@ -612,6 +613,26 @@ void cOmx::SetClockReference(eClockReference clockReference) } } +void cOmx::SetClockLatencyTarget(void) +{ + OMX_CONFIG_LATENCYTARGETTYPE latencyTarget; + OMX_INIT_STRUCT(latencyTarget); + + // values set according reference implementation in omxplayer + latencyTarget.nPortIndex = OMX_ALL; + latencyTarget.bEnabled = OMX_TRUE; + latencyTarget.nFilter = 10; + latencyTarget.nTarget = 0; + latencyTarget.nShift = 3; + latencyTarget.nSpeedFactor = -200; + latencyTarget.nInterFactor = 100; + latencyTarget.nAdjCap = 100; + + if (OMX_SetConfig(ILC_GET_HANDLE(m_comp[eClock]), + OMX_IndexConfigLatencyTarget, &latencyTarget) != OMX_ErrorNone) + ELOG("failed set clock latency target!"); +} + void cOmx::SetBufferStall(int delayMs) { if (delayMs > 0) diff --git a/omx.h b/omx.h index 3c3fe7a..846ee33 100644 --- a/omx.h +++ b/omx.h @@ -58,6 +58,7 @@ public: }; void SetClockReference(eClockReference clockReference); + void SetClockLatencyTarget(void); void SetVolume(int vol); void SetMute(bool mute); void SendEos(void); -- cgit v1.2.3