X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libpostproc%2Fpostprocess_internal.h;h=3bc51c49a4c83ff0dc9070eba5da37927d42eae8;hb=6d19fd5c26cc2971a9925376f52e57c286d2326b;hp=9ec2f3500d0e5c955b12487b0eacec31783330f9;hpb=699b3f99d0376a8fd5159bdad857228bda59cff6;p=ffmpeg diff --git a/libpostproc/postprocess_internal.h b/libpostproc/postprocess_internal.h index 9ec2f3500d0..3bc51c49a4c 100644 --- a/libpostproc/postprocess_internal.h +++ b/libpostproc/postprocess_internal.h @@ -19,14 +19,16 @@ */ /** - * @file postprocess_internal.h + * @file * 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 +#endif /* POSTPROC_POSTPROCESS_INTERNAL_H */