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 */