33                                   int16_t *
block, 
int n, 
int qscale)
    46         qadd = (qscale - 1) | 1;
    58                 "packssdw %%mm6, %%mm6          \n\t"    59                 "packssdw %%mm6, %%mm6          \n\t"    61                 "pxor %%mm7, %%mm7              \n\t"    62                 "packssdw %%mm5, %%mm5          \n\t"    63                 "packssdw %%mm5, %%mm5          \n\t"    64                 "psubw %%mm5, %%mm7             \n\t"    65                 "pxor %%mm4, %%mm4              \n\t"    68                 "movq (%0, %3), %%mm0           \n\t"    69                 "movq 8(%0, %3), %%mm1          \n\t"    71                 "pmullw %%mm6, %%mm0            \n\t"    72                 "pmullw %%mm6, %%mm1            \n\t"    74                 "movq (%0, %3), %%mm2           \n\t"    75                 "movq 8(%0, %3), %%mm3          \n\t"    77                 "pcmpgtw %%mm4, %%mm2           \n\t"     78                 "pcmpgtw %%mm4, %%mm3           \n\t"     80                 "pxor %%mm2, %%mm0              \n\t"    81                 "pxor %%mm3, %%mm1              \n\t"    83                 "paddw %%mm7, %%mm0             \n\t"    84                 "paddw %%mm7, %%mm1             \n\t"    86                 "pxor %%mm0, %%mm2              \n\t"    87                 "pxor %%mm1, %%mm3              \n\t"    89                 "pcmpeqw %%mm7, %%mm0           \n\t"     90                 "pcmpeqw %%mm7, %%mm1           \n\t"     92                 "pandn %%mm2, %%mm0             \n\t"    93                 "pandn %%mm3, %%mm1             \n\t"    95                 "movq %%mm0, (%0, %3)           \n\t"    96                 "movq %%mm1, 8(%0, %3)          \n\t"   100                 ::
"r" (block+nCoeffs), 
"rm"(qmul), 
"rm" (qadd), 
"r" (2*(-nCoeffs))
   108                                   int16_t *block, 
int n, 
int qscale)
   113     qadd = (qscale - 1) | 1;
   120                 "movd %1, %%mm6                 \n\t"    121                 "packssdw %%mm6, %%mm6          \n\t"   122                 "packssdw %%mm6, %%mm6          \n\t"   123                 "movd %2, %%mm5                 \n\t"    124                 "pxor %%mm7, %%mm7              \n\t"   125                 "packssdw %%mm5, %%mm5          \n\t"   126                 "packssdw %%mm5, %%mm5          \n\t"   127                 "psubw %%mm5, %%mm7             \n\t"   128                 "pxor %%mm4, %%mm4              \n\t"   131                 "movq (%0, %3), %%mm0           \n\t"   132                 "movq 8(%0, %3), %%mm1          \n\t"   134                 "pmullw %%mm6, %%mm0            \n\t"   135                 "pmullw %%mm6, %%mm1            \n\t"   137                 "movq (%0, %3), %%mm2           \n\t"   138                 "movq 8(%0, %3), %%mm3          \n\t"   140                 "pcmpgtw %%mm4, %%mm2           \n\t"    141                 "pcmpgtw %%mm4, %%mm3           \n\t"    143                 "pxor %%mm2, %%mm0              \n\t"   144                 "pxor %%mm3, %%mm1              \n\t"   146                 "paddw %%mm7, %%mm0             \n\t"   147                 "paddw %%mm7, %%mm1             \n\t"   149                 "pxor %%mm0, %%mm2              \n\t"   150                 "pxor %%mm1, %%mm3              \n\t"   152                 "pcmpeqw %%mm7, %%mm0           \n\t"    153                 "pcmpeqw %%mm7, %%mm1           \n\t"    155                 "pandn %%mm2, %%mm0             \n\t"   156                 "pandn %%mm3, %%mm1             \n\t"   158                 "movq %%mm0, (%0, %3)           \n\t"   159                 "movq %%mm1, 8(%0, %3)          \n\t"   163                 ::
"r" (block+nCoeffs), 
"rm"(qmul), 
"rm" (qadd), 
"r" (2*(-nCoeffs))
   169                                      int16_t *block, 
int n, 
int qscale)
   172     const uint16_t *quant_matrix;
   186                 "pcmpeqw %%mm7, %%mm7           \n\t"   187                 "psrlw $15, %%mm7               \n\t"   188                 "movd %2, %%mm6                 \n\t"   189                 "packssdw %%mm6, %%mm6          \n\t"   190                 "packssdw %%mm6, %%mm6          \n\t"   191                 "mov %3, %%"FF_REG_a
"           \n\t"   194                 "movq (%0, %%"FF_REG_a
"), %%mm0 \n\t"   195                 "movq 8(%0, %%"FF_REG_a
"), %%mm1\n\t"   196                 "movq (%1, %%"FF_REG_a
"), %%mm4 \n\t"   197                 "movq 8(%1, %%"FF_REG_a
"), %%mm5\n\t"   198                 "pmullw %%mm6, %%mm4            \n\t"    199                 "pmullw %%mm6, %%mm5            \n\t"    200                 "pxor %%mm2, %%mm2              \n\t"   201                 "pxor %%mm3, %%mm3              \n\t"   202                 "pcmpgtw %%mm0, %%mm2           \n\t"    203                 "pcmpgtw %%mm1, %%mm3           \n\t"    204                 "pxor %%mm2, %%mm0              \n\t"   205                 "pxor %%mm3, %%mm1              \n\t"   206                 "psubw %%mm2, %%mm0             \n\t"    207                 "psubw %%mm3, %%mm1             \n\t"    208                 "pmullw %%mm4, %%mm0            \n\t"    209                 "pmullw %%mm5, %%mm1            \n\t"    210                 "pxor %%mm4, %%mm4              \n\t"   211                 "pxor %%mm5, %%mm5              \n\t"    212                 "pcmpeqw (%0, %%"FF_REG_a
"), %%mm4 \n\t"    213                 "pcmpeqw 8(%0, %%"FF_REG_a
"), %%mm5\n\t"    214                 "psraw $3, %%mm0                \n\t"   215                 "psraw $3, %%mm1                \n\t"   216                 "psubw %%mm7, %%mm0             \n\t"   217                 "psubw %%mm7, %%mm1             \n\t"   218                 "por %%mm7, %%mm0               \n\t"   219                 "por %%mm7, %%mm1               \n\t"   220                 "pxor %%mm2, %%mm0              \n\t"   221                 "pxor %%mm3, %%mm1              \n\t"   222                 "psubw %%mm2, %%mm0             \n\t"   223                 "psubw %%mm3, %%mm1             \n\t"   224                 "pandn %%mm0, %%mm4             \n\t"   225                 "pandn %%mm1, %%mm5             \n\t"   226                 "movq %%mm4, (%0, %%"FF_REG_a
") \n\t"   227                 "movq %%mm5, 8(%0, %%"FF_REG_a
")\n\t"   229                 "add $16, %%"FF_REG_a
"          \n\t"   231                 ::
"r" (block+nCoeffs), 
"r"(quant_matrix+nCoeffs), 
"rm" (qscale), 
"g" (-2*nCoeffs)
   232                 : 
"%"FF_REG_a, 
"memory"   238                                      int16_t *block, 
int n, 
int qscale)
   241     const uint16_t *quant_matrix;
   249                 "pcmpeqw %%mm7, %%mm7           \n\t"   250                 "psrlw $15, %%mm7               \n\t"   251                 "movd %2, %%mm6                 \n\t"   252                 "packssdw %%mm6, %%mm6          \n\t"   253                 "packssdw %%mm6, %%mm6          \n\t"   254                 "mov %3, %%"FF_REG_a
