mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-17 22:06:41 +00:00
mpegtsmux: fix reserve bits so they are 1's
The MPEG standard (ISO-13880-1) says the reserve bits need to be set to one (2.1.64). This is causing transport streams to fail validation on some systems. https://bugzilla.gnome.org/show_bug.cgi?id=760127
This commit is contained in:
parent
8c7ea6fb87
commit
cb520dce26
1 changed files with 3 additions and 3 deletions
|
@ -692,7 +692,7 @@ tsmux_write_adaptation_field (guint8 * buf,
|
|||
buf[pos++] = (pcr_base >> 17) & 0xff;
|
||||
buf[pos++] = (pcr_base >> 9) & 0xff;
|
||||
buf[pos++] = (pcr_base >> 1) & 0xff;
|
||||
buf[pos++] = ((pcr_base << 7) & 0x80) | ((pcr_ext >> 8) & 0x01);
|
||||
buf[pos++] = ((pcr_base << 7) & 0x80) | 0x7e | ((pcr_ext >> 8) & 0x01); /* set 6 reserve bits to 1 */
|
||||
buf[pos++] = (pcr_ext) & 0xff;
|
||||
}
|
||||
if (pi->flags & TSMUX_PACKET_FLAG_WRITE_OPCR) {
|
||||
|
@ -708,7 +708,7 @@ tsmux_write_adaptation_field (guint8 * buf,
|
|||
buf[pos++] = (opcr_base >> 17) & 0xff;
|
||||
buf[pos++] = (opcr_base >> 9) & 0xff;
|
||||
buf[pos++] = (opcr_base >> 1) & 0xff;
|
||||
buf[pos++] = ((opcr_base << 7) & 0x80) | ((opcr_ext >> 8) & 0x01);
|
||||
buf[pos++] = ((opcr_base << 7) & 0x80) | 0x7e | ((opcr_ext >> 8) & 0x01); /* set 6 reserve bits to 1 */
|
||||
buf[pos++] = (opcr_ext) & 0xff;
|
||||
}
|
||||
if (pi->flags & TSMUX_PACKET_FLAG_WRITE_SPLICE) {
|
||||
|
@ -730,7 +730,7 @@ tsmux_write_adaptation_field (guint8 * buf,
|
|||
TS_DEBUG ("FIXME: write Adaptation extension");
|
||||
/* Write an empty extension for now */
|
||||
buf[pos++] = 1;
|
||||
buf[pos++] = 0;
|
||||
buf[pos++] = 0x1f; /* lower 5 bits are reserved, and should be all 1 */
|
||||
}
|
||||
}
|
||||
/* Write the flags at the start */
|
||||
|
|
Loading…
Reference in a new issue