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* | libavformat/libavformat* | ||||
| libavutil/avconfig.h | libavutil/avconfig.h | ||||
| libavutil/libavutil* | libavutil/libavutil* | ||||
| libpostproc/libpostproc* | |||||
| libswscale/libswscale* | libswscale/libswscale* | ||||
| tests/audiogen | tests/audiogen | ||||
| tests/base64 | tests/base64 | ||||
| @@ -9,6 +9,7 @@ version <next>: | |||||
| - CDXL demuxer and decoder | - CDXL demuxer and decoder | ||||
| - Apple ProRes encoder | - Apple ProRes encoder | ||||
| - Sun Rasterfile Encoder | - Sun Rasterfile Encoder | ||||
| - remove libpostproc | |||||
| version 0.8: | 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 | Specifically, the GPL parts of Libav are | ||||
| - libpostproc | |||||
| - optional x86 optimizations in the files | - optional x86 optimizations in the files | ||||
| libavcodec/x86/idct_mmx.c | libavcodec/x86/idct_mmx.c | ||||
| - the X11 grabber in libavdevice/x11grab.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)) | $(eval INSTALL = @$(call ECHO,INSTALL,$$(^:$(SRC_PATH)/%=%)); $(INSTALL)) | ||||
| endif | endif | ||||
| ALLFFLIBS = avcodec avdevice avfilter avformat avutil postproc swscale | |||||
| ALLFFLIBS = avcodec avdevice avfilter avformat avutil swscale | |||||
| IFLAGS := -I. -I$(SRC_PATH) | IFLAGS := -I. -I$(SRC_PATH) | ||||
| CPPFLAGS := $(IFLAGS) $(CPPFLAGS) | CPPFLAGS := $(IFLAGS) $(CPPFLAGS) | ||||
| @@ -72,7 +72,6 @@ FFLIBS-$(CONFIG_AVDEVICE) += avdevice | |||||
| FFLIBS-$(CONFIG_AVFILTER) += avfilter | FFLIBS-$(CONFIG_AVFILTER) += avfilter | ||||
| FFLIBS-$(CONFIG_AVFORMAT) += avformat | FFLIBS-$(CONFIG_AVFORMAT) += avformat | ||||
| FFLIBS-$(CONFIG_AVCODEC) += avcodec | FFLIBS-$(CONFIG_AVCODEC) += avcodec | ||||
| FFLIBS-$(CONFIG_POSTPROC) += postproc | |||||
| FFLIBS-$(CONFIG_SWSCALE) += swscale | FFLIBS-$(CONFIG_SWSCALE) += swscale | ||||
| FFLIBS := avutil | FFLIBS := avutil | ||||
| @@ -33,9 +33,6 @@ | |||||
| #include "libavfilter/avfilter.h" | #include "libavfilter/avfilter.h" | ||||
| #include "libavdevice/avdevice.h" | #include "libavdevice/avdevice.h" | ||||
| #include "libswscale/swscale.h" | #include "libswscale/swscale.h" | ||||
| #if CONFIG_POSTPROC | |||||
| #include "libpostproc/postprocess.h" | |||||
| #endif | |||||
| #include "libavutil/avstring.h" | #include "libavutil/avstring.h" | ||||
| #include "libavutil/mathematics.h" | #include "libavutil/mathematics.h" | ||||
| #include "libavutil/parseutils.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(avdevice, AVDEVICE, flags, level); | ||||
| PRINT_LIB_INFO(avfilter, AVFILTER, flags, level); | PRINT_LIB_INFO(avfilter, AVFILTER, flags, level); | ||||
| PRINT_LIB_INFO(swscale, SWSCALE, flags, level); | PRINT_LIB_INFO(swscale, SWSCALE, flags, level); | ||||
| #if CONFIG_POSTPROC | |||||
| PRINT_LIB_INFO(postproc, POSTPROC, flags, level); | |||||
| #endif | |||||
| } | } | ||||
| void show_banner(void) | void show_banner(void) | ||||
| @@ -88,7 +88,6 @@ Configuration options: | |||||
| --disable-avcodec disable libavcodec build | --disable-avcodec disable libavcodec build | ||||
| --disable-avformat disable libavformat build | --disable-avformat disable libavformat build | ||||
| --disable-swscale disable libswscale build | --disable-swscale disable libswscale build | ||||
| --enable-postproc enable libpostproc build (deprecated) [no] | |||||
| --disable-avfilter disable video filter support [no] | --disable-avfilter disable video filter support [no] | ||||
| --disable-pthreads disable pthreads [auto] | --disable-pthreads disable pthreads [auto] | ||||
| --disable-w32threads disable Win32 threads [auto] | --disable-w32threads disable Win32 threads [auto] | ||||
| @@ -974,7 +973,6 @@ CONFIG_LIST=" | |||||
| nonfree | nonfree | ||||
| openssl | openssl | ||||
| pic | pic | ||||
| postproc | |||||
| rdft | rdft | ||||
| rtpdec | rtpdec | ||||
| runtime_cpudetect | runtime_cpudetect | ||||
| @@ -1532,7 +1530,6 @@ yadif_filter_deps="gpl" | |||||
| # libraries | # libraries | ||||
| avdevice_deps="avcodec avformat" | avdevice_deps="avcodec avformat" | ||||
| avformat_deps="avcodec" | avformat_deps="avcodec" | ||||
| postproc_deps="gpl" | |||||
| # programs | # programs | ||||
| avconv_deps="avcodec avformat swscale" | avconv_deps="avcodec avformat swscale" | ||||
| @@ -3066,7 +3063,7 @@ enabled extra_warnings && check_cflags -Winline | |||||
| # add some linker flags | # add some linker flags | ||||
| check_ldflags -Wl,--warn-common | 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 | test_ldflags -Wl,-Bsymbolic && append SHFLAGS -Wl,-Bsymbolic | ||||
| enabled xmm_clobber_test && \ | enabled xmm_clobber_test && \ | ||||
| @@ -3222,7 +3219,6 @@ echo "optimize for size ${small-no}" | |||||
| echo "optimizations ${optimizations-no}" | echo "optimizations ${optimizations-no}" | ||||
| echo "static ${static-no}" | echo "static ${static-no}" | ||||
| echo "shared ${shared-no}" | echo "shared ${shared-no}" | ||||
| echo "postprocessing support ${postproc-no}" | |||||
| echo "new filter support ${avfilter-no}" | echo "new filter support ${avfilter-no}" | ||||
| echo "network support ${network-no}" | echo "network support ${network-no}" | ||||
| echo "threading support ${thread_type-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 LIBAVFILTER libavfilter/version.h | ||||
| get_version LIBAVFORMAT libavformat/version.h | get_version LIBAVFORMAT libavformat/version.h | ||||
| get_version LIBAVUTIL libavutil/avutil.h | get_version LIBAVUTIL libavutil/avutil.h | ||||
| get_version LIBPOSTPROC libpostproc/postprocess.h | |||||
| get_version LIBSWSCALE libswscale/swscale.h | get_version LIBSWSCALE libswscale/swscale.h | ||||
| cat > $TMPH <<EOF | 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 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 libavdevice "Libav device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" "libavformat = $LIBAVFORMAT_VERSION" | ||||
| pkgconfig_generate libavfilter "Libav video filtering library" "$LIBAVFILTER_VERSION" "$extralibs" | 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" | 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 | libavdevice: 2011-04-18 | ||||
| libavfilter: 2011-04-18 | libavfilter: 2011-04-18 | ||||
| libavformat: 2012-01-27 | libavformat: 2012-01-27 | ||||
| libpostproc: 2011-04-18 (deprecated, to be removed later) | |||||
| libswscale: 2011-06-20 | libswscale: 2011-06-20 | ||||
| libavutil: 2011-04-18 | libavutil: 2011-04-18 | ||||
| @@ -39,7 +39,6 @@ | |||||
| * @li @ref libavf "libavformat" I/O and muxing/demuxing library | * @li @ref libavf "libavformat" I/O and muxing/demuxing library | ||||
| * @li @ref lavd "libavdevice" special devices muxing/demuxing library | * @li @ref lavd "libavdevice" special devices muxing/demuxing library | ||||
| * @li @ref lavu "libavutil" common utility library | * @li @ref lavu "libavutil" common utility library | ||||
| * @li @subpage libpostproc post processing library | |||||
| * @li @subpage libswscale color conversion and scaling 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 */ | |||||