[Bug 792652] New: Putting custom bin inside gstreamer pipeline doesn't work

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Thu Jan 18 16:58:42 UTC 2018


https://bugzilla.gnome.org/show_bug.cgi?id=792652

            Bug ID: 792652
           Summary: Putting custom bin inside gstreamer pipeline doesn't
                    work
    Classification: Platform
           Product: GStreamer
           Version: unspecified
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: Normal
         Component: gstreamer (core)
          Assignee: gstreamer-bugs at lists.freedesktop.org
          Reporter: tapascst at gmail.com
        QA Contact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---

1) gst-launch-1.0 -v flvmux name=mux ! custombin audiotestsrc
samplesperbuffer=44100 ! voaacenc ! mux. videotestsrc num-buffers=250 !
video/x-raw,framerate=25/1 ! x264enc ! mux.

I constructed above bin in a gstreamer c pipeline code and tried to put below
custombin inside above bin . Then tried to connect them together as below :

2) I created below bin using gst_parse_bin_from_description() in c language as
below:

GstElement * broadcasting_pipeline = gst_parse_bin_from_description
("decodebin name=demux ! queue ! videorate ! video/x-raw,framerate=30/1 !  
vaapipostproc name=postproc brightness=0.5 ! vaapih264enc dct8x8=true 
cabac=true rate-control=cbr bitrate=8192 keyframe-period=60 max-bframes=0 ! 
flvmux name=mux ! rtmpsink sync=true async=true location="rtmp://urlXXXXX" 
demux. ! queue ! progressreport ! audioconvert ! audiorate ! audioresample 
! faac bitrate=128000 ! audio/mpeg,mpegversion=4,stream-format=raw ! mux.", 
TRUE, &error)

if (!broadcasting_pipeline) {
    fprintf (stderr, "Parse error: %s\n", error->message);
    exit (1);
}

gst_bin_add(GST_BIN (pipeline), broadcasting_pipeline); //pipeline already  
has all the element added from (1) and I am just putting the new bin inside 
that pipeline here.

// Linking both "broadcasting_pipeline" bin with actual pipeline:

GstElement * decodebin_demux = NULL;
decodebin_demux = gst_bin_get_by_name(GST_BIN(broadcasting_pipeline), "demux");
if (decodebin_demux == NULL) {
    fprintf(stderr, "unable to find decodebin demux element in broadcasting
pipeline\n");
    exit(1);
}

decodebin_sinkpad = gst_element_get_static_pad(decodebin_demux, "sink");
ghostpad_for_decodebin_sinkpad = gst_ghost_pad_new ("tapas_sinkpad",
decodebin_sinkpad);
gst_pad_set_active (ghostpad_for_decodebin_sinkpad, TRUE);
gst_element_add_pad (broadcasting_pipeline, ghostpad_for_decodebin_sinkpad);
gst_object_unref (decodebin_sinkpad);

flvmux_srcpad = gst_element_get_static_pad(flvmux, "src");

if (flvmux_srcpad == NULL) {
    fprintf(stderr, "unable to get flvmux_srcpad \n");
    exit(1);
}

if (ghostpad_for_decodebin_sinkpad == NULL) {
    fprintf(stderr, "unable to get ghostpad_for_decodebin_sinkpad \n");
    exit(1);
}

But this is giving below ERROR. Any idea what I am missing ?

0:00:02.791367612 21427 0x7fd51820ac50 WARN GST_PADS
gstghostpad.c:881:gst_ghost_pad_set_target:<'':decodepad0> could not link
internal and target, reason:was linked 0:00:02.798777143 21427 0x7fd51820ac50
WARN GST_PADS gstghostpad.c:881:gst_ghost_pad_set_target:<'':decodepad0> could
not link internal and target, reason:was linked 0:00:02.799171581 21427
0x7fd51820ac50 WARN decodebin gstdecodebin2.c:2306:connect_pad: Link failed on
pad flvdemux0:sink 0:00:02.799346269 21427 0x7fd51820ac50 WARN decodebin
gstdecodebin2.c:4565:gst_decode_bin_expose: error: no suitable plugins found:
Link failed on pad flvdemux0:sink

debug from errorlog: gstdecodebin2.c(4565): gst_decode_bin_expose ():
/GstPipeline:recording pipeline/GstBin:bin0/GstDecodeBin:demux: no suitable
plugins found: Link failed on pad flvdemux0:sink

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list