From 51cfb6c814942220d1ca6c017f1bb090ef2ab81d Mon Sep 17 00:00:00 2001 From: Thomas Reufer Date: Tue, 20 Jan 2015 20:17:47 +0100 Subject: make use of video decoder's new SEI parsing features, requires firmware from 2015/01/18 or newer --- HISTORY | 3 +++ README | 1 + omx.c | 8 +++++--- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/HISTORY b/HISTORY index 2b2dc55..16048ad 100644 --- a/HISTORY +++ b/HISTORY @@ -8,6 +8,9 @@ VDR Plugin 'rpihddevice' Revision History - updated Finnish translations and fixed tr() usage (thanks to Rolf Ahrenberg) - use fast deinterlacer for HD streams - added high level OSD with GPU support +- fixed: + - start H.264 video with valid frame only, requires firmware from 2015/01/18 + or newer 2014-11-02: Version 0.0.10 -------------------------- diff --git a/README b/README index 6502678..ad920e3 100644 --- a/README +++ b/README @@ -35,6 +35,7 @@ Requirements: - freetype2 for GPU accelerated text drawing - valid MPEG-2 license when watching MPEG-2 streams - Raspberry Pi userland libraries: https://github.com/raspberrypi/userland + - Raspberry Pi firmware from 2015/01/18 or newer Install: diff --git a/omx.c b/omx.c index 54fc16e..354ed93 100644 --- a/omx.c +++ b/omx.c @@ -245,11 +245,12 @@ void cOmx::HandlePortSettingsChanged(unsigned int portId) // workaround for progressive streams detected as interlaced video by // the decoder due to missing SEI parsing // see: https://github.com/raspberrypi/firmware/issues/283 + // update: with FW from 2015/01/18 this is not necessary anymore if (m_videoFormat.interlaced && m_videoFormat.frameRate >= 50) { - DLOG("%di looks implausible, manually overriding interlaced flag", + DLOG("%di looks implausible, you should use a recent firmware...", m_videoFormat.frameRate * 2); - m_videoFormat.interlaced = false; + //m_videoFormat.interlaced = false; } if (m_videoFormat.interlaced) @@ -918,7 +919,8 @@ int cOmx::SetVideoCodec(cVideoCodec::eCodec codec) ELOG("failed to set video decoder port parameters!"); // start with valid frames only if codec is MPEG2 - SetVideoErrorConcealment(codec == cVideoCodec::eMPEG2); + // update: with FW from 2015/01/18 this is not necessary anymore + SetVideoErrorConcealment(true /*codec == cVideoCodec::eMPEG2*/); SetVideoDecoderExtraBuffers(3); if (ilclient_enable_port_buffers(m_comp[eVideoDecoder], 130, NULL, NULL, NULL) != 0) -- cgit v1.2.3