summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Reufer <thomas@reufer.ch>2014-09-28 15:38:07 +0200
committerThomas Reufer <thomas@reufer.ch>2014-09-28 15:38:07 +0200
commit74e46362b8dd8e6f5497dabfa11bc24f62073990 (patch)
treec3df3318b634253c6e79ddbda110a62ce5c06b89
parent5a73a92a76ad61062495b37df63cc174de44092c (diff)
downloadvdr-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--HISTORY1
-rw-r--r--omxdevice.c6
2 files changed, 6 insertions, 1 deletions
diff --git a/HISTORY b/HISTORY
index 72daf30..3c15dc4 100644
--- a/HISTORY
+++ b/HISTORY
@@ -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;
}