comparison h263.c @ 1598:932d306bf1dc libavcodec

av_log() patch by (Michel Bardiaux <mbardiaux at peaktime dot be>)
author michael
date Mon, 03 Nov 2003 13:26:22 +0000
parents 3d1d0490e5a6
children 27806cccec2a
comparison
equal deleted inserted replaced
1597:4c9165372ab3 1598:932d306bf1dc
615 int cbp, i; 615 int cbp, i;
616 616
617 if(s->flags & CODEC_FLAG_CBP_RD){ 617 if(s->flags & CODEC_FLAG_CBP_RD){
618 int best_cbpy_score= INT_MAX; 618 int best_cbpy_score= INT_MAX;
619 int best_cbpc_score= INT_MAX; 619 int best_cbpc_score= INT_MAX;
620 int cbpc, cbpy; 620 int cbpc = (-1), cbpy= (-1);
621 const int offset= (s->mv_type==MV_TYPE_16X16 ? 0 : 16) + (s->dquant ? 8 : 0); 621 const int offset= (s->mv_type==MV_TYPE_16X16 ? 0 : 16) + (s->dquant ? 8 : 0);
622 const int lambda= s->lambda2 >> (FF_LAMBDA_SHIFT - 6); 622 const int lambda= s->lambda2 >> (FF_LAMBDA_SHIFT - 6);
623 623
624 for(i=0; i<4; i++){ 624 for(i=0; i<4; i++){
625 int score= inter_MCBPC_bits[i + offset] * lambda; 625 int score= inter_MCBPC_bits[i + offset] * lambda;
826 s->last_mv[0][0][0]= motion_x; 826 s->last_mv[0][0][0]= motion_x;
827 s->last_mv[0][0][1]= motion_y; 827 s->last_mv[0][0][1]= motion_y;
828 s->f_count++; 828 s->f_count++;
829 break; 829 break;
830 default: 830 default:
831 printf("unknown mb type\n"); 831 av_log(s->avctx, AV_LOG_ERROR, "unknown mb type\n");
832 return; 832 return;
833 } 833 }
834 834
835 if(interleaved_stats){ 835 if(interleaved_stats){
836 s->mv_bits+= get_bits_diff(s); 836 s->mv_bits+= get_bits_diff(s);
2719 for(len=0; len<32; len++){ 2719 for(len=0; len<32; len++){
2720 if(get_bits1(&s->gb)) break; 2720 if(get_bits1(&s->gb)) break;
2721 } 2721 }
2722 2722
2723 if(len!=ff_mpeg4_get_video_packet_prefix_length(s)){ 2723 if(len!=ff_mpeg4_get_video_packet_prefix_length(s)){
2724 printf("marker does not match f_code\n"); 2724 av_log(s->avctx, AV_LOG_ERROR, "marker does not match f_code\n");
2725 return -1; 2725 return -1;
2726 } 2726 }
2727 2727
2728 if(s->shape != RECT_SHAPE){ 2728 if(s->shape != RECT_SHAPE){
2729 header_extension= get_bits1(&s->gb); 2729 header_extension= get_bits1(&s->gb);
2730 //FIXME more stuff here 2730 //FIXME more stuff here
2731 } 2731 }
2732 2732
2733 mb_num= get_bits(&s->gb, mb_num_bits); 2733 mb_num= get_bits(&s->gb, mb_num_bits);
2734 if(mb_num>=s->mb_num){ 2734 if(mb_num>=s->mb_num){
2735 fprintf(stderr, "illegal mb_num in video packet (%d %d) \n", mb_num, s->mb_num); 2735 av_log(s->avctx, AV_LOG_ERROR, "illegal mb_num in video packet (%d %d) \n", mb_num, s->mb_num);
2736 return -1; 2736 return -1;
2737 } 2737 }
2738 if(s->pict_type == B_TYPE){ 2738 if(s->pict_type == B_TYPE){
2739 while(s->next_picture.mbskip_table[ s->mb_index2xy[ mb_num ] ]) mb_num++; 2739 while(s->next_picture.mbskip_table[ s->mb_index2xy[ mb_num ] ]) mb_num++;
2740 if(mb_num >= s->mb_num) return -1; // slice contains just skiped MBs which where allready decoded 2740 if(mb_num >= s->mb_num) return -1; // slice contains just skiped MBs which where allready decoded
2769 if(s->shape != BIN_ONLY_SHAPE){ 2769 if(s->shape != BIN_ONLY_SHAPE){
2770 skip_bits(&s->gb, 3); /* intra dc vlc threshold */ 2770 skip_bits(&s->gb, 3); /* intra dc vlc threshold */
2771 //FIXME dont just ignore everything 2771 //FIXME dont just ignore everything
2772 if(s->pict_type == S_TYPE && s->vol_sprite_usage==GMC_SPRITE){ 2772 if(s->pict_type == S_TYPE && s->vol_sprite_usage==GMC_SPRITE){
2773 mpeg4_decode_sprite_trajectory(s); 2773 mpeg4_decode_sprite_trajectory(s);
2774 fprintf(stderr, "untested\n"); 2774 av_log(s->avctx, AV_LOG_ERROR, "untested\n");
2775 } 2775 }
2776 2776
2777 //FIXME reduced res stuff here 2777 //FIXME reduced res stuff here
2778 2778
2779 if (s->pict_type != I_TYPE) { 2779 if (s->pict_type != I_TYPE) {
2780 int f_code = get_bits(&s->gb, 3); /* fcode_for */ 2780 int f_code = get_bits(&s->gb, 3); /* fcode_for */
2781 if(f_code==0){ 2781 if(f_code==0){
2782 printf("Error, video packet header damaged (f_code=0)\n"); 2782 av_log(s->avctx, AV_LOG_ERROR, "Error, video packet header damaged (f_code=0)\n");
2783 } 2783 }
2784 } 2784 }
2785 if (s->pict_type == B_TYPE) { 2785 if (s->pict_type == B_TYPE) {
2786 int b_code = get_bits(&s->gb, 3); 2786 int b_code = get_bits(&s->gb, 3);
2787 if(b_code==0){ 2787 if(b_code==0){
2788 printf("Error, video packet header damaged (b_code=0)\n"); 2788 av_log(s->avctx, AV_LOG_ERROR, "Error, video packet header damaged (b_code=0)\n");
2789 } 2789 }
2790 } 2790 }
2791 } 2791 }
2792 } 2792 }
2793 //FIXME new-pred stuff 2793 //FIXME new-pred stuff
2946 } 2946 }
2947 2947
2948 do{ 2948 do{
2949 cbpc = get_vlc2(&s->gb, intra_MCBPC_vlc.table, INTRA_MCBPC_VLC_BITS, 2); 2949 cbpc = get_vlc2(&s->gb, intra_MCBPC_vlc.table, INTRA_MCBPC_VLC_BITS, 2);
2950 if (cbpc < 0){ 2950 if (cbpc < 0){
2951 fprintf(stderr, "cbpc corrupted at %d %d\n", s->mb_x, s->mb_y); 2951 av_log(s->avctx, AV_LOG_ERROR, "cbpc corrupted at %d %d\n", s->mb_x, s->mb_y);
2952 return -1; 2952 return -1;
2953 } 2953 }
2954 }while(cbpc == 8); 2954 }while(cbpc == 8);
2955 2955
2956 s->cbp_table[xy]= cbpc & 3; 2956 s->cbp_table[xy]= cbpc & 3;
2965 s->mbintra_table[xy]= 1; 2965 s->mbintra_table[xy]= 1;
2966 for(i=0; i<6; i++){ 2966 for(i=0; i<6; i++){
2967 int dc_pred_dir; 2967 int dc_pred_dir;
2968 int dc= mpeg4_decode_dc(s, i, &dc_pred_dir); 2968 int dc= mpeg4_decode_dc(s, i, &dc_pred_dir);
2969 if(dc < 0){ 2969 if(dc < 0){
2970 fprintf(stderr, "DC corrupted at %d %d\n", s->mb_x, s->mb_y); 2970 av_log(s->avctx, AV_LOG_ERROR, "DC corrupted at %d %d\n", s->mb_x, s->mb_y);
2971 return -1; 2971 return -1;
2972 } 2972 }
2973 dir<<=1; 2973 dir<<=1;
2974 if(dc_pred_dir) dir|=1; 2974 if(dc_pred_dir) dir|=1;
2975 } 2975 }
3005 continue; 3005 continue;
3006 } 3006 }
3007 3007
3008 cbpc = get_vlc2(&s->gb, inter_MCBPC_vlc.table, INTER_MCBPC_VLC_BITS, 2); 3008 cbpc = get_vlc2(&s->gb, inter_MCBPC_vlc.table, INTER_MCBPC_VLC_BITS, 2);
3009 if (cbpc < 0){ 3009 if (cbpc < 0){
3010 fprintf(stderr, "cbpc corrupted at %d %d\n", s->mb_x, s->mb_y); 3010 av_log(s->avctx, AV_LOG_ERROR, "cbpc corrupted at %d %d\n", s->mb_x, s->mb_y);
3011 return -1; 3011 return -1;
3012 } 3012 }
3013 // }while(cbpc == 20); 3013 // }while(cbpc == 20);
3014 3014
3015 s->cbp_table[xy]= cbpc&(8+3); //8 is dquant 3015 s->cbp_table[xy]= cbpc&(8+3); //8 is dquant
3101 3101
3102 if(s->pict_type==I_TYPE){ 3102 if(s->pict_type==I_TYPE){
3103 int ac_pred= get_bits1(&s->gb); 3103 int ac_pred= get_bits1(&s->gb);
3104 int cbpy = get_vlc2(&s->gb, cbpy_vlc.table, CBPY_VLC_BITS, 1); 3104 int cbpy = get_vlc2(&s->gb, cbpy_vlc.table, CBPY_VLC_BITS, 1);
3105 if(cbpy<0){ 3105 if(cbpy<0){
3106 fprintf(stderr, "cbpy corrupted at %d %d\n", s->mb_x, s->mb_y); 3106 av_log(s->avctx, AV_LOG_ERROR, "cbpy corrupted at %d %d\n", s->mb_x, s->mb_y);
3107 return -1; 3107 return -1;
3108 } 3108 }
3109 3109
3110 s->cbp_table[xy]|= cbpy<<2; 3110 s->cbp_table[xy]|= cbpy<<2;
3111 s->current_picture.mb_type[xy] |= ac_pred*MB_TYPE_ACPRED; 3111 s->current_picture.mb_type[xy] |= ac_pred*MB_TYPE_ACPRED;
3114 int dir=0,i; 3114 int dir=0,i;
3115 int ac_pred = get_bits1(&s->gb); 3115 int ac_pred = get_bits1(&s->gb);
3116 int cbpy = get_vlc2(&s->gb, cbpy_vlc.table, CBPY_VLC_BITS, 1); 3116 int cbpy = get_vlc2(&s->gb, cbpy_vlc.table, CBPY_VLC_BITS, 1);
3117 3117
3118 if(cbpy<0){ 3118 if(cbpy<0){
3119 fprintf(stderr, "I cbpy corrupted at %d %d\n", s->mb_x, s->mb_y); 3119 av_log(s->avctx, AV_LOG_ERROR, "I cbpy corrupted at %d %d\n", s->mb_x, s->mb_y);
3120 return -1; 3120 return -1;
3121 } 3121 }
3122 3122
3123 if(s->cbp_table[xy] & 8) { 3123 if(s->cbp_table[xy] & 8) {
3124 change_qscale(s, quant_tab[get_bits(&s->gb, 2)]); 3124 change_qscale(s, quant_tab[get_bits(&s->gb, 2)]);
3127 3127
3128 for(i=0; i<6; i++){ 3128 for(i=0; i<6; i++){
3129 int dc_pred_dir; 3129 int dc_pred_dir;
3130 int dc= mpeg4_decode_dc(s, i, &dc_pred_dir); 3130 int dc= mpeg4_decode_dc(s, i, &dc_pred_dir);
3131 if(dc < 0){ 3131 if(dc < 0){
3132 fprintf(stderr, "DC corrupted at %d %d\n", s->mb_x, s->mb_y); 3132 av_log(s->avctx, AV_LOG_ERROR, "DC corrupted at %d %d\n", s->mb_x, s->mb_y);
3133 return -1; 3133 return -1;
3134 } 3134 }
3135 dir<<=1; 3135 dir<<=1;
3136 if(dc_pred_dir) dir|=1; 3136 if(dc_pred_dir) dir|=1;
3137 } 3137 }
3144 s->cbp_table[xy]= 0; 3144 s->cbp_table[xy]= 0;
3145 }else{ 3145 }else{
3146 int cbpy = get_vlc2(&s->gb, cbpy_vlc.table, CBPY_VLC_BITS, 1); 3146 int cbpy = get_vlc2(&s->gb, cbpy_vlc.table, CBPY_VLC_BITS, 1);
3147 3147
3148 if(cbpy<0){ 3148 if(cbpy<0){
3149 fprintf(stderr, "P cbpy corrupted at %d %d\n", s->mb_x, s->mb_y); 3149 av_log(s->avctx, AV_LOG_ERROR, "P cbpy corrupted at %d %d\n", s->mb_x, s->mb_y);
3150 return -1; 3150 return -1;
3151 } 3151 }
3152 3152
3153 if(s->cbp_table[xy] & 8) { 3153 if(s->cbp_table[xy] & 8) {
3154 change_qscale(s, quant_tab[get_bits(&s->gb, 2)]); 3154 change_qscale(s, quant_tab[get_bits(&s->gb, 2)]);
3181 ff_er_add_slice(s, s->resync_mb_x, s->resync_mb_y, s->mb_x, s->mb_y, part_a_error); 3181 ff_er_add_slice(s, s->resync_mb_x, s->resync_mb_y, s->mb_x, s->mb_y, part_a_error);
3182 return -1; 3182 return -1;
3183 } 3183 }
3184 3184
3185 if(s->resync_mb_x + s->resync_mb_y*s->mb_width + mb_num > s->mb_num){ 3185 if(s->resync_mb_x + s->resync_mb_y*s->mb_width + mb_num > s->mb_num){
3186 fprintf(stderr, "slice below monitor ...\n"); 3186 av_log(s->avctx, AV_LOG_ERROR, "slice below monitor ...\n");
3187 ff_er_add_slice(s, s->resync_mb_x, s->resync_mb_y, s->mb_x, s->mb_y, part_a_error); 3187 ff_er_add_slice(s, s->resync_mb_x, s->resync_mb_y, s->mb_x, s->mb_y, part_a_error);
3188 return -1; 3188 return -1;
3189 } 3189 }
3190 3190
3191 s->mb_num_left= mb_num; 3191 s->mb_num_left= mb_num;
3192 3192
3193 if(s->pict_type==I_TYPE){ 3193 if(s->pict_type==I_TYPE){
3194 if(get_bits_long(&s->gb, 19)!=DC_MARKER){ 3194 if(get_bits_long(&s->gb, 19)!=DC_MARKER){
3195 fprintf(stderr, "marker missing after first I partition at %d %d\n", s->mb_x, s->mb_y); 3195 av_log(s->avctx, AV_LOG_ERROR, "marker missing after first I partition at %d %d\n", s->mb_x, s->mb_y);
3196 return -1; 3196 return -1;
3197 } 3197 }
3198 }else{ 3198 }else{
3199 if(get_bits(&s->gb, 17)!=MOTION_MARKER){ 3199 if(get_bits(&s->gb, 17)!=MOTION_MARKER){
3200 fprintf(stderr, "marker missing after first P partition at %d %d\n", s->mb_x, s->mb_y); 3200 av_log(s->avctx, AV_LOG_ERROR, "marker missing after first P partition at %d %d\n", s->mb_x, s->mb_y);
3201 return -1; 3201 return -1;
3202 } 3202 }
3203 } 3203 }
3204 ff_er_add_slice(s, s->resync_mb_x, s->resync_mb_y, s->mb_x-1, s->mb_y, part_a_end); 3204 ff_er_add_slice(s, s->resync_mb_x, s->resync_mb_y, s->mb_x-1, s->mb_y, part_a_end);
3205 3205
3274 if (!IS_SKIP(mb_type)) { 3274 if (!IS_SKIP(mb_type)) {
3275 int i; 3275 int i;
3276 /* decode each block */ 3276 /* decode each block */
3277 for (i = 0; i < 6; i++) { 3277 for (i = 0; i < 6; i++) {
3278 if(mpeg4_decode_block(s, block[i], i, cbp&32, s->mb_intra, s->rvlc) < 0){ 3278 if(mpeg4_decode_block(s, block[i], i, cbp&32, s->mb_intra, s->rvlc) < 0){
3279 fprintf(stderr, "texture corrupted at %d %d %d\n", s->mb_x, s->mb_y, s->mb_intra); 3279 av_log(s->avctx, AV_LOG_ERROR, "texture corrupted at %d %d %d\n", s->mb_x, s->mb_y, s->mb_intra);
3280 return -1; 3280 return -1;
3281 } 3281 }
3282 cbp+=cbp; 3282 cbp+=cbp;
3283 } 3283 }
3284 } 3284 }
3335 goto end; 3335 goto end;
3336 } 3336 }
3337 cbpc = get_vlc2(&s->gb, inter_MCBPC_vlc.table, INTER_MCBPC_VLC_BITS, 2); 3337 cbpc = get_vlc2(&s->gb, inter_MCBPC_vlc.table, INTER_MCBPC_VLC_BITS, 2);
3338 //fprintf(stderr, "\tCBPC: %d", cbpc); 3338 //fprintf(stderr, "\tCBPC: %d", cbpc);
3339 if (cbpc < 0){ 3339 if (cbpc < 0){
3340 fprintf(stderr, "cbpc damaged at %d %d\n", s->mb_x, s->mb_y); 3340 av_log(s->avctx, AV_LOG_ERROR, "cbpc damaged at %d %d\n", s->mb_x, s->mb_y);
3341 return -1; 3341 return -1;
3342 } 3342 }
3343 }while(cbpc == 20); 3343 }while(cbpc == 20);
3344 3344
3345 dquant = cbpc & 8; 3345 dquant = cbpc & 8;
3482 cbp=0; 3482 cbp=0;
3483 }else{ 3483 }else{
3484 modb2= get_bits1(&s->gb); 3484 modb2= get_bits1(&s->gb);
3485 mb_type= get_vlc2(&s->gb, mb_type_b_vlc.table, MB_TYPE_B_VLC_BITS, 1); 3485 mb_type= get_vlc2(&s->gb, mb_type_b_vlc.table, MB_TYPE_B_VLC_BITS, 1);
3486 if(mb_type<0){ 3486 if(mb_type<0){
3487 printf("illegal MB_type\n"); 3487 av_log(s->avctx, AV_LOG_ERROR, "illegal MB_type\n");
3488 return -1; 3488 return -1;
3489 } 3489 }
3490 mb_type= mb_type_b_map[ mb_type ]; 3490 mb_type= mb_type_b_map[ mb_type ];
3491 if(modb2) cbp= 0; 3491 if(modb2) cbp= 0;
3492 else cbp= get_bits(&s->gb, 6); 3492 else cbp= get_bits(&s->gb, 6);
3578 s->current_picture.mb_type[xy]= mb_type; 3578 s->current_picture.mb_type[xy]= mb_type;
3579 } else { /* I-Frame */ 3579 } else { /* I-Frame */
3580 do{ 3580 do{
3581 cbpc = get_vlc2(&s->gb, intra_MCBPC_vlc.table, INTRA_MCBPC_VLC_BITS, 2); 3581 cbpc = get_vlc2(&s->gb, intra_MCBPC_vlc.table, INTRA_MCBPC_VLC_BITS, 2);
3582 if (cbpc < 0){ 3582 if (cbpc < 0){
3583 fprintf(stderr, "I cbpc damaged at %d %d\n", s->mb_x, s->mb_y); 3583 av_log(s->avctx, AV_LOG_ERROR, "I cbpc damaged at %d %d\n", s->mb_x, s->mb_y);
3584 return -1; 3584 return -1;
3585 } 3585 }
3586 }while(cbpc == 8); 3586 }while(cbpc == 8);
3587 3587
3588 dquant = cbpc & 4; 3588 dquant = cbpc & 4;
3600 }else 3600 }else
3601 s->ac_pred = 0; 3601 s->ac_pred = 0;
3602 3602
3603 cbpy = get_vlc2(&s->gb, cbpy_vlc.table, CBPY_VLC_BITS, 1); 3603 cbpy = get_vlc2(&s->gb, cbpy_vlc.table, CBPY_VLC_BITS, 1);
3604 if(cbpy<0){ 3604 if(cbpy<0){
3605 fprintf(stderr, "I cbpy damaged at %d %d\n", s->mb_x, s->mb_y); 3605 av_log(s->avctx, AV_LOG_ERROR, "I cbpy damaged at %d %d\n", s->mb_x, s->mb_y);
3606 return -1; 3606 return -1;
3607 } 3607 }
3608 cbp = (cbpc & 3) | (cbpy << 2); 3608 cbp = (cbpc & 3) | (cbpy << 2);
3609 if (dquant) { 3609 if (dquant) {
3610 change_qscale(s, quant_tab[get_bits(&s->gb, 2)]); 3610 change_qscale(s, quant_tab[get_bits(&s->gb, 2)]);
3769 level = get_bits(&s->gb, 8); 3769 level = get_bits(&s->gb, 8);
3770 } 3770 }
3771 }else{ 3771 }else{
3772 level = get_bits(&s->gb, 8); 3772 level = get_bits(&s->gb, 8);
3773 if((level&0x7F) == 0){ 3773 if((level&0x7F) == 0){
3774 fprintf(stderr, "illegal dc %d at %d %d\n", level, s->mb_x, s->mb_y); 3774 av_log(s->avctx, AV_LOG_ERROR, "illegal dc %d at %d %d\n", level, s->mb_x, s->mb_y);
3775 return -1; 3775 return -1;
3776 } 3776 }
3777 if (level == 255) 3777 if (level == 255)
3778 level = 128; 3778 level = 128;
3779 } 3779 }
3790 } 3790 }
3791 3791
3792 for(;;) { 3792 for(;;) {
3793 code = get_vlc2(&s->gb, rl->vlc.table, TEX_VLC_BITS, 2); 3793 code = get_vlc2(&s->gb, rl->vlc.table, TEX_VLC_BITS, 2);
3794 if (code < 0){ 3794 if (code < 0){
3795 fprintf(stderr, "illegal ac vlc code at %dx%d\n", s->mb_x, s->mb_y); 3795 av_log(s->avctx, AV_LOG_ERROR, "illegal ac vlc code at %dx%d\n", s->mb_x, s->mb_y);
3796 return -1; 3796 return -1;
3797 } 3797 }
3798 if (code == rl->n) { 3798 if (code == rl->n) {
3799 /* escape */ 3799 /* escape */
3800 if (s->h263_flv > 1) { 3800 if (s->h263_flv > 1) {
3827 if (get_bits1(&s->gb)) 3827 if (get_bits1(&s->gb))
3828 level = -level; 3828 level = -level;
3829 } 3829 }
3830 i += run; 3830 i += run;
3831 if (i >= 64){ 3831 if (i >= 64){
3832 fprintf(stderr, "run overflow at %dx%d\n", s->mb_x, s->mb_y); 3832 av_log(s->avctx, AV_LOG_ERROR, "run overflow at %dx%d\n", s->mb_x, s->mb_y);
3833 return -1; 3833 return -1;
3834 } 3834 }
3835 j = scan_table[i]; 3835 j = scan_table[i];
3836 block[j] = level; 3836 block[j] = level;
3837 if (last) 3837 if (last)
3861 if (n < 4) 3861 if (n < 4)
3862 code = get_vlc2(&s->gb, dc_lum.table, DC_VLC_BITS, 1); 3862 code = get_vlc2(&s->gb, dc_lum.table, DC_VLC_BITS, 1);
3863 else 3863 else
3864 code = get_vlc2(&s->gb, dc_chrom.table, DC_VLC_BITS, 1); 3864 code = get_vlc2(&s->gb, dc_chrom.table, DC_VLC_BITS, 1);
3865 if (code < 0 || code > 9 /* && s->nbit<9 */){ 3865 if (code < 0 || code > 9 /* && s->nbit<9 */){
3866 fprintf(stderr, "illegal dc vlc\n"); 3866 av_log(s->avctx, AV_LOG_ERROR, "illegal dc vlc\n");
3867 return -1; 3867 return -1;
3868 } 3868 }
3869 if (code == 0) { 3869 if (code == 0) {
3870 level = 0; 3870 level = 0;
3871 } else { 3871 } else {
3883 } 3883 }
3884 3884
3885 if (code > 8){ 3885 if (code > 8){
3886 if(get_bits1(&s->gb)==0){ /* marker */ 3886 if(get_bits1(&s->gb)==0){ /* marker */
3887 if(s->error_resilience>=2){ 3887 if(s->error_resilience>=2){
3888 fprintf(stderr, "dc marker bit missing\n"); 3888 av_log(s->avctx, AV_LOG_ERROR, "dc marker bit missing\n");
3889 return -1; 3889 return -1;
3890 } 3890 }
3891 } 3891 }
3892 } 3892 }
3893 } 3893 }
3894 pred = ff_mpeg4_pred_dc(s, n, &dc_val, dir_ptr); 3894 pred = ff_mpeg4_pred_dc(s, n, &dc_val, dir_ptr);
3895 level += pred; 3895 level += pred;
3896 if (level < 0){ 3896 if (level < 0){
3897 if(s->error_resilience>=3){ 3897 if(s->error_resilience>=3){
3898 fprintf(stderr, "dc<0 at %dx%d\n", s->mb_x, s->mb_y); 3898 av_log(s->avctx, AV_LOG_ERROR, "dc<0 at %dx%d\n", s->mb_x, s->mb_y);
3899 return -1; 3899 return -1;
3900 } 3900 }
3901 level = 0; 3901 level = 0;
3902 } 3902 }
3903 if (n < 4) { 3903 if (n < 4) {
3908 if(IS_3IV1) 3908 if(IS_3IV1)
3909 *dc_val = level * 8; 3909 *dc_val = level * 8;
3910 3910
3911 if(s->error_resilience>=3){ 3911 if(s->error_resilience>=3){
3912 if(*dc_val > 2048 + s->y_dc_scale + s->c_dc_scale){ 3912 if(*dc_val > 2048 + s->y_dc_scale + s->c_dc_scale){
3913 fprintf(stderr, "dc overflow at %dx%d\n", s->mb_x, s->mb_y); 3913 av_log(s->avctx, AV_LOG_ERROR, "dc overflow at %dx%d\n", s->mb_x, s->mb_y);
3914 return -1; 3914 return -1;
3915 } 3915 }
3916 } 3916 }
3917 return level; 3917 return level;
3918 } 3918 }
4007 GET_RL_VLC(level, run, re, &s->gb, rl_vlc, TEX_VLC_BITS, 2); 4007 GET_RL_VLC(level, run, re, &s->gb, rl_vlc, TEX_VLC_BITS, 2);
4008 if (level==0) { 4008 if (level==0) {
4009 /* escape */ 4009 /* escape */
4010 if(rvlc){ 4010 if(rvlc){
4011 if(SHOW_UBITS(re, &s->gb, 1)==0){ 4011 if(SHOW_UBITS(re, &s->gb, 1)==0){
4012 fprintf(stderr, "1. marker bit missing in rvlc esc\n"); 4012 av_log(s->avctx, AV_LOG_ERROR, "1. marker bit missing in rvlc esc\n");
4013 return -1; 4013 return -1;
4014 }; SKIP_CACHE(re, &s->gb, 1); 4014 }; SKIP_CACHE(re, &s->gb, 1);
4015 4015
4016 last= SHOW_UBITS(re, &s->gb, 1); SKIP_CACHE(re, &s->gb, 1); 4016 last= SHOW_UBITS(re, &s->gb, 1); SKIP_CACHE(re, &s->gb, 1);
4017 run= SHOW_UBITS(re, &s->gb, 6); LAST_SKIP_CACHE(re, &s->gb, 6); 4017 run= SHOW_UBITS(re, &s->gb, 6); LAST_SKIP_CACHE(re, &s->gb, 6);
4018 SKIP_COUNTER(re, &s->gb, 1+1+6); 4018 SKIP_COUNTER(re, &s->gb, 1+1+6);
4019 UPDATE_CACHE(re, &s->gb); 4019 UPDATE_CACHE(re, &s->gb);
4020 4020
4021 if(SHOW_UBITS(re, &s->gb, 1)==0){ 4021 if(SHOW_UBITS(re, &s->gb, 1)==0){
4022 fprintf(stderr, "2. marker bit missing in rvlc esc\n"); 4022 av_log(s->avctx, AV_LOG_ERROR, "2. marker bit missing in rvlc esc\n");
4023 return -1; 4023 return -1;
4024 }; SKIP_CACHE(re, &s->gb, 1); 4024 }; SKIP_CACHE(re, &s->gb, 1);
4025 4025
4026 level= SHOW_UBITS(re, &s->gb, 11); SKIP_CACHE(re, &s->gb, 11); 4026 level= SHOW_UBITS(re, &s->gb, 11); SKIP_CACHE(re, &s->gb, 11);
4027 4027
4028 if(SHOW_UBITS(re, &s->gb, 5)!=0x10){ 4028 if(SHOW_UBITS(re, &s->gb, 5)!=0x10){
4029 fprintf(stderr, "reverse esc missing\n"); 4029 av_log(s->avctx, AV_LOG_ERROR, "reverse esc missing\n");
4030 return -1; 4030 return -1;
4031 }; SKIP_CACHE(re, &s->gb, 5); 4031 }; SKIP_CACHE(re, &s->gb, 5);
4032 4032
4033 level= level * qmul + qadd; 4033 level= level * qmul + qadd;
4034 level = (level ^ SHOW_SBITS(re, &s->gb, 1)) - SHOW_SBITS(re, &s->gb, 1); LAST_SKIP_CACHE(re, &s->gb, 1); 4034 level = (level ^ SHOW_SBITS(re, &s->gb, 1)) - SHOW_SBITS(re, &s->gb, 1); LAST_SKIP_CACHE(re, &s->gb, 1);
4054 4054
4055 if(IS_3IV1){ 4055 if(IS_3IV1){
4056 level= SHOW_SBITS(re, &s->gb, 12); LAST_SKIP_BITS(re, &s->gb, 12); 4056 level= SHOW_SBITS(re, &s->gb, 12); LAST_SKIP_BITS(re, &s->gb, 12);
4057 }else{ 4057 }else{
4058 if(SHOW_UBITS(re, &s->gb, 1)==0){ 4058 if(SHOW_UBITS(re, &s->gb, 1)==0){
4059 fprintf(stderr, "1. marker bit missing in 3. esc\n"); 4059 av_log(s->avctx, AV_LOG_ERROR, "1. marker bit missing in 3. esc\n");
4060 return -1; 4060 return -1;
4061 }; SKIP_CACHE(re, &s->gb, 1); 4061 }; SKIP_CACHE(re, &s->gb, 1);
4062 4062
4063 level= SHOW_SBITS(re, &s->gb, 12); SKIP_CACHE(re, &s->gb, 12); 4063 level= SHOW_SBITS(re, &s->gb, 12); SKIP_CACHE(re, &s->gb, 12);
4064 4064
4065 if(SHOW_UBITS(re, &s->gb, 1)==0){ 4065 if(SHOW_UBITS(re, &s->gb, 1)==0){
4066 fprintf(stderr, "2. marker bit missing in 3. esc\n"); 4066 av_log(s->avctx, AV_LOG_ERROR, "2. marker bit missing in 3. esc\n");
4067 return -1; 4067 return -1;
4068 }; LAST_SKIP_CACHE(re, &s->gb, 1); 4068 }; LAST_SKIP_CACHE(re, &s->gb, 1);
4069 4069
4070 SKIP_COUNTER(re, &s->gb, 1+12+1); 4070 SKIP_COUNTER(re, &s->gb, 1+12+1);
4071 } 4071 }
4072 4072
4073 if(level*s->qscale>1024 || level*s->qscale<-1024){ 4073 if(level*s->qscale>1024 || level*s->qscale<-1024){
4074 fprintf(stderr, "|level| overflow in 3. esc, qp=%d\n", s->qscale); 4074 av_log(s->avctx, AV_LOG_ERROR, "|level| overflow in 3. esc, qp=%d\n", s->qscale);
4075 return -1; 4075 return -1;
4076 } 4076 }
4077 #if 0 4077 #if 0
4078 if(s->error_resilience >= FF_ER_COMPLIANT){ 4078 if(s->error_resilience >= FF_ER_COMPLIANT){
4079 const int abs_level= ABS(level); 4079 const int abs_level= ABS(level);
4080 if(abs_level<=MAX_LEVEL && run<=MAX_RUN){ 4080 if(abs_level<=MAX_LEVEL && run<=MAX_RUN){
4081 const int run1= run - rl->max_run[last][abs_level] - 1; 4081 const int run1= run - rl->max_run[last][abs_level] - 1;
4082 if(abs_level <= rl->max_level[last][run]){ 4082 if(abs_level <= rl->max_level[last][run]){
4083 fprintf(stderr, "illegal 3. esc, vlc encoding possible\n"); 4083 av_log(s->avctx, AV_LOG_ERROR, "illegal 3. esc, vlc encoding possible\n");
4084 return -1; 4084 return -1;
4085 } 4085 }
4086 if(s->error_resilience > FF_ER_COMPLIANT){ 4086 if(s->error_resilience > FF_ER_COMPLIANT){
4087 if(abs_level <= rl->max_level[last][run]*2){ 4087 if(abs_level <= rl->max_level[last][run]*2){
4088 fprintf(stderr, "illegal 3. esc, esc 1 encoding possible\n"); 4088 fprintf(stderr, "illegal 3. esc, esc 1 encoding possible\n");
4135 LAST_SKIP_BITS(re, &s->gb, 1); 4135 LAST_SKIP_BITS(re, &s->gb, 1);
4136 } 4136 }
4137 if (i > 62){ 4137 if (i > 62){
4138 i-= 192; 4138 i-= 192;
4139 if(i&(~63)){ 4139 if(i&(~63)){
4140 fprintf(stderr, "ac-tex damaged at %d %d\n", s->mb_x, s->mb_y); 4140 av_log(s->avctx, AV_LOG_ERROR, "ac-tex damaged at %d %d\n", s->mb_x, s->mb_y);
4141 return -1; 4141 return -1;
4142 } 4142 }
4143 4143
4144 block[scan_table[i]] = level; 4144 block[scan_table[i]] = level;
4145 break; 4145 break;
4188 if(startcode == 0x20) 4188 if(startcode == 0x20)
4189 break; 4189 break;
4190 } 4190 }
4191 4191
4192 if (startcode != 0x20) { 4192 if (startcode != 0x20) {
4193 fprintf(stderr, "Bad picture start code\n"); 4193 av_log(s->avctx, AV_LOG_ERROR, "Bad picture start code\n");
4194 return -1; 4194 return -1;
4195 } 4195 }
4196 /* temporal reference */ 4196 /* temporal reference */
4197 s->picture_number = get_bits(&s->gb, 8); /* picture timestamp */ 4197 s->picture_number = get_bits(&s->gb, 8); /* picture timestamp */
4198 4198
4199 /* PTYPE starts here */ 4199 /* PTYPE starts here */
4200 if (get_bits1(&s->gb) != 1) { 4200 if (get_bits1(&s->gb) != 1) {
4201 /* marker */ 4201 /* marker */
4202 fprintf(stderr, "Bad marker\n"); 4202 av_log(s->avctx, AV_LOG_ERROR, "Bad marker\n");
4203 return -1; 4203 return -1;
4204 } 4204 }
4205 if (get_bits1(&s->gb) != 0) { 4205 if (get_bits1(&s->gb) != 0) {
4206 fprintf(stderr, "Bad H263 id\n"); 4206 av_log(s->avctx, AV_LOG_ERROR, "Bad H263 id\n");
4207 return -1; /* h263 id */ 4207 return -1; /* h263 id */
4208 } 4208 }
4209 skip_bits1(&s->gb); /* split screen off */ 4209 skip_bits1(&s->gb); /* split screen off */
4210 skip_bits1(&s->gb); /* camera off */ 4210 skip_bits1(&s->gb); /* camera off */
4211 skip_bits1(&s->gb); /* freeze picture release off */ 4211 skip_bits1(&s->gb); /* freeze picture release off */
4233 4233
4234 s->unrestricted_mv = get_bits1(&s->gb); 4234 s->unrestricted_mv = get_bits1(&s->gb);
4235 s->h263_long_vectors = s->unrestricted_mv; 4235 s->h263_long_vectors = s->unrestricted_mv;
4236 4236
4237 if (get_bits1(&s->gb) != 0) { 4237 if (get_bits1(&s->gb) != 0) {
4238 fprintf(stderr, "H263 SAC not supported\n"); 4238 av_log(s->avctx, AV_LOG_ERROR, "H263 SAC not supported\n");
4239 return -1; /* SAC: off */ 4239 return -1; /* SAC: off */
4240 } 4240 }
4241 if (get_bits1(&s->gb) != 0) { 4241 if (get_bits1(&s->gb) != 0) {
4242 s->mv_type = MV_TYPE_8X8; /* Advanced prediction mode */ 4242 s->mv_type = MV_TYPE_8X8; /* Advanced prediction mode */
4243 } 4243 }
4244 4244
4245 if (get_bits1(&s->gb) != 0) { 4245 if (get_bits1(&s->gb) != 0) {
4246 fprintf(stderr, "H263 PB frame not supported\n"); 4246 av_log(s->avctx, AV_LOG_ERROR, "H263 PB frame not supported\n");
4247 return -1; /* not PB frame */ 4247 return -1; /* not PB frame */
4248 } 4248 }
4249 s->qscale = get_bits(&s->gb, 5); 4249 s->qscale = get_bits(&s->gb, 5);
4250 skip_bits1(&s->gb); /* Continuous Presence Multipoint mode: off */ 4250 skip_bits1(&s->gb); /* Continuous Presence Multipoint mode: off */
4251 4251
4273 if (get_bits1(&s->gb) != 0) { /* Advanced Intra Coding (AIC) */ 4273 if (get_bits1(&s->gb) != 0) { /* Advanced Intra Coding (AIC) */
4274 s->h263_aic = 1; 4274 s->h263_aic = 1;
4275 } 4275 }
4276 4276
4277 if (get_bits1(&s->gb) != 0) { 4277 if (get_bits1(&s->gb) != 0) {
4278 fprintf(stderr, "Deblocking Filter not supported\n"); 4278 av_log(s->avctx, AV_LOG_ERROR, "Deblocking Filter not supported\n");
4279 } 4279 }
4280 if (get_bits1(&s->gb) != 0) { 4280 if (get_bits1(&s->gb) != 0) {
4281 fprintf(stderr, "Slice Structured not supported\n"); 4281 av_log(s->avctx, AV_LOG_ERROR, "Slice Structured not supported\n");
4282 } 4282 }
4283 if (get_bits1(&s->gb) != 0) { 4283 if (get_bits1(&s->gb) != 0) {
4284 fprintf(stderr, "Reference Picture Selection not supported\n"); 4284 av_log(s->avctx, AV_LOG_ERROR, "Reference Picture Selection not supported\n");
4285 } 4285 }
4286 if (get_bits1(&s->gb) != 0) { 4286 if (get_bits1(&s->gb) != 0) {
4287 fprintf(stderr, "Independent Segment Decoding not supported\n"); 4287 av_log(s->avctx, AV_LOG_ERROR, "Independent Segment Decoding not supported\n");
4288 } 4288 }
4289 if (get_bits1(&s->gb) != 0) { 4289 if (get_bits1(&s->gb) != 0) {
4290 fprintf(stderr, "Alternative Inter VLC not supported\n"); 4290 av_log(s->avctx, AV_LOG_ERROR, "Alternative Inter VLC not supported\n");
4291 } 4291 }
4292 if (get_bits1(&s->gb) != 0) { 4292 if (get_bits1(&s->gb) != 0) {
4293 fprintf(stderr, "Modified Quantization not supported\n"); 4293 av_log(s->avctx, AV_LOG_ERROR, "Modified Quantization not supported\n");
4294 } 4294 }
4295 4295
4296 skip_bits(&s->gb, 1); /* Prevent start code emulation */ 4296 skip_bits(&s->gb, 1); /* Prevent start code emulation */
4297 4297
4298 skip_bits(&s->gb, 3); /* Reserved */ 4298 skip_bits(&s->gb, 3); /* Reserved */
4299 } else if (ufep != 0) { 4299 } else if (ufep != 0) {
4300 fprintf(stderr, "Bad UFEP type (%d)\n", ufep); 4300 av_log(s->avctx, AV_LOG_ERROR, "Bad UFEP type (%d)\n", ufep);
4301 return -1; 4301 return -1;
4302 } 4302 }
4303 4303
4304 /* MPPTYPE */ 4304 /* MPPTYPE */
4305 s->pict_type = get_bits(&s->gb, 3) + I_TYPE; 4305 s->pict_type = get_bits(&s->gb, 3) + I_TYPE;
4369 s->y_dc_scale_table= 4369 s->y_dc_scale_table=
4370 s->c_dc_scale_table= ff_mpeg1_dc_scale_table; 4370 s->c_dc_scale_table= ff_mpeg1_dc_scale_table;
4371 } 4371 }
4372 4372
4373 if(s->avctx->debug&FF_DEBUG_PICT_INFO){ 4373 if(s->avctx->debug&FF_DEBUG_PICT_INFO){
4374 printf("qp:%d %c size:%d rnd:%d %s %s %s %s\n", 4374 av_log(s->avctx, AV_LOG_DEBUG, "qp:%d %c size:%d rnd:%d %s %s %s %s\n",
4375 s->qscale, av_get_pict_type_char(s->pict_type), 4375 s->qscale, av_get_pict_type_char(s->pict_type),
4376 s->gb.size_in_bits, 1-s->no_rounding, 4376 s->gb.size_in_bits, 1-s->no_rounding,
4377 s->mv_type == MV_TYPE_8X8 ? "ADV" : "", 4377 s->mv_type == MV_TYPE_8X8 ? "ADV" : "",
4378 s->umvplus ? "UMV" : "", 4378 s->umvplus ? "UMV" : "",
4379 s->h263_long_vectors ? "LONG" : "", 4379 s->h263_long_vectors ? "LONG" : "",
4381 ); 4381 );
4382 } 4382 }
4383 #if 1 4383 #if 1
4384 if (s->pict_type == I_TYPE && s->avctx->codec_tag == ff_get_fourcc("ZYGO")){ 4384 if (s->pict_type == I_TYPE && s->avctx->codec_tag == ff_get_fourcc("ZYGO")){
4385 int i,j; 4385 int i,j;
4386 for(i=0; i<85; i++) printf("%d", get_bits1(&s->gb)); 4386 for(i=0; i<85; i++) av_log(s->avctx, AV_LOG_DEBUG, "%d", get_bits1(&s->gb));
4387 printf("\n"); 4387 av_log(s->avctx, AV_LOG_DEBUG, "\n");
4388 for(i=0; i<13; i++){ 4388 for(i=0; i<13; i++){
4389 for(j=0; j<3; j++){ 4389 for(j=0; j<3; j++){
4390 int v= get_bits(&s->gb, 8); 4390 int v= get_bits(&s->gb, 8);
4391 v |= get_sbits(&s->gb, 8)<<8; 4391 v |= get_sbits(&s->gb, 8)<<8;
4392 printf(" %5d", v); 4392 av_log(s->avctx, AV_LOG_DEBUG, " %5d", v);
4393 } 4393 }
4394 printf("\n"); 4394 av_log(s->avctx, AV_LOG_DEBUG, "\n");
4395 } 4395 }
4396 for(i=0; i<50; i++) printf("%d", get_bits1(&s->gb)); 4396 for(i=0; i<50; i++) av_log(s->avctx, AV_LOG_DEBUG, "%d", get_bits1(&s->gb));
4397 } 4397 }
4398 #endif 4398 #endif
4399 4399
4400 return 0; 4400 return 0;
4401 } 4401 }
4647 } 4647 }
4648 4648
4649 if ((s->vol_control_parameters=get_bits1(gb))) { /* vol control parameter */ 4649 if ((s->vol_control_parameters=get_bits1(gb))) { /* vol control parameter */
4650 int chroma_format= get_bits(gb, 2); 4650 int chroma_format= get_bits(gb, 2);
4651 if(chroma_format!=1){ 4651 if(chroma_format!=1){
4652 printf("illegal chroma format\n"); 4652 av_log(s->avctx, AV_LOG_ERROR, "illegal chroma format\n");
4653 } 4653 }
4654 s->low_delay= get_bits1(gb); 4654 s->low_delay= get_bits1(gb);
4655 if(get_bits1(gb)){ /* vbv parameters */ 4655 if(get_bits1(gb)){ /* vbv parameters */
4656 get_bits(gb, 15); /* first_half_bitrate */ 4656 get_bits(gb, 15); /* first_half_bitrate */
4657 skip_bits1(gb); /* marker */ 4657 skip_bits1(gb); /* marker */
4670 if(s->picture_number==0) 4670 if(s->picture_number==0)
4671 s->low_delay=0; 4671 s->low_delay=0;
4672 } 4672 }
4673 4673
4674 s->shape = get_bits(gb, 2); /* vol shape */ 4674 s->shape = get_bits(gb, 2); /* vol shape */
4675 if(s->shape != RECT_SHAPE) printf("only rectangular vol supported\n"); 4675 if(s->shape != RECT_SHAPE) av_log(s->avctx, AV_LOG_ERROR, "only rectangular vol supported\n");
4676 if(s->shape == GRAY_SHAPE && vo_ver_id != 1){ 4676 if(s->shape == GRAY_SHAPE && vo_ver_id != 1){
4677 printf("Gray shape not supported\n"); 4677 av_log(s->avctx, AV_LOG_ERROR, "Gray shape not supported\n");
4678 skip_bits(gb, 4); //video_object_layer_shape_extension 4678 skip_bits(gb, 4); //video_object_layer_shape_extension
4679 } 4679 }
4680 4680
4681 check_marker(gb, "before time_increment_resolution"); 4681 check_marker(gb, "before time_increment_resolution");
4682 4682
4706 } 4706 }
4707 } 4707 }
4708 4708
4709 s->progressive_sequence= get_bits1(gb)^1; 4709 s->progressive_sequence= get_bits1(gb)^1;
4710 if(!get_bits1(gb) && (s->avctx->debug & FF_DEBUG_PICT_INFO)) 4710 if(!get_bits1(gb) && (s->avctx->debug & FF_DEBUG_PICT_INFO))
4711 printf("OBMC not supported (very likely buggy encoder)\n"); /* OBMC Disable */ 4711 av_log(s->avctx, AV_LOG_ERROR, "OBMC not supported (very likely buggy encoder)\n"); /* OBMC Disable */
4712 if (vo_ver_id == 1) { 4712 if (vo_ver_id == 1) {
4713 s->vol_sprite_usage = get_bits1(gb); /* vol_sprite_usage */ 4713 s->vol_sprite_usage = get_bits1(gb); /* vol_sprite_usage */
4714 } else { 4714 } else {
4715 s->vol_sprite_usage = get_bits(gb, 2); /* vol_sprite_usage */ 4715 s->vol_sprite_usage = get_bits(gb, 2); /* vol_sprite_usage */
4716 } 4716 }
4717 if(s->vol_sprite_usage==STATIC_SPRITE) printf("Static Sprites not supported\n"); 4717 if(s->vol_sprite_usage==STATIC_SPRITE) av_log(s->avctx, AV_LOG_ERROR, "Static Sprites not supported\n");
4718 if(s->vol_sprite_usage==STATIC_SPRITE || s->vol_sprite_usage==GMC_SPRITE){ 4718 if(s->vol_sprite_usage==STATIC_SPRITE || s->vol_sprite_usage==GMC_SPRITE){
4719 if(s->vol_sprite_usage==STATIC_SPRITE){ 4719 if(s->vol_sprite_usage==STATIC_SPRITE){
4720 s->sprite_width = get_bits(gb, 13); 4720 s->sprite_width = get_bits(gb, 13);
4721 skip_bits1(gb); /* marker */ 4721 skip_bits1(gb); /* marker */
4722 s->sprite_height= get_bits(gb, 13); 4722 s->sprite_height= get_bits(gb, 13);
4734 } 4734 }
4735 // FIXME sadct disable bit if verid!=1 && shape not rect 4735 // FIXME sadct disable bit if verid!=1 && shape not rect
4736 4736
4737 if (get_bits1(gb) == 1) { /* not_8_bit */ 4737 if (get_bits1(gb) == 1) { /* not_8_bit */
4738 s->quant_precision = get_bits(gb, 4); /* quant_precision */ 4738 s->quant_precision = get_bits(gb, 4); /* quant_precision */
4739 if(get_bits(gb, 4)!=8) printf("N-bit not supported\n"); /* bits_per_pixel */ 4739 if(get_bits(gb, 4)!=8) av_log(s->avctx, AV_LOG_ERROR, "N-bit not supported\n"); /* bits_per_pixel */
4740 if(s->quant_precision!=5) printf("quant precission %d\n", s->quant_precision); 4740 if(s->quant_precision!=5) av_log(s->avctx, AV_LOG_ERROR, "quant precission %d\n", s->quant_precision);
4741 } else { 4741 } else {
4742 s->quant_precision = 5; 4742 s->quant_precision = 5;
4743 } 4743 }
4744 4744
4745 // FIXME a bunch of grayscale shape things 4745 // FIXME a bunch of grayscale shape things
4808 4808
4809 if(vo_ver_id != 1) 4809 if(vo_ver_id != 1)
4810 s->quarter_sample= get_bits1(gb); 4810 s->quarter_sample= get_bits1(gb);
4811 else s->quarter_sample=0; 4811 else s->quarter_sample=0;
4812 4812
4813 if(!get_bits1(gb)) printf("Complexity estimation not supported\n"); 4813 if(!get_bits1(gb)) av_log(s->avctx, AV_LOG_ERROR, "Complexity estimation not supported\n");
4814 4814
4815 s->resync_marker= !get_bits1(gb); /* resync_marker_disabled */ 4815 s->resync_marker= !get_bits1(gb); /* resync_marker_disabled */
4816 4816
4817 s->data_partitioning= get_bits1(gb); 4817 s->data_partitioning= get_bits1(gb);
4818 if(s->data_partitioning){ 4818 if(s->data_partitioning){
4820 } 4820 }
4821 4821
4822 if(vo_ver_id != 1) { 4822 if(vo_ver_id != 1) {
4823 s->new_pred= get_bits1(gb); 4823 s->new_pred= get_bits1(gb);
4824 if(s->new_pred){ 4824 if(s->new_pred){
4825 printf("new pred not supported\n"); 4825 av_log(s->avctx, AV_LOG_ERROR, "new pred not supported\n");
4826 skip_bits(gb, 2); /* requested upstream message type */ 4826 skip_bits(gb, 2); /* requested upstream message type */
4827 skip_bits1(gb); /* newpred segment type */ 4827 skip_bits1(gb); /* newpred segment type */
4828 } 4828 }
4829 s->reduced_res_vop= get_bits1(gb); 4829 s->reduced_res_vop= get_bits1(gb);
4830 if(s->reduced_res_vop) printf("reduced resolution VOP not supported\n"); 4830 if(s->reduced_res_vop) av_log(s->avctx, AV_LOG_ERROR, "reduced resolution VOP not supported\n");
4831 } 4831 }
4832 else{ 4832 else{
4833 s->new_pred=0; 4833 s->new_pred=0;
4834 s->reduced_res_vop= 0; 4834 s->reduced_res_vop= 0;
4835 } 4835 }
4860 // fprintf(stderr, "illegal scalability header (VERY broken encoder), trying to workaround\n"); 4860 // fprintf(stderr, "illegal scalability header (VERY broken encoder), trying to workaround\n");
4861 s->scalability=0; 4861 s->scalability=0;
4862 4862
4863 *gb= bak; 4863 *gb= bak;
4864 }else 4864 }else
4865 printf("scalability not supported\n"); 4865 av_log(s->avctx, AV_LOG_ERROR, "scalability not supported\n");
4866 4866
4867 // bin shape stuff FIXME 4867 // bin shape stuff FIXME
4868 } 4868 }
4869 } 4869 }
4870 return 0; 4870 return 0;
4927 static int decode_vop_header(MpegEncContext *s, GetBitContext *gb){ 4927 static int decode_vop_header(MpegEncContext *s, GetBitContext *gb){
4928 int time_incr, time_increment; 4928 int time_incr, time_increment;
4929 4929
4930 s->pict_type = get_bits(gb, 2) + I_TYPE; /* pict type: I = 0 , P = 1 */ 4930 s->pict_type = get_bits(gb, 2) + I_TYPE; /* pict type: I = 0 , P = 1 */
4931 if(s->pict_type==B_TYPE && s->low_delay && s->vol_control_parameters==0 && !(s->flags & CODEC_FLAG_LOW_DELAY)){ 4931 if(s->pict_type==B_TYPE && s->low_delay && s->vol_control_parameters==0 && !(s->flags & CODEC_FLAG_LOW_DELAY)){
4932 printf("low_delay flag set, but shouldnt, clearing it\n"); 4932 av_log(s->avctx, AV_LOG_ERROR, "low_delay flag set, but shouldnt, clearing it\n");
4933 s->low_delay=0; 4933 s->low_delay=0;
4934 } 4934 }
4935 4935
4936 s->partitioned_frame= s->data_partitioning && s->pict_type!=B_TYPE; 4936 s->partitioned_frame= s->data_partitioning && s->pict_type!=B_TYPE;
4937 if(s->partitioned_frame) 4937 if(s->partitioned_frame)
4948 time_incr++; 4948 time_incr++;
4949 4949
4950 check_marker(gb, "before time_increment"); 4950 check_marker(gb, "before time_increment");
4951 4951
4952 if(s->time_increment_bits==0){ 4952 if(s->time_increment_bits==0){
4953 printf("hmm, seems the headers arnt complete, trying to guess time_increment_bits\n"); 4953 av_log(s->avctx, AV_LOG_ERROR, "hmm, seems the headers arnt complete, trying to guess time_increment_bits\n");
4954 4954
4955 for(s->time_increment_bits=1 ;s->time_increment_bits<16; s->time_increment_bits++){ 4955 for(s->time_increment_bits=1 ;s->time_increment_bits<16; s->time_increment_bits++){
4956 if(show_bits(gb, s->time_increment_bits+1)&1) break; 4956 if(show_bits(gb, s->time_increment_bits+1)&1) break;
4957 } 4957 }
4958 4958
4959 printf("my guess is %d bits ;)\n",s->time_increment_bits); 4959 av_log(s->avctx, AV_LOG_ERROR, "my guess is %d bits ;)\n",s->time_increment_bits);
4960 } 4960 }
4961 4961
4962 if(IS_3IV1) time_increment= get_bits1(gb); //FIXME investigate further 4962 if(IS_3IV1) time_increment= get_bits1(gb); //FIXME investigate further
4963 else time_increment= get_bits(gb, s->time_increment_bits); 4963 else time_increment= get_bits(gb, s->time_increment_bits);
4964 4964
4994 - ROUNDED_DIV(s->last_non_b_time - s->pp_time, s->t_frame))*2; 4994 - ROUNDED_DIV(s->last_non_b_time - s->pp_time, s->t_frame))*2;
4995 } 4995 }
4996 4996
4997 s->current_picture_ptr->pts= s->time*1000LL*1000LL / s->time_increment_resolution; 4997 s->current_picture_ptr->pts= s->time*1000LL*1000LL / s->time_increment_resolution;
4998 if(s->avctx->debug&FF_DEBUG_PTS) 4998 if(s->avctx->debug&FF_DEBUG_PTS)
4999 printf("MPEG4 PTS: %f\n", s->current_picture_ptr->pts/(1000.0*1000.0)); 4999 av_log(s->avctx, AV_LOG_DEBUG, "MPEG4 PTS: %f\n", s->current_picture_ptr->pts/(1000.0*1000.0));
5000 5000
5001 check_marker(gb, "before vop_coded"); 5001 check_marker(gb, "before vop_coded");
5002 5002
5003 /* vop coded */ 5003 /* vop coded */
5004 if (get_bits1(gb) != 1){ 5004 if (get_bits1(gb) != 1){
5005 printf("vop not coded\n"); 5005 av_log(s->avctx, AV_LOG_ERROR, "vop not coded\n");
5006 return FRAME_SKIPED; 5006 return FRAME_SKIPED;
5007 } 5007 }
5008 //printf("time %d %d %d || %Ld %Ld %Ld\n", s->time_increment_bits, s->time_increment_resolution, s->time_base, 5008 //printf("time %d %d %d || %Ld %Ld %Ld\n", s->time_increment_bits, s->time_increment_resolution, s->time_base,
5009 //s->time, s->last_non_b_time, s->last_non_b_time - s->pp_time); 5009 //s->time, s->last_non_b_time, s->last_non_b_time - s->pp_time);
5010 if (s->shape != BIN_ONLY_SHAPE && ( s->pict_type == P_TYPE 5010 if (s->shape != BIN_ONLY_SHAPE && ( s->pict_type == P_TYPE
5057 ff_init_scantable(s->dsp.idct_permutation, &s->intra_v_scantable, ff_alternate_vertical_scan); 5057 ff_init_scantable(s->dsp.idct_permutation, &s->intra_v_scantable, ff_alternate_vertical_scan);
5058 } 5058 }
5059 5059
5060 if(s->pict_type == S_TYPE && (s->vol_sprite_usage==STATIC_SPRITE || s->vol_sprite_usage==GMC_SPRITE)){ 5060 if(s->pict_type == S_TYPE && (s->vol_sprite_usage==STATIC_SPRITE || s->vol_sprite_usage==GMC_SPRITE)){
5061 mpeg4_decode_sprite_trajectory(s); 5061 mpeg4_decode_sprite_trajectory(s);
5062 if(s->sprite_brightness_change) printf("sprite_brightness_change not supported\n"); 5062 if(s->sprite_brightness_change) av_log(s->avctx, AV_LOG_ERROR, "sprite_brightness_change not supported\n");
5063 if(s->vol_sprite_usage==STATIC_SPRITE) printf("static sprite not supported\n"); 5063 if(s->vol_sprite_usage==STATIC_SPRITE) av_log(s->avctx, AV_LOG_ERROR, "static sprite not supported\n");
5064 } 5064 }
5065 5065
5066 if (s->shape != BIN_ONLY_SHAPE) { 5066 if (s->shape != BIN_ONLY_SHAPE) {
5067 s->qscale = get_bits(gb, s->quant_precision); 5067 s->qscale = get_bits(gb, s->quant_precision);
5068 if(s->qscale==0){ 5068 if(s->qscale==0){
5069 printf("Error, header damaged or not MPEG4 header (qscale=0)\n"); 5069 av_log(s->avctx, AV_LOG_ERROR, "Error, header damaged or not MPEG4 header (qscale=0)\n");
5070 return -1; // makes no sense to continue, as there is nothing left from the image then 5070 return -1; // makes no sense to continue, as there is nothing left from the image then
5071 } 5071 }
5072 5072
5073 if (s->pict_type != I_TYPE) { 5073 if (s->pict_type != I_TYPE) {
5074 s->f_code = get_bits(gb, 3); /* fcode_for */ 5074 s->f_code = get_bits(gb, 3); /* fcode_for */
5075 if(s->f_code==0){ 5075 if(s->f_code==0){
5076 printf("Error, header damaged or not MPEG4 header (f_code=0)\n"); 5076 av_log(s->avctx, AV_LOG_ERROR, "Error, header damaged or not MPEG4 header (f_code=0)\n");
5077 return -1; // makes no sense to continue, as the MV decoding will break very quickly 5077 return -1; // makes no sense to continue, as the MV decoding will break very quickly
5078 } 5078 }
5079 }else 5079 }else
5080 s->f_code=1; 5080 s->f_code=1;
5081 5081
5083 s->b_code = get_bits(gb, 3); 5083 s->b_code = get_bits(gb, 3);
5084 }else 5084 }else
5085 s->b_code=1; 5085 s->b_code=1;
5086 5086
5087 if(s->avctx->debug&FF_DEBUG_PICT_INFO){ 5087 if(s->avctx->debug&FF_DEBUG_PICT_INFO){
5088 printf("qp:%d fc:%d,%d %s size:%d pro:%d alt:%d top:%d %spel part:%d resync:%d w:%d a:%d rnd:%d vot:%d%s dc:%d\n", 5088 av_log(s->avctx, AV_LOG_DEBUG, "qp:%d fc:%d,%d %s size:%d pro:%d alt:%d top:%d %spel part:%d resync:%d w:%d a:%d rnd:%d vot:%d%s dc:%d\n",
5089 s->qscale, s->f_code, s->b_code, 5089 s->qscale, s->f_code, s->b_code,
5090 s->pict_type == I_TYPE ? "I" : (s->pict_type == P_TYPE ? "P" : (s->pict_type == B_TYPE ? "B" : "S")), 5090 s->pict_type == I_TYPE ? "I" : (s->pict_type == P_TYPE ? "P" : (s->pict_type == B_TYPE ? "B" : "S")),
5091 gb->size_in_bits,s->progressive_sequence, s->alternate_scan, s->top_field_first, 5091 gb->size_in_bits,s->progressive_sequence, s->alternate_scan, s->top_field_first,
5092 s->quarter_sample ? "q" : "h", s->data_partitioning, s->resync_marker, s->num_sprite_warping_points, 5092 s->quarter_sample ? "q" : "h", s->data_partitioning, s->resync_marker, s->num_sprite_warping_points,
5093 s->sprite_warping_accuracy, 1-s->no_rounding, s->vo_type, s->vol_control_parameters ? " VOLC" : " ", s->intra_dc_threshold); 5093 s->sprite_warping_accuracy, 1-s->no_rounding, s->vo_type, s->vol_control_parameters ? " VOLC" : " ", s->intra_dc_threshold);
5099 } 5099 }
5100 }else{ 5100 }else{
5101 if(s->enhancement_type){ 5101 if(s->enhancement_type){
5102 int load_backward_shape= get_bits1(gb); 5102 int load_backward_shape= get_bits1(gb);
5103 if(load_backward_shape){ 5103 if(load_backward_shape){
5104 printf("load backward shape isnt supported\n"); 5104 av_log(s->avctx, AV_LOG_ERROR, "load backward shape isnt supported\n");
5105 } 5105 }
5106 } 5106 }
5107 skip_bits(gb, 2); //ref_select_code 5107 skip_bits(gb, 2); //ref_select_code
5108 } 5108 }
5109 } 5109 }
5110 /* detect buggy encoders which dont set the low_delay flag (divx4/xvid/opendivx)*/ 5110 /* detect buggy encoders which dont set the low_delay flag (divx4/xvid/opendivx)*/
5111 // note we cannot detect divx5 without b-frames easyly (allthough its buggy too) 5111 // note we cannot detect divx5 without b-frames easyly (allthough its buggy too)
5112 if(s->vo_type==0 && s->vol_control_parameters==0 && s->divx_version==0 && s->picture_number==0){ 5112 if(s->vo_type==0 && s->vol_control_parameters==0 && s->divx_version==0 && s->picture_number==0){
5113 printf("looks like this file was encoded with (divx4/(old)xvid/opendivx) -> forcing low_delay flag\n"); 5113 av_log(s->avctx, AV_LOG_ERROR, "looks like this file was encoded with (divx4/(old)xvid/opendivx) -> forcing low_delay flag\n");
5114 s->low_delay=1; 5114 s->low_delay=1;
5115 } 5115 }
5116 5116
5117 s->picture_number++; // better than pic number==0 allways ;) 5117 s->picture_number++; // better than pic number==0 allways ;)
5118 5118
5143 v = get_bits(gb, 8); 5143 v = get_bits(gb, 8);
5144 startcode = ((startcode << 8) | v) & 0xffffffff; 5144 startcode = ((startcode << 8) | v) & 0xffffffff;
5145 5145
5146 if(get_bits_count(gb) >= gb->size_in_bits){ 5146 if(get_bits_count(gb) >= gb->size_in_bits){
5147 if(gb->size_in_bits==8 && s->divx_version){ 5147 if(gb->size_in_bits==8 && s->divx_version){
5148 printf("frame skip %d\n", gb->size_in_bits); 5148 av_log(s->avctx, AV_LOG_ERROR, "frame skip %d\n", gb->size_in_bits);
5149 return FRAME_SKIPED; //divx bug 5149 return FRAME_SKIPED; //divx bug
5150 }else 5150 }else
5151 return -1; //end of stream 5151 return -1; //end of stream
5152 } 5152 }
5153 5153
5154 if((startcode&0xFFFFFF00) != 0x100) 5154 if((startcode&0xFFFFFF00) != 0x100)
5155 continue; //no startcode 5155 continue; //no startcode
5156 5156
5157 if(s->avctx->debug&FF_DEBUG_STARTCODE){ 5157 if(s->avctx->debug&FF_DEBUG_STARTCODE){
5158 printf("startcode: %3X ", startcode); 5158 av_log(s->avctx, AV_LOG_DEBUG, "startcode: %3X ", startcode);
5159 if (startcode<=0x11F) printf("Video Object Start"); 5159 if (startcode<=0x11F) av_log(s->avctx, AV_LOG_DEBUG, "Video Object Start");
5160 else if(startcode<=0x12F) printf("Video Object Layer Start"); 5160 else if(startcode<=0x12F) av_log(s->avctx, AV_LOG_DEBUG, "Video Object Layer Start");
5161 else if(startcode<=0x13F) printf("Reserved"); 5161 else if(startcode<=0x13F) av_log(s->avctx, AV_LOG_DEBUG, "Reserved");
5162 else if(startcode<=0x15F) printf("FGS bp start"); 5162 else if(startcode<=0x15F) av_log(s->avctx, AV_LOG_DEBUG, "FGS bp start");
5163 else if(startcode<=0x1AF) printf("Reserved"); 5163 else if(startcode<=0x1AF) av_log(s->avctx, AV_LOG_DEBUG, "Reserved");
5164 else if(startcode==0x1B0) printf("Visual Object Seq Start"); 5164 else if(startcode==0x1B0) av_log(s->avctx, AV_LOG_DEBUG, "Visual Object Seq Start");
5165 else if(startcode==0x1B1) printf("Visual Object Seq End"); 5165 else if(startcode==0x1B1) av_log(s->avctx, AV_LOG_DEBUG, "Visual Object Seq End");
5166 else if(startcode==0x1B2) printf("User Data"); 5166 else if(startcode==0x1B2) av_log(s->avctx, AV_LOG_DEBUG, "User Data");
5167 else if(startcode==0x1B3) printf("Group of VOP start"); 5167 else if(startcode==0x1B3) av_log(s->avctx, AV_LOG_DEBUG, "Group of VOP start");
5168 else if(startcode==0x1B4) printf("Video Session Error"); 5168 else if(startcode==0x1B4) av_log(s->avctx, AV_LOG_DEBUG, "Video Session Error");
5169 else if(startcode==0x1B5) printf("Visual Object Start"); 5169 else if(startcode==0x1B5) av_log(s->avctx, AV_LOG_DEBUG, "Visual Object Start");
5170 else if(startcode==0x1B6) printf("Video Object Plane start"); 5170 else if(startcode==0x1B6) av_log(s->avctx, AV_LOG_DEBUG, "Video Object Plane start");
5171 else if(startcode==0x1B7) printf("slice start"); 5171 else if(startcode==0x1B7) av_log(s->avctx, AV_LOG_DEBUG, "slice start");
5172 else if(startcode==0x1B8) printf("extension start"); 5172 else if(startcode==0x1B8) av_log(s->avctx, AV_LOG_DEBUG, "extension start");
5173 else if(startcode==0x1B9) printf("fgs start"); 5173 else if(startcode==0x1B9) av_log(s->avctx, AV_LOG_DEBUG, "fgs start");
5174 else if(startcode==0x1BA) printf("FBA Object start"); 5174 else if(startcode==0x1BA) av_log(s->avctx, AV_LOG_DEBUG, "FBA Object start");
5175 else if(startcode==0x1BB) printf("FBA Object Plane start"); 5175 else if(startcode==0x1BB) av_log(s->avctx, AV_LOG_DEBUG, "FBA Object Plane start");
5176 else if(startcode==0x1BC) printf("Mesh Object start"); 5176 else if(startcode==0x1BC) av_log(s->avctx, AV_LOG_DEBUG, "Mesh Object start");
5177 else if(startcode==0x1BD) printf("Mesh Object Plane start"); 5177 else if(startcode==0x1BD) av_log(s->avctx, AV_LOG_DEBUG, "Mesh Object Plane start");
5178 else if(startcode==0x1BE) printf("Still Textutre Object start"); 5178 else if(startcode==0x1BE) av_log(s->avctx, AV_LOG_DEBUG, "Still Textutre Object start");
5179 else if(startcode==0x1BF) printf("Textutre Spatial Layer start"); 5179 else if(startcode==0x1BF) av_log(s->avctx, AV_LOG_DEBUG, "Textutre Spatial Layer start");
5180 else if(startcode==0x1C0) printf("Textutre SNR Layer start"); 5180 else if(startcode==0x1C0) av_log(s->avctx, AV_LOG_DEBUG, "Textutre SNR Layer start");
5181 else if(startcode==0x1C1) printf("Textutre Tile start"); 5181 else if(startcode==0x1C1) av_log(s->avctx, AV_LOG_DEBUG, "Textutre Tile start");
5182 else if(startcode==0x1C2) printf("Textutre Shape Layer start"); 5182 else if(startcode==0x1C2) av_log(s->avctx, AV_LOG_DEBUG, "Textutre Shape Layer start");
5183 else if(startcode==0x1C3) printf("stuffing start"); 5183 else if(startcode==0x1C3) av_log(s->avctx, AV_LOG_DEBUG, "stuffing start");
5184 else if(startcode<=0x1C5) printf("reserved"); 5184 else if(startcode<=0x1C5) av_log(s->avctx, AV_LOG_DEBUG, "reserved");
5185 else if(startcode<=0x1FF) printf("System start"); 5185 else if(startcode<=0x1FF) av_log(s->avctx, AV_LOG_DEBUG, "System start");
5186 printf(" at %d\n", get_bits_count(gb)); 5186 av_log(s->avctx, AV_LOG_DEBUG, " at %d\n", get_bits_count(gb));
5187 } 5187 }
5188 5188
5189 if(startcode >= 0x120 && startcode <= 0x12F){ 5189 if(startcode >= 0x120 && startcode <= 0x12F){
5190 if(decode_vol_header(s, gb) < 0) 5190 if(decode_vol_header(s, gb) < 0)
5191 return -1; 5191 return -1;
5210 { 5210 {
5211 int format; 5211 int format;
5212 5212
5213 /* picture header */ 5213 /* picture header */
5214 if (get_bits_long(&s->gb, 22) != 0x20) { 5214 if (get_bits_long(&s->gb, 22) != 0x20) {
5215 fprintf(stderr, "Bad picture start code\n"); 5215 av_log(s->avctx, AV_LOG_ERROR, "Bad picture start code\n");
5216 return -1; 5216 return -1;
5217 } 5217 }
5218 s->picture_number = get_bits(&s->gb, 8); /* picture timestamp */ 5218 s->picture_number = get_bits(&s->gb, 8); /* picture timestamp */
5219 5219
5220 if (get_bits1(&s->gb) != 1) { 5220 if (get_bits1(&s->gb) != 1) {
5221 fprintf(stderr, "Bad marker\n"); 5221 av_log(s->avctx, AV_LOG_ERROR, "Bad marker\n");
5222 return -1; /* marker */ 5222 return -1; /* marker */
5223 } 5223 }
5224 if (get_bits1(&s->gb) != 0) { 5224 if (get_bits1(&s->gb) != 0) {
5225 fprintf(stderr, "Bad H263 id\n"); 5225 av_log(s->avctx, AV_LOG_ERROR, "Bad H263 id\n");
5226 return -1; /* h263 id */ 5226 return -1; /* h263 id */
5227 } 5227 }
5228 skip_bits1(&s->gb); /* split screen off */ 5228 skip_bits1(&s->gb); /* split screen off */
5229 skip_bits1(&s->gb); /* camera off */ 5229 skip_bits1(&s->gb); /* camera off */
5230 skip_bits1(&s->gb); /* freeze picture release off */ 5230 skip_bits1(&s->gb); /* freeze picture release off */
5231 5231
5232 format = get_bits(&s->gb, 3); 5232 format = get_bits(&s->gb, 3);
5233 if (format != 7) { 5233 if (format != 7) {
5234 fprintf(stderr, "Intel H263 free format not supported\n"); 5234 av_log(s->avctx, AV_LOG_ERROR, "Intel H263 free format not supported\n");
5235 return -1; 5235 return -1;
5236 } 5236 }
5237 s->h263_plus = 0; 5237 s->h263_plus = 0;
5238 5238
5239 s->pict_type = I_TYPE + get_bits1(&s->gb); 5239 s->pict_type = I_TYPE + get_bits1(&s->gb);
5240 5240
5241 s->unrestricted_mv = get_bits1(&s->gb); 5241 s->unrestricted_mv = get_bits1(&s->gb);
5242 s->h263_long_vectors = s->unrestricted_mv; 5242 s->h263_long_vectors = s->unrestricted_mv;
5243 5243
5244 if (get_bits1(&s->gb) != 0) { 5244 if (get_bits1(&s->gb) != 0) {
5245 fprintf(stderr, "SAC not supported\n"); 5245 av_log(s->avctx, AV_LOG_ERROR, "SAC not supported\n");
5246 return -1; /* SAC: off */ 5246 return -1; /* SAC: off */
5247 } 5247 }
5248 if (get_bits1(&s->gb) != 0) { 5248 if (get_bits1(&s->gb) != 0) {
5249 fprintf(stderr, "Advanced Prediction Mode not supported\n"); 5249 av_log(s->avctx, AV_LOG_ERROR, "Advanced Prediction Mode not supported\n");
5250 return -1; /* advanced prediction mode: off */ 5250 return -1; /* advanced prediction mode: off */
5251 } 5251 }
5252 if (get_bits1(&s->gb) != 0) { 5252 if (get_bits1(&s->gb) != 0) {
5253 fprintf(stderr, "PB frame mode no supported\n"); 5253 av_log(s->avctx, AV_LOG_ERROR, "PB frame mode no supported\n");
5254 return -1; /* PB frame mode */ 5254 return -1; /* PB frame mode */
5255 } 5255 }
5256 5256
5257 /* skip unknown header garbage */ 5257 /* skip unknown header garbage */
5258 skip_bits(&s->gb, 41); 5258 skip_bits(&s->gb, 41);
5276 { 5276 {
5277 int format, width, height; 5277 int format, width, height;
5278 5278
5279 /* picture header */ 5279 /* picture header */
5280 if (get_bits_long(&s->gb, 17) != 1) { 5280 if (get_bits_long(&s->gb, 17) != 1) {
5281 fprintf(stderr, "Bad picture start code\n"); 5281 av_log(s->avctx, AV_LOG_ERROR, "Bad picture start code\n");
5282 return -1; 5282 return -1;
5283 } 5283 }
5284 format = get_bits(&s->gb, 5); 5284 format = get_bits(&s->gb, 5);
5285 if (format != 0 && format != 1) { 5285 if (format != 0 && format != 1) {
5286 fprintf(stderr, "Bad picture format\n"); 5286 av_log(s->avctx, AV_LOG_ERROR, "Bad picture format\n");
5287 return -1; 5287 return -1;
5288 } 5288 }
5289 s->h263_flv = format+1; 5289 s->h263_flv = format+1;
5290 s->picture_number = get_bits(&s->gb, 8); /* picture timestamp */ 5290 s->picture_number = get_bits(&s->gb, 8); /* picture timestamp */
5291 format = get_bits(&s->gb, 3); 5291 format = get_bits(&s->gb, 3);
5343 skip_bits(&s->gb, 8); 5343 skip_bits(&s->gb, 8);
5344 } 5344 }
5345 s->f_code = 1; 5345 s->f_code = 1;
5346 5346
5347 if(s->avctx->debug & FF_DEBUG_PICT_INFO){ 5347 if(s->avctx->debug & FF_DEBUG_PICT_INFO){
5348 printf("%c esc_type:%d, qp:%d num:%d\n", 5348 av_log(s->avctx, AV_LOG_DEBUG, "%c esc_type:%d, qp:%d num:%d\n",
5349 av_get_pict_type_char(s->pict_type), s->h263_flv-1, s->qscale, s->picture_number); 5349 av_get_pict_type_char(s->pict_type), s->h263_flv-1, s->qscale, s->picture_number);
5350 } 5350 }
5351 5351
5352 s->y_dc_scale_table= 5352 s->y_dc_scale_table=
5353 s->c_dc_scale_table= ff_mpeg1_dc_scale_table; 5353 s->c_dc_scale_table= ff_mpeg1_dc_scale_table;