From 7fafbe2e22a83b68450174f7919f02650d52b805 Mon Sep 17 00:00:00 2001 From: Josep Torra Date: Tue, 5 Feb 2013 23:07:12 +0100 Subject: [PATCH] tsdemux: expose VC1 streams with missing descriptor. Fixes playback of VC1 streams when the descriptor is missing. --- gst/mpegtsdemux/tsdemux.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/gst/mpegtsdemux/tsdemux.c b/gst/mpegtsdemux/tsdemux.c index 603bcb7950..2bfae52aa9 100644 --- a/gst/mpegtsdemux/tsdemux.c +++ b/gst/mpegtsdemux/tsdemux.c @@ -860,23 +860,28 @@ create_pad_for_stream (MpegTSBase * base, MpegTSBaseStream * bstream, break; case ST_PRIVATE_EA: /* Try to detect a VC1 stream */ { + gboolean is_vc1 = FALSE; desc = mpegts_get_descriptor_from_stream ((MpegTSBaseStream *) stream, DESC_REGISTRATION); if (desc) { if (DESC_LENGTH (desc) >= 4) { if (DESC_REGISTRATION_format_identifier (desc) == DRF_ID_VC1) { - GST_WARNING ("0xea private stream type found but no descriptor " - "for VC1. Assuming plain VC1."); - template = gst_static_pad_template_get (&video_template); - name = g_strdup_printf ("video_%04x", bstream->pid); - caps = gst_caps_new_simple ("video/x-wmv", - "wmvversion", G_TYPE_INT, 3, - "format", G_TYPE_STRING, "WVC1", NULL); + is_vc1 = TRUE; } } g_free (desc); } + if (!is_vc1) { + GST_WARNING ("0xea private stream type found but no descriptor " + "for VC1. Assuming plain VC1."); + } + + template = gst_static_pad_template_get (&video_template); + name = g_strdup_printf ("video_%04x", bstream->pid); + caps = gst_caps_new_simple ("video/x-wmv", + "wmvversion", G_TYPE_INT, 3, "format", G_TYPE_STRING, "WVC1", NULL); + break; } case ST_BD_AUDIO_AC3: