[Bug 671136] mpegtsmux: add support for SDT and NIT tables for DVB-S/DVB-T

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Wed Oct 16 15:26:16 CEST 2013


https://bugzilla.gnome.org/show_bug.cgi?id=671136
  GStreamer | gst-plugins-bad | git

--- Comment #5 from Jesper Larsen <jesper.larsen at ixonos.com> 2013-10-16 13:26:10 UTC ---
(In reply to comment #4)
> (In reply to comment #3)
> > Created an attachment (id=257410)
 View: https://bugzilla.gnome.org/attachment.cgi?id=257410
 Review: https://bugzilla.gnome.org/review?bug=671136&attachment=257410

[details] [review]
> > mpeg-ts changes
> > 
> > I have a basic implementation working now. I will wait for the refactoring in
> > https://bugzilla.gnome.org/show_bug.cgi?id=709826 in order to adapt the changes
> > I have in gst/mpegtsmux.
> > 
> > However, I would like to discuss changes to the mpeg-ts lib.
> > 
> > What is the general intention for GstMpegTsSection? Would it ideally replace
> > the current TsMuxSection?
> 
>   It was in the back of my mind when designing the mpeg-ts lib (to be honest,
> until a few days ago I hadn't looked that much in depth at mpegtsmux).

Much of the data is redundant, but the GstMpegTsSection lacks data about the
packet (continuity_counter etc.). 

> 
> > 
> > The mpeg-ts lib is mostly tuned for parsing at the moment. The patch I attached
> > is the changes I have made to get my basic implementation working. It includes
> > a function used to synchronize the public part of GstMpegTsSection with the
> > data field. Basically it is the reverse of the gst_mpegts_section_new function.
> > 
> > I added a small set_version function to illustrate how updates of the section
> > could happen. In this approach it would make sense to mark the version_number
> > as private instead of public though. I'm not really fancying that.
> > 
> > The muxer in my implementation gets the data through the
> > gst_mpegts_section_get_buffer function, which just wraps the sections data
> > field in a GstBuffer.
> > 
> > Is any of this in line with the thoughts about the mpeg-ts lib?
> 
> 
> One potential idea would be to be able to create the opposite of the
> gst_mpegts_section_get_* and have gst_mpegts_section_from_*
> 
> Ex:
> GstMpegTSSection *gst_mpegts_section_from_nit(GstMpegTsNIT *nit);
> 
> That would store the argument in GstMpegTSSection's parsed_data (private).

So gst_mpegts_section_from_nit would update the public fields, and set the
parsed_data to GstMpegTsNIT* ?

> 
> You could then set whatever public fields you want on the section (say the
> version) and then call a generic function to serialize it to a binary section
> data (which you can then inject in a muxer).

This will enable us to serialize the generic section header (first 8 bytes). We
then introduce a _serialize function to serialize the table it self.

Ex.
static guint8 *_serialize_nit (GstMpegTsNIT *nit, gsize * output_size);

>
> guint8 *gst_mpegts_section_packetize(GstMpegTSSection *section, gsize
> *output_size);

This function will then

1. serialize the section header
2. serialize the section content based on the section type. If section type is
unknown pass bytes from the data field (After the header).
3. update CRC if applicable

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- 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