This library does not fit into Libav as a whole and its code is just a maintenance burden. Furthermore it is now available as an external project, which completely obviates any reason to keep it around. URL: http://git.videolan.org/?p=libpostproc.gittags/n0.11
| @@ -24,7 +24,6 @@ libavfilter/libavfilter* | |||
| libavformat/libavformat* | |||
| libavutil/avconfig.h | |||
| libavutil/libavutil* | |||
| libpostproc/libpostproc* | |||
| libswscale/libswscale* | |||
| tests/audiogen | |||
| tests/base64 | |||
| @@ -9,6 +9,7 @@ version <next>: | |||
| - CDXL demuxer and decoder | |||
| - Apple ProRes encoder | |||
| - Sun Rasterfile Encoder | |||
| - remove libpostproc | |||
| version 0.8: | |||
| @@ -13,7 +13,6 @@ configure to activate them. In this case, Libav's license changes to GPL v2+. | |||
| Specifically, the GPL parts of Libav are | |||
| - libpostproc | |||
| - optional x86 optimizations in the files | |||
| libavcodec/x86/idct_mmx.c | |||
| - the X11 grabber in libavdevice/x11grab.c | |||
| @@ -20,7 +20,7 @@ $(foreach VAR,$(SILENT),$(eval override $(VAR) = @$($(VAR)))) | |||
| $(eval INSTALL = @$(call ECHO,INSTALL,$$(^:$(SRC_PATH)/%=%)); $(INSTALL)) | |||
| endif | |||
| ALLFFLIBS = avcodec avdevice avfilter avformat avutil postproc swscale | |||
| ALLFFLIBS = avcodec avdevice avfilter avformat avutil swscale | |||
| IFLAGS := -I. -I$(SRC_PATH) | |||
| CPPFLAGS := $(IFLAGS) $(CPPFLAGS) | |||
| @@ -72,7 +72,6 @@ FFLIBS-$(CONFIG_AVDEVICE) += avdevice | |||
| FFLIBS-$(CONFIG_AVFILTER) += avfilter | |||
| FFLIBS-$(CONFIG_AVFORMAT) += avformat | |||
| FFLIBS-$(CONFIG_AVCODEC) += avcodec | |||
| FFLIBS-$(CONFIG_POSTPROC) += postproc | |||
| FFLIBS-$(CONFIG_SWSCALE) += swscale | |||
| FFLIBS := avutil | |||
| @@ -33,9 +33,6 @@ | |||
| #include "libavfilter/avfilter.h" | |||
| #include "libavdevice/avdevice.h" | |||
| #include "libswscale/swscale.h" | |||
| #if CONFIG_POSTPROC | |||
| #include "libpostproc/postprocess.h" | |||
| #endif | |||
| #include "libavutil/avstring.h" | |||
| #include "libavutil/mathematics.h" | |||
| #include "libavutil/parseutils.h" | |||
| @@ -496,9 +493,6 @@ static void print_all_libs_info(int flags, int level) | |||
| PRINT_LIB_INFO(avdevice, AVDEVICE, flags, level); | |||
| PRINT_LIB_INFO(avfilter, AVFILTER, flags, level); | |||
| PRINT_LIB_INFO(swscale, SWSCALE, flags, level); | |||
| #if CONFIG_POSTPROC | |||
| PRINT_LIB_INFO(postproc, POSTPROC, flags, level); | |||
| #endif | |||
| } | |||
| void show_banner(void) | |||
| @@ -88,7 +88,6 @@ Configuration options: | |||
| --disable-avcodec disable libavcodec build | |||
| --disable-avformat disable libavformat build | |||
| --disable-swscale disable libswscale build | |||
| --enable-postproc enable libpostproc build (deprecated) [no] | |||
| --disable-avfilter disable video filter support [no] | |||
| --disable-pthreads disable pthreads [auto] | |||
| --disable-w32threads disable Win32 threads [auto] | |||
| @@ -974,7 +973,6 @@ CONFIG_LIST=" | |||
| nonfree | |||
| openssl | |||
| pic | |||
| postproc | |||
| rdft | |||
| rtpdec | |||
| runtime_cpudetect | |||
| @@ -1532,7 +1530,6 @@ yadif_filter_deps="gpl" | |||
| # libraries | |||
| avdevice_deps="avcodec avformat" | |||
| avformat_deps="avcodec" | |||
| postproc_deps="gpl" | |||
| # programs | |||
| avconv_deps="avcodec avformat swscale" | |||
| @@ -3066,7 +3063,7 @@ enabled extra_warnings && check_cflags -Winline | |||
| # add some linker flags | |||
| check_ldflags -Wl,--warn-common | |||
| check_ldflags -Wl,-rpath-link=libpostproc:libswscale:libavfilter:libavdevice:libavformat:libavcodec:libavutil | |||
| check_ldflags -Wl,-rpath-link=libswscale:libavfilter:libavdevice:libavformat:libavcodec:libavutil | |||
| test_ldflags -Wl,-Bsymbolic && append SHFLAGS -Wl,-Bsymbolic | |||
| enabled xmm_clobber_test && \ | |||
| @@ -3222,7 +3219,6 @@ echo "optimize for size ${small-no}" | |||
| echo "optimizations ${optimizations-no}" | |||
| echo "static ${static-no}" | |||
| echo "shared ${shared-no}" | |||
| echo "postprocessing support ${postproc-no}" | |||
| echo "new filter support ${avfilter-no}" | |||
| echo "network support ${network-no}" | |||
| echo "threading support ${thread_type-no}" | |||
| @@ -3374,7 +3370,6 @@ get_version LIBAVDEVICE libavdevice/avdevice.h | |||
| get_version LIBAVFILTER libavfilter/version.h | |||
| get_version LIBAVFORMAT libavformat/version.h | |||
| get_version LIBAVUTIL libavutil/avutil.h | |||
| get_version LIBPOSTPROC libpostproc/postprocess.h | |||
| get_version LIBSWSCALE libswscale/swscale.h | |||
| cat > $TMPH <<EOF | |||
| @@ -3493,5 +3488,4 @@ pkgconfig_generate libavcodec "Libav codec library" "$LIBAVCODEC_VERSION" "$extr | |||
| pkgconfig_generate libavformat "Libav container format library" "$LIBAVFORMAT_VERSION" "$extralibs" "libavcodec = $LIBAVCODEC_VERSION" | |||
| pkgconfig_generate libavdevice "Libav device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" "libavformat = $LIBAVFORMAT_VERSION" | |||
| pkgconfig_generate libavfilter "Libav video filtering library" "$LIBAVFILTER_VERSION" "$extralibs" | |||
| pkgconfig_generate libpostproc "Libav postprocessing library" "$LIBPOSTPROC_VERSION" "" "libavutil = $LIBAVUTIL_VERSION" | |||
| pkgconfig_generate libswscale "Libav image rescaling library" "$LIBSWSCALE_VERSION" "$LIBM" "libavutil = $LIBAVUTIL_VERSION" | |||
| @@ -6,7 +6,6 @@ libavcodec: 2012-01-27 | |||
| libavdevice: 2011-04-18 | |||
| libavfilter: 2011-04-18 | |||
| libavformat: 2012-01-27 | |||
| libpostproc: 2011-04-18 (deprecated, to be removed later) | |||
| libswscale: 2011-06-20 | |||
| libavutil: 2011-04-18 | |||
| @@ -39,7 +39,6 @@ | |||
| * @li @ref libavf "libavformat" I/O and muxing/demuxing library | |||
| * @li @ref lavd "libavdevice" special devices muxing/demuxing library | |||
| * @li @ref lavu "libavutil" common utility library | |||
| * @li @subpage libpostproc post processing library | |||
| * @li @subpage libswscale color conversion and scaling library | |||
| * | |||
| */ | |||
| @@ -1,6 +0,0 @@ | |||
| NAME = postproc | |||
| FFLIBS = avutil | |||
| HEADERS = postprocess.h | |||
| OBJS = postprocess.o | |||
| @@ -1,4 +0,0 @@ | |||
| LIBPOSTPROC_$MAJOR { | |||
| global: postproc_*; pp_*; | |||
| local: *; | |||
| }; | |||
| @@ -1,104 +0,0 @@ | |||
| /* | |||
| * Copyright (C) 2001-2003 Michael Niedermayer (michaelni@gmx.at) | |||
| * | |||
| * This file is part of Libav. | |||
| * | |||
| * Libav 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. | |||
| * | |||
| * Libav 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 Libav; if not, write to the Free Software | |||
| * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |||
| */ | |||
| #ifndef POSTPROC_POSTPROCESS_H | |||
| #define POSTPROC_POSTPROCESS_H | |||
| /** | |||
| * @file | |||
| * @brief | |||
| * external postprocessing API | |||
| */ | |||
| #include "libavutil/avutil.h" | |||
| #define LIBPOSTPROC_VERSION_MAJOR 52 | |||
| #define LIBPOSTPROC_VERSION_MINOR 0 | |||
| #define LIBPOSTPROC_VERSION_MICRO 0 | |||
| #define LIBPOSTPROC_VERSION_INT AV_VERSION_INT(LIBPOSTPROC_VERSION_MAJOR, \ | |||
| LIBPOSTPROC_VERSION_MINOR, \ | |||
| LIBPOSTPROC_VERSION_MICRO) | |||
| #define LIBPOSTPROC_VERSION AV_VERSION(LIBPOSTPROC_VERSION_MAJOR, \ | |||
| LIBPOSTPROC_VERSION_MINOR, \ | |||
| LIBPOSTPROC_VERSION_MICRO) | |||
| #define LIBPOSTPROC_BUILD LIBPOSTPROC_VERSION_INT | |||
| #define LIBPOSTPROC_IDENT "postproc" AV_STRINGIFY(LIBPOSTPROC_VERSION) | |||
| /** | |||
| * Return the LIBPOSTPROC_VERSION_INT constant. | |||
| */ | |||
| unsigned postproc_version(void); | |||
| /** | |||
| * Return the libpostproc build-time configuration. | |||
| */ | |||
| const char *postproc_configuration(void); | |||
| /** | |||
| * Return the libpostproc license. | |||
| */ | |||
| const char *postproc_license(void); | |||
| #define PP_QUALITY_MAX 6 | |||
| #define QP_STORE_T int8_t | |||
| #include <inttypes.h> | |||
| typedef void pp_context; | |||
| typedef void pp_mode; | |||
| extern const char pp_help[]; ///< a simple help text | |||
| void pp_postprocess(const uint8_t * src[3], const int srcStride[3], | |||
| uint8_t * dst[3], const int dstStride[3], | |||
| int horizontalSize, int verticalSize, | |||
| const QP_STORE_T *QP_store, int QP_stride, | |||
| pp_mode *mode, pp_context *ppContext, int pict_type); | |||
| /** | |||
| * Return a pp_mode or NULL if an error occurred. | |||
| * | |||
| * @param name the string after "-pp" on the command line | |||
| * @param quality a number from 0 to PP_QUALITY_MAX | |||
| */ | |||
| pp_mode *pp_get_mode_by_name_and_quality(const char *name, int quality); | |||
| void pp_free_mode(pp_mode *mode); | |||
| pp_context *pp_get_context(int width, int height, int flags); | |||
| void pp_free_context(pp_context *ppContext); | |||
| #define PP_CPU_CAPS_MMX 0x80000000 | |||
| #define PP_CPU_CAPS_MMX2 0x20000000 | |||
| #define PP_CPU_CAPS_3DNOW 0x40000000 | |||
| #define PP_CPU_CAPS_ALTIVEC 0x10000000 | |||
| #define PP_FORMAT 0x00000008 | |||
| #define PP_FORMAT_420 (0x00000011|PP_FORMAT) | |||
| #define PP_FORMAT_422 (0x00000001|PP_FORMAT) | |||
| #define PP_FORMAT_411 (0x00000002|PP_FORMAT) | |||
| #define PP_FORMAT_444 (0x00000000|PP_FORMAT) | |||
| #define PP_PICT_TYPE_QP2 0x00000010 ///< MPEG2 style QScale | |||
| #endif /* POSTPROC_POSTPROCESS_H */ | |||
| @@ -1,179 +0,0 @@ | |||
| /* | |||
| * Copyright (C) 2001-2002 Michael Niedermayer (michaelni@gmx.at) | |||
| * | |||
| * This file is part of Libav. | |||
| * | |||
| * Libav 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. | |||
| * | |||
| * Libav 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 Libav; 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 <string.h> | |||
| #include "libavutil/avutil.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 standart 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 | |||
| //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 | |||
| static inline int CLIP(int a){ | |||
| if(a&256) return ((a)>>31)^(-1); | |||
| else return a; | |||
| } | |||
| /** | |||
| * 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 | |||
| }; | |||
| /** | |||
| * Postprocessng mode. | |||
| */ | |||
| typedef struct PPMode{ | |||
| 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" 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; ///<used for the horizontal code | |||
| /** | |||
| * luma histogram. | |||
| * we need 64bit here otherwise we'll going to have a problem | |||
| * after watching a black picture for 5 hours | |||
| */ | |||
| uint64_t *yHistogram; | |||
| DECLARE_ALIGNED(8, uint64_t, packedYOffset); | |||
| DECLARE_ALIGNED(8, uint64_t, packedYScale); | |||
| /** Temporal noise reducing buffers */ | |||
| uint8_t *tempBlurred[3]; | |||
| int32_t *tempBlurredPast[3]; | |||
| /** Temporary buffers for handling the last row(s) */ | |||
| uint8_t *tempDst; | |||
| uint8_t *tempSrc; | |||
| uint8_t *deintTemp; | |||
| DECLARE_ALIGNED(8, uint64_t, pQPb); | |||
| DECLARE_ALIGNED(8, uint64_t, pQPb2); | |||
| DECLARE_ALIGNED(8, uint64_t, mmxDcOffset)[64]; | |||
| DECLARE_ALIGNED(8, uint64_t, mmxDcThreshold)[64]; | |||
| QP_STORE_T *stdQPTable; ///< used to fix MPEG2 style qscale | |||
| QP_STORE_T *nonBQPTable; | |||
| QP_STORE_T *forcedQPTable; | |||
| int QP; | |||
| int nonBQP; | |||
| int frameNum; | |||
| int cpuCaps; | |||
| int qpStride; ///<size of qp buffers (needed to realloc them if needed) | |||
| int stride; ///<size of some buffers (needed to realloc them if needed) | |||
| int hChromaSubSample; | |||
| int vChromaSubSample; | |||
| PPMode ppMode; | |||
| } PPContext; | |||
| 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 /* POSTPROC_POSTPROCESS_INTERNAL_H */ | |||