"           \n\t"   257                 "movq (%0, %%"FF_REG_a
"), %%mm0 \n\t"   258                 "movq 8(%0, %%"FF_REG_a
"), %%mm1\n\t"   259                 "movq (%1, %%"FF_REG_a
"), %%mm4 \n\t"   260                 "movq 8(%1, %%"FF_REG_a
"), %%mm5\n\t"   261                 "pmullw %%mm6, %%mm4            \n\t"    262                 "pmullw %%mm6, %%mm5            \n\t"    263                 "pxor %%mm2, %%mm2              \n\t"   264                 "pxor %%mm3, %%mm3              \n\t"   265                 "pcmpgtw %%mm0, %%mm2           \n\t"    266                 "pcmpgtw %%mm1, %%mm3           \n\t"    267                 "pxor %%mm2, %%mm0              \n\t"   268                 "pxor %%mm3, %%mm1              \n\t"   269                 "psubw %%mm2, %%mm0             \n\t"    270                 "psubw %%mm3, %%mm1             \n\t"    271                 "paddw %%mm0, %%mm0             \n\t"    272                 "paddw %%mm1, %%mm1             \n\t"    273                 "paddw %%mm7, %%mm0             \n\t"    274                 "paddw %%mm7, %%mm1             \n\t"    275                 "pmullw %%mm4, %%mm0            \n\t"    276                 "pmullw %%mm5, %%mm1            \n\t"    277                 "pxor %%mm4, %%mm4              \n\t"   278                 "pxor %%mm5, %%mm5              \n\t"    279                 "pcmpeqw (%0, %%"FF_REG_a
"), %%mm4 \n\t"    280                 "pcmpeqw 8(%0, %%"FF_REG_a
"), %%mm5\n\t"    281                 "psraw $4, %%mm0                \n\t"   282                 "psraw $4, %%mm1                \n\t"   283                 "psubw %%mm7, %%mm0             \n\t"   284                 "psubw %%mm7, %%mm1             \n\t"   285                 "por %%mm7, %%mm0               \n\t"   286                 "por %%mm7, %%mm1               \n\t"   287                 "pxor %%mm2, %%mm0              \n\t"   288                 "pxor %%mm3, %%mm1              \n\t"   289                 "psubw %%mm2, %%mm0             \n\t"   290                 "psubw %%mm3, %%mm1             \n\t"   291                 "pandn %%mm0, %%mm4             \n\t"   292                 "pandn %%mm1, %%mm5             \n\t"   293                 "movq %%mm4, (%0, %%"FF_REG_a
") \n\t"   294                 "movq %%mm5, 8(%0, %%"FF_REG_a
")\n\t"   296                 "add $16, %%"FF_REG_a
"          \n\t"   298                 ::
"r" (block+nCoeffs), 
"r"(quant_matrix+nCoeffs), 
"rm" (qscale), 
"g" (-2*nCoeffs)
   299                 : 
"%"FF_REG_a, 
"memory"   304                                      int16_t *block, 
int n, 
int qscale)
   307     const uint16_t *quant_matrix;
   324                 "pcmpeqw %%mm7, %%mm7           \n\t"   325                 "psrlw $15, %%mm7               \n\t"   326                 "movd %2, %%mm6                 \n\t"   327                 "packssdw %%mm6, %%mm6          \n\t"   328                 "packssdw %%mm6, %%mm6          \n\t"   329                 "mov %3, %%"FF_REG_a
