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
@ -882,10 +882,14 @@ gst_h264_parser_parse_sei_message (GstH264NalParser * nalparser,
|
|||||||
res = gst_h264_parser_parse_pic_timing (nalparser,
|
res = gst_h264_parser_parse_pic_timing (nalparser,
|
||||||
&sei->payload.pic_timing, nr);
|
&sei->payload.pic_timing, nr);
|
||||||
} else {
|
} else {
|
||||||
/* Just consume payloadSize */
|
/* Just consume payloadSize bytes, which does not account for
|
||||||
guint32 i;
|
emulation prevention bytes */
|
||||||
for (i = 0; i < payloadSize; i++)
|
guint nbits = payload_size % 8;
|
||||||
nal_reader_skip_to_next_byte (nr);
|
while (payload_size > 0) {
|
||||||
|
nal_reader_skip (nr, nbits);
|
||||||
|
payload_size -= nbits;
|
||||||
|
nbits = 8;
|
||||||
|
}
|
||||||
res = GST_H264_PARSER_OK;
|
res = GST_H264_PARSER_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -124,21 +124,6 @@ nal_reader_skip (NalReader * nr, guint nbits)
|
|||||||
return TRUE;
|
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
|
inline guint
|
||||||
nal_reader_get_pos (const NalReader * nr)
|
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_read (NalReader * nr, guint nbits);
|
||||||
gboolean nal_reader_skip (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_pos (const NalReader * nr);
|
||||||
guint nal_reader_get_remaining (const NalReader * nr);
|
guint nal_reader_get_remaining (const NalReader * nr);
|
||||||
guint nal_reader_get_epb_count (const NalReader * nr);
|
guint nal_reader_get_epb_count (const NalReader * nr);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user