comparison rv10.c @ 1642:e83980313d3f libavcodec

rv20 sub_id == 0x20200002 support
author michael
date Sun, 30 Nov 2003 18:08:35 +0000
parents 0226cad80fc2
children 9bb07bd315d9
comparison
equal deleted inserted replaced
1641:0226cad80fc2 1642:e83980313d3f
337 return mb_count; 337 return mb_count;
338 } 338 }
339 339
340 static int rv20_decode_picture_header(MpegEncContext *s) 340 static int rv20_decode_picture_header(MpegEncContext *s)
341 { 341 {
342 int pb_frame, seq, mb_pos; 342 int seq, mb_pos, i;
343 int i; 343
344 344 i= get_bits(&s->gb, 2);
345 if (get_bits(&s->gb, 1)) 345 switch(i){
346 s->pict_type = P_TYPE; 346 case 0: s->pict_type= I_TYPE; break;
347 else 347 case 2: s->pict_type= P_TYPE; break;
348 s->pict_type = I_TYPE; 348 case 3: s->pict_type= B_TYPE; break;
349 349 default:
350 pb_frame = get_bits(&s->gb, 2); 350 av_log(s->avctx, AV_LOG_ERROR, "unknown frame type\n");
351 351 return -1;
352 if (pb_frame){ 352 }
353 av_log(s->avctx, AV_LOG_ERROR, "pb frame not supported\n"); 353
354 if (get_bits(&s->gb, 1)){
355 av_log(s->avctx, AV_LOG_ERROR, "unknown bit set\n");
354 return -1; 356 return -1;
355 } 357 }
356 358
357 s->qscale = get_bits(&s->gb, 5); 359 s->qscale = get_bits(&s->gb, 5);
358 if(s->qscale==0){ 360 if(s->qscale==0){
359 av_log(s->avctx, AV_LOG_ERROR, "error, qscale:0\n"); 361 av_log(s->avctx, AV_LOG_ERROR, "error, qscale:0\n");
360 return -1; 362 return -1;
361 } 363 }
362 364
363 seq= get_bits(&s->gb, 8); 365 if(s->avctx->sub_id == 0x20200002)
366 seq= get_bits(&s->gb, 16);
367 else
368 seq= get_bits(&s->gb, 8);
364 369
365 for(i=0; i<6; i++){ 370 for(i=0; i<6; i++){
366 if(s->mb_width*s->mb_height < ff_mba_max[i]) break; 371 if(s->mb_width*s->mb_height < ff_mba_max[i]) break;
367 } 372 }
368 mb_pos= get_bits(&s->gb, ff_mba_length[i]); 373 mb_pos= get_bits(&s->gb, ff_mba_length[i]);
377 // s->obmc=1; 382 // s->obmc=1;
378 // s->umvplus=1; 383 // s->umvplus=1;
379 // s->modified_quant=1; 384 // s->modified_quant=1;
380 385
381 if(s->avctx->debug & FF_DEBUG_PICT_INFO){ 386 if(s->avctx->debug & FF_DEBUG_PICT_INFO){
382 av_log(s->avctx, AV_LOG_INFO, "num:%3d x:%2d y:%2d type:%d qscale:%2d rnd:%d\n", 387 av_log(s->avctx, AV_LOG_INFO, "num:%5d x:%2d y:%2d type:%d qscale:%2d rnd:%d\n",
383 seq, s->mb_x, s->mb_y, s->pict_type, s->qscale, s->no_rounding); 388 seq, s->mb_x, s->mb_y, s->pict_type, s->qscale, s->no_rounding);
389 }
390
391 if (s->pict_type == B_TYPE){
392 av_log(s->avctx, AV_LOG_ERROR, "b frame not supported\n");
393 return -1;
384 } 394 }
385 395
386 return s->mb_width*s->mb_height - mb_pos; 396 return s->mb_width*s->mb_height - mb_pos;
387 } 397 }
388 398