forked pipeline fails to play

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

forked pipeline fails to play

William
This plays to completion:
gst-launch-1.0 filesrc location=Truck.H264.ts ! tee name=t ! queue ! tsdemux
! h264parse ! avdec_h264 ! fakesink

But this gets stuck:
gst-launch-1.0 filesrc location=Truck.H264.ts ! tee name=t ! queue ! tsdemux
! h264parse ! avdec_h264 ! fakesink    t. ! queue ! fakesink

It gets this far:st-launch-1.0 filesrc location=Truck.H264.ts ! tee name=t !
queue ! tsdemux ! h264parse ! avdec_h264 ! fakesink    t. ! queue ! tsdemux
! h264parse ! avdec_h264 ! fakesink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Redistribute latency...

Oddly this runs to completion:
clear; gst-launch-1.0 filesrc location=Truck.H264.ts ! tee name=t ! queue !
tsdemux ! h264parse ! fakesink    t. ! queue ! fakesink

So something in avdec_h264 is holding up the show.

This will run too:
gst-launch-1.0 filesrc location=Truck.H264.ts ! tee name=t ! queue ! tsdemux
! h264parse ! avdec_h264 ! fakesink    t. ! queue ! tsdemux ! h264parse !
avdec_h264 ! fakesink

But I really need this to work:
gst-launch-1.0 filesrc location=Truck.H264.ts ! tee name=t ! queue ! tsdemux
! h264parse ! avdec_h264 ! fakesink    t. ! queue ! myplugin ! fakesink

Does anyone have any idea about what myplugin could do to make the stream
play?





--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: forked pipeline fails to play

William
This was supposed to say:

It gets this far:

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Redistribute latency...

On 12/2/2019 11:31 AM, William wrote:
> It gets this far:st-launch-1.0 filesrc location=Truck.H264.ts ! tee name=t !
> queue ! tsdemux ! h264parse ! avdec_h264 ! fakesink    t. ! queue ! tsdemux
> ! h264parse ! avdec_h264 ! fakesink
> Setting pipeline to PAUSED ...
> Pipeline is PREROLLING ...
> Redistribute latency...
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: forked pipeline fails to play

killerrats
gst-launch-1.0 filesrc location=Truck.H264.ts ! tee name=t ! queue ! tsdemux
! h264parse ! avdec_h264 ! fakesink    t. ! queue ! fakesink

try this:

gst-launch-1.0 filesrc location=Truck.H264.ts ! tsdemux ! h264parse !
avdec_h264 ! tee name=t ! queue ! fakesink t. ! queue ! fakesink



-----
------------------------------
Gstreamer 1.14.3
------------------------------
Windows
--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
------------------------------
Gstreamer 1.14.3
------------------------------
Windows
Reply | Threaded
Open this post in threaded view
|

Re: forked pipeline fails to play

William
That plays. That makes sense since the tee occurs after avdec_h264 so
whatever its sending down the pipeline to keep it going is not
interfered with.

I need the data flowing out of filesrc to flow into my plugin however.

I have a plugin that allows me to watch the buffer packets as they flow
through the pipeline.  The first pipeline (the one with avdec_h264)
processes 202 buffer packets and the second one processes only 1 packet
(exiting the queue). That's backwards from what I would think. In either
case however I think the hold up is in the second queue not processing
elements and the tee stops shoving data into the queues because the
second queue is full. Unfortunately, that makes it more confusing since
I know I can alter the first queue (by removing avdec_h264) to get the
pipelines flowing.

On 12/2/2019 12:10 PM, killerrats wrote:

> gst-launch-1.0 filesrc location=Truck.H264.ts ! tee name=t ! queue ! tsdemux
> ! h264parse ! avdec_h264 ! fakesink    t. ! queue ! fakesink
>
> try this:
>
> gst-launch-1.0 filesrc location=Truck.H264.ts ! tsdemux ! h264parse !
> avdec_h264 ! tee name=t ! queue ! fakesink t. ! queue ! fakesink
>
>
>
> -----
> ------------------------------
> Gstreamer 1.14.3
> ------------------------------
> Windows
> --
> Sent from: http://gstreamer-devel.966125.n4.nabble.com/
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: forked pipeline fails to play

William
In reply to this post by William
I can answer this myself now. What's going on is that both paths are
trying to preroll. However one path takes way less data to preroll and
so it fill up all its buffers and then blocks. The other path is waiting
on more data so that it can finish prerolling, but that's not going to
happen because the less-data-path is stopping more data from streaming
out of filesrc. The fix is to allow the less-data-path to take more data
and that can be accomplished by adding an extra queue like so:

gst-launch-1.0 filesrc location=Truck.H264.ts ! tee name=t ! queue ! tsdemux ! h264parse ! avdec_h264 ! fakesink    t. ! queue ! queue ! fakesink

That was about 6 hours of work figuring that out.

On 12/2/2019 11:31 AM, William wrote:

> This plays to completion:
> gst-launch-1.0 filesrc location=Truck.H264.ts ! tee name=t ! queue ! tsdemux
> ! h264parse ! avdec_h264 ! fakesink
>
> But this gets stuck:
> gst-launch-1.0 filesrc location=Truck.H264.ts ! tee name=t ! queue ! tsdemux
> ! h264parse ! avdec_h264 ! fakesink    t. ! queue ! fakesink
>
> It gets this far:st-launch-1.0 filesrc location=Truck.H264.ts ! tee name=t !
> queue ! tsdemux ! h264parse ! avdec_h264 ! fakesink    t. ! queue ! tsdemux
> ! h264parse ! avdec_h264 ! fakesink
> Setting pipeline to PAUSED ...
> Pipeline is PREROLLING ...
> Redistribute latency...
>
> Oddly this runs to completion:
> clear; gst-launch-1.0 filesrc location=Truck.H264.ts ! tee name=t ! queue !
> tsdemux ! h264parse ! fakesink    t. ! queue ! fakesink
>
> So something in avdec_h264 is holding up the show.
>
> This will run too:
> gst-launch-1.0 filesrc location=Truck.H264.ts ! tee name=t ! queue ! tsdemux
> ! h264parse ! avdec_h264 ! fakesink    t. ! queue ! tsdemux ! h264parse !
> avdec_h264 ! fakesink
>
> But I really need this to work:
> gst-launch-1.0 filesrc location=Truck.H264.ts ! tee name=t ! queue ! tsdemux
> ! h264parse ! avdec_h264 ! fakesink    t. ! queue ! myplugin ! fakesink
>
> Does anyone have any idea about what myplugin could do to make the stream
> play?
>
>
>
>
>
> --
> Sent from: http://gstreamer-devel.966125.n4.nabble.com/
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel