From f5ef30edd4f71c42d5424c236931af97d7e7361c Mon Sep 17 00:00:00 2001 From: Zaheer Abbas Merali Date: Tue, 14 Dec 2004 16:34:45 +0000 Subject: [PATCH] gst/typefind/gsttypefindfunctions.c: Add typefinding for mpeg2 pes streams Original commit message from CVS: 2004-12-14 Zaheer Abbas Merali * gst/typefind/gsttypefindfunctions.c: (mpeg2_sys_type_find): Add typefinding for mpeg2 pes streams --- ChangeLog | 5 +++++ common | 2 +- gst/typefind/gsttypefindfunctions.c | 15 +++++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 88de3c78a3..f88ce6e293 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-12-14 Zaheer Abbas Merali + + * gst/typefind/gsttypefindfunctions.c: (mpeg2_sys_type_find): + Add typefinding for mpeg2 pes streams + 2004-12-13 David Schleef * configure.ac: Applied patch from bug #143659, making default diff --git a/common b/common index 8404d8841f..b2638c1007 160000 --- a/common +++ b/common @@ -1 +1 @@ -Subproject commit 8404d8841f5fd58fe31de09090867115e97c5261 +Subproject commit b2638c100721f67b280c3b43b21f1ce1c9b5e316 diff --git a/gst/typefind/gsttypefindfunctions.c b/gst/typefind/gsttypefindfunctions.c index dd04535c5f..fb60198bcc 100644 --- a/gst/typefind/gsttypefindfunctions.c +++ b/gst/typefind/gsttypefindfunctions.c @@ -544,6 +544,13 @@ static GstStaticCaps mpeg_sys_caps = GST_STATIC_CAPS ("video/mpeg, " (((guint8 *)data)[1] == 0x00) && \ (((guint8 *)data)[2] == 0x01) && \ ((((guint8 *)data)[3] & 0x80) == 0x80)) +#define IS_MPEG_PES_HEADER(data) ((((guint8 *)data)[0] == 0x00) && \ + (((guint8 *)data)[1] == 0x00) && \ + (((guint8 *)data)[2] == 0x01) && \ + ((((guint8 *)data)[3] == 0xE0) || \ + (((guint8 *)data)[3] == 0xC0) || \ + (((guint8 *)data)[3] == 0xBD))) + static void mpeg2_sys_type_find (GstTypeFind * tf, gpointer unused) { @@ -565,7 +572,15 @@ mpeg2_sys_type_find (GstTypeFind * tf, gpointer unused) gst_type_find_suggest (tf, GST_TYPE_FIND_MAXIMUM, caps); gst_caps_free (caps); } + } else if (data && IS_MPEG_PES_HEADER (data)) { + /* PES stream */ + GstCaps *caps = gst_caps_copy (MPEG_SYS_CAPS); + + gst_structure_set (gst_caps_get_structure (caps, 0), "mpegversion", + G_TYPE_INT, 2, 0); + gst_type_find_suggest (tf, GST_TYPE_FIND_MAXIMUM, caps); } + }; /* ATTANTION: ugly return value: