cbs_mpeg2: Fix parsing the last unit
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>
Mon, 29 Jul 2019 19:56:56 +0000 (21:56 +0200)
committerJames Almer <jamrial@gmail.com>
Tue, 31 Dec 2019 19:57:37 +0000 (16:57 -0300)
commit14644e33226bf7f280da2bffd387b9fe26572d22
tree640bdb5d5272645ba5eaf7a70646f3dfad43a3fb
parentc1fb94fcacf3208ea8396953351a00af56e3f336
cbs_mpeg2: Fix parsing the last unit

There is one way to find out if avpriv_find_start_code has found a start
code or not: One has to check whether the state variable contains a
start code, i.e. whether the three most significant bytes are 0x00 00 01.
Checking for whether the return value is the end of the designated
buffer is not enough: If the last four bytes constitute a start code,
the return value is also the end of the buffer. This happens with
sequence_end_codes which have been ignored for exactly this reason,
although e.g. all three files used for fate tests of cbs_mpeg2 contain
sequence_end_codes.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
(cherry picked from commit fd93d5efe64206d5f1bce8c702602353444c0c1a)
libavcodec/cbs_mpeg2.c