diff options
| author | Thomas Reufer <thomas@reufer.ch> | 2014-09-28 15:38:07 +0200 |
|---|---|---|
| committer | Thomas Reufer <thomas@reufer.ch> | 2014-09-28 15:38:07 +0200 |
| commit | 74e46362b8dd8e6f5497dabfa11bc24f62073990 (patch) | |
| tree | c3df3318b634253c6e79ddbda110a62ce5c06b89 | |
| parent | 5a73a92a76ad61062495b37df63cc174de44092c (diff) | |
| download | vdr-plugin-rpihddevice-74e46362b8dd8e6f5497dabfa11bc24f62073990.tar.gz vdr-plugin-rpihddevice-74e46362b8dd8e6f5497dabfa11bc24f62073990.tar.bz2 | |
skip non-video packets in StillPicture(), fixes artifacts in PES recordings
| -rw-r--r-- | HISTORY | 1 | ||||
| -rw-r--r-- | omxdevice.c | 6 |
2 files changed, 6 insertions, 1 deletions
@@ -10,6 +10,7 @@ VDR Plugin 'rpihddevice' Revision History - reworked setup parameter handling - implemented proper command queue for OVG-OSD - fixed: + - skip non-video packets in StillPicture(), fixes artifacts in PES recordings - skip audio substream header for PES recordings with AC3 audio track - reworked audio decoding loop and set correct dstSize before resampling - avoid flushing OMX video chain twice when calling SetPlayMode(pmNone) diff --git a/omxdevice.c b/omxdevice.c index 0a01a9c..7c41fac 100644 --- a/omxdevice.c +++ b/omxdevice.c @@ -207,7 +207,11 @@ void cOmxDevice::StillPicture(const uchar *Data, int Length) while (length) { int pktLen = PesHasLength(data) ? PesLength(data) : length; - PlayVideo(data, pktLen, !repeat && (pktLen == length)); + + // skip non-video packets as they may occur in PES recordings + if ((data[3] & 0xf0) == 0xe0) + PlayVideo(data, pktLen, !repeat && (pktLen == length)); + data += pktLen; length -= pktLen; } |
