mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-17 11:45:25 +00:00
codecparsers: h264: fix skipping of unsupported SEI messages.
The payloadSize does not account for emulation prevention bytes. So, just use nal_reader_skip() for skipping payload_size bits. It should be possible to further optimize this code since the NAL reader shall be aligned to byte boundary already. Kill the now unused nal_reader_skip_to_next_byte() function. https://bugzilla.gnome.org/show_bug.cgi?id=726829 Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
This commit is contained in:
parent
aa73624638
commit
1b42180817
3 changed files with 8 additions and 20 deletions
|
@ -882,10 +882,14 @@ gst_h264_parser_parse_sei_message (GstH264NalParser * nalparser,
|
|||
res = gst_h264_parser_parse_pic_timing (nalparser,
|
||||
&sei->payload.pic_timing, nr);
|
||||
} else {
|
||||
/* Just consume payloadSize */
|
||||
guint32 i;
|
||||
for (i = 0; i < payloadSize; i++)
|
||||
nal_reader_skip_to_next_byte (nr);
|
||||
/* Just consume payloadSize bytes, which does not account for
|
||||
emulation prevention bytes */
|
||||
guint nbits = payload_size % 8;
|
||||
while (payload_size > 0) {
|
||||
nal_reader_skip (nr, nbits);
|
||||
payload_size -= nbits;
|
||||
nbits = 8;
|
||||
}
|
||||
res = GST_H264_PARSER_OK;
|
||||
}
|
||||
|
||||
|
|
|
@ -124,21 +124,6 @@ nal_reader_skip (NalReader * nr, guint nbits)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
inline gboolean
|
||||
nal_reader_skip_to_next_byte (NalReader * nr)
|
||||
{
|
||||
if (nr->bits_in_cache == 0) {
|
||||
if (G_LIKELY ((nr->size - nr->byte) > 0))
|
||||
nr->byte++;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
nr->bits_in_cache = 0;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
inline guint
|
||||
nal_reader_get_pos (const NalReader * nr)
|
||||
{
|
||||
|
|
|
@ -57,7 +57,6 @@ void nal_reader_init (NalReader * nr, const guint8 * data, guint size);
|
|||
|
||||
gboolean nal_reader_read (NalReader * nr, guint nbits);
|
||||
gboolean nal_reader_skip (NalReader * nr, guint nbits);
|
||||
gboolean nal_reader_skip_to_next_byte (NalReader * nr);
|
||||
guint nal_reader_get_pos (const NalReader * nr);
|
||||
guint nal_reader_get_remaining (const NalReader * nr);
|
||||
guint nal_reader_get_epb_count (const NalReader * nr);
|
||||
|
|
Loading…
Reference in a new issue