From 150c9823e71a161e97003849cf8b2f55b21520bd Mon Sep 17 00:00:00 2001 From: Tim Redfern Date: Mon, 26 Aug 2013 15:10:18 +0100 Subject: adding ffmpeg specific version --- ffmpeg1/libpostproc/postprocess_internal.h | 179 +++++++++++++++++++++++++++++ 1 file changed, 179 insertions(+) create mode 100644 ffmpeg1/libpostproc/postprocess_internal.h (limited to 'ffmpeg1/libpostproc/postprocess_internal.h') diff --git a/ffmpeg1/libpostproc/postprocess_internal.h b/ffmpeg1/libpostproc/postprocess_internal.h new file mode 100644 index 0000000..b1b8f0c --- /dev/null +++ b/ffmpeg1/libpostproc/postprocess_internal.h @@ -0,0 +1,179 @@ +/* + * Copyright (C) 2001-2002 Michael Niedermayer (michaelni@gmx.at) + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * @file + * internal API header. + */ + +#ifndef POSTPROC_POSTPROCESS_INTERNAL_H +#define POSTPROC_POSTPROCESS_INTERNAL_H + +#include +#include "libavutil/avutil.h" +#include "libavutil/intmath.h" +#include "libavutil/log.h" +#include "postprocess.h" + +#define V_DEBLOCK 0x01 +#define H_DEBLOCK 0x02 +#define DERING 0x04 +#define LEVEL_FIX 0x08 ///< Brightness & Contrast + +#define LUM_V_DEBLOCK V_DEBLOCK // 1 +#define LUM_H_DEBLOCK H_DEBLOCK // 2 +#define CHROM_V_DEBLOCK (V_DEBLOCK<<4) // 16 +#define CHROM_H_DEBLOCK (H_DEBLOCK<<4) // 32 +#define LUM_DERING DERING // 4 +#define CHROM_DERING (DERING<<4) // 64 +#define LUM_LEVEL_FIX LEVEL_FIX // 8 +#define CHROM_LEVEL_FIX (LEVEL_FIX<<4) // 128 (not implemented yet) + +// Experimental vertical filters +#define V_X1_FILTER 0x0200 // 512 +#define V_A_DEBLOCK 0x0400 + +// Experimental horizontal filters +#define H_X1_FILTER 0x2000 // 8192 +#define H_A_DEBLOCK 0x4000 + +/// select between full y range (255-0) or standard one (234-16) +#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 TEMP_NOISE_FILTER 0x100000 +#define FORCE_QUANT 0x200000 +#define BITEXACT 0x1000000 + +//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 + +#define CLIP av_clip_uint8 + +/** + * Postprocessing 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 +}; + +/** + * Postprocessing mode. + */ +typedef struct PPMode{ + int lumMode; ///< activates filters for luminance + int chromMode; ///< activates filters for chrominance + int error; ///< non zero on error + + int minAllowedY; ///< for brightness correction + int maxAllowedY; ///< for brightness correction + float maxClippedThreshold; ///< amount of "black" you are willing to lose to get a brightness-corrected picture + + int maxTmpNoise[3]; ///< for Temporal Noise Reducing filter (Maximal sum of abs differences) + + int baseDcDiff; + int flatnessThreshold; + + int forcedQuant; ///< quantizer if FORCE_QUANT is used +} PPMode; + +/** + * postprocess context. + */ +typedef struct PPContext{ + /** + * info on struct for av_log + */ + const AVClass *av_class; + + uint8_t *tempBlocks; /// 0) { + memcpy(dest, src, lines*stride); + } else { + memcpy((uint8_t*)dest+(lines-1)*stride, (const uint8_t*)src+(lines-1)*stride, -lines*stride); + } +} + +#endif /* POSTPROC_POSTPROCESS_INTERNAL_H */ -- cgit v1.2.3