31#include "config_components.h"
60 int uni_code, uni_len;
78 uni_code ^= (1 << uni_len) - 1;
81 uni_code <<=
size; uni_code |= l;
84 uni_code <<= 1; uni_code |= 1;
94 uni_code ^= (1 << uni_len) - 1;
97 uni_code <<=
size; uni_code |= l;
100 uni_code <<= 1; uni_code |= 1;
120 uint8_t permutated_intra_h_scantable[64],
121 uint8_t permutated_intra_v_scantable[64])
125 switch(
s->msmpeg4_version){
127 av_unreachable(
"ff_msmpeg4_common_init only called by MSMP4 1-3 and WMV1/2");
133 if(
s->workaround_bugs){
141#if CONFIG_WMV2_DECODER || CONFIG_WMV2_ENCODER
152 s->idsp.idct_permutation);
154 s->idsp.idct_permutation);
166 xy =
s->block_index[n];
172 a =
s->coded_block[xy - 1 ];
173 b =
s->coded_block[xy - 1 -
wrap];
174 c =
s->coded_block[xy -
wrap];
183 *coded_block_ptr = &
s->coded_block[xy];
192 for(y=0; y<block_size; y++){
194 for(x=0; x<block_size; x++){
203 int16_t **dc_val_ptr,
int *dir_ptr)
206 int16_t *
const dc_val =
s->dc_val +
s->block_index[n];
215 wrap =
s->block_wrap[n];
221 b = dc_val[ - 1 -
wrap];
224 if (
s->first_slice_line && !(n & 2) &&
s->msmpeg4_version < MSMP4_WMV1)
231#if ARCH_X86 && HAVE_X86_7REGS && HAVE_EBX_AVAILABLE
233 "movl %3, %%eax \n\t"
234 "shrl $1, %%eax \n\t"
235 "addl %%eax, %2 \n\t"
236 "addl %%eax, %1 \n\t"
237 "addl %0, %%eax \n\t"
239 "movl %%edx, %0 \n\t"
240 "movl %1, %%eax \n\t"
242 "movl %%edx, %1 \n\t"
243 "movl %2, %%eax \n\t"
245 "movl %%edx, %2 \n\t"
246 :
"+b" (
a),
"+c" (
b),
"+D" (
c)
253 a = (
a + (8 >> 1)) / 8;
254 b = (
b + (8 >> 1)) / 8;
255 c = (
c + (8 >> 1)) / 8;
264 if (
s->msmpeg4_version > MSMP4_V3) {
265 if(
s->inter_intra_pred){
284 int bs = 8 >>
s->avctx->lowres;
287 dest =
s->cur_pic.data[0] + (((n >> 1) + 2*
s->mb_y) * bs*
wrap ) + ((n & 1) + 2*
s->mb_x) * bs;
290 dest =
s->cur_pic.data[n - 3] + (
s->mb_y * bs *
wrap) +
s->mb_x * bs;
297 if (
s->h263_aic_dir==0) {
300 }
else if (
s->h263_aic_dir==1) {
308 }
else if (
s->h263_aic_dir==2) {
341 *dc_val_ptr = &dc_val[0];
__asm__(".macro parse_r var r\n\t" "\\var = -1\n\t" _IFC_REG(0) _IFC_REG(1) _IFC_REG(2) _IFC_REG(3) _IFC_REG(4) _IFC_REG(5) _IFC_REG(6) _IFC_REG(7) _IFC_REG(8) _IFC_REG(9) _IFC_REG(10) _IFC_REG(11) _IFC_REG(12) _IFC_REG(13) _IFC_REG(14) _IFC_REG(15) _IFC_REG(16) _IFC_REG(17) _IFC_REG(18) _IFC_REG(19) _IFC_REG(20) _IFC_REG(21) _IFC_REG(22) _IFC_REG(23) _IFC_REG(24) _IFC_REG(25) _IFC_REG(26) _IFC_REG(27) _IFC_REG(28) _IFC_REG(29) _IFC_REG(30) _IFC_REG(31) ".iflt \\var\n\t" ".error \"Unable to parse register name \\r\"\n\t" ".endif\n\t" ".endm")
simple assert() macros that are a bit more flexible than ISO C assert().
#define av_unreachable(msg)
Asserts that are used as compiler optimization hints depending upon ASSERT_LEVEL and NBDEBUG.
Libavcodec external API header.
#define i(width, name, range_min, range_max)
static void scale(int *out, const int *in, const int w, const int h, const int shift)
av_cold void ff_permute_scantable(uint8_t dst[64], const uint8_t src[64], const uint8_t permutation[64])
Macro definitions for various function/variable attributes.
static int ff_thread_once(char *control, void(*routine)(void))
const uint32_t ff_inverse[257]
const uint8_t ff_mpeg4_DCtab_lum[13][2]
const uint8_t ff_mpeg4_c_dc_scale_table[32]
const uint8_t ff_mpeg4_y_dc_scale_table[32]
const uint8_t ff_mpeg4_DCtab_chrom[13][2]
void ff_init_scantable(const uint8_t *permutation, ScanTable *st, const uint8_t *src_scantable)
static av_cold void msmpeg4_common_init_static(void)
int ff_msmpeg4_pred_dc(MpegEncContext *s, int n, int16_t **dc_val_ptr, int *dir_ptr)
static av_cold void init_h263_dc_for_msmpeg4(void)
static int get_dc(uint8_t *src, int stride, int scale, int block_size)
int ff_msmpeg4_coded_block_pred(MpegEncContext *s, int n, uint8_t **coded_block_ptr)
av_cold void ff_msmpeg4_common_init(MPVContext *const s, uint8_t permutated_intra_h_scantable[64], uint8_t permutated_intra_v_scantable[64])
const uint8_t ff_wmv1_scantable[WMV1_SCANTABLE_COUNT][64]
uint32_t ff_v2_dc_chroma_table[512][2]
const uint8_t ff_wmv1_y_dc_scale_table[32]
uint32_t ff_v2_dc_lum_table[512][2]
RLTable ff_rl_table[NB_RL_TABLES]
const uint8_t ff_wmv1_c_dc_scale_table[32]
const uint8_t ff_old_ff_y_dc_scale_table[32]
av_cold void ff_rl_init(RLTable *rl, uint8_t static_store[2][2 *MAX_RUN+MAX_LEVEL+3])
Initialize index_run, max_level and max_run from n, last, table_vlc, table_run and table_level.
static const float pred[4]
av_cold void ff_wmv2dsp_init(IDCTDSPContext *c)