summaryrefslogtreecommitdiff
path: root/gst/mpegvideoparse
diff options
context:
space:
mode:
authorThijs Vermeir <thijsvermeir@gmail.com>2010-10-14 11:45:55 +0200
committerThijs Vermeir <thijsvermeir@gmail.com>2010-10-14 18:52:27 +0200
commit96a7f9c8b1195129f0c2157cbbcbaa6cab45056e (patch)
tree31f36e81c54553cccb2a5c9d8120080222a60446 /gst/mpegvideoparse
parent9f4339c0599cdc849ae5fe724f0fcc769c712a29 (diff)
downloadgstreamer-plugins-bad-96a7f9c8b1195129f0c2157cbbcbaa6cab45056e.tar.gz
mpegvideoparse: accelerate search for start code
As the startcode always starts with 0x000001 some iterations can be skipped if values > 1 are detected. ~ 70% faster on HD video stream. https://bugzilla.gnome.org/show_bug.cgi?id=632130
Diffstat (limited to 'gst/mpegvideoparse')
-rw-r--r--gst/mpegvideoparse/mpegpacketiser.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/gst/mpegvideoparse/mpegpacketiser.c b/gst/mpegvideoparse/mpegpacketiser.c
index fb8c9f524..694c4761d 100644
--- a/gst/mpegvideoparse/mpegpacketiser.c
+++ b/gst/mpegvideoparse/mpegpacketiser.c
@@ -108,6 +108,16 @@ mpeg_util_find_start_code (guint32 * sync_word, guint8 * cur, guint8 * end)
return cur;
}
+ /* accelerate search for start code */
+ if (*cur > 1) {
+ while (cur < (end - 4) && *cur > 1)
+ if (cur[3] > 1)
+ cur += 4;
+ else
+ cur++;
+ code = 0xffffff00;
+ }
+
/* Add the next available byte to the collected sync word */
code |= *cur++;
}