decode byte-stream video without gmainloop
Nicolas Dufresne
nicolas at ndufresne.ca
Mon Feb 3 02:15:39 UTC 2020
Le dimanche 02 février 2020 à 22:10 +0000, Karl Lattimer a écrit :
> I’m trying to integrate gstreamer with RpiPlay (https://github.com/FD-/RPiPlay) for generic linux support (https://github.com/FD-/RPiPlay/issues/24) and looking at the gstreamer documentation it seems difficult to find a method to write a buffer of received bytes to a pipeline.
>
> Specifically I need to take the method call
>
> void video_renderer_render_buffer(video_renderer_t *renderer,
> raop_ntp_t *ntp, unsigned char* data, int data_len, uint64_t pts, int
> type)
>
> and push that data into a gstreamer pipeline. As far as I understand
> the raop_ntp_t struct contains information regarding time
> synchronisation and pts provides an accurate timestamp. In my tests
> with gstreamer so far I’ve taken the buffer, dumped it to disk as an
> MP4 file, then used a simple playbin pipeline to open the file and
> play it.
Have you looked at the appsrc element ? Note that GStreamer processing
is asynchronous, so you may have to copy the pointer, or make sure that
your wrapped buffer is consumed before returning.
>
> I suppose what I’m looking for here are pointers to the appropriate
> documentation for pushing a block of data into a decode pipeline,
> preferably without going as far as writing a gstreamer plugin as that
> wouldn’t sit well with the rest of the project.
https://gstreamer.freedesktop.org/documentation/tutorials/basic/short-cutting-the-pipeline.html?gi-language=c
>
> I’d also like to know if it’s possible to get a playbin to dump the
> pipeline that it’s using out somehow, there’s quite a lot of
> information in the verbose output, but I can’t seem to spot a
> pipeline which I could use on the command line in place of playbin, I
> think that would help me in the final goal.
When you are using gst-launch-1.0 you can dump the pipeline into DOT
files using the env GST_DEBUG_DUMP_DOT_DIR=
To get the same thing in your application, you have to call:
GST_DEBUG_BIN_TO_DOT_FILE(bin, GST_DEBUG_GRAPH_SHOW_ALL, file_name);
This needs to be called wherever in your code you would like to inspect
the pipeline.
>
> Advice, guidance, links, examples appreciated.
>
> —
>
> Regards,
> K
>
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
More information about the gstreamer-devel
mailing list