Mercurial > libavcodec.hg
comparison rv34.c @ 11431:da870c6f71ce libavcodec
Check for reference frames so RV 3/4 won't segfault trying to copy data from
nonexisting reference.
author | kostya |
---|---|
date | Tue, 09 Mar 2010 07:14:34 +0000 |
parents | 93f1f9d9d847 |
children | 1a7d902e33ac |
comparison
equal
deleted
inserted
replaced
11430:b1b2215cb7c7 | 11431:da870c6f71ce |
---|---|
1450 init_get_bits(&s->gb, buf+get_slice_offset(avctx, slices_hdr, 0), buf_size-get_slice_offset(avctx, slices_hdr, 0)); | 1450 init_get_bits(&s->gb, buf+get_slice_offset(avctx, slices_hdr, 0), buf_size-get_slice_offset(avctx, slices_hdr, 0)); |
1451 if(r->parse_slice_header(r, &r->s.gb, &si) < 0 || si.start){ | 1451 if(r->parse_slice_header(r, &r->s.gb, &si) < 0 || si.start){ |
1452 av_log(avctx, AV_LOG_ERROR, "First slice header is incorrect\n"); | 1452 av_log(avctx, AV_LOG_ERROR, "First slice header is incorrect\n"); |
1453 return -1; | 1453 return -1; |
1454 } | 1454 } |
1455 if((!s->last_picture_ptr || !s->last_picture_ptr->data[0]) && si.type == FF_P_TYPE) | |
1456 return -1; | |
1455 if((!s->last_picture_ptr || !s->last_picture_ptr->data[0]) && si.type == FF_B_TYPE) | 1457 if((!s->last_picture_ptr || !s->last_picture_ptr->data[0]) && si.type == FF_B_TYPE) |
1458 return -1; | |
1459 if((!s->next_picture_ptr || !s->next_picture_ptr->data[0]) && si.type == FF_B_TYPE) | |
1456 return -1; | 1460 return -1; |
1457 /* skip b frames if we are in a hurry */ | 1461 /* skip b frames if we are in a hurry */ |
1458 if(avctx->hurry_up && si.type==FF_B_TYPE) return buf_size; | 1462 if(avctx->hurry_up && si.type==FF_B_TYPE) return buf_size; |
1459 if( (avctx->skip_frame >= AVDISCARD_NONREF && si.type==FF_B_TYPE) | 1463 if( (avctx->skip_frame >= AVDISCARD_NONREF && si.type==FF_B_TYPE) |
1460 || (avctx->skip_frame >= AVDISCARD_NONKEY && si.type!=FF_I_TYPE) | 1464 || (avctx->skip_frame >= AVDISCARD_NONKEY && si.type!=FF_I_TYPE) |