1 /*
2  * Copyright (C) 2001-2003 Michael Niedermayer (michaelni@gmx.at)
3  *
4  * This file is part of FFmpeg.
5  *
6  * FFmpeg is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * FFmpeg is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with FFmpeg; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19  */
20 module ffmpeg.libpostproc.postprocess;
21 
22 extern (C) @nogc nothrow:
23 
24 /**
25  * @file
26  * @ingroup lpp
27  * external API header
28  */
29 
30 /**
31  * @defgroup lpp libpostproc
32  * Video postprocessing library.
33  *
34  * @{
35  */
36 
37 /**
38  * Return the LIBPOSTPROC_VERSION_INT constant.
39  */
40 uint postproc_version ();
41 
42 /**
43  * Return the libpostproc build-time configuration.
44  */
45 const(char)* postproc_configuration ();
46 
47 /**
48  * Return the libpostproc license.
49  */
50 const(char)* postproc_license ();
51 
52 enum PP_QUALITY_MAX = 6;
53 
54 alias pp_context = void;
55 alias pp_mode = void;
56 
57 ///< a simple help text
58 
59 extern __gshared const(char)[] pp_help; ///< a simple help text
60 
61 void pp_postprocess (
62     ref const(ubyte)*[3] src,
63     ref const(int)[3] srcStride,
64     ref ubyte*[3] dst,
65     ref const(int)[3] dstStride,
66     int horizontalSize,
67     int verticalSize,
68     const(byte)* QP_store,
69     int QP_stride,
70     pp_mode* mode,
71     pp_context* ppContext,
72     int pict_type);
73 
74 /**
75  * Return a pp_mode or NULL if an error occurred.
76  *
77  * @param name    the string after "-pp" on the command line
78  * @param quality a number from 0 to PP_QUALITY_MAX
79  */
80 pp_mode* pp_get_mode_by_name_and_quality (const(char)* name, int quality);
81 void pp_free_mode (pp_mode* mode);
82 
83 pp_context* pp_get_context (int width, int height, int flags);
84 void pp_free_context (pp_context* ppContext);
85 
86 enum PP_CPU_CAPS_MMX = 0x80000000;
87 enum PP_CPU_CAPS_MMX2 = 0x20000000;
88 enum PP_CPU_CAPS_3DNOW = 0x40000000;
89 enum PP_CPU_CAPS_ALTIVEC = 0x10000000;
90 enum PP_CPU_CAPS_AUTO = 0x00080000;
91 
92 enum PP_FORMAT = 0x00000008;
93 enum PP_FORMAT_420 = 0x00000011 | PP_FORMAT;
94 enum PP_FORMAT_422 = 0x00000001 | PP_FORMAT;
95 enum PP_FORMAT_411 = 0x00000002 | PP_FORMAT;
96 enum PP_FORMAT_444 = 0x00000000 | PP_FORMAT;
97 enum PP_FORMAT_440 = 0x00000010 | PP_FORMAT;
98 
99 enum PP_PICT_TYPE_QP2 = 0x00000010; ///< MPEG2 style QScale
100 
101 /**
102  * @}
103  */
104 
105 /* POSTPROC_POSTPROCESS_H */