Andreas Rheinhardt: > The intention behind the current check seems to be to check for > the rbsp_trailing_bits() syntax structure which is always 0x80 > for valid SEI messages. Yet this is wrong: These trailing bits > are not part of the GetBitContext -- they have already been > stripped in ff_h2645_packet_split(). And it is harmful, as > 0x80 is a legal SEI message payload type (namely for > Structure of pictures information SEI messages). We ignore this > type of SEI, but because of this bug we also ignored every > SEI message in the same NALU following it. > > Signed-off-by: Andreas Rheinhardt <[email protected]> > --- > libavcodec/hevc_sei.c | 8 +------- > 1 file changed, 1 insertion(+), 7 deletions(-) > > diff --git a/libavcodec/hevc_sei.c b/libavcodec/hevc_sei.c > index a5c7df34b0..953633f4bd 100644 > --- a/libavcodec/hevc_sei.c > +++ b/libavcodec/hevc_sei.c > @@ -549,12 +549,6 @@ static int decode_nal_sei_message(GetByteContext *gb, > void *logctx, HEVCSEI *s, > } > } > > -static int more_rbsp_data(GetByteContext *gb) > -{ > - return bytestream2_get_bytes_left(gb) > 0 && > - bytestream2_peek_byteu(gb) != 0x80; > -} > - > int ff_hevc_decode_nal_sei(GetBitContext *gb, void *logctx, HEVCSEI *s, > const HEVCParamSets *ps, int type) > { > @@ -569,7 +563,7 @@ int ff_hevc_decode_nal_sei(GetBitContext *gb, void > *logctx, HEVCSEI *s, > ret = decode_nal_sei_message(&gbyte, logctx, s, ps, type); > if (ret < 0) > return ret; > - } while (more_rbsp_data(&gbyte)); > + } while (bytestream2_get_bytes_left(&gbyte) > 0); > return 1; > } >
Will apply this tonight unless there are objections. - Andreas _______________________________________________ ffmpeg-devel mailing list [email protected] https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email [email protected] with subject "unsubscribe".