"           \n\t"   332                 "movq (%0, %%"FF_REG_a
"), %%mm0 \n\t"   333                 "movq 8(%0, %%"FF_REG_a
"), %%mm1\n\t"   334                 "movq (%1, %%"FF_REG_a
"), %%mm4 \n\t"   335                 "movq 8(%1, %%"FF_REG_a
"), %%mm5\n\t"   336                 "pmullw %%mm6, %%mm4            \n\t"    337                 "pmullw %%mm6, %%mm5            \n\t"    338                 "pxor %%mm2, %%mm2              \n\t"   339                 "pxor %%mm3, %%mm3              \n\t"   340                 "pcmpgtw %%mm0, %%mm2           \n\t"    341                 "pcmpgtw %%mm1, %%mm3           \n\t"    342                 "pxor %%mm2, %%mm0              \n\t"   343                 "pxor %%mm3, %%mm1              \n\t"   344                 "psubw %%mm2, %%mm0             \n\t"    345                 "psubw %%mm3, %%mm1             \n\t"    346                 "pmullw %%mm4, %%mm0            \n\t"    347                 "pmullw %%mm5, %%mm1            \n\t"    348                 "pxor %%mm4, %%mm4              \n\t"   349                 "pxor %%mm5, %%mm5              \n\t"    350                 "pcmpeqw (%0, %%"FF_REG_a
"), %%mm4 \n\t"    351                 "pcmpeqw 8(%0, %%"FF_REG_a
"), %%mm5\n\t"    352                 "psraw $4, %%mm0                \n\t"   353                 "psraw $4, %%mm1                \n\t"   354                 "pxor %%mm2, %%mm0              \n\t"   355                 "pxor %%mm3, %%mm1              \n\t"   356                 "psubw %%mm2, %%mm0             \n\t"   357                 "psubw %%mm3, %%mm1             \n\t"   358                 "pandn %%mm0, %%mm4             \n\t"   359                 "pandn %%mm1, %%mm5             \n\t"   360                 "movq %%mm4, (%0, %%"FF_REG_a
") \n\t"   361                 "movq %%mm5, 8(%0, %%"FF_REG_a
")\n\t"   363                 "add $16, %%"FF_REG_a
"          \n\t"   365                 ::
"r" (block+nCoeffs), 
"r"(quant_matrix+nCoeffs), 
"rm" (qscale), 
"g" (-2*nCoeffs)
   366                 : 
"%"FF_REG_a, 
"memory"   373                                      int16_t *block, 
int n, 
int qscale)
   376     const uint16_t *quant_matrix;
   388                 "pcmpeqw %%mm7, %%mm7           \n\t"   389                 "psrlq $48, %%mm7               \n\t"   390                 "movd %2, %%mm6                 \n\t"   391                 "packssdw %%mm6, %%mm6          \n\t"   392                 "packssdw %%mm6, %%mm6          \n\t"   393                 "mov %3, %%"FF_REG_a
