X-Git-Url: https://git.libav.org/?p=libav.git;a=blobdiff_plain;f=libpostproc%2Fpostprocess_internal.h;h=2ab1ed84db2bd1b28c73a151fbb9e8e21cdafeb2;hp=a4e31d3d6bd5c0ecd230d720ec15031be7e2a8a6;hb=386eaeb43fb6b750a9345e1945eb7ffc5df35c15;hpb=efb775777f815f3140f79f58d3f756a3a4831235 diff --git a/libpostproc/postprocess_internal.h b/libpostproc/postprocess_internal.h index a4e31d3d6b..2ab1ed84db 100644 --- a/libpostproc/postprocess_internal.h +++ b/libpostproc/postprocess_internal.h @@ -19,14 +19,16 @@ */ /** - * @file postprocess_internal.h + * @file libpostproc/postprocess_internal.h * internal api header. */ -#ifndef POSTPROCESS_INTERNAL_H -#define POSTPROCESS_INTERNAL_H +#ifndef POSTPROC_POSTPROCESS_INTERNAL_H +#define POSTPROC_POSTPROCESS_INTERNAL_H -#include "avutil.h" +#include +#include "libavutil/avutil.h" +#include "postprocess.h" #define V_DEBLOCK 0x01 #define H_DEBLOCK 0x02 @@ -54,135 +56,123 @@ #define FULL_Y_RANGE 0x8000 // 32768 //Deinterlacing Filters -#define LINEAR_IPOL_DEINT_FILTER 0x10000 // 65536 -#define LINEAR_BLEND_DEINT_FILTER 0x20000 // 131072 -#define CUBIC_BLEND_DEINT_FILTER 0x8000 // (not implemented yet) -#define CUBIC_IPOL_DEINT_FILTER 0x40000 // 262144 -#define MEDIAN_DEINT_FILTER 0x80000 // 524288 -#define FFMPEG_DEINT_FILTER 0x400000 -#define LOWPASS5_DEINT_FILTER 0x800000 +#define LINEAR_IPOL_DEINT_FILTER 0x10000 // 65536 +#define LINEAR_BLEND_DEINT_FILTER 0x20000 // 131072 +#define CUBIC_BLEND_DEINT_FILTER 0x8000 // (not implemented yet) +#define CUBIC_IPOL_DEINT_FILTER 0x40000 // 262144 +#define MEDIAN_DEINT_FILTER 0x80000 // 524288 +#define FFMPEG_DEINT_FILTER 0x400000 +#define LOWPASS5_DEINT_FILTER 0x800000 #define TEMP_NOISE_FILTER 0x100000 #define FORCE_QUANT 0x200000 -#if ( defined(__PIC__) || defined(__pic__) ) && ! defined(PIC) -# define PIC -#endif - //use if you want a faster postprocessing code //cannot differentiate between chroma & luma filters (both on or both off) //obviously the -pp option on the command line has no effect except turning the here selected //filters on //#define COMPILE_TIME_MODE 0x77 -#if 1 static inline int CLIP(int a){ - if(a&256) return ((a)>>31)^(-1); - else return a; + if(a&256) return ((a)>>31)^(-1); + else return a; } -//#define CLIP(a) (((a)&256) ? ((a)>>31)^(-1) : (a)) -#elif 0 -#define CLIP(a) clip_tab[a] -#else -#define CLIP(a) (a) -#endif /** * Postprocessng filter. */ struct PPFilter{ - const char *shortName; - const char *longName; - int chromDefault; ///< is chrominance filtering on by default if this filter is manually activated - int minLumQuality; ///< minimum quality to turn luminance filtering on - int minChromQuality; ///< minimum quality to turn chrominance filtering on - int mask; ///< Bitmask to turn this filter on + const char *shortName; + const char *longName; + int chromDefault; ///< is chrominance filtering on by default if this filter is manually activated + int minLumQuality; ///< minimum quality to turn luminance filtering on + int minChromQuality; ///< minimum quality to turn chrominance filtering on + int mask; ///< Bitmask to turn this filter on }; /** * Postprocessng mode. */ typedef struct PPMode{ - int lumMode; ///< acivates filters for luminance - int chromMode; ///< acivates filters for chrominance - int error; ///< non zero on error + int lumMode; ///< acivates filters for luminance + int chromMode; ///< acivates filters for chrominance + int error; ///< non zero on error - int minAllowedY; ///< for brigtness correction - int maxAllowedY; ///< for brihtness correction - float maxClippedThreshold; ///< amount of "black" u r willing to loose to get a brightness corrected picture + int minAllowedY; ///< for brigtness correction + int maxAllowedY; ///< for brihtness correction + float maxClippedThreshold; ///< amount of "black" u r willing to loose to get a brightness corrected picture - int maxTmpNoise[3]; ///< for Temporal Noise Reducing filter (Maximal sum of abs differences) + int maxTmpNoise[3]; ///< for Temporal Noise Reducing filter (Maximal sum of abs differences) - int baseDcDiff; - int flatnessThreshold; + int baseDcDiff; + int flatnessThreshold; - int forcedQuant; ///< quantizer if FORCE_QUANT is used + int forcedQuant; ///< quantizer if FORCE_QUANT is used } PPMode; /** * postprocess context. */ typedef struct PPContext{ - /** - * info on struct for av_log - */ - AVClass *av_class; + /** + * info on struct for av_log + */ + const AVClass *av_class; - uint8_t *tempBlocks; /// 0) { - memcpy(dest, src, lines*stride); - } else { - memcpy(dest+(lines-1)*stride, src+(lines-1)*stride, -lines*stride); - } +static inline void linecpy(void *dest, const void *src, int lines, int stride) { + if (stride > 0) { + memcpy(dest, src, lines*stride); + } else { + memcpy((uint8_t*)dest+(lines-1)*stride, (const uint8_t*)src+(lines-1)*stride, -lines*stride); + } } -#endif // POSTPROCESS_INTERNAL_H +#endif /* POSTPROC_POSTPROCESS_INTERNAL_H */