When an empty annex B NAL unit (i.e. 0x000001 immediately followed by a three or four-byte start code) is encountered during annex B->mp4 conversion, a NAL unit of size zero is created; this is invalid. Furthermore, several functions simply presumed all NAL units to be nonempty and treated the first byte as the NAL unit type.
Ticket #7200 contains a sample with such NAL units. This commit skips empty NAL units during annex B->mp4 conversion, ensuring that the callers don't need to check for themselves. Signed-off-by: Andreas Rheinhardt <andreas.rheinha...@gmail.com> --- libavformat/avc.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/libavformat/avc.c b/libavformat/avc.c index 98462940ad..17fcd1e73f 100644 --- a/libavformat/avc.c +++ b/libavformat/avc.c @@ -104,6 +104,7 @@ const uint8_t *ff_avc_parse_nalu(const uint8_t **start, const uint8_t **nal_end, p += 3; } +search_again: next = avc_find_startcode_internal(p, end); if (next) { @@ -112,6 +113,12 @@ const uint8_t *ff_avc_parse_nalu(const uint8_t **start, const uint8_t **nal_end, } else { *nal_end = end; } + if (*nal_end == p) { + if (!next) + return NULL; + p = next; + goto search_again; + } *start = next; return p; } -- 2.20.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".