Embedded device and custom Gstreamer source

Duchassin Frederic duchassin at sefram.fr
Fri Feb 22 18:13:13 UTC 2019


Hello,

Yes, aiurdemux is ported on gstreamer1.0.

On my imx8m, Tsdemux is not adviced  as it doesn't work very well. I 
always get glitches on my video sink using tsdemux.

BR


Frédéric


Le 22/02/2019 à 15:28, Nicolas Dufresne a écrit :
>
>
> Le ven. 22 févr. 2019 03 h 42, Duchassin Frederic <duchassin at sefram.fr 
> <mailto:duchassin at sefram.fr>> a écrit :
>
>     Hello,
>
>     I try to make my own PCIE gstreamer source.
>
>     My goal is to feed an mpeg2ts stream to gstreamer pipeline on my
>     IMX8M som.(kernel 4.9.88)
>
>     In order to do that, i've created my own source based on GstBaseSrc.
>
>     On many stream i get no problem....but on others my pipeline
>     doesn't want to work  and it seems that MPEG2 parser is the problem.
>
>     This is the log of the failure :
>
>         root at cl-som-imx8:/home/sefram/debug# gst-launch-1.0 pciesrc
>         do-timestamp=false blocksize=4096 ! queue ! tee ! typefind !
>         aiurdemux
>
> aiurdemux is the multicontainer demuxer by Freescale. I didn't know it 
> was ported to 1.0. It is known to have all sort of small glitches. I 
> would suggest to replace it by tsdemux. Same API to select the pid. 
> This is the upstream demuxer.
>
> Note that normally this type of HW is implemented as a V4L2 capture 
> driver, and a source already exist, v4l2src.
>
>         program-numberr=5901 name=d ! fakesink async=false
>         0:00:00.409990158 13052       0x7f72d0 LOG               
>         aiurdemux
>         aiurdemux.c:478:gst_aiurdemux_init:<GstAiurDemux at 0x8202e0>
>         gst_aiurdemux_init
>         Setting pipeline to PAUSED ...
>         0:00:00.413664153 13052       0x7f72d0 LOG               
>         aiurdemux aiurdemux.c:519:gst_aiurdemux_change_state:<d>
>         change_state transition=a
>         0:00:00.413973989 13052       0x7f72d0 DEBUG             
>         aiurdemux aiurdemux.c:508:gst_aiurdemux_change_state:<d>
>         change_state READY_TO_PAUSED
>         0:00:00.414040469 13052       0x7f72d0 LOG               
>         aiurdemux aiurdemux.c:894:aiurdemux_sink_activate:<d:sink>
>         activating push
>         Pipeline is live and does not need PREROLL ...
>         Setting pipeline to PLAYING ...
>         0:00:00.416130963 13052       0x7f72d0 LOG               
>         aiurdemux aiurdemux.c:519:gst_aiurdemux_change_state:<d>
>         change_state transition=1c
>         New clock: GstSystemClock
>         0:00:00.417412908 13052       0x8124a0 LOG               
>         aiurdemux aiurdemux.c:669:gst_aiurdemux_handle_sink_event:<d>
>         gst_aiurdemux_handle_sink_event event=280e
>         0:00:00.434010267 13052       0x8124a0 DEBUG             
>         aiurdemux aiurdemux.c:1082:gst_aiurdemux_setcaps:<d>
>         gst_aiurdemux_setcaps=video/mpegts,
>         systemstream=(boolean)true, packetsize=(int)188
>
>         ====== AIUR: 4.3.5 build on Jan 21 2019 17:47:10. ======
>                 Core: BLN_MAD-MMLAYER_MPG2PARSER_04.05.16 build on Sep
>         14 2017 02:37:53
>          file: /usr/lib/imx-mm/parser/lib_mpg2_parser_arm_elinux.so.3.1
>         0:00:00.434538141 13052       0x8124a0 INFO              
>         aiurdemux aiurdemux.c:1094:gst_aiurdemux_setcaps:<d>
>         Container: MPEG
>         0:00:00.434606900 13052       0x8124a0 DEBUG             
>         aiurdemux aiurdemux.c:596:gst_aiurdemux_handle_sink_event:<d>
>         handling new segment from0
>         0:00:00.571159247 13052       0x812280 LOG               
>         aiurdemux aiurdemux.c:1197:aiurdemux_loop_state_init:<d>
>         aiurdemux_loop_state_init SUCCESS
>         0:00:00.571239646 13052       0x812280 DEBUG             
>         aiurdemux aiurdemux.c:1518:aiurdemux_set_readmode:<d> read
>         mode = track mode
>         0:00:00.571300125 13052       0x812280 LOG               
>         aiurdemux aiurdemux.c:1979:aiurdemux_parse_streams:<d>
>         aiurdemux_parse_streams ret=0
>         0:00:00.571578522 13052       0x812280 LOG               
>         aiurdemux aiurdemux.c:1308:aiurdemux_loop_state_header:<d>
>         aiurdemux_loop_state_header SUCCESS
>         0:00:00.571616321 13052       0x812280 LOG               
>         aiurdemux aiurdemux.c:1313:aiurdemux_loop_state_header:<d>
>         aiurdemux_loop_state_header FAILED
>         0:00:00.571648601 13052       0x812280 LOG               
>         aiurdemux aiurdemux.c:1061:aiurdemux_push_task:<d> pausing
>         task, reason error
>
>         0:00:00.571694320 13052       0x812280 WARN              
>         aiurdemux aiurdemux.c:1068:aiurdemux_push_task:<d> error:
>         streaming stopped, reason error, state 2
>         WARNING: from element /GstPipeline:pipeline0/GstAiurDemux:d:
>         Delayed linking failed.
>         Additional debug info:
>         ../../../git/gst/parse/grammar.y(510): gst_parse_no_more_pads
>         (): /GstPipeline:pipeline0/GstAiurDemux:d:
>         failed delayed linking some pad of GstAiurDemux named d to
>         some pad of GstFakeSink named fakesink0
>         ERROR: from element /GstPipeline:pipeline0/GstAiurDemux:d:
>         GStreamer encountered a general stream error.
>         Additional debug info:
>         ../../../git/plugins/aiurdemux/aiurdemux.c(1068):
>         aiurdemux_push_task (): /GstPipeline:pipeline0/GstAiurDemux:d:
>         streaming stopped, reason error, state 2
>         Execution ended after 0:00:00.155683236
>         Setting pipeline to PAUSED ...
>         0:00:00.572143715 13052       0x7f72d0 LOG               
>         aiurdemux aiurdemux.c:519:gst_aiurdemux_change_state:<d>
>         change_state transition=23
>         Setting pipeline to READY ...
>         0:00:00.572622629 13052       0x7f72d0 LOG               
>         aiurdemux aiurdemux.c:519:gst_aiurdemux_change_state:<d>
>         change_state transition=1a
>         0:00:01.571911494 13052       0x7f72d0 DEBUG             
>         aiurdemux aiurdemux.c:528:gst_aiurdemux_change_state:<d>
>         change_state PAUSED_TO_READY
>         Setting pipeline to NULL ...
>         0:00:01.573297478 13052       0x7f72d0 LOG               
>         aiurdemux aiurdemux.c:519:gst_aiurdemux_change_state:<d>
>         change_state transition=11
>         Freeing pipeline ...
>         0:00:01.573816591 13052       0x7f72d0 LOG               
>         aiurdemux aiurdemux.c:486:gst_aiurdemux_finalize:<d>
>         gst_aiurdemux_finalize
>
>     I've recorder this stream . On this stream only program 5902 is
>     working. Others programs gives errors.
>
>     I just add that reading this file with "filesrc" gives no error on
>     every programs *(it just do many seek before decoding*):
>
>         root at cl-som-imx8:/home/sefram/debug# gst-launch-1.0 filesrc
>         location=/home/sefram/TS/essai.ts ! queue ! tee ! typefind !
>         aiurdemux program-number=5901 name=d ! fakesink
>         0:00:00.083554268 13082       0x66e460 LOG               
>         aiurdemux
>         aiurdemux.c:478:gst_aiurdemux_init:<GstAiurDemux at 0x670270>
>         gst_aiurdemux_init
>         Setting pipeline to PAUSED ...
>         0:00:00.086178037 13082       0x66e460 LOG               
>         aiurdemux aiurdemux.c:519:gst_aiurdemux_change_state:<d>
>         change_state transition=a
>         0:00:00.086412994 13082       0x66e460 DEBUG             
>         aiurdemux aiurdemux.c:508:gst_aiurdemux_change_state:<d>
>         change_state READY_TO_PAUSED
>         0:00:00.086458473 13082       0x66e460 LOG               
>         aiurdemux aiurdemux.c:894:aiurdemux_sink_activate:<d:sink>
>         activating push
>         Pipeline is PREROLLING ...
>         0:00:00.093662346 13082       0x654cf0 LOG               
>         aiurdemux aiurdemux.c:669:gst_aiurdemux_handle_sink_event:<d>
>         gst_aiurdemux_handle_sink_event event=280e
>         0:00:00.108879842 13082       0x654cf0 DEBUG             
>         aiurdemux aiurdemux.c:1082:gst_aiurdemux_setcaps:<d>
>         gst_aiurdemux_setcaps=video/mpegts,
>         systemstream=(boolean)true, packetsize=(int)188
>
>         ====== AIUR: 4.3.5 build on Jan 21 2019 17:47:10. ======
>                 Core: BLN_MAD-MMLAYER_MPG2PARSER_04.05.16 build on Sep
>         14 2017 02:37:53
>          file: /usr/lib/imx-mm/parser/lib_mpg2_parser_arm_elinux.so.3.1
>         0:00:00.109289877 13082       0x654cf0 INFO              
>         aiurdemux aiurdemux.c:1094:gst_aiurdemux_setcaps:<d>
>         Container: MPEG
>         0:00:00.109348556 13082       0x654cf0 DEBUG             
>         aiurdemux aiurdemux.c:608:gst_aiurdemux_handle_sink_event:<d>
>         Pushing newseg  rate 1, format 3, start 0:00:00.000000000,
>         stop 99:99:99.999999999
>         0:00:00.109487395 13082       0x654a30 DEBUG             
>         aiurdemux aiurcontent.c:576:aiurcontent_query_content_info:
>         can not mkdir /home/root/.aiur
>         0:00:00.132204560 13082       0x654a30 DEBUG             
>         aiurdemux aiurcontent.c:351:aiurcontent_callback_seek_push:
>         seek to 0
>         0:00:00.132278479 13082       0x654a30 DEBUG             
>         aiurdemux aiurstreamcache.c:340:gst_aiur_stream_cache_seek:
>         Flush cache, backward seek addr 0, cachestart 2814646, offset
>         200010
>         0:00:00.132311118 13082       0x654a30 INFO              
>         aiurdemux aiurstreamcache.c:365:gst_aiur_stream_cache_seek:
>         stream cache try seek to 0
>         0:00:01.133119765 13082       0x654cf0 DEBUG             
>         aiurdemux aiurdemux.c:608:gst_aiurdemux_handle_sink_event:<d>
>         Pushing newseg  rate 1, format 3, start 0:00:00.000000000,
>         stop 99:99:99.999999999
>         0:00:01.179763321 13082       0x654a30 DEBUG             
>         aiurdemux aiurcontent.c:351:aiurcontent_callback_seek_push:
>         seek to 0
>         0:00:01.179851879 13082       0x654a30 DEBUG             
>         aiurdemux aiurstreamcache.c:340:gst_aiur_stream_cache_seek:
>         Flush cache, backward seek addr 0, cachestart 3666614, offset
>         200010
>         0:00:01.179895199 13082       0x654a30 INFO              
>         aiurdemux aiurstreamcache.c:365:gst_aiur_stream_cache_seek:
>         stream cache try seek to 0
>         0:00:02.180303771 13082       0x654cf0 DEBUG             
>         aiurdemux aiurdemux.c:608:gst_aiurdemux_handle_sink_event:<d>
>         Pushing newseg  rate 1, format 3, start 0:00:00.000000000,
>         stop 99:99:99.999999999
>         0:00:02.182863220 13082       0x654a30 DEBUG             
>         aiurdemux aiurcontent.c:351:aiurcontent_callback_seek_push:
>         seek to 130314240
>         0:00:02.182958379 13082       0x654a30 INFO              
>         aiurdemux aiurstreamcache.c:365:gst_aiur_stream_cache_seek:
>         stream cache try seek to 130314240
>         0:00:02.183825128 13082       0x654cf0 DEBUG             
>         aiurdemux aiurdemux.c:608:gst_aiurdemux_handle_sink_event:<d>
>         Pushing newseg  rate 1, format 3, start 0:00:00.130314240,
>         stop 99:99:99.999999999
>         0:00:02.185594987 13082       0x654a30 DEBUG             
>         aiurdemux aiurcontent.c:351:aiurcontent_callback_seek_push:
>         seek to 130052096
>         0:00:02.185642026 13082       0x654a30 DEBUG             
>         aiurdemux aiurstreamcache.c:340:gst_aiur_stream_cache_seek:
>         Flush cache, backward seek addr 130052096, cachestart
>         130314240, offset 131072
>         0:00:02.185683666 13082       0x654a30 INFO              
>         aiurdemux aiurstreamcache.c:365:gst_aiur_stream_cache_seek:
>         stream cache try seek to 130052096
>         0:00:02.186139900 13082       0x654cf0 DEBUG             
>         aiurdemux aiurdemux.c:608:gst_aiurdemux_handle_sink_event:<d>
>         Pushing newseg  rate 1, format 3, start 0:00:00.130052096,
>         stop 99:99:99.999999999
>         0:00:02.192078748 13082       0x654a30 DEBUG             
>         aiurdemux aiurcontent.c:351:aiurcontent_callback_seek_push:
>         seek to 0
>         0:00:02.192145227 13082       0x654a30 DEBUG             
>         aiurdemux aiurstreamcache.c:340:gst_aiur_stream_cache_seek:
>         Flush cache, backward seek addr 0, cachestart
>
>     I hope somebody could help me because i don't really understand
>     the problem. My custom plugin should be bad...I can send my source
>     code if someone can look at it.
>
>     BR
>
>     Frédéric
>
>     _______________________________________________
>     gstreamer-devel mailing list
>     gstreamer-devel at lists.freedesktop.org
>     <mailto:gstreamer-devel at lists.freedesktop.org>
>     https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
>
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20190222/9ea6a4ad/attachment-0001.html>


More information about the gstreamer-devel mailing list