diff options
Diffstat (limited to 'libavcodec/intrax8.c')
-rw-r--r-- | libavcodec/intrax8.c | 45 |
1 files changed, 23 insertions, 22 deletions
diff --git a/libavcodec/intrax8.c b/libavcodec/intrax8.c index 3cd84dc..cf01289 100644 --- a/libavcodec/intrax8.c +++ b/libavcodec/intrax8.c @@ -1,18 +1,18 @@ /* - * This file is part of Libav. + * This file is part of FFmpeg. * - * Libav is free software; you can redistribute it and/or + * FFmpeg is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * - * Libav is distributed in the hope that it will be useful, + * FFmpeg is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software + * License along with FFmpeg; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ @@ -21,6 +21,7 @@ * @brief IntraX8 (J-Frame) subdecoder, used by WMV2 and VC-1 */ +#include "libavutil/avassert.h" #include "avcodec.h" #include "error_resilience.h" #include "get_bits.h" @@ -127,13 +128,13 @@ static inline void x8_select_ac_table(IntraX8Context * const w , int mode){ MpegEncContext * const s= w->s; int table_index; - assert(mode<4); + av_assert2(mode<4); if( w->j_ac_vlc[mode] ) return; table_index = get_bits(&s->gb, 3); w->j_ac_vlc[mode] = &j_ac_vlc[w->quant<13][mode>>1][table_index];//2 modes use same tables - assert(w->j_ac_vlc[mode]); + av_assert2(w->j_ac_vlc[mode]); } static inline int x8_get_orient_vlc(IntraX8Context * w){ @@ -144,8 +145,6 @@ static inline int x8_get_orient_vlc(IntraX8Context * w){ table_index = get_bits(&s->gb, 1+(w->quant<13) ); w->j_orient_vlc = &j_orient_vlc[w->quant<13][table_index]; } - assert(w->j_orient_vlc); - assert(w->j_orient_vlc->table); return get_vlc2(&s->gb, w->j_orient_vlc->table, OR_VLC_BITS, OR_VLC_MTD); } @@ -267,15 +266,13 @@ static int x8_get_dc_rlf(IntraX8Context * const w,int const mode, int * const le MpegEncContext * const s= w->s; int i,e,c; - assert(mode<3); + av_assert2(mode<3); if( !w->j_dc_vlc[mode] ) { int table_index; table_index = get_bits(&s->gb, 3); //4 modes, same table w->j_dc_vlc[mode]= &j_dc_vlc[w->quant<13][table_index]; } - assert(w->j_dc_vlc); - assert(w->j_dc_vlc[mode]->table); i=get_vlc2(&s->gb, w->j_dc_vlc[mode]->table, DC_VLC_BITS, DC_VLC_MTD); @@ -328,7 +325,7 @@ static int x8_setup_spatial_predictor(IntraX8Context * const w, const int chroma if(chroma) return 0; - assert(w->orient < 3); + av_assert2(w->orient < 3); if(range < 2*w->quant){ if( (w->edges&3) == 0){ if(w->orient==1) w->orient=11; @@ -345,8 +342,8 @@ static int x8_setup_spatial_predictor(IntraX8Context * const w, const int chroma }; w->raw_orient=x8_get_orient_vlc(w); if(w->raw_orient<0) return -1; - assert(w->raw_orient < 12 ); - assert(w->orient<3); + av_assert2(w->raw_orient < 12 ); + av_assert2(w->orient<3); w->orient=prediction_table[w->orient][w->raw_orient]; } return 0; @@ -441,7 +438,7 @@ lut2[q>12][c]={ static void x8_ac_compensation(IntraX8Context * const w, int const direction, int const dc_level){ MpegEncContext * const s= w->s; int t; -#define B(x, y) s->block[0][s->idsp.idct_permutation[(x) + (y) * 8]] +#define B(x,y) s->block[0][w->idct_permutation[(x)+(y)*8]] #define T(x) ((x) * dc_level + 0x8000) >> 16; switch(direction){ case 0: @@ -538,7 +535,7 @@ static int x8_decode_intra_mb(IntraX8Context* const w, const int chroma){ int use_quant_matrix; int sign; - assert(w->orient<12); + av_assert2(w->orient<12); s->bdsp.clear_block(s->block[0]); if(chroma){ @@ -647,7 +644,7 @@ static int x8_decode_intra_mb(IntraX8Context* const w, const int chroma){ s->current_picture.f->linesize[!!chroma] ); } if(!zeros_only) - s->idsp.idct_add(s->dest[chroma], + w->wdsp.idct_add(s->dest[chroma], s->current_picture.f->linesize[!!chroma], s->block[0]); @@ -696,12 +693,16 @@ av_cold void ff_intrax8_common_init(IntraX8Context * w, MpegEncContext * const s w->s=s; x8_vlc_init(); - assert(s->mb_width>0); + av_assert0(s->mb_width>0); w->prediction_table=av_mallocz(s->mb_width*2*2);//two rows, 2 blocks per cannon mb - ff_init_scantable(s->idsp.idct_permutation, &w->scantable[0], ff_wmv1_scantable[0]); - ff_init_scantable(s->idsp.idct_permutation, &w->scantable[1], ff_wmv1_scantable[2]); - ff_init_scantable(s->idsp.idct_permutation, &w->scantable[2], ff_wmv1_scantable[3]); + ff_wmv2dsp_init(&w->wdsp); + ff_init_scantable_permutation(w->idct_permutation, + w->wdsp.idct_perm); + + ff_init_scantable(w->idct_permutation, &w->scantable[0], ff_wmv1_scantable[0]); + ff_init_scantable(w->idct_permutation, &w->scantable[1], ff_wmv1_scantable[2]); + ff_init_scantable(w->idct_permutation, &w->scantable[2], ff_wmv1_scantable[3]); ff_intrax8dsp_init(&w->dsp); } @@ -721,6 +722,7 @@ av_cold void ff_intrax8_common_end(IntraX8Context * w) * The parent codec must call ff_mpv_frame_start(), ff_er_frame_start() before calling this function. * The parent codec must call ff_er_frame_end(), ff_mpv_frame_end() after calling this function. * This function does not use ff_mpv_decode_mb(). + * lowres decoding is theoretically impossible. * @param w pointer to IntraX8Context * @param dquant doubled quantizer, it would be odd in case of VC-1 halfpq==1. * @param quant_offset offset away from zero @@ -728,7 +730,6 @@ av_cold void ff_intrax8_common_end(IntraX8Context * w) int ff_intrax8_decode_picture(IntraX8Context * const w, int dquant, int quant_offset){ MpegEncContext * const s= w->s; int mb_xy; - assert(s); w->use_quant_matrix = get_bits1(&s->gb); w->dquant = dquant; |