comparison mpeg12.c @ 10591:8aff2b05e978 libavcodec

Also check the location of the picture start code and picture coding extension a little.
author michael
date Sat, 28 Nov 2009 23:05:06 +0000
parents 0c6e62729784
children 69feacc1a220
comparison
equal deleted inserted replaced
10590:0c6e62729784 10591:8aff2b05e978
2304 av_log(avctx, AV_LOG_ERROR, "ignoring SEQ_START_CODE after %X\n", last_code); 2304 av_log(avctx, AV_LOG_ERROR, "ignoring SEQ_START_CODE after %X\n", last_code);
2305 } 2305 }
2306 break; 2306 break;
2307 2307
2308 case PICTURE_START_CODE: 2308 case PICTURE_START_CODE:
2309 if(last_code == 0 || last_code == SLICE_MIN_START_CODE){
2309 if(mpeg_decode_postinit(avctx) < 0){ 2310 if(mpeg_decode_postinit(avctx) < 0){
2310 av_log(avctx, AV_LOG_ERROR, "mpeg_decode_postinit() failure\n"); 2311 av_log(avctx, AV_LOG_ERROR, "mpeg_decode_postinit() failure\n");
2311 return -1; 2312 return -1;
2312 } 2313 }
2313 2314
2314 /* we have a complete image: we try to decompress it */ 2315 /* we have a complete image: we try to decompress it */
2315 if(mpeg1_decode_picture(avctx, 2316 if(mpeg1_decode_picture(avctx,
2316 buf_ptr, input_size) < 0) 2317 buf_ptr, input_size) < 0)
2317 s2->pict_type=0; 2318 s2->pict_type=0;
2318 last_code= PICTURE_START_CODE; 2319 last_code= PICTURE_START_CODE;
2320 }else{
2321 av_log(avctx, AV_LOG_ERROR, "ignoring pic after %X\n", last_code);
2322 }
2319 break; 2323 break;
2320 case EXT_START_CODE: 2324 case EXT_START_CODE:
2321 init_get_bits(&s2->gb, buf_ptr, input_size*8); 2325 init_get_bits(&s2->gb, buf_ptr, input_size*8);
2322 2326
2323 switch(get_bits(&s2->gb, 4)) { 2327 switch(get_bits(&s2->gb, 4)) {
2336 break; 2340 break;
2337 case 0x7: 2341 case 0x7:
2338 mpeg_decode_picture_display_extension(s); 2342 mpeg_decode_picture_display_extension(s);
2339 break; 2343 break;
2340 case 0x8: 2344 case 0x8:
2345 if(last_code == PICTURE_START_CODE){
2341 mpeg_decode_picture_coding_extension(s); 2346 mpeg_decode_picture_coding_extension(s);
2342 last_code= PICTURE_START_CODE; 2347 }else{
2348 av_log(avctx, AV_LOG_ERROR, "ignoring pic cod ext after %X\n", last_code);
2349 }
2343 break; 2350 break;
2344 } 2351 }
2345 break; 2352 break;
2346 case USER_START_CODE: 2353 case USER_START_CODE:
2347 mpeg_decode_user_data(avctx, 2354 mpeg_decode_user_data(avctx,