New parser for parsing a custom format

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

New parser for parsing a custom format

Bharath Bhushan (Kowshik)
Hello Gstreamers,

I am planning to write a new gstreamer parser plugin for parsing a custom byte-stream format. The pipeline should look something like below:-
Example A: tcpclientsrc ! my-custom-parser ! h264parse ! fakesink
Example B: filesrc ! my-custom-parser ! h264parse ! fakesink

The byte-stream has the following format:
        4 bytes: size of data segment and timestamp
        8 bytes: timestamp
        N-8 bytes: data segment which is a H.264 NALU

My plugin will create one GstBuffer per data segment and set the PTS/DTS based on the timestamp and send it to the downstream plugin (h264parse for example).

Some questions:-
- Is there a simple parser example plugin which I can start from?
- Is vorbisparse a good example to use? Is gstttransform.c in the gst-templates repo a good example to use?
- What are the options for push vs pull that are available in my parser?
- Is there any documentation about how to write new parsers?

Any help is greatly appreciated.
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: New parser for parsing a custom format

Nicolas Dufresne-5
Le mercredi 03 février 2021 à 12:57 +0530, Bharath Bhushan (Kowshik) a écrit :

> Hello Gstreamers,
>
> I am planning to write a new gstreamer parser plugin for parsing a custom
> byte-stream format. The pipeline should look something like below:-
> Example A: tcpclientsrc ! my-custom-parser ! h264parse ! fakesink
> Example B: filesrc ! my-custom-parser ! h264parse ! fakesink
>
> The byte-stream has the following format:
>         4 bytes: size of data segment and timestamp
>         8 bytes: timestamp
>         N-8 bytes: data segment which is a H.264 NALU
>
> My plugin will create one GstBuffer per data segment and set the PTS/DTS based
> on the timestamp and send it to the downstream plugin (h264parse for example).
>
> Some questions:-
> - Is there a simple parser example plugin which I can start from?

This is more like a depayloader, but indeed we sometimes call parser or demuxer.
Your format seems similar to IVF used to cary parsable VP8 and VP9 data.

> - Is vorbisparse a good example to use? Is gstttransform.c in the gst-
> templates repo a good example to use?
> - What are the options for push vs pull that are available in my parser?
> - Is there any documentation about how to write new parsers?
>
> Any help is greatly appreciated.
> _______________________________________________
> 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: New parser for parsing a custom format

Bharath Bhushan (Kowshik)
Thanks Nicolas.

- Is there a specific depayloader I can start from? How about gdpdepay.c? Among the myriad rtp depayloaders, anything that I can start from?
- Is it enough to make my plugin a simple Element (like gdpdepay.c) or is it better to build on GstBaseParse or GstRawBaseParse?

On 03-Feb-2021, at 9:08 PM, Nicolas Dufresne <[hidden email]> wrote:

Le mercredi 03 février 2021 à 12:57 +0530, Bharath Bhushan (Kowshik) a écrit :
Hello Gstreamers,

I am planning to write a new gstreamer parser plugin for parsing a custom
byte-stream format. The pipeline should look something like below:-
Example A: tcpclientsrc ! my-custom-parser ! h264parse ! fakesink 
Example B: filesrc ! my-custom-parser ! h264parse ! fakesink

The byte-stream has the following format:
        4 bytes: size of data segment and timestamp
        8 bytes: timestamp
        N-8 bytes: data segment which is a H.264 NALU

My plugin will create one GstBuffer per data segment and set the PTS/DTS based
on the timestamp and send it to the downstream plugin (h264parse for example).

Some questions:-
- Is there a simple parser example plugin which I can start from?

This is more like a depayloader, but indeed we sometimes call parser or demuxer.
Your format seems similar to IVF used to cary parsable VP8 and VP9 data.

- Is vorbisparse a good example to use? Is gstttransform.c in the gst-
templates repo a good example to use?
- What are the options for push vs pull that are available in my parser? 
- Is there any documentation about how to write new parsers?

Any help is greatly appreciated.
_______________________________________________
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


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel