After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 747898 - unable to dynamically insert tsmux into running pipeline
unable to dynamically insert tsmux into running pipeline
Status: RESOLVED OBSOLETE
Product: GStreamer
Classification: Platform
Component: gst-plugins-bad
git master
Other Linux
: Normal normal
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2015-04-15 09:02 UTC by Andreas Frisch
Modified: 2018-11-03 13:34 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
./tsswitchtest <short-file.ts> (10.52 KB, text/x-csrc)
2015-04-15 09:02 UTC, Andreas Frisch
Details

Description Andreas Frisch 2015-04-15 09:02:03 UTC
Created attachment 301598 [details]
./tsswitchtest <short-file.ts>

i have a scenario where i wanna dynamically switch the input of a gst-rtsp-server streaming mpeg ts (with h.264 + aac es inside) from a ts stream delivered over a socket to a still image in case the input stream is lost.

so i destilled this into a minimal test case reading a ts from a file in an appsrc's need-data callback and then removing the appsrc and replacing it with testsources when the file is played completely.

so basically i have this pipeline (except with appsrc instead of filesrc)

gst-launch-1.0 filesrc location=test.ts ! queue name=ts_queue ! tsparse name=tsparse set-timestamps=TRUE ! tsdemux name=d d. ! queue ! faad ! audioconvert ! alsasink  d. ! queue ! h264parse ! avdec_h264 ! autovideosink

and replace it with

gst-launch-1.0 videotestsrc ! capsfilter ! x264enc ! mpegtsmux name=m audiotestsrc ! capsfilter ! faac ! m. m. ! queue name=ts_queue ! tsparse name=tsparse set-timestamps=TRUE ! tsdemux name=d d. ! queue ! faad ! audioconvert ! alsasink  d. ! queue ! h264parse ! avdec_h264 ! autovideosink

i did lots of experiments trying to get the timestamps right to achieve a seamless transition but I suspect some bugginess because there are also

(tsswitchtest:10281): GStreamer-WARNING **: gstpad.c:4802:store_sticky_event:<ts_queue:sink> Sticky event misordering, got 'segment' before 'caps'

the testsources seem to produce the buffers with the correct timestamps because they show up as
tsparse mpegtsparse.c:789:drain_pending_buffers:<tsparse> Pushing buffers - startTS 0:00:13.874543898 duration 0:00:00.119712000 16168 bytes
...
but then after each drain line, there are several
GST_PADS gstpad.c:4102:gst_pad_chain_list_default:<tsparse:sink> chaining each group in list as a merged buffer
and faad will eventually error out because it can't decode the stream
Comment 1 GStreamer system administrator 2018-11-03 13:34:21 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/241.