mpegtsdemux: enable gather_pes only for DVB subtitle private streams
authorJanne Grunau <janne.grunau@collabora.co.uk>
Wed, 15 Dec 2010 13:23:58 +0000 (14:23 +0100)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Wed, 15 Dec 2010 19:47:25 +0000 (20:47 +0100)
gst/mpegdemux/gstmpegtsdemux.c

index 0dd8d7d..a863fd3 100644 (file)
@@ -1471,12 +1471,18 @@ gst_mpegts_stream_parse_pmt (GstMpegTSStream * stream,
         /* set adaptor */
         GST_LOG ("Initializing PES filter for PID %u", ES_stream->PID);
         gst_pes_filter_init (&ES_stream->filter, NULL, NULL);
+
         if (ES_stream->stream_type == ST_PRIVATE_DATA) {
-          GST_FIXME ("Stream type is ST_PRIVATE_DATA, setting "
-              "filter->gather_pes as a HACK");
-          /* FIXME: There's another place where pes filters could get
-           * initialized. Might need similar temporary hack there as well */
-          ES_stream->filter.gather_pes = TRUE;
+          guint8 *dvb_sub_desc = gst_mpeg_descriptor_find (ES_stream->ES_info,
+              DESC_DVB_SUBTITLING);
+
+          /* enable gather PES for DVB subtitles since the dvbsuboverlay
+           * expects complete PES packets */
+          if (dvb_sub_desc) {
+            /* FIXME: There's another place where pes filters could get
+             * initialized. Might need similar temporary hack there as well */
+            ES_stream->filter.gather_pes = TRUE;
+          }
         }
         gst_pes_filter_set_callbacks (&ES_stream->filter,
             (GstPESFilterData) gst_mpegts_demux_data_cb,