Mercurial > libavcodec.hg
comparison mpegvideo.c @ 803:08423289ec57 libavcodec
exporting the internal qscale table, this allso fixes the ordering
author | michaelni |
---|---|
date | Wed, 30 Oct 2002 20:41:40 +0000 |
parents | d4cc92144266 |
children | 79de6308c34d |
comparison
equal
deleted
inserted
replaced
802:99db75050d38 | 803:08423289ec57 |
---|---|
418 s->dc_val[2] = s->dc_val[1] + c_size; | 418 s->dc_val[2] = s->dc_val[1] + c_size; |
419 for(i=0;i<yc_size;i++) | 419 for(i=0;i<yc_size;i++) |
420 s->dc_val[0][i] = 1024; | 420 s->dc_val[0][i] = 1024; |
421 } | 421 } |
422 | 422 |
423 CHECKED_ALLOCZ(s->qscale_table , s->mb_num * sizeof(UINT8)) | 423 CHECKED_ALLOCZ(s->next_qscale_table , s->mb_num * sizeof(UINT8)) |
424 CHECKED_ALLOCZ(s->last_qscale_table , s->mb_num * sizeof(UINT8)) | |
425 CHECKED_ALLOCZ(s->aux_qscale_table , s->mb_num * sizeof(UINT8)) | |
426 s->qscale_table= s->next_qscale_table; | |
427 s->avctx->qstride= s->mb_width; | |
424 | 428 |
425 /* which mb is a intra block */ | 429 /* which mb is a intra block */ |
426 CHECKED_ALLOCZ(s->mbintra_table, s->mb_num); | 430 CHECKED_ALLOCZ(s->mbintra_table, s->mb_num); |
427 memset(s->mbintra_table, 1, s->mb_num); | 431 memset(s->mbintra_table, 1, s->mb_num); |
428 | 432 |
467 av_freep(&s->ac_val[0]); | 471 av_freep(&s->ac_val[0]); |
468 av_freep(&s->coded_block); | 472 av_freep(&s->coded_block); |
469 av_freep(&s->mbintra_table); | 473 av_freep(&s->mbintra_table); |
470 av_freep(&s->cbp_table); | 474 av_freep(&s->cbp_table); |
471 av_freep(&s->pred_dir_table); | 475 av_freep(&s->pred_dir_table); |
472 av_freep(&s->qscale_table); | 476 av_freep(&s->next_qscale_table); |
477 av_freep(&s->last_qscale_table); | |
478 av_freep(&s->aux_qscale_table); | |
473 av_freep(&s->me_scratchpad); | 479 av_freep(&s->me_scratchpad); |
474 av_freep(&s->me_map); | 480 av_freep(&s->me_map); |
475 av_freep(&s->me_score_map); | 481 av_freep(&s->me_score_map); |
476 | 482 |
477 av_freep(&s->mbskip_table); | 483 av_freep(&s->mbskip_table); |
822 if(s->last_picture[i]==NULL) | 828 if(s->last_picture[i]==NULL) |
823 s->last_picture[i]= s->next_picture[i]; | 829 s->last_picture[i]= s->next_picture[i]; |
824 | 830 |
825 s->current_picture[i] = s->aux_picture[i]; | 831 s->current_picture[i] = s->aux_picture[i]; |
826 } | 832 } |
833 s->avctx->display_qscale_table= | |
834 s->avctx->current_qscale_table= | |
835 s->qscale_table= s->aux_qscale_table; | |
827 } else { | 836 } else { |
828 for(i=0;i<3;i++) { | 837 for(i=0;i<3;i++) { |
829 /* swap next and last */ | 838 /* swap next and last */ |
830 if(avctx->flags&CODEC_FLAG_DR1) | 839 if(avctx->flags&CODEC_FLAG_DR1) |
831 tmp= avctx->dr_buffer[i]; | 840 tmp= avctx->dr_buffer[i]; |
845 if(s->has_b_frames && s->last_dr_opaque && s->codec_id!=CODEC_ID_SVQ1) | 854 if(s->has_b_frames && s->last_dr_opaque && s->codec_id!=CODEC_ID_SVQ1) |
846 avctx->dr_opaque_frame= s->last_dr_opaque; | 855 avctx->dr_opaque_frame= s->last_dr_opaque; |
847 else | 856 else |
848 avctx->dr_opaque_frame= s->next_dr_opaque; | 857 avctx->dr_opaque_frame= s->next_dr_opaque; |
849 } | 858 } |
859 s->avctx->current_qscale_table= s->qscale_table = s->last_qscale_table; | |
860 s->avctx->display_qscale_table= s->last_qscale_table = s->next_qscale_table; | |
861 s->next_qscale_table= s->qscale_table; | |
850 } | 862 } |
851 /* set dequantizer, we cant do it during init as it might change for mpeg4 | 863 /* set dequantizer, we cant do it during init as it might change for mpeg4 |
852 and we cant do it in the header decode as init isnt called for mpeg4 there yet */ | 864 and we cant do it in the header decode as init isnt called for mpeg4 there yet */ |
853 if(s->out_format == FMT_H263){ | 865 if(s->out_format == FMT_H263){ |
854 if(s->mpeg_quant) | 866 if(s->mpeg_quant) |
1726 const int mb_xy = s->mb_y * s->mb_width + s->mb_x; | 1738 const int mb_xy = s->mb_y * s->mb_width + s->mb_x; |
1727 | 1739 |
1728 mb_x = s->mb_x; | 1740 mb_x = s->mb_x; |
1729 mb_y = s->mb_y; | 1741 mb_y = s->mb_y; |
1730 | 1742 |
1731 #ifdef FF_POSTPROCESS | |
1732 /* Obsolete. Exists for compatibility with mplayer only. */ | |
1733 quant_store[mb_y][mb_x]=s->qscale; | |
1734 //printf("[%02d][%02d] %d\n",mb_x,mb_y,s->qscale); | |
1735 #else | |
1736 /* even more obsolete, exists for mplayer xp only */ | |
1737 if(s->avctx->quant_store) s->avctx->quant_store[mb_y*s->avctx->qstride+mb_x] = s->qscale; | |
1738 #endif | |
1739 s->qscale_table[mb_xy]= s->qscale; | 1743 s->qscale_table[mb_xy]= s->qscale; |
1740 | 1744 |
1741 /* update DC predictors for P macroblocks */ | 1745 /* update DC predictors for P macroblocks */ |
1742 if (!s->mb_intra) { | 1746 if (!s->mb_intra) { |
1743 if (s->h263_pred || s->h263_aic) { | 1747 if (s->h263_pred || s->h263_aic) { |