Skip to content

GitLab

  • Menu
Projects Groups Snippets
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • gst-plugins-bad gst-plugins-bad
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 989
    • Issues 989
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 132
    • Merge requests 132
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • GStreamer
  • gst-plugins-badgst-plugins-bad
  • Issues
  • #1343

Closed
Open
Created Jun 29, 2020 by Vivia Nikolaidou@vivia🦆Maintainer

mpegtsmux shouldn't write HDMV registration information

File gst/mpegtsmux/tsmux/tsmuxstream.c line 791: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/blob/master/gst/mpegtsmux/tsmux/tsmuxstream.c#L791

      /* FIXME : Not sure about this additional_identification_info */
      guint8 add_info[] = { 0xFF, 0x1B, 0x44, 0x3F };

      descriptor = gst_mpegts_descriptor_from_registration ("HDMV",
          add_info, 4);

      g_ptr_array_add (pmt_stream->descriptors, descriptor);

Quoting my colleague Devin Heitmueller:

HDMV is specifically the registration descriptor used for Blu-Ray read-only media.

Registration descriptors are intended to inform the downstream decoder that a stream conforms to some specification. Standards bodies such as DVB, ATSC, SCTE, or the Blu-Ray Disc Association may require either the transport stream or specific elementary streams be marked to indicate conformance to their standards, as the standards body may require a more strict interpretation of the original H.264 or ISO 13818 specification.

Determining the specifics of what the Blu-Ray Disc Association requires in order to have a conformant stream would require access to their non-public specifications. As neither ATSC nor DVB require a registration descriptor on their video elementary streams, and we intend to make no claim to conform to the Blu-Ray standard, the descriptor should be removed from transport streams we create.

According to the SMPTE registration authority (https://smpte-ra.org/registered-mpeg-ts-ids), the HDMV registration descriptor:

This RID is used for identification of the stream which conforms to the specification of "System Description Blu-ray Disc Read-Only Format part 3 Audio Visual Basic Specifications"

There are other cases where we will need to insert registration descriptors, such as streams which conform to the SCTE-35 or SMPTE 2038 standards. However neither of those have the registration descriptor specified for the video

I looked into fixing it and thought about maybe enabling it only for m2ts mode. So basically the GstMpegTsMux class is the one that knows whether we have m2ts-mode enabled. Then it creates BaseTsMux, which then creates TsMux, which then creates a TsMuxStream, and that's where I need to know that mode. I then looked even further in the code and noticed the ATSC version, which is creating a subclass, overriding create_ts_mux, which overrides create_new_stream, which overrides gst_atsc_mux_stream_get_es_descrs and that's how it works there. So I don't see any other way around this other than creating a whole new subclass to deprecate m2ts-mode and breaking API.

Edited Jun 29, 2020 by Vivia Nikolaidou
Assignee
Assign to
Time tracking