diff options
author | Thibault Saunier <thibault.saunier@collabora.com> | 2011-09-13 20:40:35 -0300 |
---|---|---|
committer | Thibault Saunier <thibault.saunier@collabora.com> | 2011-09-14 12:13:19 -0300 |
commit | df551c0af4d2893e157afcc8af9c274d5546596b (patch) | |
tree | a5831764405f4440325fb80d157060692e0edd01 /gst/videoparsers/gstmpegvideoparse.c | |
parent | f396baa3af7486abf5fb2449b24807ed3058d7a4 (diff) | |
download | gstreamer-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.c | 9 |
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; |