From: Gilbok Lee Date: Wed, 1 Dec 2021 04:55:42 +0000 (+0900) Subject: mpegtsdemux: activate new stream when program update X-Git-Tag: submit/tizen/20211201.073856^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=07f8147b03fe4309d9cc25392319641caa7dae6a;p=platform%2Fupstream%2Fgst-plugins-bad.git mpegtsdemux: activate new stream when program update Change-Id: If8f299f90e181d47579f143e9671d488f0b2dbe6 --- diff --git a/gst/mpegtsdemux/mpegtsbase.c b/gst/mpegtsdemux/mpegtsbase.c index 3f65b014c..2e41f9507 100644 --- a/gst/mpegtsdemux/mpegtsbase.c +++ b/gst/mpegtsdemux/mpegtsbase.c @@ -740,9 +740,23 @@ mpegts_base_update_program (MpegTSBase * base, MpegTSBaseProgram * program, nbstreams = pmt->streams->len; for (i = 0; i < nbstreams; i++) { GstMpegtsPMTStream *stream = g_ptr_array_index (pmt->streams, i); - if (!_pmt_stream_in_program (program, stream)) + if (!_pmt_stream_in_program (program, stream)) { +#ifdef TIZEN_FEATURE_TSDEMUX_UPDATE_STREAM + if (G_UNLIKELY (MPEGTS_BIT_IS_SET (base->is_pes, stream->pid))) + GST_FIXME + ("Refcounting issue. Setting twice a PID (0x%04x) as known PES", + stream->pid); + if (G_UNLIKELY (MPEGTS_BIT_IS_SET (base->known_psi, stream->pid))) { + GST_FIXME + ("Refcounting issue. Setting a known PSI PID (0x%04x) as known PES", + stream->pid); + MPEGTS_BIT_UNSET (base->known_psi, stream->pid); + } + MPEGTS_BIT_SET (base->is_pes, stream->pid); +#endif mpegts_base_program_add_stream (base, program, stream->pid, stream->stream_type, stream); + } } /* Call subclass update */ @@ -759,6 +773,9 @@ mpegts_base_update_program (MpegTSBase * base, MpegTSBaseProgram * program, for (tmp = toremove; tmp; tmp = tmp->next) { MpegTSBaseStream *stream = (MpegTSBaseStream *) tmp->data; mpegts_base_program_remove_stream (base, program, stream->pid); +#ifdef TIZEN_FEATURE_TSDEMUX_UPDATE_STREAM + MPEGTS_BIT_UNSET (base->is_pes, stream->pid); +#endif } return TRUE; } diff --git a/gst/mpegtsdemux/tsdemux.c b/gst/mpegtsdemux/tsdemux.c index 34c2b3b85..6726d60a9 100644 --- a/gst/mpegtsdemux/tsdemux.c +++ b/gst/mpegtsdemux/tsdemux.c @@ -2145,7 +2145,12 @@ gst_ts_demux_update_program (MpegTSBase * base, MpegTSBaseProgram * program) /* Add all streams, then fire no-more-pads */ for (tmp = program->stream_list; tmp; tmp = tmp->next) { TSDemuxStream *stream = (TSDemuxStream *) tmp->data; +#ifdef TIZEN_FEATURE_TSDEMUX_UPDATE_STREAM + if (!stream->pad + || (stream->pad && !stream->active)) { +#else if (!stream->pad) { +#endif activate_pad_for_stream (demux, stream); if (stream->sparse) { /* force sending of pending sticky events which have been stored on the diff --git a/packaging/gst-plugins-bad.spec b/packaging/gst-plugins-bad.spec index 60956e999..81b6aeee4 100644 --- a/packaging/gst-plugins-bad.spec +++ b/packaging/gst-plugins-bad.spec @@ -4,7 +4,7 @@ Name: gst-plugins-bad Version: 1.16.2 -Release: 26 +Release: 27 Summary: GStreamer Streaming-Media Framework Plug-Ins License: LGPL-2.0+ Group: Multimedia/Framework @@ -86,6 +86,7 @@ export CFLAGS+=" -Wall -g -fPIC\ -DTIZEN_FEATURE_TSDEMUX_INVALID_PCR_PID\ -DTIZEN_FEATURE_TSDEMUX_LANG_TAG\ -DTIZEN_FEATURE_TSDEMUX_UPDATE_PMT\ + -DTIZEN_FEATURE_TSDEMUX_UPDATE_STREAM\ -DTIZEN_FEATURE_HLS_WEBVTT\ -DTIZEN_FEATURE_OALSINK_MODIFICATION\ -DTIZEN_FEATURE_MPEGDEMUX_MODIFICATION\