"           \n\t"   396                 "movq (%0, %%"FF_REG_a
"), %%mm0 \n\t"   397                 "movq 8(%0, %%"FF_REG_a
"), %%mm1\n\t"   398                 "movq (%1, %%"FF_REG_a
"), %%mm4 \n\t"   399                 "movq 8(%1, %%"FF_REG_a
"), %%mm5\n\t"   400                 "pmullw %%mm6, %%mm4            \n\t"    401                 "pmullw %%mm6, %%mm5            \n\t"    402                 "pxor %%mm2, %%mm2              \n\t"   403                 "pxor %%mm3, %%mm3              \n\t"   404                 "pcmpgtw %%mm0, %%mm2           \n\t"    405                 "pcmpgtw %%mm1, %%mm3           \n\t"    406                 "pxor %%mm2, %%mm0              \n\t"   407                 "pxor %%mm3, %%mm1              \n\t"   408                 "psubw %%mm2, %%mm0             \n\t"    409                 "psubw %%mm3, %%mm1             \n\t"    410                 "paddw %%mm0, %%mm0             \n\t"    411                 "paddw %%mm1, %%mm1             \n\t"    412                 "pmullw %%mm4, %%mm0            \n\t"    413                 "pmullw %%mm5, %%mm1            \n\t"    414                 "paddw %%mm4, %%mm0             \n\t"    415                 "paddw %%mm5, %%mm1             \n\t"    416                 "pxor %%mm4, %%mm4              \n\t"   417                 "pxor %%mm5, %%mm5              \n\t"    418                 "pcmpeqw (%0, %%"FF_REG_a
"), %%mm4 \n\t"    419                 "pcmpeqw 8(%0, %%"FF_REG_a
"), %%mm5\n\t"    420                 "psrlw $5, %%mm0                \n\t"   421                 "psrlw $5, %%mm1                \n\t"   422                 "pxor %%mm2, %%mm0              \n\t"   423                 "pxor %%mm3, %%mm1              \n\t"   424                 "psubw %%mm2, %%mm0             \n\t"   425                 "psubw %%mm3, %%mm1             \n\t"   426                 "pandn %%mm0, %%mm4             \n\t"   427                 "pandn %%mm1, %%mm5             \n\t"   428                 "pxor %%mm4, %%mm7              \n\t"   429                 "pxor %%mm5, %%mm7              \n\t"   430                 "movq %%mm4, (%0, %%"FF_REG_a
") \n\t"   431                 "movq %%mm5, 8(%0, %%"FF_REG_a
")\n\t"   433                 "add $16, %%"FF_REG_a
"          \n\t"   435                 "movd 124(%0, %3), %%mm0        \n\t"   436                 "movq %%mm7, %%mm6              \n\t"   437                 "psrlq $32, %%mm7               \n\t"   438                 "pxor %%mm6, %%mm7              \n\t"   439                 "movq %%mm7, %%mm6              \n\t"   440                 "psrlq $16, %%mm7               \n\t"   441                 "pxor %%mm6, %%mm7              \n\t"   442                 "pslld $31, %%mm7               \n\t"   443                 "psrlq $15, %%mm7               \n\t"   444                 "pxor %%mm7, %%mm0              \n\t"   445                 "movd %%mm0, 124(%0, %3)        \n\t"   447                 ::
"r" (block+nCoeffs), 
"r"(quant_matrix+nCoeffs), 
"rm" (qscale), 
"r" (-2*nCoeffs)
   448                 : 
"%"FF_REG_a, 
"memory" 
void(* dct_unquantize_h263_inter)(struct MpegEncContext *s, int16_t *block, int n, int qscale)
static atomic_int cpu_flags
int h263_aic
Advanced INTRA Coding (AIC) 
Macro definitions for various function/variable attributes. 
const uint8_t ff_mpeg2_non_linear_qscale[32]
#define av_assert2(cond)
assert() equivalent, that does lie in speed critical code. 
#define INLINE_MMX(flags)
int flags
AV_CODEC_FLAG_*. 
av_cold void ff_mpv_common_init_x86(MpegEncContext *s)
#define AV_CODEC_FLAG_BITEXACT
Use only bitexact stuff (except (I)DCT). 
void(* dct_unquantize_mpeg1_intra)(struct MpegEncContext *s, int16_t *block, int n, int qscale)
int block_last_index[12]
last non zero coefficient in block 
void(* dct_unquantize_mpeg2_inter)(struct MpegEncContext *s, int16_t *block, int n, int qscale)
uint16_t inter_matrix[64]
Libavcodec external API header. 
ScanTable intra_scantable
void(* dct_unquantize_mpeg2_intra)(struct MpegEncContext *s, int16_t *block, int n, int qscale)
void(* dct_unquantize_h263_intra)(struct MpegEncContext *s, int16_t *block, int n, int qscale)
int av_get_cpu_flags(void)
Return the flags which specify extensions supported by the CPU. 
struct AVCodecContext * avctx
uint16_t intra_matrix[64]
matrix transmitted in the bitstream 
ScanTable inter_scantable
if inter == intra then intra should be used to reduce the cache usage 
void(* dct_unquantize_mpeg1_inter)(struct MpegEncContext *s, int16_t *block, int n, int qscale)