<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">On 16/09/16 22:53, Gottfried Haider
      wrote:<br>
    </div>
    <blockquote
cite="mid:CAPoCmYLJ9EJbEe8SKS9HUhtttSm=3_q7p_daJHF3ruF3H8N1OQ@mail.gmail.com"
      type="cite">
      <div dir="ltr">Thanks Matt!
        <div><br>
        </div>
        <div>Regarding the playbin-option: Is it possible to create a
          "custom video branch" (GstBin) as part of a textual pipeline
          description? (that is being fed to gst_parse_launch)</div>
      </div>
    </blockquote>
    <br>
    You can create a bin as the video-sink for gst-launch-1.0.  You just
    need to enclose the video-sink parameter in double quotes and a bin
    should be created with your elements inside.<br>
    <br>
    e.g. gst-launch-1.0 playbin uri=<a class="moz-txt-link-freetext" href="file:///path/to/file">file:///path/to/file</a>
    video-sink="glupload ! glcolorconvert ! glfiltercube !
    glimagesinkelement" will cubify the video.<br>
    <br>
    Cheers<br>
    -Matt<br>
    <br>
    <blockquote
cite="mid:CAPoCmYLJ9EJbEe8SKS9HUhtttSm=3_q7p_daJHF3ruF3H8N1OQ@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div>Or do I need to create a new bin in code, set it up with
          glupload ! capsfilter ! fakesink (like in testegc [1]), and
          later use gst_pipeline_new() and
          gst_parse_bin_from_description() to create a custom pipeline
          that references the video bin created earlier?</div>
        <div><br>
        </div>
        <div>Best</div>
        <div>G</div>
        <div><br>
        </div>
        <div>[1] <a moz-do-not-send="true"
href="https://cgit.freedesktop.org/gstreamer/gst-omx/tree/examples/egl/testegl.c#n1079">https://cgit.freedesktop.org/gstreamer/gst-omx/tree/examples/egl/testegl.c#n1079</a></div>
      </div>
      <div class="gmail_extra"><br>
        <div class="gmail_quote">On Fri, Sep 16, 2016 at 2:26 PM,
          Matthew Waters <span dir="ltr"><<a moz-do-not-send="true"
              href="mailto:ystreet00@gmail.com" target="_blank">ystreet00@gmail.com</a>></span>
          wrote:<br>
          <blockquote class="gmail_quote" style="margin:0 0 0
            .8ex;border-left:1px #ccc solid;padding-left:1ex"><span
              class="">On 16/09/16 20:10, Gottfried Haider wrote:<br>
              > Hello all,<br>
              ><br>
              > I have this pipeline as part of Processing's glvideo
              library, that<br>
              > works great - but doesn't play audio:<br>
              ><br>
              > uridecodebin uri=... ! glupload name=glup !
              glcolorconvert !<br>
              > capsfilter name=filter ! fakesink name=vsink<br>
              ><br>
              > So I tried this instead<br>
              ><br>
              > uridecodebin uri=... name=decoder ! queue !
              audioconvert !<br>
              > audioresample ! autoaudiosink sync=false decoder. !
              queue ! glupload<br>
              > name=glup ! glcolorconvert ! capsfilter name=filter !
              fakesink<br>
              > name=vsink sync=false<br>
              ><br>
              > which just hang. (The particular mp4 file I was
              testing this with had<br>
              > not audio track if that matters.)<br>
              ><br>
              ><br>
              > Should the second pipeline work in theory? Any other
              things I could<br>
              > try to get something like a playbin-like source
              element that would<br>
              > also play audio tracks, if the source has one? I
              uploaded a dot file<br>
              > of the second pipeline on OS X  for you to look
              at[1].<br>
              <br>
            </span>If the file didn't have an audio track that means
            that the audio output<br>
            part of the pipeline would not be linked to uridecodebin and
            thus when<br>
            prerolling would never get a buffer and would never complete
            the state<br>
            change to paused.  A backtrace of all threads would probably
            show that<br>
            the audiosink is stuck on the preroll cond/lock.<br>
            <br>
            Your options are to either use playbin with the video-sink
            property set<br>
            to your custom video branch or if you're set on using
            uridecodebin, you<br>
            will have to selectively add the audio part of the pipeline
            if there is<br>
            an audio pad exposed by uridecodebin.  See the following
            example which<br>
            uses decodebin but the same idea is valid for uridecodebin:<br>
            <a moz-do-not-send="true"
href="https://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/section-components-decodebin.html"
              rel="noreferrer" target="_blank">https://gstreamer.freedesktop.<wbr>org/data/doc/gstreamer/head/<wbr>manual/html/section-<wbr>components-decodebin.html</a>.<br>
            <br>
            Cheers<br>
            -Matt<br>
            <div class="HOEnZb">
              <div class="h5"><br>
                > (If the pipeline looks right it might just be that
                the audio decoding<br>
                > hits this bug [2] on OS X.)<br>
                ><br>
                ><br>
                > Thanks in advance<br>
                > Gottfried<br>
                ><br>
                ><br>
                > [1] <a moz-do-not-send="true"
                  href="https://bugzilla.gnome.org/show_bug.cgi?id=768630"
                  rel="noreferrer" target="_blank">https://bugzilla.gnome.org/<wbr>show_bug.cgi?id=768630</a><br>
                > [2] <a moz-do-not-send="true"
                  href="https://sukzessiv.net/%7Egohai/gstreamer/uridecode-audio.png"
                  rel="noreferrer" target="_blank">https://sukzessiv.net/~gohai/<wbr>gstreamer/uridecode-audio.png</a><br>
                ><br>
              </div>
            </div>
          </blockquote>
        </div>
      </div>
    </blockquote>
  </body>
</html>