summaryrefslogtreecommitdiff
path: root/gst/videoparsers/gstmpegvideoparse.c
diff options
context:
space:
mode:
authorThibault Saunier <thibault.saunier@collabora.com>2011-09-13 20:40:35 -0300
committerThibault Saunier <thibault.saunier@collabora.com>2011-09-14 12:13:19 -0300
commitdf551c0af4d2893e157afcc8af9c274d5546596b (patch)
treea5831764405f4440325fb80d157060692e0edd01 /gst/videoparsers/gstmpegvideoparse.c
parentf396baa3af7486abf5fb2449b24807ed3058d7a4 (diff)
downloadgstreamer-plugins-bad-df551c0af4d2893e157afcc8af9c274d5546596b.tar.gz
mpegvideoparse: Handle properly frame detection
Handle the case where we have buffers containing no startcode in the middle of a frame properly.
Diffstat (limited to 'gst/videoparsers/gstmpegvideoparse.c')
-rw-r--r--gst/videoparsers/gstmpegvideoparse.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/gst/videoparsers/gstmpegvideoparse.c b/gst/videoparsers/gstmpegvideoparse.c
index f1593e106..5db0080a1 100644
--- a/gst/videoparsers/gstmpegvideoparse.c
+++ b/gst/videoparsers/gstmpegvideoparse.c
@@ -493,9 +493,16 @@ end:
} else if (GST_BASE_PARSE_DRAINING (parse)) {
*framesize = GST_BUFFER_SIZE (buf);
ret = TRUE;
+
} else {
/* resume scan where we left it */
- mpvparse->last_sc = GST_BUFFER_SIZE (buf);
+ if (!mpvparse->last_sc)
+ *skipsize = mpvparse->last_sc = GST_BUFFER_SIZE (buf) - 3;
+ else if (mpvparse->typeoffsize)
+ mpvparse->last_sc = GST_BUFFER_SIZE (buf) - 3;
+ else
+ *skipsize = 0;
+
/* request best next available */
*framesize = G_MAXUINT;
ret = FALSE;