mpegtsmux: set non-0 payload length in PES header if video ES packet is small enough

https://bugzilla.gnome.org/show_bug.cgi?id=748507
This commit is contained in:
Hyunjun Ko 2015-07-14 13:40:46 +09:00 committed by Tim-Philipp Müller
parent f9ef150652
commit a274299f48

View file

@ -411,11 +411,6 @@ tsmux_stream_initialize_pes_packet (TsMuxStream * stream)
stream->cur_pes_payload_size = stream->pes_payload_size; stream->cur_pes_payload_size = stream->pes_payload_size;
tsmux_stream_find_pts_dts_within (stream, stream->cur_pes_payload_size, tsmux_stream_find_pts_dts_within (stream, stream->cur_pes_payload_size,
&stream->pts, &stream->dts); &stream->pts, &stream->dts);
} else if (stream->is_video_stream) {
/* Unbounded for video streams */
stream->cur_pes_payload_size = 0;
tsmux_stream_find_pts_dts_within (stream, stream->bytes_avail, &stream->pts,
&stream->dts);
} else { } else {
/* Output a PES packet of all currently available bytes otherwise */ /* Output a PES packet of all currently available bytes otherwise */
stream->cur_pes_payload_size = stream->bytes_avail; stream->cur_pes_payload_size = stream->bytes_avail;
@ -443,6 +438,16 @@ tsmux_stream_initialize_pes_packet (TsMuxStream * stream)
} }
} }
if (stream->is_video_stream) {
guint8 hdr_len;
hdr_len = tsmux_stream_pes_header_length (stream);
/* Unbounded for video streams if pes packet length is over 16 bit */
if ((stream->cur_pes_payload_size + hdr_len - 6) > G_MAXUINT16)
stream->cur_pes_payload_size = 0;
}
return TRUE; return TRUE;
} }