mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-24 16:22:37 +00:00
avcodec/h264_sei: Try to make code more robust by jumping to the specified SEI ends
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
f9f7f4c9bb
commit
682e8a694f
@ -245,7 +245,7 @@ static int decode_frame_packing(H264Context *h, int size){
|
||||
int ff_h264_decode_sei(H264Context *h){
|
||||
while (get_bits_left(&h->gb) > 16) {
|
||||
int type;
|
||||
unsigned size;
|
||||
unsigned size, next;
|
||||
|
||||
type=0;
|
||||
do{
|
||||
@ -268,6 +268,7 @@ int ff_h264_decode_sei(H264Context *h){
|
||||
av_log(h->avctx, AV_LOG_ERROR, "SEI truncated\n");
|
||||
return AVERROR_INVALIDDATA;
|
||||
}
|
||||
next = get_bits_count(&h->gb) + 8*size;
|
||||
|
||||
switch(type){
|
||||
case SEI_TYPE_PIC_TIMING: // Picture timing SEI
|
||||
@ -293,9 +294,8 @@ int ff_h264_decode_sei(H264Context *h){
|
||||
case SEI_TYPE_FRAME_PACKING:
|
||||
if(decode_frame_packing(h, size) < 0)
|
||||
return -1;
|
||||
default:
|
||||
skip_bits_long(&h->gb, 8*size);
|
||||
}
|
||||
skip_bits_long(&h->gb, next - get_bits_count(&h->gb));
|
||||
|
||||
//FIXME check bits here
|
||||
align_get_bits(&h->gb);
|
||||
|
Loading…
Reference in New Issue
Block a user