diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..dff642c --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*/plots/* diff --git a/rusttechx-2024/ogg-demux-pipeline.svg b/rusttechx-2024/ogg-demux-pipeline.svg new file mode 100644 index 0000000..d68c1a9 --- /dev/null +++ b/rusttechx-2024/ogg-demux-pipeline.svg @@ -0,0 +1,508 @@ + + + + + + +pipeline + +<GstPipeline> +pipeline0 +[>] + +cluster_autoaudiosink0_0x7e06740576f0 + +GstAutoAudioSink +autoaudiosink0 +[>] +filter-caps=audio/x-raw + + +cluster_autoaudiosink0_0x7e06740576f0_sink + + +cluster_autoaudiosink0_actual_sink_pulse_0x7e0674069520 + +GstPulseSink +autoaudiosink0-actual-sink-pulse +[>] +enable-last-sample=FALSE +device="bluez_output.00_02_5B_00_FF_0C.1" +current-device="bluez_output.00_02_5B_00_FF_0C.1" +device-name="DX3 Pro+" + + +cluster_autoaudiosink0_actual_sink_pulse_0x7e0674069520_sink + + +cluster_queue3_0x7e067405b990 + +GstQueue +queue3 +[>] +current-level-buffers=39 +current-level-bytes=319488 +current-level-time=832000000 + + +cluster_queue3_0x7e067405b990_sink + + +cluster_queue3_0x7e067405b990_src + + +cluster_vorbisdec0_0x7e0674054030 + +GstVorbisDec +vorbisdec0 +[>] + + +cluster_vorbisdec0_0x7e0674054030_sink + + +cluster_vorbisdec0_0x7e0674054030_src + + +cluster_queue2_0x7e0674058fd0 + +GstQueue +queue2 +[>] + + +cluster_queue2_0x7e0674058fd0_sink + + +cluster_queue2_0x7e0674058fd0_src + + +cluster_autovideosink0_0x7e0674027fa0 + +GstAutoVideoSink +autovideosink0 +[>] +filter-caps=video/x-raw + + +cluster_autovideosink0_0x7e0674027fa0_sink + + +cluster_autovideosink0_actual_sink_xvimage_0x7e0674038f30 + +GstXvImageSink +autovideosink0-actual-sink-xvimage +[>] +max-lateness=5000000 +qos=TRUE +last-sample=((GstSample*) 0x5e6a30673490) +processing-deadline=15000000 +device-name="glamor textured video" +double-buffer=FALSE +colorkey=526352 +window-width=1912 +window-height=2111 + + +cluster_autovideosink0_actual_sink_xvimage_0x7e0674038f30_sink + + +cluster_queue1_0x7e067402f440 + +GstQueue +queue1 +[>] +current-level-buffers=4 +current-level-bytes=12441600 +current-level-time=166666666 + + +cluster_queue1_0x7e067402f440_sink + + +cluster_queue1_0x7e067402f440_src + + +cluster_theoradec0_0x7e06740233a0 + +GstTheoraDec +theoradec0 +[>] + + +cluster_theoradec0_0x7e06740233a0_sink + + +cluster_theoradec0_0x7e06740233a0_src + + +cluster_queue0_0x7e067402cbd0 + +GstQueue +queue0 +[>] +current-level-buffers=24 +current-level-bytes=1475593 +current-level-time=1000000000 + + +cluster_queue0_0x7e067402cbd0_sink + + +cluster_queue0_0x7e067402cbd0_src + + +cluster_oggdemux0_0x5e6a306699a0 + +GstOggDemux +oggdemux0 +[>] + + +cluster_oggdemux0_0x5e6a306699a0_sink + + +cluster_oggdemux0_0x5e6a306699a0_src + + +cluster_filesrc0_0x5e6a306639a0 + +GstFileSrc +filesrc0 +[>] +location="sample.ogv" + + +cluster_filesrc0_0x5e6a306639a0_src + + + +legend + +Legend +Element-States: [~] void-pending, [0] null, [-] ready, [=] paused, [>] playing +Pad-Activation: [-] none, [>] push, [<] pull +Pad-Flags: [b]locked, [f]lushing, [b]locking, [E]OS; upper-case is set +Pad-Task: [T] has started task, [t] has paused task + + + +_proxypad1_0x7e0674058020 + +proxypad1 +[>][bfb] + + + +autoaudiosink0_actual_sink_pulse_0x7e0674069520_sink_0x7e0674069930 + +sink +[>][bfb] + + + +_proxypad1_0x7e0674058020->autoaudiosink0_actual_sink_pulse_0x7e0674069520_sink_0x7e0674069930 + + +audio/x-raw +              format: F32LE +              layout: interleaved +                rate: 48000 +            channels: 2 +        channel-mask: 0x0000000000000003 + + + +autoaudiosink0_0x7e06740576f0_sink_0x7e0674057d30 + +sink +[>][bfb] + + + +autoaudiosink0_0x7e06740576f0_sink_0x7e0674057d30->_proxypad1_0x7e0674058020 + + + + + +queue3_0x7e067405b990_sink_0x7e067405be50 + +sink +[>][bfb] + + + +queue3_0x7e067405b990_src_0x7e067405c350 + +src +[>][bfb][T] + + + + +queue3_0x7e067405b990_src_0x7e067405c350->autoaudiosink0_0x7e06740576f0_sink_0x7e0674057d30 + + +audio/x-raw +              format: F32LE +              layout: interleaved +                rate: 48000 +            channels: 2 +        channel-mask: 0x0000000000000003 + + + +vorbisdec0_0x7e0674054030_sink_0x7e0674054690 + +sink +[>][bfb] + + + +vorbisdec0_0x7e0674054030_src_0x7e0674054960 + +src +[>][bfb] + + + + +vorbisdec0_0x7e0674054030_src_0x7e0674054960->queue3_0x7e067405b990_sink_0x7e067405be50 + + +audio/x-raw +              format: F32LE +              layout: interleaved +                rate: 48000 +            channels: 2 +        channel-mask: 0x0000000000000003 + + + +queue2_0x7e0674058fd0_sink_0x7e0674059490 + +sink +[>][bfb] + + + +queue2_0x7e0674058fd0_src_0x7e0674059990 + +src +[>][bfb][T] + + + + +queue2_0x7e0674058fd0_src_0x7e0674059990->vorbisdec0_0x7e0674054030_sink_0x7e0674054690 + + +audio/x-vorbis +                rate: 48000 +            channels: 2 +        streamheader: < (buffer)01766f7262... > + + + +_proxypad0_0x7e0674028fa0 + +proxypad0 +[>][bfb] + + + +autovideosink0_actual_sink_xvimage_0x7e0674038f30_sink_0x7e06740393d0 + +sink +[>][bfb] + + + +_proxypad0_0x7e0674028fa0->autovideosink0_actual_sink_xvimage_0x7e0674038f30_sink_0x7e06740393d0 + + +video/x-raw +              format: I420 +               width: 1920 +              height: 1080 +      interlace-mode: progressive +      multiview-mode: mono +     multiview-flags: 0:ffffffff:/right-view... +  pixel-aspect-ratio: 1/1 +         chroma-site: jpeg +         colorimetry: 2:4:5:0 +           framerate: 24/1 + + + +autovideosink0_0x7e0674027fa0_sink_0x7e0674028b60 + +sink +[>][bfb] + + + +autovideosink0_0x7e0674027fa0_sink_0x7e0674028b60->_proxypad0_0x7e0674028fa0 + + + + + +queue1_0x7e067402f440_sink_0x7e067402f900 + +sink +[>][bfb] + + + +queue1_0x7e067402f440_src_0x7e067402fe00 + +src +[>][bfb][T] + + + + +queue1_0x7e067402f440_src_0x7e067402fe00->autovideosink0_0x7e0674027fa0_sink_0x7e0674028b60 + + +video/x-raw +              format: I420 +               width: 1920 +              height: 1080 +      interlace-mode: progressive +      multiview-mode: mono +     multiview-flags: 0:ffffffff:/right-view... +  pixel-aspect-ratio: 1/1 +         chroma-site: jpeg +         colorimetry: 2:4:5:0 +           framerate: 24/1 + + + +theoradec0_0x7e06740233a0_sink_0x7e0674023790 + +sink +[>][bfb] + + + +theoradec0_0x7e06740233a0_src_0x7e0674023ac0 + +src +[>][bfb] + + + + +theoradec0_0x7e06740233a0_src_0x7e0674023ac0->queue1_0x7e067402f440_sink_0x7e067402f900 + + +video/x-raw +              format: I420 +               width: 1920 +              height: 1080 +      interlace-mode: progressive +      multiview-mode: mono +     multiview-flags: 0:ffffffff:/right-view... +  pixel-aspect-ratio: 1/1 +         chroma-site: jpeg +         colorimetry: 2:4:5:0 +           framerate: 24/1 + + + +queue0_0x7e067402cbd0_sink_0x7e067402d050 + +sink +[>][bfb] + + + +queue0_0x7e067402cbd0_src_0x7e067402d440 + +src +[>][bfb][T] + + + + +queue0_0x7e067402cbd0_src_0x7e067402d440->theoradec0_0x7e06740233a0_sink_0x7e0674023790 + + +video/x-theora +               width: 1920 +              height: 1080 +           framerate: 24/1 +  pixel-aspect-ratio: 1/1 +        streamheader: < (buffer)807468656f... > + + + +oggdemux0_0x5e6a306699a0_sink_0x5e6a30669ee0 + +sink +[<][bfb][T] + + + +oggdemux0_0x5e6a306699a0_src_135e55b4_0x7e067400c200 + +src_135e55b4 +[>][bfb] + + + + +oggdemux0_0x5e6a306699a0_src_135e55b4_0x7e067400c200->queue0_0x7e067402cbd0_sink_0x7e067402d050 + + +video/x-theora +               width: 1920 +              height: 1080 +           framerate: 24/1 +  pixel-aspect-ratio: 1/1 +        streamheader: < (buffer)807468656f... > + + + +oggdemux0_0x5e6a306699a0_src_4d0453ff_0x7e0674013fa0 + +src_4d0453ff +[>][bfb] + + + +oggdemux0_0x5e6a306699a0_src_4d0453ff_0x7e0674013fa0->queue2_0x7e0674058fd0_sink_0x7e0674059490 + + +audio/x-vorbis +                rate: 48000 +            channels: 2 +        streamheader: < (buffer)01766f7262... > + + + +filesrc0_0x5e6a306639a0_src_0x5e6a30663cf0 + +src +[<][bfb] + + + +filesrc0_0x5e6a306639a0_src_0x5e6a30663cf0->oggdemux0_0x5e6a306699a0_sink_0x5e6a30669ee0 + + +                                                   +application/ogg +audio/ogg +video/ogg +application/kate +ANY + + + diff --git a/rusttechx-2024/playbin-hls.svg b/rusttechx-2024/playbin-hls.svg deleted file mode 100644 index 169491d..0000000 --- a/rusttechx-2024/playbin-hls.svg +++ /dev/null @@ -1,3189 +0,0 @@ - - - - - - -pipeline - -<GstPlayBin3> -playbin -[=] -> [>] -uri="https://devstreaming-cdn.apple.com/videos/streaming/examples/img_bipbop_adv_ex… -current-uri="https://devstreaming-cdn.apple.com/videos/streaming/examples/img_bipbop_adv_ex… -audio-sink=(GstAutoAudioSink) audiosink -video-sink=(GstAutoVideoSink) videosink -sample=((GstSample*) 0x6087fe2162a0) - -cluster_playsink_0x6087fe3fb6d0 - -GstPlaySink -playsink -[>] -flags=video+audio+text+soft-volume+buffering+deinterlace+soft-colorbalance -sample=((GstSample*) 0x6087fe1ce840) -video-sink=(GstAutoVideoSink) videosink -audio-sink=(GstAutoAudioSink) audiosink -send-event-mode=first - - -cluster_playsink_0x6087fe3fb6d0_sink - - -cluster_tbin_0x751f484e8f30 - -GstBin -tbin -[>] - - -cluster_tbin_0x751f484e8f30_sink - - -cluster_tbin_0x751f484e8f30_src - - -cluster_subqueue_0x751f484eed30 - -GstQueue -subqueue -[>] -max-size-buffers=3 -max-size-bytes=0 -silent=TRUE - - -cluster_subqueue_0x751f484eed30_sink - - -cluster_subqueue_0x751f484eed30_src - - -cluster_suboverlay_0x751f484ecac0 - -GstSubtitleOverlay -suboverlay -[>] - - -cluster_suboverlay_0x751f484ecac0_sink - - -cluster_suboverlay_0x751f484ecac0_src - - -cluster_pre_colorspace_0x751ef0015680 - -GstVideoConvert -pre-colorspace -[>] -qos=TRUE - - -cluster_pre_colorspace_0x751ef0015680_sink - - -cluster_pre_colorspace_0x751ef0015680_src - - -cluster_post_colorspace_0x751ef0016210 - -GstVideoConvert -post-colorspace -[>] -qos=TRUE - - -cluster_post_colorspace_0x751ef0016210_sink - - -cluster_post_colorspace_0x751ef0016210_src - - -cluster_renderer_0x751ef0010830 - -GstTextOverlay -renderer -[>] -valignment=bottom -wait-text=FALSE -text-x=399 -text-y=484 -text-width=161 -text-height=29 - - -cluster_renderer_0x751ef0010830_sink - - -cluster_renderer_0x751ef0010830_src - - -cluster_vqueue_0x751f484e9250 - -GstQueue -vqueue -[>] -current-level-buffers=1 -current-level-bytes=835584 -current-level-time=16666667 -max-size-buffers=3 -max-size-bytes=0 -max-size-time=0 -silent=TRUE - - -cluster_vqueue_0x751f484e9250_sink - - -cluster_vqueue_0x751f484e9250_src - - -cluster_abin_0x751f484ce5c0 - -GstBin -abin -[>] - - -cluster_abin_0x751f484ce5c0_sink - - -cluster_aconv_0x751f484d1490 - -GstPlaySinkAudioConvert -aconv -[>] -use-converters=TRUE -volume-element=(GstVolume) volume - - -cluster_aconv_0x751f484d1490_sink - - -cluster_aconv_0x751f484d1490_src - - -cluster_resample_0x751f484e3050 - -GstAudioResample -resample -[>] - - -cluster_resample_0x751f484e3050_sink - - -cluster_resample_0x751f484e3050_src - - -cluster_conv_0x751f484df540 - -GstAudioConvert -conv -[>] - - -cluster_conv_0x751f484df540_sink - - -cluster_conv_0x751f484df540_src - - -cluster_identity_0x751f484d6fb0 - -GstIdentity -identity -[>] -signal-handoffs=FALSE - - -cluster_identity_0x751f484d6fb0_sink - - -cluster_identity_0x751f484d6fb0_src - - -cluster_aqueue_0x751f484ce870 - -GstQueue -aqueue -[>] -current-level-buffers=16 -current-level-bytes=131072 -current-level-time=341333328 -silent=TRUE - - -cluster_aqueue_0x751f484ce870_sink - - -cluster_aqueue_0x751f484ce870_src - - -cluster_audiosink_0x751f484be2e0 - -GstAutoAudioSink -audiosink -[>] -filter-caps=audio/x-raw - - -cluster_audiosink_0x751f484be2e0_sink - - -cluster_audiosink_actual_sink_pulse_0x751f484c9360 - -GstPulseSink -audiosink-actual-sink-pulse -[>] -enable-last-sample=FALSE -device="bluez_output.00_02_5B_00_FF_0C.1" -current-device="bluez_output.00_02_5B_00_FF_0C.1" -device-name="DX3 Pro+" - - -cluster_audiosink_actual_sink_pulse_0x751f484c9360_sink - - -cluster_vbin_0x751f48464560 - -GstBin -vbin -[>] - - -cluster_vbin_0x751f48464560_sink - - -cluster_vconv_0x751f48468ff0 - -GstPlaySinkVideoConvert -vconv -[>] -use-converters=TRUE - - -cluster_vconv_0x751f48468ff0_sink - - -cluster_vconv_0x751f48468ff0_src - - -cluster_scale_0x751f4849a5e0 - -GstVideoScale -scale -[>] -qos=TRUE - - -cluster_scale_0x751f4849a5e0_sink - - -cluster_scale_0x751f4849a5e0_src - - -cluster_conv_0x751f48497280 - -GstVideoConvert -conv -[>] -qos=TRUE - - -cluster_conv_0x751f48497280_sink - - -cluster_conv_0x751f48497280_src - - -cluster_identity_0x751f4846aa30 - -GstIdentity -identity -[>] -signal-handoffs=FALSE - - -cluster_identity_0x751f4846aa30_sink - - -cluster_identity_0x751f4846aa30_src - - -cluster_vqueue_0x751f484658d0 - -GstQueue -vqueue -[>] -current-level-buffers=3 -current-level-bytes=2506752 -current-level-time=50000000 -max-size-buffers=3 -max-size-bytes=0 -max-size-time=0 -silent=TRUE - - -cluster_vqueue_0x751f484658d0_sink - - -cluster_vqueue_0x751f484658d0_src - - -cluster_videosink_0x751f48449620 - -GstAutoVideoSink -videosink -[>] -filter-caps=video/x-raw - - -cluster_videosink_0x751f48449620_sink - - -cluster_videosink_actual_sink_xvimage_0x751f484502c0 - -GstXvImageSink -videosink-actual-sink-xvimage -[>] -max-lateness=5000000 -qos=TRUE -last-sample=((GstSample*) 0x6087fe2162a0) -processing-deadline=15000000 -device-name="glamor textured video" -double-buffer=FALSE -colorkey=526352 -window-width=960 -window-height=540 - - -cluster_videosink_actual_sink_xvimage_0x751f484502c0_sink - - -cluster_vdbin_0x751f484a5ad0 - -GstBin -vdbin -[>] - - -cluster_vdbin_0x751f484a5ad0_sink - - -cluster_vdbin_0x751f484a5ad0_src - - -cluster_deinterlace_0x751f484b9690 - -GstDeinterlace -deinterlace -[>] - - -cluster_deinterlace_0x751f484b9690_sink - - -cluster_deinterlace_0x751f484b9690_src - - -cluster_vdconv_0x751f4849e1e0 - -GstVideoConvert -vdconv -[>] -qos=TRUE - - -cluster_vdconv_0x751f4849e1e0_sink - - -cluster_vdconv_0x751f4849e1e0_src - - -cluster_audiotee_0x751f68097230 - -GstTee -audiotee -[>] -num-src-pads=1 - - -cluster_audiotee_0x751f68097230_sink - - -cluster_audiotee_0x751f68097230_src - - -cluster_streamsynchronizer0_0x6087fe3fbd80 - -GstStreamSynchronizer -streamsynchronizer0 -[>] - - -cluster_streamsynchronizer0_0x6087fe3fbd80_sink - - -cluster_streamsynchronizer0_0x6087fe3fbd80_src - - -cluster_uridecodebin3_0x6087fe3e1160 - -GstURIDecodeBin3 -uridecodebin3 -[>] -uri="https://devstreaming-cdn.apple.com/videos/streaming/examples/img_bipbop_adv_ex… -current-uri="https://devstreaming-cdn.apple.com/videos/streaming/examples/img_bipbop_adv_ex… -use-buffering=TRUE -caps=video/x-raw(ANY); audio/x-raw(ANY); text/x-raw(ANY); subpicture/x-dvd; subpictur… - - -cluster_uridecodebin3_0x6087fe3e1160_src - - -cluster_urisourcebin0_0x6087fe16c660 - -GstURISourceBin -urisourcebin0 -[>] -uri="https://devstreaming-cdn.apple.com/videos/streaming/examples/img_bipbop_adv_ex… -source=(GstSoupHTTPSrc) souphttpsrc0 -statistics=application/x-urisourcebin-stats, minimum-byte-level=(uint)0, maximum-byte-level… -parse-streams=TRUE - - -cluster_urisourcebin0_0x6087fe16c660_src - - -cluster_hlsdemux2_0_0x751f90049360 - -GstHLSDemux2 -hlsdemux2-0 -[>] -current-bandwidth=67203771 -current-level-time-video=11333333333 -current-level-time-audio=17493333060 - - -cluster_hlsdemux2_0_0x751f90049360_sink - - -cluster_hlsdemux2_0_0x751f90049360_src - - -cluster_parsebin2_0x751f680b8ee0 - -GstParseBin -parsebin2 -[>] - - -cluster_parsebin2_0x751f680b8ee0_sink - - -cluster_parsebin2_0x751f680b8ee0_src - - -cluster_subparse0_0x751f6826de30 - -GstSubParse -subparse0 -[>] - - -cluster_subparse0_0x751f6826de30_sink - - -cluster_subparse0_0x751f6826de30_src - - -cluster_typefind_0x751f680b9490 - -GstTypeFindElement -typefind -[>] -caps=application/x-subtitle-vtt, parsed=(boolean)false - - -cluster_typefind_0x751f680b9490_sink - - -cluster_typefind_0x751f680b9490_src - - -cluster_parsebin1_0x751f68165830 - -GstParseBin -parsebin1 -[>] - - -cluster_parsebin1_0x751f68165830_sink - - -cluster_parsebin1_0x751f68165830_src - - -cluster_aacparse0_0x751f68296340 - -GstAacParse -aacparse0 -[>] - - -cluster_aacparse0_0x751f68296340_sink - - -cluster_aacparse0_0x751f68296340_src - - -cluster_id3demux0_0x751f68291b30 - -GstID3Demux -id3demux0 -[>] - - -cluster_id3demux0_0x751f68291b30_sink - - -cluster_id3demux0_0x751f68291b30_src - - -cluster_typefind_0x751f68172480 - -GstTypeFindElement -typefind -[>] -caps=application/x-id3 - - -cluster_typefind_0x751f68172480_sink - - -cluster_typefind_0x751f68172480_src - - -cluster_track_main_video_0_period0_0x751f68095650 - -GstBin -track-main-video-0-period0 -[>] - - -cluster_track_main_video_0_period0_0x751f68095650_sink - - -cluster_parsebin0_0x751f680104d0 - -GstParseBin -parsebin0 -[>] - - -cluster_parsebin0_0x751f680104d0_sink - - -cluster_parsebin0_0x751f680104d0_src - - -cluster_capsfilter0_0x751f680a1b30 - -GstCapsFilter -capsfilter0 -[>] -caps=video/x-h264, profile=(string){ constrained-baseline, baseline, main, high, prog… - - -cluster_capsfilter0_0x751f680a1b30_sink - - -cluster_capsfilter0_0x751f680a1b30_src - - -cluster_h264parse0_0x751f6809c7d0 - -GstH264Parse -h264parse0 -[>] - - -cluster_h264parse0_0x751f6809c7d0_sink - - -cluster_h264parse0_0x751f6809c7d0_src - - -cluster_tsdemux1_0x751f6806df80 - -GstTSDemux -tsdemux1 -[>] -parse-private-sections=TRUE -ignore-pcr=TRUE - - -cluster_tsdemux1_0x751f6806df80_sink - - -cluster_tsdemux1_0x751f6806df80_src - - -cluster_typefind_0x751f68010b60 - -GstTypeFindElement -typefind -[>] -caps=video/mpegts, systemstream=(boolean)true, packetsize=(int)188 - - -cluster_typefind_0x751f68010b60_sink - - -cluster_typefind_0x751f68010b60_src - - -cluster_track_text_English_period0_0x751f90058b30 - -GstBin -track-text-English-period0 -[>] - - -cluster_track_text_English_period0_0x751f90058b30_sink - - -cluster_track_audio_English_period0_0x751f90056e40 - -GstBin -track-audio-English-period0 -[>] - - -cluster_track_audio_English_period0_0x751f90056e40_sink - - -cluster_typefindelement0_0x6087fe410f10 - -GstTypeFindElement -typefindelement0 -[>] -caps=application/x-hls - - -cluster_typefindelement0_0x6087fe410f10_sink - - -cluster_typefindelement0_0x6087fe410f10_src - - -cluster_souphttpsrc0_0x6087fe40e680 - -GstSoupHTTPSrc -souphttpsrc0 -[>] -automatic-eos=FALSE -location="https://devstreaming-cdn.apple.com/videos/streaming/examples/img_bipbop_adv_ex… -user-id=NULL -user-pw=NULL -proxy-id=NULL -proxy-pw=NULL -ssl-use-system-ca-file=FALSE - - -cluster_souphttpsrc0_0x6087fe40e680_src - - -cluster_decodebin3_0_0x6087fe3e3560 - -GstDecodebin3 -decodebin3-0 -[>] -caps=video/x-raw(ANY); audio/x-raw(ANY); text/x-raw(ANY); subpicture/x-dvd; subpictur… - - -cluster_decodebin3_0_0x6087fe3e3560_sink - - -cluster_decodebin3_0_0x6087fe3e3560_src - - -cluster_vah264dec0_0x751f480a88a0 - -GstVaH264Dec -vah264dec0 -[>] -device-path="/dev/dri/renderD128" - - -cluster_vah264dec0_0x751f480a88a0_sink - - -cluster_vah264dec0_0x751f480a88a0_src - - -cluster_avdec_aac0_0x751f540abdb0 - -avdec_aac -avdec_aac0 -[>] - - -cluster_avdec_aac0_0x751f540abdb0_sink - - -cluster_avdec_aac0_0x751f540abdb0_src - - -cluster_identity2_0x751f5c00b240 - -GstIdentity -identity2 -[>] -drop-allocation=TRUE - - -cluster_identity2_0x751f5c00b240_sink - - -cluster_identity2_0x751f5c00b240_src - - -cluster_identity1_0x751f5c008120 - -GstIdentity -identity1 -[>] -drop-allocation=TRUE - - -cluster_identity1_0x751f5c008120_sink - - -cluster_identity1_0x751f5c008120_src - - -cluster_identity0_0x751f5c004da0 - -GstIdentity -identity0 -[>] -drop-allocation=TRUE - - -cluster_identity0_0x751f5c004da0_sink - - -cluster_identity0_0x751f5c004da0_src - - -cluster_multiqueue0_0x6087fe3f2080 - -GstMultiQueue -multiqueue0 -[>] -max-size-buffers=0 -max-size-time=280999997 -sync-by-running-time=TRUE -use-interleave=TRUE -min-interleave-time=166666666 - - -cluster_multiqueue0_0x6087fe3f2080_sink - - -cluster_multiqueue0_0x6087fe3f2080_src - - - -legend - -Legend -Element-States: [~] void-pending, [0] null, [-] ready, [=] paused, [>] playing -Pad-Activation: [-] none, [>] push, [<] pull -Pad-Flags: [b]locked, [f]lushing, [b]locking, [E]OS; upper-case is set -Pad-Task: [T] has started task, [t] has paused task - - - -_proxypad3_0x751f68097ea0 - -proxypad3 -[>][bfb] - - - -audiotee_0x751f68097230_sink_0x751f68097560 - -sink -[>][bfb] - - - -_proxypad3_0x751f68097ea0->audiotee_0x751f68097230_sink_0x751f68097560 - - -audio/x-raw -              format: F32LE -              layout: non-interleaved -                rate: 48000 -            channels: 2 -        channel-mask: 0x0000000000000003 - - - -playsink_0x6087fe3fb6d0_audio_sink_0x751f68097bb0 - -audio_sink -[>][bfb] - - - -playsink_0x6087fe3fb6d0_audio_sink_0x751f68097bb0->_proxypad3_0x751f68097ea0 - - - - - -_proxypad4_0x751f68098690 - -proxypad4 -[>][bfb] - - - -streamsynchronizer0_0x6087fe3fbd80_sink_0_0x751f4849dc20 - -sink_0 -[>][bfb] - - - -_proxypad4_0x751f68098690->streamsynchronizer0_0x6087fe3fbd80_sink_0_0x751f4849dc20 - - -video/x-raw -              format: NV12 -               width: 960 -              height: 540 -      interlace-mode: progressive -      multiview-mode: mono -     multiview-flags: 0:ffffffff:/right-view... -  pixel-aspect-ratio: 1/1 -           framerate: 60/1 - - - -playsink_0x6087fe3fb6d0_video_sink_0x751f68098310 - -video_sink -[>][bfb] - - - -playsink_0x6087fe3fb6d0_video_sink_0x751f68098310->_proxypad4_0x751f68098690 - - - - - -_proxypad5_0x751f68098da0 - -proxypad5 -[>][bfb] - - - -streamsynchronizer0_0x6087fe3fbd80_sink_2_0x751f484f2f00 - -sink_2 -[>][bfb] - - - -_proxypad5_0x751f68098da0->streamsynchronizer0_0x6087fe3fbd80_sink_2_0x751f484f2f00 - - -text/x-raw -              format: pango-markup - - - -playsink_0x6087fe3fb6d0_text_sink_0x751f680989a0 - -text_sink -[>][bfb] - - - -playsink_0x6087fe3fb6d0_text_sink_0x751f680989a0->_proxypad5_0x751f68098da0 - - - - - -_proxypad35_0x751f484f19c0 - -proxypad35 -[>][bfb] - - - -vqueue_0x751f484e9250_sink_0x751f484e9740 - -sink -[>][bfb] - - - -_proxypad35_0x751f484f19c0->vqueue_0x751f484e9250_sink_0x751f484e9740 - - -video/x-raw -              format: NV12 -               width: 960 -              height: 540 -      interlace-mode: progressive -      multiview-mode: mono -     multiview-flags: 0:ffffffff:/right-view... -  pixel-aspect-ratio: 1/1 -           framerate: 60/1 - - - -tbin_0x751f484e8f30_sink_0x751f484f1750 - -sink -[>][bfb] - - - -tbin_0x751f484e8f30_sink_0x751f484f1750->_proxypad35_0x751f484f19c0 - - - - - -tbin_0x751f484e8f30_src_0x751f484f24b0 - -src -[>][bfb] - - - - -_proxypad36_0x751f484f20c0 - -proxypad36 -[>][bfb] - - - -subqueue_0x751f484eed30_sink_0x751f484ef080 - -sink -[>][bfb] - - - -_proxypad36_0x751f484f20c0->subqueue_0x751f484eed30_sink_0x751f484ef080 - - -text/x-raw -              format: pango-markup - - - -tbin_0x751f484e8f30_text_sink_0x751f484f1d40 - -text_sink -[>][bfb] - - - -tbin_0x751f484e8f30_text_sink_0x751f484f1d40->_proxypad36_0x751f484f20c0 - - - - - -_proxypad37_0x751f484f2860 - -proxypad37 -[>][bfb] - - - -_proxypad37_0x751f484f2860->tbin_0x751f484e8f30_src_0x751f484f24b0 - - - - - -vbin_0x751f48464560_sink_0x751f4849d4c0 - -sink -[>][bfb] - - - -tbin_0x751f484e8f30_src_0x751f484f24b0->vbin_0x751f48464560_sink_0x751f4849d4c0 - - -video/x-raw -              format: NV12 -               width: 960 -              height: 540 -      interlace-mode: progressive -      multiview-mode: mono -     multiview-flags: 0:ffffffff:/right-view... -  pixel-aspect-ratio: 1/1 -           framerate: 60/1 - - - -subqueue_0x751f484eed30_src_0x751f484ef510 - -src -[>][bfb][T] - - - - -suboverlay_0x751f484ecac0_subtitle_sink_0x751f484ee380 - -subtitle_sink -[>][bfb] - - - -subqueue_0x751f484eed30_src_0x751f484ef510->suboverlay_0x751f484ecac0_subtitle_sink_0x751f484ee380 - - -text/x-raw -              format: pango-markup - - - -_proxypad34_0x751f484ee780 - -proxypad34 -[>][bfb] - - - -suboverlay_0x751f484ecac0_subtitle_sink_0x751f484ee380->_proxypad34_0x751f484ee780 - - - - - -_proxypad33_0x751f484ede60 - -proxypad33 -[>][bfb] - - - -pre_colorspace_0x751ef0015680_sink_0x751ef0015a60 - -sink -[>][bfb] - - - -_proxypad33_0x751f484ede60->pre_colorspace_0x751ef0015680_sink_0x751ef0015a60 - - -video/x-raw -              format: NV12 -               width: 960 -              height: 540 -      interlace-mode: progressive -      multiview-mode: mono -     multiview-flags: 0:ffffffff:/right-view... -  pixel-aspect-ratio: 1/1 -           framerate: 60/1 - - - -suboverlay_0x751f484ecac0_video_sink_0x751f484eda60 - -video_sink -[>][bfb] - - - -suboverlay_0x751f484ecac0_video_sink_0x751f484eda60->_proxypad33_0x751f484ede60 - - - - - -suboverlay_0x751f484ecac0_src_0x751f484ed140 - -src -[>][bfb] - - - - -renderer_0x751ef0010830_text_sink_0x751ef0012b80 - -text_sink -[>][bfb] - - - -_proxypad34_0x751f484ee780->renderer_0x751ef0010830_text_sink_0x751ef0012b80 - - -text/x-raw -              format: pango-markup - - - -_proxypad32_0x751f484ed540 - -proxypad32 -[>][bfb] - - - -_proxypad32_0x751f484ed540->suboverlay_0x751f484ecac0_src_0x751f484ed140 - - - - - -suboverlay_0x751f484ecac0_src_0x751f484ed140->_proxypad37_0x751f484f2860 - - -video/x-raw -              format: NV12 -               width: 960 -              height: 540 -      interlace-mode: progressive -      multiview-mode: mono -     multiview-flags: 0:ffffffff:/right-view... -  pixel-aspect-ratio: 1/1 -           framerate: 60/1 - - - -pre_colorspace_0x751ef0015680_src_0x751ef00174a0 - -src -[>][bfb] - - - - -renderer_0x751ef0010830_video_sink_0x751ef00127d0 - -video_sink -[>][bfb] - - - -pre_colorspace_0x751ef0015680_src_0x751ef00174a0->renderer_0x751ef0010830_video_sink_0x751ef00127d0 - - -video/x-raw -              format: NV12 -               width: 960 -              height: 540 -      interlace-mode: progressive -      multiview-mode: mono -     multiview-flags: 0:ffffffff:/right-view... -  pixel-aspect-ratio: 1/1 -           framerate: 60/1 - - - -renderer_0x751ef0010830_src_0x751ef00130c0 - -src -[>][bfb] - - - - -post_colorspace_0x751ef0016210_sink_0x751ef00165f0 - -sink -[>][bfb] - - - -post_colorspace_0x751ef0016210_src_0x751ef0016970 - -src -[>][bfb] - - - - -post_colorspace_0x751ef0016210_src_0x751ef0016970->_proxypad32_0x751f484ed540 - - -video/x-raw -              format: NV12 -               width: 960 -              height: 540 -      interlace-mode: progressive -      multiview-mode: mono -     multiview-flags: 0:ffffffff:/right-view... -  pixel-aspect-ratio: 1/1 -           framerate: 60/1 - - - -renderer_0x751ef0010830_src_0x751ef00130c0->post_colorspace_0x751ef0016210_sink_0x751ef00165f0 - - -video/x-raw -              format: NV12 -               width: 960 -              height: 540 -      interlace-mode: progressive -      multiview-mode: mono -     multiview-flags: 0:ffffffff:/right-view... -  pixel-aspect-ratio: 1/1 -           framerate: 60/1 - - - -vqueue_0x751f484e9250_src_0x751f484ea120 - -src -[>][bfb][T] - - - - -vqueue_0x751f484e9250_src_0x751f484ea120->suboverlay_0x751f484ecac0_video_sink_0x751f484eda60 - - -video/x-raw -              format: NV12 -               width: 960 -              height: 540 -      interlace-mode: progressive -      multiview-mode: mono -     multiview-flags: 0:ffffffff:/right-view... -  pixel-aspect-ratio: 1/1 -           framerate: 60/1 - - - -_proxypad25_0x751f4849d840 - -proxypad25 -[>][bfb] - - - -vbin_0x751f48464560_sink_0x751f4849d4c0->_proxypad25_0x751f4849d840 - - - - - -_proxypad31_0x751f484e7d20 - -proxypad31 -[>][bfb] - - - -aqueue_0x751f484ce870_sink_0x751f484ced00 - -sink -[>][bfb] - - - -_proxypad31_0x751f484e7d20->aqueue_0x751f484ce870_sink_0x751f484ced00 - - -audio/x-raw -              format: F32LE -              layout: non-interleaved -                rate: 48000 -            channels: 2 -        channel-mask: 0x0000000000000003 - - - -abin_0x751f484ce5c0_sink_0x751f484e7ab0 - -sink -[>][bfb] - - - -abin_0x751f484ce5c0_sink_0x751f484e7ab0->_proxypad31_0x751f484e7d20 - - - - - -_proxypad29_0x751f484d6150 - -proxypad29 -[>][bfb] - - - -conv_0x751f484df540_sink_0x751f484dfad0 - -sink -[>][bfb] - - - -_proxypad29_0x751f484d6150->conv_0x751f484df540_sink_0x751f484dfad0 - - -audio/x-raw -              format: F32LE -              layout: non-interleaved -                rate: 48000 -            channels: 2 -        channel-mask: 0x0000000000000003 - - - -aconv_0x751f484d1490_sink_0x751f484d5db0 - -sink -[>][bfb] - - - -aconv_0x751f484d1490_sink_0x751f484d5db0->_proxypad29_0x751f484d6150 - - - - - -aconv_0x751f484d1490_src_0x751f484d6510 - -src -[>][bfb] - - - - -_proxypad30_0x751f484d6910 - -proxypad30 -[>][bfb] - - - -_proxypad30_0x751f484d6910->aconv_0x751f484d1490_src_0x751f484d6510 - - - - - -audiosink_0x751f484be2e0_sink_0x751f484bec70 - -sink -[>][bfb] - - - -aconv_0x751f484d1490_src_0x751f484d6510->audiosink_0x751f484be2e0_sink_0x751f484bec70 - - -audio/x-raw -                rate: 48000 -              format: F32LE -            channels: 2 -              layout: interleaved -        channel-mask: 0x0000000000000003 - - - -resample_0x751f484e3050_sink_0x751f484e35e0 - -sink -[>][bfb] - - - -resample_0x751f484e3050_src_0x751f484e3a00 - -src -[>][bfb] - - - - -resample_0x751f484e3050_src_0x751f484e3a00->_proxypad30_0x751f484d6910 - - -audio/x-raw -                rate: 48000 -              format: F32LE -            channels: 2 -              layout: interleaved -        channel-mask: 0x0000000000000003 - - - -conv_0x751f484df540_src_0x751f484dfed0 - -src -[>][bfb] - - - - -conv_0x751f484df540_src_0x751f484dfed0->resample_0x751f484e3050_sink_0x751f484e35e0 - - -audio/x-raw -                rate: 48000 -              format: F32LE -            channels: 2 -              layout: interleaved -        channel-mask: 0x0000000000000003 - - - -identity_0x751f484d6fb0_sink_0x751f484d73c0 - -sink -[>][bfb] - - - -identity_0x751f484d6fb0_src_0x751f484d77a0 - -src -[>][bfb] - - - - -_proxypad28_0x751f484beee0 - -proxypad28 -[>][bfb] - - - -audiosink_0x751f484be2e0_sink_0x751f484bec70->_proxypad28_0x751f484beee0 - - - - - -aqueue_0x751f484ce870_src_0x751f484cf090 - -src -[>][bfb][T] - - - - -aqueue_0x751f484ce870_src_0x751f484cf090->aconv_0x751f484d1490_sink_0x751f484d5db0 - - -audio/x-raw -              format: F32LE -              layout: non-interleaved -                rate: 48000 -            channels: 2 -        channel-mask: 0x0000000000000003 - - - -audiosink_actual_sink_pulse_0x751f484c9360_sink_0x751f484c9770 - -sink -[>][bfb] - - - -_proxypad28_0x751f484beee0->audiosink_actual_sink_pulse_0x751f484c9360_sink_0x751f484c9770 - - -audio/x-raw -                rate: 48000 -              format: F32LE -            channels: 2 -              layout: interleaved -        channel-mask: 0x0000000000000003 - - - -vqueue_0x751f484658d0_sink_0x751f48465d70 - -sink -[>][bfb] - - - -_proxypad25_0x751f4849d840->vqueue_0x751f484658d0_sink_0x751f48465d70 - - -video/x-raw -              format: NV12 -               width: 960 -              height: 540 -      interlace-mode: progressive -      multiview-mode: mono -     multiview-flags: 0:ffffffff:/right-view... -  pixel-aspect-ratio: 1/1 -           framerate: 60/1 - - - -_proxypad23_0x751f48469a70 - -proxypad23 -[>][bfb] - - - -conv_0x751f48497280_sink_0x751f48497660 - -sink -[>][bfb] - - - -_proxypad23_0x751f48469a70->conv_0x751f48497280_sink_0x751f48497660 - - -video/x-raw -              format: NV12 -               width: 960 -              height: 540 -      interlace-mode: progressive -      multiview-mode: mono -     multiview-flags: 0:ffffffff:/right-view... -  pixel-aspect-ratio: 1/1 -           framerate: 60/1 - - - -vconv_0x751f48468ff0_sink_0x751f48469670 - -sink -[>][bfb] - - - -vconv_0x751f48468ff0_sink_0x751f48469670->_proxypad23_0x751f48469a70 - - - - - -vconv_0x751f48468ff0_src_0x751f48469f90 - -src -[>][bfb] - - - - -_proxypad24_0x751f4846a390 - -proxypad24 -[>][bfb] - - - -_proxypad24_0x751f4846a390->vconv_0x751f48468ff0_src_0x751f48469f90 - - - - - -videosink_0x751f48449620_sink_0x751f48449ce0 - -sink -[>][bfb] - - - -vconv_0x751f48468ff0_src_0x751f48469f90->videosink_0x751f48449620_sink_0x751f48449ce0 - - -video/x-raw -              format: NV12 -               width: 960 -              height: 540 -      interlace-mode: progressive -      multiview-mode: mono -     multiview-flags: 0:ffffffff:/right-view... -  pixel-aspect-ratio: 1/1 -           framerate: 60/1 - - - -scale_0x751f4849a5e0_sink_0x751f4849a9e0 - -sink -[>][bfb] - - - -scale_0x751f4849a5e0_src_0x751f4849ae10 - -src -[>][bfb] - - - - -scale_0x751f4849a5e0_src_0x751f4849ae10->_proxypad24_0x751f4846a390 - - -video/x-raw -              format: NV12 -               width: 960 -              height: 540 -      interlace-mode: progressive -      multiview-mode: mono -     multiview-flags: 0:ffffffff:/right-view... -  pixel-aspect-ratio: 1/1 -           framerate: 60/1 - - - -conv_0x751f48497280_src_0x751f48499a70 - -src -[>][bfb] - - - - -conv_0x751f48497280_src_0x751f48499a70->scale_0x751f4849a5e0_sink_0x751f4849a9e0 - - -video/x-raw -              format: NV12 -               width: 960 -              height: 540 -      interlace-mode: progressive -      multiview-mode: mono -     multiview-flags: 0:ffffffff:/right-view... -  pixel-aspect-ratio: 1/1 -           framerate: 60/1 - - - -identity_0x751f4846aa30_sink_0x751f4846ae40 - -sink -[>][bfb] - - - -identity_0x751f4846aa30_src_0x751f4846b220 - -src -[>][bfb] - - - - -_proxypad22_0x751f4844a0e0 - -proxypad22 -[>][bfb] - - - -videosink_0x751f48449620_sink_0x751f48449ce0->_proxypad22_0x751f4844a0e0 - - - - - -vqueue_0x751f484658d0_src_0x751f48466040 - -src -[>][bfb][T] - - - - -vqueue_0x751f484658d0_src_0x751f48466040->vconv_0x751f48468ff0_sink_0x751f48469670 - - -video/x-raw -              format: NV12 -               width: 960 -              height: 540 -      interlace-mode: progressive -      multiview-mode: mono -     multiview-flags: 0:ffffffff:/right-view... -  pixel-aspect-ratio: 1/1 -           framerate: 60/1 - - - -videosink_actual_sink_xvimage_0x751f484502c0_sink_0x751f48450760 - -sink -[>][bfb] - - - -_proxypad22_0x751f4844a0e0->videosink_actual_sink_xvimage_0x751f484502c0_sink_0x751f48450760 - - -video/x-raw -              format: NV12 -               width: 960 -              height: 540 -      interlace-mode: progressive -      multiview-mode: mono -     multiview-flags: 0:ffffffff:/right-view... -  pixel-aspect-ratio: 1/1 -           framerate: 60/1 - - - -_proxypad26_0x751f484bc700 - -proxypad26 -[>][bfb] - - - -vdconv_0x751f4849e1e0_sink_0x751f4849d080 - -sink -[>][bfb] - - - -_proxypad26_0x751f484bc700->vdconv_0x751f4849e1e0_sink_0x751f4849d080 - - -video/x-raw -              format: NV12 -               width: 960 -              height: 540 -      interlace-mode: progressive -      multiview-mode: mono -     multiview-flags: 0:ffffffff:/right-view... -  pixel-aspect-ratio: 1/1 -           framerate: 60/1 - - - -vdbin_0x751f484a5ad0_sink_0x751f484bc490 - -sink -[>][bfb] - - - -vdbin_0x751f484a5ad0_sink_0x751f484bc490->_proxypad26_0x751f484bc700 - - - - - -vdbin_0x751f484a5ad0_src_0x751f484bcaf0 - -src -[>][bfb] - - - - -_proxypad27_0x751f484bcef0 - -proxypad27 -[>][bfb] - - - -_proxypad27_0x751f484bcef0->vdbin_0x751f484a5ad0_src_0x751f484bcaf0 - - - - - -vdbin_0x751f484a5ad0_src_0x751f484bcaf0->tbin_0x751f484e8f30_sink_0x751f484f1750 - - -video/x-raw -              format: NV12 -               width: 960 -              height: 540 -      interlace-mode: progressive -      multiview-mode: mono -     multiview-flags: 0:ffffffff:/right-view... -  pixel-aspect-ratio: 1/1 -           framerate: 60/1 - - - -deinterlace_0x751f484b9690_sink_0x751f484bb220 - -sink -[>][bfb] - - - -deinterlace_0x751f484b9690_src_0x751f484bb4f0 - -src -[>][bfb] - - - - -deinterlace_0x751f484b9690_src_0x751f484bb4f0->_proxypad27_0x751f484bcef0 - - -video/x-raw -              format: NV12 -               width: 960 -              height: 540 -      interlace-mode: progressive -      multiview-mode: mono -     multiview-flags: 0:ffffffff:/right-view... -  pixel-aspect-ratio: 1/1 -           framerate: 60/1 - - - -vdconv_0x751f4849e1e0_src_0x751f4849e6d0 - -src -[>][bfb] - - - - -vdconv_0x751f4849e1e0_src_0x751f4849e6d0->deinterlace_0x751f484b9690_sink_0x751f484bb220 - - -video/x-raw -              format: NV12 -               width: 960 -              height: 540 -      interlace-mode: progressive -      multiview-mode: mono -     multiview-flags: 0:ffffffff:/right-view... -  pixel-aspect-ratio: 1/1 -           framerate: 60/1 - - - -audiotee_0x751f68097230_src_0_0x751f484e8690 - -src_0 -[>][bfb] - - - - -streamsynchronizer0_0x6087fe3fbd80_sink_1_0x751f484e7f80 - -sink_1 -[>][bfb] - - - -audiotee_0x751f68097230_src_0_0x751f484e8690->streamsynchronizer0_0x6087fe3fbd80_sink_1_0x751f484e7f80 - - -audio/x-raw -              format: F32LE -              layout: non-interleaved -                rate: 48000 -            channels: 2 -        channel-mask: 0x0000000000000003 - - - -streamsynchronizer0_0x6087fe3fbd80_src_0_0x751f484a55e0 - -src_0 -[>][bfb] - - - - -streamsynchronizer0_0x6087fe3fbd80_src_0_0x751f484a55e0->vdbin_0x751f484a5ad0_sink_0x751f484bc490 - - -video/x-raw -              format: NV12 -               width: 960 -              height: 540 -      interlace-mode: progressive -      multiview-mode: mono -     multiview-flags: 0:ffffffff:/right-view... -  pixel-aspect-ratio: 1/1 -           framerate: 60/1 - - - -streamsynchronizer0_0x6087fe3fbd80_src_1_0x751f484e81f0 - -src_1 -[>][bfb] - - - -streamsynchronizer0_0x6087fe3fbd80_src_1_0x751f484e81f0->abin_0x751f484ce5c0_sink_0x751f484e7ab0 - - -audio/x-raw -              format: F32LE -              layout: non-interleaved -                rate: 48000 -            channels: 2 -        channel-mask: 0x0000000000000003 - - - -streamsynchronizer0_0x6087fe3fbd80_src_2_0x751f484f3370 - -src_2 -[>][bfb] - - - -streamsynchronizer0_0x6087fe3fbd80_src_2_0x751f484f3370->tbin_0x751f484e8f30_text_sink_0x751f484f1d40 - - -text/x-raw -              format: pango-markup - - - -_proxypad17_0x751f540af780 - -proxypad17 -[>][bfb] - - - -uridecodebin3_0x6087fe3e1160_audio_0_0x751f540af510 - -audio_0 -[>][bfb] - - - -_proxypad17_0x751f540af780->uridecodebin3_0x6087fe3e1160_audio_0_0x751f540af510 - - - - - -uridecodebin3_0x6087fe3e1160_audio_0_0x751f540af510->playsink_0x6087fe3fb6d0_audio_sink_0x751f68097bb0 - - -audio/x-raw -              format: F32LE -              layout: non-interleaved -                rate: 48000 -            channels: 2 -        channel-mask: 0x0000000000000003 - - - -_proxypad19_0x751f50001ff0 - -proxypad19 -[>][bfb] - - - -uridecodebin3_0x6087fe3e1160_text_0_0x751f50001bf0 - -text_0 -[>][bfb] - - - -_proxypad19_0x751f50001ff0->uridecodebin3_0x6087fe3e1160_text_0_0x751f50001bf0 - - - - - -uridecodebin3_0x6087fe3e1160_text_0_0x751f50001bf0->playsink_0x6087fe3fb6d0_text_sink_0x751f680989a0 - - -text/x-raw -              format: pango-markup - - - -_proxypad21_0x751f484476f0 - -proxypad21 -[>][bfb] - - - -uridecodebin3_0x6087fe3e1160_video_0_0x751f48447480 - -video_0 -[>][bfb] - - - -_proxypad21_0x751f484476f0->uridecodebin3_0x6087fe3e1160_video_0_0x751f48447480 - - - - - -uridecodebin3_0x6087fe3e1160_video_0_0x751f48447480->playsink_0x6087fe3fb6d0_video_sink_0x751f68098310 - - -video/x-raw -              format: NV12 -               width: 960 -              height: 540 -      interlace-mode: progressive -      multiview-mode: mono -     multiview-flags: 0:ffffffff:/right-view... -  pixel-aspect-ratio: 1/1 -           framerate: 60/1 - - - -_proxypad7_0x751f5c001710 - -proxypad7 -[>][bfb] - - - -urisourcebin0_0x6087fe16c660_src_0_0x751f5c001310 - -src_0 -[>][bfb] - - - -_proxypad7_0x751f5c001710->urisourcebin0_0x6087fe16c660_src_0_0x751f5c001310 - - - - - -decodebin3_0_0x6087fe3e3560_sink_0x6087fe3e3fe0 - -sink -[>][bfb] - - - -urisourcebin0_0x6087fe16c660_src_0_0x751f5c001310->decodebin3_0_0x6087fe3e3560_sink_0x6087fe3e3fe0 - - -audio/mpeg -              framed: true -         mpegversion: 4 -               level: 2 -        base-profile: lc -             profile: lc -                rate: 48000 -            channels: 2 -       stream-format: adts - - - -_proxypad8_0x751f5c006770 - -proxypad8 -[>][bfb] - - - -urisourcebin0_0x6087fe16c660_src_1_0x751f5c0063a0 - -src_1 -[>][bfb] - - - -_proxypad8_0x751f5c006770->urisourcebin0_0x6087fe16c660_src_1_0x751f5c0063a0 - - - - - -decodebin3_0_0x6087fe3e3560_sink_0_0x751f5c006dc0 - -sink_0 -[>][bfb] - - - -urisourcebin0_0x6087fe16c660_src_1_0x751f5c0063a0->decodebin3_0_0x6087fe3e3560_sink_0_0x751f5c006dc0 - - -text/x-raw -              format: pango-markup - - - -_proxypad10_0x751f5c009c70 - -proxypad10 -[>][bfb] - - - -urisourcebin0_0x6087fe16c660_src_2_0x751f5c009870 - -src_2 -[>][bfb] - - - -_proxypad10_0x751f5c009c70->urisourcebin0_0x6087fe16c660_src_2_0x751f5c009870 - - - - - -decodebin3_0_0x6087fe3e3560_sink_1_0x751f5c009ff0 - -sink_1 -[>][bfb] - - - -urisourcebin0_0x6087fe16c660_src_2_0x751f5c009870->decodebin3_0_0x6087fe3e3560_sink_1_0x751f5c009ff0 - - -video/x-h264 -       stream-format: avc -  pixel-aspect-ratio: 1/1 -               width: 960 -              height: 540 -           framerate: 60/1 -  coded-picture-structure: frame -       chroma-format: 4:2:0 -      bit-depth-luma: 8 -    bit-depth-chroma: 8 -              parsed: true -           alignment: au -             profile: high -               level: 3.2 -          codec_data: 01640020ffe10025276400... - - - -hlsdemux2_0_0x751f90049360_sink_0x751f9004c000 - -sink -[>][bfbE] - - - -hlsdemux2_0_0x751f90049360_audio_00_0x751f5c000da0 - -audio_00 -[>][bfb] - - - - -hlsdemux2_0_0x751f90049360_audio_00_0x751f5c000da0->_proxypad7_0x751f5c001710 - - -audio/mpeg -              framed: true -         mpegversion: 4 -               level: 2 -        base-profile: lc -             profile: lc -                rate: 48000 -            channels: 2 -       stream-format: adts - - - -hlsdemux2_0_0x751f90049360_subtitle_00_0x751f5c005f70 - -subtitle_00 -[>][bfb] - - - -hlsdemux2_0_0x751f90049360_subtitle_00_0x751f5c005f70->_proxypad8_0x751f5c006770 - - -text/x-raw -              format: pango-markup - - - -hlsdemux2_0_0x751f90049360_video_00_0x751f5c009320 - -video_00 -[>][bfb] - - - -hlsdemux2_0_0x751f90049360_video_00_0x751f5c009320->_proxypad10_0x751f5c009c70 - - -video/x-h264 -       stream-format: avc -  pixel-aspect-ratio: 1/1 -               width: 960 -              height: 540 -           framerate: 60/1 -  coded-picture-structure: frame -       chroma-format: 4:2:0 -      bit-depth-luma: 8 -    bit-depth-chroma: 8 -              parsed: true -           alignment: au -             profile: high -               level: 3.2 -          codec_data: 01640020ffe10025276400... - - - -_proxypad13_0x751f6823c320 - -proxypad13 -[>][bfb] - - - -typefind_0x751f680b9490_sink_0x751f680b9800 - -sink -[>][bfb] - - - -_proxypad13_0x751f6823c320->typefind_0x751f680b9490_sink_0x751f680b9800 - - -application/x-subtitle-vtt -              parsed: false - - - -parsebin2_0x751f680b8ee0_sink_0x751f6823c090 - -sink -[>][bfb] - - - -parsebin2_0x751f680b8ee0_sink_0x751f6823c090->_proxypad13_0x751f6823c320 - - - - - -parsebin2_0x751f680b8ee0_src_0_0x751f6827b9c0 - -src_0 -[>][bfb] - - - - -_proxypad14_0x751f6827bc70 - -proxypad14 -[>][bfb] - - - -_proxypad14_0x751f6827bc70->parsebin2_0x751f680b8ee0_src_0_0x751f6827b9c0 - - - - - -track_text_English_period0_0x751f90058b30_sink_0x751f90058f70 - -sink -[>][bfb] - - - -parsebin2_0x751f680b8ee0_src_0_0x751f6827b9c0->track_text_English_period0_0x751f90058b30_sink_0x751f90058f70 - - -text/x-raw -              format: pango-markup - - - -subparse0_0x751f6826de30_sink_0x751f68286e70 - -sink -[>][bfb] - - - -subparse0_0x751f6826de30_src_0x751f68287160 - -src -[>][bfb] - - - - -subparse0_0x751f6826de30_src_0x751f68287160->_proxypad14_0x751f6827bc70 - - -text/x-raw -              format: pango-markup - - - -typefind_0x751f680b9490_src_0x751f680b9b90 - -src -[>][bfb] - - - - -typefind_0x751f680b9490_src_0x751f680b9b90->subparse0_0x751f6826de30_sink_0x751f68286e70 - - -application/x-subtitle-vtt -              parsed: false - - - -_proxypad12_0x751f6815c9e0 - -proxypad12 -[>][bfb] - - - -typefind_0x751f68172480_sink_0x751f68151c60 - -sink -[>][bfb] - - - -_proxypad12_0x751f6815c9e0->typefind_0x751f68172480_sink_0x751f68151c60 - - -application/x-id3 - - - -parsebin1_0x751f68165830_sink_0x751f6815c720 - -sink -[>][bfb] - - - -parsebin1_0x751f68165830_sink_0x751f6815c720->_proxypad12_0x751f6815c9e0 - - - - - -parsebin1_0x751f68165830_src_0_0x751f6828c2b0 - -src_0 -[>][bfb] - - - - -_proxypad15_0x751f6828c5c0 - -proxypad15 -[>][bfb] - - - -_proxypad15_0x751f6828c5c0->parsebin1_0x751f68165830_src_0_0x751f6828c2b0 - - - - - -track_audio_English_period0_0x751f90056e40_sink_0x751f90057000 - -sink -[>][bfb] - - - -parsebin1_0x751f68165830_src_0_0x751f6828c2b0->track_audio_English_period0_0x751f90056e40_sink_0x751f90057000 - - -audio/mpeg -              framed: true -         mpegversion: 4 -               level: 2 -        base-profile: lc -             profile: lc -                rate: 48000 -            channels: 2 -       stream-format: adts - - - -aacparse0_0x751f68296340_sink_0x751f68296620 - -sink -[>][bfb] - - - -aacparse0_0x751f68296340_src_0x751f68296a40 - -src -[>][bfb] - - - - -aacparse0_0x751f68296340_src_0x751f68296a40->_proxypad15_0x751f6828c5c0 - - -audio/mpeg -              framed: true -         mpegversion: 4 -               level: 2 -        base-profile: lc -             profile: lc -                rate: 48000 -            channels: 2 -       stream-format: adts - - - -id3demux0_0x751f68291b30_sink_0x751f68291d00 - -sink -[>][bfb] - - - -id3demux0_0x751f68291b30_src_0x751f682920e0 - -src -[>][bfb] - - - - -id3demux0_0x751f68291b30_src_0x751f682920e0->aacparse0_0x751f68296340_sink_0x751f68296620 - - -audio/mpeg -              framed: false -         mpegversion: 4 -       stream-format: adts -               level: 2 -        base-profile: lc -             profile: lc -            channels: 2 -                rate: 48000 - - - -typefind_0x751f68172480_src_0x751f68152050 - -src -[>][bfb] - - - - -typefind_0x751f68172480_src_0x751f68152050->id3demux0_0x751f68291b30_sink_0x751f68291d00 - - -application/x-id3 - - - -track_main_video_0_period0_0x751f68095650_sink_0x751f68095af0 - -sink -[>][bfb] - - - -_proxypad1_0x751f68014250 - -proxypad1 -[>][bfb] - - - -typefind_0x751f68010b60_sink_0x751f68010f70 - -sink -[>][bfb] - - - -_proxypad1_0x751f68014250->typefind_0x751f68010b60_sink_0x751f68010f70 - - -video/mpegts -        systemstream: true -          packetsize: 188 - - - -parsebin0_0x751f680104d0_sink_0x751f68013e80 - -sink -[>][bfb] - - - -parsebin0_0x751f680104d0_sink_0x751f68013e80->_proxypad1_0x751f68014250 - - - - - -parsebin0_0x751f680104d0_src_0_0x751f68099790 - -src_0 -[>][bfb] - - - - -_proxypad6_0x751f68099a40 - -proxypad6 -[>][bfb] - - - -_proxypad6_0x751f68099a40->parsebin0_0x751f680104d0_src_0_0x751f68099790 - - - - - -parsebin0_0x751f680104d0_src_0_0x751f68099790->track_main_video_0_period0_0x751f68095650_sink_0x751f68095af0 - - -video/x-h264 -       stream-format: avc -  pixel-aspect-ratio: 1/1 -               width: 1920 -              height: 1080 -           framerate: 60/1 -  coded-picture-structure: frame -       chroma-format: 4:2:0 -      bit-depth-luma: 8 -    bit-depth-chroma: 8 -              parsed: true -           alignment: au -             profile: high -               level: 4.2 -          codec_data: 0164002affe10027276400... - - - -capsfilter0_0x751f680a1b30_sink_0x751f680a1e30 - -sink -[>][bfb] - - - -capsfilter0_0x751f680a1b30_src_0x751f680a2250 - -src -[>][bfb] - - - - -capsfilter0_0x751f680a1b30_src_0x751f680a2250->_proxypad6_0x751f68099a40 - - -video/x-h264 -       stream-format: avc -  pixel-aspect-ratio: 1/1 -               width: 1920 -              height: 1080 -           framerate: 60/1 -  coded-picture-structure: frame -       chroma-format: 4:2:0 -      bit-depth-luma: 8 -    bit-depth-chroma: 8 -              parsed: true -           alignment: au -             profile: high -               level: 4.2 -          codec_data: 0164002affe10027276400... - - - -h264parse0_0x751f6809c7d0_sink_0x751f6809d630 - -sink -[>][bfb] - - - -h264parse0_0x751f6809c7d0_src_0x751f6809da10 - -src -[>][bfb] - - - - -h264parse0_0x751f6809c7d0_src_0x751f6809da10->capsfilter0_0x751f680a1b30_sink_0x751f680a1e30 - - -video/x-h264 -       stream-format: avc -  pixel-aspect-ratio: 1/1 -               width: 1920 -              height: 1080 -           framerate: 60/1 -  coded-picture-structure: frame -       chroma-format: 4:2:0 -      bit-depth-luma: 8 -    bit-depth-chroma: 8 -              parsed: true -           alignment: au -             profile: high -               level: 4.2 -          codec_data: 0164002affe10027276400... - - - -tsdemux1_0x751f6806df80_sink_0x751f6806e370 - -sink -[>][bfb] - - - -tsdemux1_0x751f6806df80_video_0_0101_0x751f68093910 - -video_0_0101 -[>][bfb] - - - - -tsdemux1_0x751f6806df80_video_0_0101_0x751f68093910->h264parse0_0x751f6809c7d0_sink_0x751f6809d630 - - -video/x-h264 -       stream-format: byte-stream - - - -typefind_0x751f68010b60_src_0x751f68011300 - -src -[>][bfb] - - - - -typefind_0x751f68010b60_src_0x751f68011300->tsdemux1_0x751f6806df80_sink_0x751f6806e370 - - -video/mpegts -        systemstream: true -          packetsize: 188 - - - -typefindelement0_0x6087fe410f10_sink_0x6087fe411290 - -sink -[>][bfbE] - - - -typefindelement0_0x6087fe410f10_src_0x6087fe411680 - -src -[>][bfbE] - - - - -typefindelement0_0x6087fe410f10_src_0x6087fe411680->hlsdemux2_0_0x751f90049360_sink_0x751f9004c000 - - -application/x-hls - - - -souphttpsrc0_0x6087fe40e680_src_0x6087fe40eb30 - -src -[>][bfbE][t] - - - -souphttpsrc0_0x6087fe40e680_src_0x6087fe40eb30->typefindelement0_0x6087fe410f10_sink_0x6087fe411290 - - -ANY - - - -_proxypad0_0x6087fe3e4310 - -proxypad0 -[>][bfb] - - - -decodebin3_0_0x6087fe3e3560_sink_0x6087fe3e3fe0->_proxypad0_0x6087fe3e4310 - - - - - -decodebin3_0_0x6087fe3e3560_audio_0_0x751f54000f20 - -audio_0 -[>][bfb] - - - - -_proxypad9_0x751f5c007140 - -proxypad9 -[>][bfb] - - - -decodebin3_0_0x6087fe3e3560_sink_0_0x751f5c006dc0->_proxypad9_0x751f5c007140 - - - - - -_proxypad11_0x751f5c00a370 - -proxypad11 -[>][bfb] - - - -decodebin3_0_0x6087fe3e3560_sink_1_0x751f5c009ff0->_proxypad11_0x751f5c00a370 - - - - - -identity0_0x751f5c004da0_sink_0x751f5c0051b0 - -sink -[>][bfb] - - - -_proxypad0_0x6087fe3e4310->identity0_0x751f5c004da0_sink_0x751f5c0051b0 - - -audio/mpeg -              framed: true -         mpegversion: 4 -               level: 2 -        base-profile: lc -             profile: lc -                rate: 48000 -            channels: 2 -       stream-format: adts - - - -identity1_0x751f5c008120_sink_0x751f5c0084e0 - -sink -[>][bfb] - - - -_proxypad9_0x751f5c007140->identity1_0x751f5c008120_sink_0x751f5c0084e0 - - -text/x-raw -              format: pango-markup - - - -identity2_0x751f5c00b240_sink_0x751f5c00b600 - -sink -[>][bfb] - - - -_proxypad11_0x751f5c00a370->identity2_0x751f5c00b240_sink_0x751f5c00b600 - - -video/x-h264 -       stream-format: avc -  pixel-aspect-ratio: 1/1 -               width: 960 -              height: 540 -           framerate: 60/1 -  coded-picture-structure: frame -       chroma-format: 4:2:0 -      bit-depth-luma: 8 -    bit-depth-chroma: 8 -              parsed: true -           alignment: au -             profile: high -               level: 3.2 -          codec_data: 01640020ffe10025276400... - - - -_proxypad16_0x751f54001320 - -proxypad16 -[>][bfb] - - - -_proxypad16_0x751f54001320->decodebin3_0_0x6087fe3e3560_audio_0_0x751f54000f20 - - - - - -decodebin3_0_0x6087fe3e3560_audio_0_0x751f54000f20->_proxypad17_0x751f540af780 - - -audio/x-raw -              format: F32LE -              layout: non-interleaved -                rate: 48000 -            channels: 2 -        channel-mask: 0x0000000000000003 - - - -_proxypad18_0x751f500011a0 - -proxypad18 -[>][bfb] - - - -decodebin3_0_0x6087fe3e3560_text_0_0x751f50000da0 - -text_0 -[>][bfb] - - - -_proxypad18_0x751f500011a0->decodebin3_0_0x6087fe3e3560_text_0_0x751f50000da0 - - - - - -decodebin3_0_0x6087fe3e3560_text_0_0x751f50000da0->_proxypad19_0x751f50001ff0 - - -text/x-raw -              format: pango-markup - - - -_proxypad20_0x751f480011a0 - -proxypad20 -[>][bfb] - - - -decodebin3_0_0x6087fe3e3560_video_0_0x751f48000da0 - -video_0 -[>][bfb] - - - -_proxypad20_0x751f480011a0->decodebin3_0_0x6087fe3e3560_video_0_0x751f48000da0 - - - - - -decodebin3_0_0x6087fe3e3560_video_0_0x751f48000da0->_proxypad21_0x751f484476f0 - - -video/x-raw -              format: NV12 -               width: 960 -              height: 540 -      interlace-mode: progressive -      multiview-mode: mono -     multiview-flags: 0:ffffffff:/right-view... -  pixel-aspect-ratio: 1/1 -           framerate: 60/1 - - - -vah264dec0_0x751f480a88a0_sink_0x751f4830a210 - -sink -[>][bfb] - - - -vah264dec0_0x751f480a88a0_src_0x751f480b7070 - -src -[>][bfb] - - - - -vah264dec0_0x751f480a88a0_src_0x751f480b7070->_proxypad20_0x751f480011a0 - - -video/x-raw -              format: NV12 -               width: 960 -              height: 540 -      interlace-mode: progressive -      multiview-mode: mono -     multiview-flags: 0:ffffffff:/right-view... -  pixel-aspect-ratio: 1/1 -           framerate: 60/1 - - - -avdec_aac0_0x751f540abdb0_sink_0x751f540ac330 - -sink -[>][bfb] - - - -avdec_aac0_0x751f540abdb0_src_0x751f540ac580 - -src -[>][bfb] - - - - -avdec_aac0_0x751f540abdb0_src_0x751f540ac580->_proxypad16_0x751f54001320 - - -audio/x-raw -              format: F32LE -              layout: non-interleaved -                rate: 48000 -            channels: 2 -        channel-mask: 0x0000000000000003 - - - -identity2_0x751f5c00b240_src_0x751f5c00ba60 - -src -[>][bfb] - - - - -multiqueue0_0x6087fe3f2080_sink_2_0x751f5c00f860 - -sink_2 -group-id=4 -current-level-buffers=17 -current-level-bytes=83888 -current-level-time=283333333 -[>][bfb] - - - -identity2_0x751f5c00b240_src_0x751f5c00ba60->multiqueue0_0x6087fe3f2080_sink_2_0x751f5c00f860 - - -video/x-h264 -       stream-format: avc -  pixel-aspect-ratio: 1/1 -               width: 960 -              height: 540 -           framerate: 60/1 -  coded-picture-structure: frame -       chroma-format: 4:2:0 -      bit-depth-luma: 8 -    bit-depth-chroma: 8 -              parsed: true -           alignment: au -             profile: high -               level: 3.2 -          codec_data: 01640020ffe10025276400... - - - -identity1_0x751f5c008120_src_0x751f5c008940 - -src -[>][bfb] - - - - -multiqueue0_0x6087fe3f2080_sink_1_0x751f5c00e590 - -sink_1 -group-id=16 -[>][bfb] - - - -identity1_0x751f5c008120_src_0x751f5c008940->multiqueue0_0x6087fe3f2080_sink_1_0x751f5c00e590 - - -text/x-raw -              format: pango-markup - - - -identity0_0x751f5c004da0_src_0x751f5c005590 - -src -[>][bfb] - - - - -multiqueue0_0x6087fe3f2080_sink_0_0x751f5c00d290 - -sink_0 -group-id=2 -[>][bfb] - - - -identity0_0x751f5c004da0_src_0x751f5c005590->multiqueue0_0x6087fe3f2080_sink_0_0x751f5c00d290 - - -audio/mpeg -              framed: true -         mpegversion: 4 -               level: 2 -        base-profile: lc -             profile: lc -                rate: 48000 -            channels: 2 -       stream-format: adts - - - -multiqueue0_0x6087fe3f2080_src_0_0x751f5c00d7c0 - -src_0 -group-id=2 -[>][bfb][T] - - - - -multiqueue0_0x6087fe3f2080_src_0_0x751f5c00d7c0->avdec_aac0_0x751f540abdb0_sink_0x751f540ac330 - - -audio/mpeg -              framed: true -         mpegversion: 4 -               level: 2 -        base-profile: lc -             profile: lc -                rate: 48000 -            channels: 2 -       stream-format: adts - - - -multiqueue0_0x6087fe3f2080_src_1_0x751f5c00ea80 - -src_1 -group-id=16 -[>][bfb][T] - - - -multiqueue0_0x6087fe3f2080_src_1_0x751f5c00ea80->_proxypad18_0x751f500011a0 - - -text/x-raw -              format: pango-markup - - - -multiqueue0_0x6087fe3f2080_src_2_0x751f5c00fd50 - -src_2 -group-id=4 -current-level-buffers=17 -current-level-bytes=83888 -current-level-time=283333333 -[>][bfb][T] - - - -multiqueue0_0x6087fe3f2080_src_2_0x751f5c00fd50->vah264dec0_0x751f480a88a0_sink_0x751f4830a210 - - -video/x-h264 -       stream-format: avc -  pixel-aspect-ratio: 1/1 -               width: 960 -              height: 540 -           framerate: 60/1 -  coded-picture-structure: frame -       chroma-format: 4:2:0 -      bit-depth-luma: 8 -    bit-depth-chroma: 8 -              parsed: true -           alignment: au -             profile: high -               level: 3.2 -          codec_data: 01640020ffe10025276400... - - - diff --git a/rusttechx-2024/roundedcorners.jpg b/rusttechx-2024/roundedcorners.jpg deleted file mode 100644 index 6fc080f..0000000 Binary files a/rusttechx-2024/roundedcorners.jpg and /dev/null differ diff --git a/rusttechx-2024/rusttechx-2024.pdf b/rusttechx-2024/rusttechx-2024.pdf index 42eb44f..7ef656d 100644 Binary files a/rusttechx-2024/rusttechx-2024.pdf and b/rusttechx-2024/rusttechx-2024.pdf differ diff --git a/rusttechx-2024/rusttechx.md b/rusttechx-2024/rusttechx.md index e9839ea..feaf2f7 100644 --- a/rusttechx-2024/rusttechx.md +++ b/rusttechx-2024/rusttechx.md @@ -48,34 +48,53 @@ gst-launch-1.0 videotestsrc ! autovideosink gst-launch-1.0 audiotestsrc ! autoaudiosink ``` -## Media pipeline[^1] +## **gst-inspect** + +```bash +Factory Details: + Rank none (0) + Long-name Video test source + Klass Source/Video + Description Creates a test video stream + Author David A. Schleef + Documentation https://gstreamer.freedesktop.org/documentation/videotestsrc/#videotestsrc-page + +Plugin Details: + Name videotestsrc + Description Creates a test video stream + Filename /usr/lib/gstreamer-1.0/libgstvideotestsrc.so + Version 1.24.9 + License LGPL + Source module gst-plugins-base + Documentation https://gstreamer.freedesktop.org/documentation/videotestsrc/ + Source release date 2024-10-30 + Binary package Arch Linux GStreamer 1.24.9-3 + Origin URL https://www.archlinux.org/ + +GObject + +----GInitiallyUnowned + +----GstObject + +----GstElement + +----GstBaseSrc + +----GstPushSrc + +----GstVideoTestSrc + +Pad Templates: + SRC template: 'src' + Availability: Always + Capabilities: + video/x-raw +``` + +## Media pipeline ![*_Simple Player_*](simple-player.png){width=80%} -[^1]: [Dynamic Pipelines](https://gstreamer.freedesktop.org/documentation/tutorials/basic/dynamic-pipelines.html?gi-language=c) - -## Playback pipeline - -```bash -gst-play-1.0 https://devstreaming-cdn.apple.com/videos/streaming/examples/img_bipbop_adv_example_ts/master.m3u8 -``` - -## Playback pipeline graph - -![*_playbin HLS_*](playbin-hls.svg) - -## Custom elements - -![*_Rounded Corners_*](roundedcorners.jpg){width=58%} - -```bash -gst-launch-1.0 filesrc location=bunny.mp4 ! decodebin ! videoconvert ! roundedcorners border-radius-px=100 ! videoconvert ! gtksink -``` ## Why Rust? - Codec implementations in pure Rust (Rust Audio, Xiph AV1, Symphonia) -- Things we care about +- Things to care about * **Low cognitive overhead** * Immutability * Expressive type system @@ -84,7 +103,7 @@ gst-launch-1.0 filesrc location=bunny.mp4 ! decodebin ! videoconvert ! roundedco ## Why Rust? -- Bindings/abstractions over GLib/GObject and for GStreamer[^2] +- Bindings/abstractions over GLib/GObject and for GStreamer[^1] - Provides a root for the object hierarchy tree filed in by the GStreamer library - Gives basic reference counting, parenting functionality and locking. - GObject @@ -99,7 +118,7 @@ gst-launch-1.0 filesrc location=bunny.mp4 ! decodebin ! videoconvert ! roundedco - GstElement - GstPad -[^2]: [GstObject](https://gstreamer.freedesktop.org/documentation/gstreamer/gstobject.html?gi-language=c) +[^1]: [GstObject](https://gstreamer.freedesktop.org/documentation/gstreamer/gstobject.html?gi-language=c) ## Why immutability and types matter? @@ -210,9 +229,86 @@ For more information about this error, try `rustc --explain E0596`. } ``` -## GStreamer & Rust +## Code -- Some stats[^3] +```rust + let src = gst::ElementFactory::make("filesrc") + .property("location", "sample.ogv") + .build() + .unwrap(); + let demux = gst::ElementFactory::make("oggdemux").build().unwrap(); + + let pipeline_weak = pipeline.downgrade(); + demux.connect("pad-added", false, move |args| { + let pipeline = match pipeline_weak.upgrade() { + Some(self_) => self_, + None => return None, + }; + + let pad = args[1] + .get::() + .expect("Second argument to demux pad-added must be pad"); +``` + +## Code + +```rust + if let Some(caps) = pad.current_caps() { + let s = caps.structure(0).unwrap(); + + let (decoder, sink) = if s.name().starts_with("video") { + let decoder = gst::ElementFactory::make("theoradec").build().unwrap(); + let sink = gst::ElementFactory::make("autovideosink").build().unwrap(); + (decoder, sink) + } else { + let decoder = gst::ElementFactory::make("vorbisdec").build().unwrap(); + let sink = gst::ElementFactory::make("autoaudiosink").build().unwrap(); + (decoder, sink) + }; + + let queue1 = gst::ElementFactory::make("queue").build().unwrap(); + let queue2 = gst::ElementFactory::make("queue").build().unwrap(); +``` + +## Code + +```rust + pipeline + .add_many([&queue1, &decoder, &queue2, &sink]) + .unwrap(); + + let sinkpad = queue1.static_pad("sink").unwrap(); + pad.link(&sinkpad).unwrap(); + + queue1.link(&decoder).unwrap(); + decoder.link(&queue2).unwrap(); + queue2.link(&sink).unwrap(); + + queue1.sync_state_with_parent().unwrap(); + decoder.sync_state_with_parent().unwrap(); + queue2.sync_state_with_parent().unwrap(); + sink.sync_state_with_parent().unwrap(); + } +``` + +## Code + +```rust + None + }); + + pipeline.add_many([&src, &demux]).unwrap(); + + src.link(&demux).unwrap(); +``` + +## Media pipeline + +![*_OGG_Demux_*](ogg-demux-pipeline.svg) + +## Some stats + +- **gstreamer-rs** & **gst-plugins-rs**[^2] - gstreamer-rs: ~2700 commits, gst-plugins-rs: ~2600 commits - gstreamer-rs: ~85 contributors, gst-plugins-rs: ~110 contributors - gst-plugins-rs: ~ +180k SLOC / -37k SLOC @@ -221,22 +317,24 @@ For more information about this error, try `rustc --explain E0596`. - 1.22 cycle: ~33% commits / MRs in Rust modules - 1.24 cycle: ~25% commits / MRs in Rust modules -[^3]: [GStreamer & Rust: What has happened over the last 5 years](https://gstconf.ubicast.tv/videos/gstreamer-rust-what-has-happened-over-the-last-5-years_f8qxhpuzi9/) +[^2]: [GStreamer & Rust: What has happened over the last 5 years](https://gstconf.ubicast.tv/videos/gstreamer-rust-what-has-happened-over-the-last-5-years_f8qxhpuzi9/) ## Resources +- [Dynamic Pipelines](https://gstreamer.freedesktop.org/documentation/tutorials/basic/dynamic-pipelines.html?gi-language=c) - [GObject subclassing in Rust ](https://www.youtube.com/watch?v=TSf3rVyv7c8) - [GStreamer bindings for Rust](https://gitlab.freedesktop.org/gstreamer/gstreamer-rs) - [Rust GStreamer Plugins](https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs) - [Using GStreamer](https://www.youtube.com/watch?v=ZphadMGufY8) - [How to get started with GStreamer](https://www.youtube.com/watch?v=OkOsm9FyzdM&t=2s) - [GStreamer for your backend services](https://asymptotic.io/blog/gstreamer-for-your-backend-services/) +- [OGG demultiplexing Rust sample code](https://gitlab.freedesktop.org/SanchayanMaity/ogg-demux) ## Questions? - Rust Bangalore - * Meetup: https://hasgeek.com/rustbangalore - * Telegram: t.me/RustIndia + * Meetup: [https://hasgeek.com/rustbangalore](https://hasgeek.com/rustbangalore) + * Telegram: [https://t.me/RustIndia](https://t.me/RustIndia) - Reach out on * email: diff --git a/rusttechx-2024/template.typ b/rusttechx-2024/template.typ index 165fc17..52c9892 100644 --- a/rusttechx-2024/template.typ +++ b/rusttechx-2024/template.typ @@ -1,7 +1,6 @@ #import "@preview/diatypst:0.2.0": * #show: slides.with( title: "Multimedia using Rust & GStreamer", - authors: ("Sanchayan Maity"), ratio: 16/9, layout: "large", toc: false,