92 #include "libavutil/ffversion.h" 
  103     return FFMPEG_CONFIGURATION;
 
  108 #define LICENSE_PREFIX "libpostproc license: " 
  116 #define GET_MODE_BUFFER_SIZE 500 
  117 #define OPTIONS_ARRAY_SIZE 10 
  119 #define TEMP_STRIDE 8 
  122 #if ARCH_X86 && HAVE_INLINE_ASM 
  146     {
"dr", 
"dering",                1, 5, 6, 
DERING},
 
  147     {
"al", 
"autolevels",            0, 1, 2, 
LEVEL_FIX},
 
  156     {
"be", 
"bitexact",              1, 0, 0, 
BITEXACT},
 
  163     "default",      
"hb:a,vb:a,dr:a",
 
  164     "de",           
"hb:a,vb:a,dr:a",
 
  165     "fast",         
"h1:a,v1:a,dr:a",
 
  166     "fa",           
"h1:a,v1:a,dr:a",
 
  167     "ac",           
"ha:a:128:7,va:a,dr:a",
 
  182     const int dcThreshold= dcOffset*2 + 1;
 
  185         numEq += ((unsigned)(src[0] - src[1] + dcOffset)) < dcThreshold;
 
  186         numEq += ((unsigned)(src[1] - src[2] + dcOffset)) < dcThreshold;
 
  187         numEq += ((unsigned)(src[2] - src[3] + dcOffset)) < dcThreshold;
 
  188         numEq += ((unsigned)(src[3] - src[4] + dcOffset)) < dcThreshold;
 
  189         numEq += ((unsigned)(src[4] - src[5] + dcOffset)) < dcThreshold;
 
  190         numEq += ((unsigned)(src[5] - src[6] + dcOffset)) < dcThreshold;
 
  191         numEq += ((unsigned)(src[6] - src[7] + dcOffset)) < dcThreshold;
 
  205     const int dcThreshold= dcOffset*2 + 1;
 
  209         numEq += ((unsigned)(src[0] - src[0+stride] + dcOffset)) < dcThreshold;
 
  210         numEq += ((unsigned)(src[1] - src[1+stride] + dcOffset)) < dcThreshold;
 
  211         numEq += ((unsigned)(src[2] - src[2+stride] + dcOffset)) < dcThreshold;
 
  212         numEq += ((unsigned)(src[3] - src[3+stride] + dcOffset)) < dcThreshold;
 
  213         numEq += ((unsigned)(src[4] - src[4+stride] + dcOffset)) < dcThreshold;
 
  214         numEq += ((unsigned)(src[5] - src[5+stride] + dcOffset)) < dcThreshold;
 
  215         numEq += ((unsigned)(src[6] - src[6+stride] + dcOffset)) < dcThreshold;
 
  216         numEq += ((unsigned)(src[7] - src[7+stride] + dcOffset)) < dcThreshold;
 
  226         if((
unsigned)(src[0] - src[5] + 2*QP) > 4*QP) 
return 0;
 
  228         if((
unsigned)(src[2] - src[7] + 2*QP) > 4*QP) 
return 0;
 
  230         if((
unsigned)(src[4] - src[1] + 2*QP) > 4*QP) 
return 0;
 
  232         if((
unsigned)(src[6] - src[3] + 2*QP) > 4*QP) 
return 0;
 
  243         if((
unsigned)(src[  x + 0*stride] - src[  x + 5*stride] + 2*QP) > 4*QP) 
return 0;
 
  244         if((
unsigned)(src[1+x + 2*stride] - src[1+x + 7*stride] + 2*QP) > 4*QP) 
return 0;
 
  245         if((
unsigned)(src[2+x + 4*stride] - src[2+x + 1*stride] + 2*QP) > 4*QP) 
return 0;
 
  246         if((
unsigned)(src[3+x + 6*stride] - src[3+x + 3*stride] + 2*QP) > 4*QP) 
return 0;
 
  273         const int middleEnergy= 5*(dst[4] - dst[3]) + 2*(dst[2] - dst[5]);
 
  275         if(
FFABS(middleEnergy) < 8*c->
QP){
 
  276             const int q=(dst[3] - dst[4])/2;
 
  277             const int leftEnergy=  5*(dst[2] - dst[1]) + 2*(dst[0] - dst[3]);
 
  278             const int rightEnergy= 5*(dst[6] - dst[5]) + 2*(dst[4] - dst[7]);
 
  284             d*= 
FFSIGN(-middleEnergy);
 
  312         const int first= 
FFABS(dst[-1] - dst[0]) < c->
QP ? dst[-1] : dst[0];
 
  313         const int last= 
FFABS(dst[8] - dst[7]) < c->
QP ? dst[8] : dst[7];
 
  316         sums[0] = 4*first + dst[0] + dst[1] + dst[2] + 4;
 
  317         sums[1] = sums[0] - first  + dst[3];
 
  318         sums[2] = sums[1] - first  + dst[4];
 
  319         sums[3] = sums[2] - first  + dst[5];
 
  320         sums[4] = sums[3] - first  + dst[6];
 
  321         sums[5] = sums[4] - dst[0] + dst[7];
 
  322         sums[6] = sums[5] - dst[1] + last;
 
  323         sums[7] = sums[6] - dst[2] + last;
 
  324         sums[8] = sums[7] - dst[3] + last;
 
  325         sums[9] = sums[8] - dst[4] + last;
 
  327         dst[0]= (sums[0] + sums[2] + 2*dst[0])>>4;
 
  328         dst[1]= (sums[1] + sums[3] + 2*dst[1])>>4;
 
  329         dst[2]= (sums[2] + sums[4] + 2*dst[2])>>4;
 
  330         dst[3]= (sums[3] + sums[5] + 2*dst[3])>>4;
 
  331         dst[4]= (sums[4] + sums[6] + 2*dst[4])>>4;
 
  332         dst[5]= (sums[5] + sums[7] + 2*dst[5])>>4;
 
  333         dst[6]= (sums[6] + sums[8] + 2*dst[6])>>4;
 
  334         dst[7]= (sums[7] + sums[9] + 2*dst[7])>>4;
 
  351     static uint64_t lut[256];
 
  357             int v= i < 128 ? 2*i : 2*(i-256);
 
  366             uint64_t 
a= (v/16)   & 0xFF;
 
  367             uint64_t 
b= (v*3/16) & 0xFF;
 
  368             uint64_t 
c= (v*5/16) & 0xFF;
 
  369             uint64_t d= (7*v/16) & 0xFF;
 
  370             uint64_t 
A= (0x100 - 
a)&0xFF;
 
  371             uint64_t 
B= (0x100 - 
b)&0xFF;
 
  372             uint64_t 
C= (0x100 - 
c)&0xFF;
 
  373             uint64_t 
D= (0x100 - 
c)&0xFF;
 
  375             lut[i]   = (a<<56) | (b<<48) | (c<<40) | (d<<32) |
 
  376                        (D<<24) | (C<<16) | (B<<8)  | (A);
 
  382         int a= src[1] - src[2];
 
  383         int b= src[3] - src[4];
 
  384         int c= src[5] - src[6];
 
  411     const int dcThreshold= dcOffset*2 + 1;
 
  417         numEq += ((unsigned)(src[-1*step] - src[0*step] + dcOffset)) < dcThreshold;
 
  418         numEq += ((unsigned)(src[ 0*step] - src[1*step] + dcOffset)) < dcThreshold;
 
  419         numEq += ((unsigned)(src[ 1*step] - src[2*step] + dcOffset)) < dcThreshold;
 
  420         numEq += ((unsigned)(src[ 2*step] - src[3*step] + dcOffset)) < dcThreshold;
 
  421         numEq += ((unsigned)(src[ 3*step] - src[4*step] + dcOffset)) < dcThreshold;
 
  422         numEq += ((unsigned)(src[ 4*step] - src[5*step] + dcOffset)) < dcThreshold;
 
  423         numEq += ((unsigned)(src[ 5*step] - src[6*step] + dcOffset)) < dcThreshold;
 
  424         numEq += ((unsigned)(src[ 6*step] - src[7*step] + dcOffset)) < dcThreshold;
 
  425         numEq += ((unsigned)(src[ 7*step] - src[8*step] + dcOffset)) < dcThreshold;
 
  429             if(src[0] > src[step]){
 
  437                 if(src[x*step] > src[(x+1)*step]){
 
  438                         if(src[x    *step] > max) max= src[ x   *step];
 
  439                         if(src[(x+1)*step] < 
min) min= src[(x+1)*step];
 
  441                         if(src[(x+1)*step] > max) max= src[(x+1)*step];
 
  442                         if(src[ x   *step] < min) min= src[ x   *step];
 
  446                 const int first= 
FFABS(src[-1*step] - src[0]) < QP ? src[-1*step] : src[0];
 
  447                 const int last= 
FFABS(src[8*step] - src[7*step]) < QP ? src[8*step] : src[7*step];
 
  450                 sums[0] = 4*first + src[0*step] + src[1*step] + src[2*step] + 4;
 
  451                 sums[1] = sums[0] - first       + src[3*step];
 
  452                 sums[2] = sums[1] - first       + src[4*step];
 
  453                 sums[3] = sums[2] - first       + src[5*step];
 
  454                 sums[4] = sums[3] - first       + src[6*step];
 
  455                 sums[5] = sums[4] - src[0*step] + src[7*step];
 
  456                 sums[6] = sums[5] - src[1*step] + last;
 
  457                 sums[7] = sums[6] - src[2*step] + last;
 
  458                 sums[8] = sums[7] - src[3*step] + last;
 
  459                 sums[9] = sums[8] - src[4*step] + last;
 
  471                 src[0*step]= (sums[0] + sums[2] + 2*src[0*step])>>4;
 
  472                 src[1*step]= (sums[1] + sums[3] + 2*src[1*step])>>4;
 
  473                 src[2*step]= (sums[2] + sums[4] + 2*src[2*step])>>4;
 
  474                 src[3*step]= (sums[3] + sums[5] + 2*src[3*step])>>4;
 
  475                 src[4*step]= (sums[4] + sums[6] + 2*src[4*step])>>4;
 
  476                 src[5*step]= (sums[5] + sums[7] + 2*src[5*step])>>4;
 
  477                 src[6*step]= (sums[6] + sums[8] + 2*src[6*step])>>4;
 
  478                 src[7*step]= (sums[7] + sums[9] + 2*src[7*step])>>4;
 
  481             const int middleEnergy= 5*(src[4*step] - src[3*step]) + 2*(src[2*step] - src[5*step]);
 
  483             if(
FFABS(middleEnergy) < 8*
QP){
 
  484                 const int q=(src[3*step] - src[4*step])/2;
 
  485                 const int leftEnergy=  5*(src[2*step] - src[1*step]) + 2*(src[0*step] - src[3*step]);
 
  486                 const int rightEnergy= 5*(src[6*step] - src[5*step]) + 2*(src[4*step] - src[7*step]);
 
  492                 d*= 
FFSIGN(-middleEnergy);
 
  503                     d= (d < 0) ? 32 : -32;
 
  504                     src[3*step]= av_clip_uint8(src[3*step] - d);
 
  505                     src[4*step]= av_clip_uint8(src[4*step] + d);
 
  526 #define TEMPLATE_PP_C 1 
  530 #   define TEMPLATE_PP_ALTIVEC 1 
  535 #if ARCH_X86 && HAVE_INLINE_ASM 
  536 #    if CONFIG_RUNTIME_CPUDETECT 
  537 #        define TEMPLATE_PP_MMX 1 
  539 #        define TEMPLATE_PP_MMXEXT 1 
  541 #        define TEMPLATE_PP_3DNOW 1 
  543 #        define TEMPLATE_PP_SSE2 1 
  546 #        if HAVE_SSE2_INLINE 
  547 #            define TEMPLATE_PP_SSE2 1 
  549 #        elif HAVE_MMXEXT_INLINE 
  550 #            define TEMPLATE_PP_MMXEXT 1 
  552 #        elif HAVE_AMD3DNOW_INLINE 
  553 #            define TEMPLATE_PP_3DNOW 1 
  555 #        elif HAVE_MMX_INLINE 
  556 #            define TEMPLATE_PP_MMX 1 
  568     pp_fn pp = postProcess_C;
 
  574 #if CONFIG_RUNTIME_CPUDETECT 
  575 #if ARCH_X86 && HAVE_INLINE_ASM 
  586         pp = postProcess_SSE2;
 
  587 #elif   HAVE_MMXEXT_INLINE 
  588         pp = postProcess_MMX2;
 
  589 #elif HAVE_AMD3DNOW_INLINE 
  590         pp = postProcess_3DNow;
 
  591 #elif HAVE_MMX_INLINE 
  592         pp = postProcess_MMX;
 
  594         pp = postProcess_altivec;
 
  599     pp(src, srcStride, dst, dstStride, width, height, QPs, QPStride, isColor, c);
 
  605 "Available postprocessing filters:\n" 
  607 "short  long name       short   long option     Description\n" 
  608 "*      *               a       autoq           CPU power dependent enabler\n" 
  609 "                       c       chrom           chrominance filtering enabled\n" 
  610 "                       y       nochrom         chrominance filtering disabled\n" 
  611 "                       n       noluma          luma filtering disabled\n" 
  612 "hb     hdeblock        (2 threshold)           horizontal deblocking filter\n" 
  613 "       1. difference factor: default=32, higher -> more deblocking\n" 
  614 "       2. flatness threshold: default=39, lower -> more deblocking\n" 
  615 "                       the h & v deblocking filters share these\n" 
  616 "                       so you can't set different thresholds for h / v\n" 
  617 "vb     vdeblock        (2 threshold)           vertical deblocking filter\n" 
  618 "ha     hadeblock       (2 threshold)           horizontal deblocking filter\n" 
  619 "va     vadeblock       (2 threshold)           vertical deblocking filter\n" 
  620 "h1     x1hdeblock                              experimental h deblock filter 1\n" 
  621 "v1     x1vdeblock                              experimental v deblock filter 1\n" 
  622 "dr     dering                                  deringing filter\n" 
  623 "al     autolevels                              automatic brightness / contrast\n" 
  624 "                       f        fullyrange     stretch luminance to (0..255)\n" 
  625 "lb     linblenddeint                           linear blend deinterlacer\n" 
  626 "li     linipoldeint                            linear interpolating deinterlace\n" 
  627 "ci     cubicipoldeint                          cubic interpolating deinterlacer\n" 
  628 "md     mediandeint                             median deinterlacer\n" 
  629 "fd     ffmpegdeint                             ffmpeg deinterlacer\n" 
  630 "l5     lowpass5                                FIR lowpass deinterlacer\n" 
  631 "de     default                                 hb:a,vb:a,dr:a\n" 
  632 "fa     fast                                    h1:a,v1:a,dr:a\n" 
  633 "ac                                             ha:a:128:7,va:a,dr:a\n" 
  634 "tn     tmpnoise        (3 threshold)           temporal noise reducer\n" 
  635 "                     1. <= 2. <= 3.            larger -> stronger filtering\n" 
  636 "fq     forceQuant      <quantizer>             force quantizer\n" 
  638 "<filterName>[:<option>[:<option>...]][[,|/][-]<filterName>[:<option>...]]...\n" 
  639 "long form example:\n" 
  640 "vdeblock:autoq/hdeblock:autoq/linblenddeint    default,-vdeblock\n" 
  641 "short form example:\n" 
  642 "vb:a/hb:a/lb                                   de,-vb\n" 
  652     static const char filterDelimiters[] = 
",/";
 
  653     static const char optionDelimiters[] = 
":|";
 
  662     if (!strcmp(name, 
"help")) {
 
  664         for (p = 
pp_help; strchr(p, 
'\n'); p = strchr(p, 
'\n') + 1) {
 
  693         const char *filterName;
 
  701         int numOfUnknownOptions=0;
 
  705         filterToken= 
av_strtok(p, filterDelimiters, &tokstate);
 
  706         if(!filterToken) 
break;
 
  707         p+= strlen(filterToken) + 1; 
 
  708         filterName= 
av_strtok(filterToken, optionDelimiters, &tokstate);
 
  715         if(*filterName == 
'-'){
 
  725             if(!strcmp(
"autoq", option) || !strcmp(
"a", option)) q= quality;
 
  726             else if(!strcmp(
"nochrom", option) || !strcmp(
"y", option)) chrom=0;
 
  727             else if(!strcmp(
"chrom", option) || !strcmp(
"c", option)) chrom=1;
 
  728             else if(!strcmp(
"noluma", option) || !strcmp(
"n", option)) luma=0;
 
  730                 options[numOfUnknownOptions] = 
option;
 
  731                 numOfUnknownOptions++;
 
  735         options[numOfUnknownOptions] = 
NULL;
 
  747                 spaceLeft= p - temp + plen;
 
  752                 memmove(p + newlen, p, plen+1);
 
  759             if(   !strcmp(filters[i].longName, filterName)
 
  760                || !strcmp(filters[i].shortName, filterName)){
 
  767                 if(q >= filters[i].minLumQuality && luma)
 
  769                 if(chrom==1 || (chrom==-1 && filters[i].chromDefault))
 
  770                     if(q >= filters[i].minChromQuality)
 
  777                     for(o=0; options[o]; o++){
 
  778                         if(  !strcmp(options[o],
"fullyrange")
 
  779                            ||!strcmp(options[o],
"f")){
 
  782                             numOfUnknownOptions--;
 
  791                     for(o=0; options[o]; o++){
 
  794                             strtol(options[o], &tail, 0);
 
  795                         if(tail!=options[o]){
 
  797                             numOfUnknownOptions--;
 
  798                             if(numOfNoises >= 3) 
break;
 
  806                     for(o=0; options[o] && o<2; o++){
 
  808                         int val= strtol(options[o], &tail, 0);
 
  809                         if(tail==options[o]) 
break;
 
  811                         numOfUnknownOptions--;
 
  820                     for(o=0; options[o] && o<1; o++){
 
  822                         int val= strtol(options[o], &tail, 0);
 
  823                         if(tail==options[o]) 
break;
 
  825                         numOfUnknownOptions--;
 
  831         if(!filterNameOk) ppMode->
error++;
 
  832         ppMode->
error += numOfUnknownOptions;
 
  854     int mbWidth = (width+15)>>4;
 
  855     int mbHeight= (height+15)>>4;
 
  889     int qpStride= (width+15)/16 + 2; 
 
  943                      uint8_t * dst[3], 
const int dstStride[3],
 
  946                      pp_mode *vm,  
void *vc, 
int pict_type)
 
  948     int mbWidth = (width+15)>>4;
 
  949     int mbHeight= (height+15)>>4;
 
  953     int absQPStride = 
FFABS(QPStride);
 
  964         absQPStride = QPStride = 0;
 
  973         const int count= 
FFMAX(mbHeight * absQPStride, mbWidth);
 
  974         for(i=0; i<(count>>2); i++){
 
  975             ((uint32_t*)c->
stdQPTable)[i] = (((
const uint32_t*)QP_store)[i]>>1) & 0x7F7F7F7F;
 
  977         for(i<<=2; i<
count; i++){
 
  981         QPStride= absQPStride;
 
  986         for(y=0; y<mbHeight; y++){
 
  987             for(x=0; x<mbWidth; x++){
 
  995     if((pict_type&7)!=3){
 
  998             const int count= 
FFMAX(mbHeight * QPStride, mbWidth);
 
  999             for(i=0; i<(count>>2); i++){
 
 1000                 ((uint32_t*)c->
nonBQPTable)[i] = ((
const uint32_t*)QP_store)[i] & 0x3F3F3F3F;
 
 1002             for(i<<=2; i<
count; i++){
 
 1007             for(i=0; i<mbHeight; i++) {
 
 1008                 for(j=0; j<absQPStride; j++) {
 
 1009                     c->
nonBQPTable[i*absQPStride+j] = QP_store[i*QPStride+j] & 0x3F;
 
 1018     postProcess(src[0], srcStride[0], dst[0], dstStride[0],
 
 1019                 width, height, QP_store, QPStride, 0, mode, c);
 
 1021     if (!(src[1] && src[2] && dst[1] && dst[2]))
 
 1028         postProcess(src[1], srcStride[1], dst[1], dstStride[1],
 
 1029                     width, height, QP_store, QPStride, 1, mode, c);
 
 1030         postProcess(src[2], srcStride[2], dst[2], dstStride[2],
 
 1031                     width, height, QP_store, QPStride, 2, mode, c);
 
 1033     else if(srcStride[1] == dstStride[1] && srcStride[2] == dstStride[2]){
 
 1034         linecpy(dst[1], src[1], height, srcStride[1]);
 
 1035         linecpy(dst[2], src[2], height, srcStride[2]);
 
 1039             memcpy(&(dst[1][y*dstStride[1]]), &(src[1][y*srcStride[1]]), width);
 
 1040             memcpy(&(dst[2][y*dstStride[2]]), &(src[2][y*srcStride[2]]), width);
 
static av_always_inline void do_a_deblock_C(uint8_t *src, int step, int stride, const PPContext *c, int mode)
accurate deblock filter 
#define AV_CPU_FLAG_ALTIVEC
standard 
const char const char void * val
static const char *const replaceTable[]
int maxTmpNoise[3]
for Temporal Noise Reducing filter (Maximal sum of abs differences) 
const AVClass * av_class
info on struct for av_log 
int chromMode
activates filters for chrominance 
uint8_t * tempDst
Temporary buffers for handling the last row(s) 
av_cold void pp_free_context(void *vc)
static void doHorizDefFilter_C(uint8_t dst[], int stride, const PPContext *c)
pp_mode * pp_get_mode_by_name_and_quality(const char *name, int quality)
Return a pp_mode or NULL if an error occurred. 
void(* pp_fn)(const uint8_t src[], int srcStride, uint8_t dst[], int dstStride, int width, int height, const QP_STORE_T QPs[], int QPStride, int isColor, PPContext *c2)
#define FF_ARRAY_ELEMS(a)
av_cold pp_context * pp_get_context(int width, int height, int cpuCaps)
#define LINEAR_BLEND_DEINT_FILTER
mmx/mmx2/3dnow postprocess code. 
QP_STORE_T * stdQPTable
used to fix MPEG2 style qscale 
#define av_assert0(cond)
assert() equivalent, that is always enabled. 
unsigned postproc_version(void)
Return the LIBPOSTPROC_VERSION_INT constant. 
static int isVertMinMaxOk_C(const uint8_t src[], int stride, int QP)
int minAllowedY
for brightness correction 
int qpStride
size of qp buffers (needed to realloc them if needed) 
uint64_t * yHistogram
luma histogram. 
#define AV_CPU_FLAG_MMXEXT
SSE integer functions or AMD MMX ext. 
static int horizClassify_C(const uint8_t src[], int stride, const PPContext *c)
static int isHorizDC_C(const uint8_t src[], int stride, const PPContext *c)
Check if the given 8x8 Block is mostly "flat". 
static int vertClassify_C(const uint8_t src[], int stride, const PPContext *c)
#define LOWPASS5_DEINT_FILTER
static void horizX1Filter(uint8_t *src, int stride, int QP)
Experimental Filter 1 (Horizontal) will not damage linear gradients Flat blocks should look like they...
const OptionDef options[]
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered. 
static const uint16_t mask[17]
const char * postproc_license(void)
Return the libpostproc license. 
const char pp_help[]
a simple help text 
int error
non zero on error 
static void linecpy(void *dest, const void *src, int lines, int stride)
#define MEDIAN_DEINT_FILTER
#define CUBIC_IPOL_DEINT_FILTER
#define AV_LOG_DEBUG
Stuff which is only useful for libav* developers. 
simple assert() macros that are a bit more flexible than ISO C assert(). 
uint8_t * tempBlurred[3]
Temporal noise reducing buffers. 
int forcedQuant
quantizer if FORCE_QUANT is used 
#define PP_CPU_CAPS_ALTIVEC
size_t av_strlcpy(char *dst, const char *src, size_t size)
Copy the string src to dst, but no more than size - 1 bytes, and null-terminate dst. 
static int isVertDC_C(const uint8_t src[], int stride, const PPContext *c)
Check if the middle 8x8 Block in the given 8x16 block is flat. 
#define PP_PICT_TYPE_QP2
MPEG2 style QScale. 
#define LINEAR_IPOL_DEINT_FILTER
int maxAllowedY
for brightness correction 
static void reallocAlign(void **p, int size)
typedef void(APIENTRY *FF_PFNGLACTIVETEXTUREPROC)(GLenum texture)
const char postproc_ffversion[]
void pp_free_mode(pp_mode *mode)
#define FFMPEG_DEINT_FILTER
static const AVClass av_codec_context_class
int lumMode
activates filters for luminance 
static void reallocBuffers(PPContext *c, int width, int height, int stride, int qpStride)
#define AV_CPU_FLAG_3DNOW
AMD 3DNOW. 
#define AV_LOG_INFO
Standard information. 
#define AV_CPU_FLAG_MMX
standard MMX 
uint8_t * tempBlocks
used for the horizontal code 
BYTE int const BYTE int int int height
Describe the class of an AVClass context structure. 
rational number numerator/denominator 
int av_get_cpu_flags(void)
Return the flags which specify extensions supported by the CPU. 
AVRational maxClippedThreshold
amount of "black" you are willing to lose to get a brightness-corrected picture 
QP_STORE_T * forcedQPTable
char * av_strtok(char *s, const char *delim, char **saveptr)
Split the string into several tokens which can be accessed by successive calls to av_strtok()...
int32_t * tempBlurredPast[3]
GLint GLenum GLboolean GLsizei stride
const char * postproc_configuration(void)
Return the libpostproc build-time configuration. 
static int isHorizMinMaxOk_C(const uint8_t src[], int stride, int QP)
#define LIBPOSTPROC_VERSION_INT
#define TEMP_NOISE_FILTER
DECLARE_ASM_CONST(8, int, deringThreshold)
int mask
Bitmask to turn this filter on. 
static const struct PPFilter filters[]
static const char * context_to_name(void *ptr)
void pp_postprocess(const uint8_t *src[3], const int srcStride[3], uint8_t *dst[3], const int dstStride[3], int width, int height, const QP_STORE_T *QP_store, int QPStride, pp_mode *vm, void *vc, int pict_type)
#define AV_CPU_FLAG_SSE2
PIV SSE2 functions. 
static void doHorizLowPass_C(uint8_t dst[], int stride, const PPContext *c)
Do a horizontal low pass filter on the 10x8 block (dst points to middle 8x8 Block) using the 9-Tap Fi...
#define OPTIONS_ARRAY_SIZE
#define LEVEL_FIX
Brightness & Contrast. 
void * av_mallocz(size_t size)
Allocate a block of size bytes with alignment suitable for all memory accesses (including vectors if ...
#define LIBPOSTPROC_VERSION_MICRO
int stride
size of some buffers (needed to realloc them if needed) 
static void postProcess(const uint8_t src[], int srcStride, uint8_t dst[], int dstStride, int width, int height, const QP_STORE_T QPs[], int QPStride, int isColor, pp_mode *vm, pp_context *vc)
#define PP_CPU_CAPS_3DNOW
#define GET_MODE_BUFFER_SIZE