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 
21 module ffmpeg.libpostproc.postprocess;
22 
23 extern (C):
24 import ffmpeg; @nogc nothrow:
25 
26 /**
27  * @file
28  * @ingroup lpp
29  * external API header
30  */
31 
32 /**
33  * @defgroup lpp libpostproc
34  * Video postprocessing library.
35  *
36  * @{
37  */
38 
39 /**
40  * Return the LIBPOSTPROC_VERSION_INT constant.
41  */
42 uint postproc_version ();
43 
44 /**
45  * Return the libpostproc build-time configuration.
46  */
47 const(char)* postproc_configuration ();
48 
49 /**
50  * Return the libpostproc license.
51  */
52 const(char)* postproc_license ();
53 
54 enum PP_QUALITY_MAX = 6;
55 
56 alias pp_context = void;
57 alias pp_mode = void;
58 
59 ///< a simple help text
60 
61 extern __gshared const(char)[] pp_help; ///< a simple help text
62 
63 void pp_postprocess (
64     ref const(ubyte)*[3] src,
65     ref const(int)[3] srcStride,
66     ref ubyte*[3] dst,
67     ref const(int)[3] dstStride,
68     int horizontalSize,
69     int verticalSize,
70     const(byte)* QP_store,
71     int QP_stride,
72     pp_mode* mode,
73     pp_context* ppContext,
74     int pict_type);
75 
76 /**
77  * Return a pp_mode or NULL if an error occurred.
78  *
79  * @param name    the string after "-pp" on the command line
80  * @param quality a number from 0 to PP_QUALITY_MAX
81  */
82 pp_mode* pp_get_mode_by_name_and_quality (const(char)* name, int quality);
83 void pp_free_mode (pp_mode* mode);
84 
85 pp_context* pp_get_context (int width, int height, int flags);
86 void pp_free_context (pp_context* ppContext);
87 
88 enum PP_CPU_CAPS_MMX = 0x80000000;
89 enum PP_CPU_CAPS_MMX2 = 0x20000000;
90 enum PP_CPU_CAPS_3DNOW = 0x40000000;
91 enum PP_CPU_CAPS_ALTIVEC = 0x10000000;
92 enum PP_CPU_CAPS_AUTO = 0x00080000;
93 
94 enum PP_FORMAT = 0x00000008;
95 enum PP_FORMAT_420 = 0x00000011 | PP_FORMAT;
96 enum PP_FORMAT_422 = 0x00000001 | PP_FORMAT;
97 enum PP_FORMAT_411 = 0x00000002 | PP_FORMAT;
98 enum PP_FORMAT_444 = 0x00000000 | PP_FORMAT;
99 enum PP_FORMAT_440 = 0x00000010 | PP_FORMAT;
100 
101 enum PP_PICT_TYPE_QP2 = 0x00000010; ///< MPEG2 style QScale
102 
103 /**
104  * @}
105  */
106 
107 /* POSTPROC_POSTPROCESS_H */