Tizen 2.0 Release
[framework/multimedia/gstreamer-vaapi.git] / gst-libs / gst / vaapi / gstvaapiprofile.h
1 /*
2  *  gstvaapiprofile.h - VA profile abstraction
3  *
4  *  Copyright (C) 2010-2011 Splitted-Desktop Systems
5  *
6  *  This library is free software; you can redistribute it and/or
7  *  modify it under the terms of the GNU Lesser General Public License
8  *  as published by the Free Software Foundation; either version 2.1
9  *  of the License, or (at your option) any later version.
10  *
11  *  This library 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 GNU
14  *  Lesser General Public License for more details.
15  *
16  *  You should have received a copy of the GNU Lesser General Public
17  *  License along with this library; if not, write to the Free
18  *  Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19  *  Boston, MA 02110-1301 USA
20  */
21
22 #ifndef GST_VAAPI_PROFILE_H
23 #define GST_VAAPI_PROFILE_H
24
25 #include <gst/gstvalue.h>
26
27 G_BEGIN_DECLS
28
29 typedef enum _GstVaapiCodec                     GstVaapiCodec;
30 typedef enum _GstVaapiProfile                   GstVaapiProfile;
31 typedef enum _GstVaapiEntrypoint                GstVaapiEntrypoint;
32
33 /**
34  * GstVaapiCodec:
35  * @GST_VAAPI_CODEC_MPEG1: MPEG-1 (ISO/IEC 11172)
36  * @GST_VAAPI_CODEC_MPEG2: MPEG-2 (ISO/IEC 13818-2)
37  * @GST_VAAPI_CODEC_MPEG4: MPEG-4 Part 2 (ISO/IEC 14496-2)
38  * @GST_VAAPI_CODEC_H263: H.263
39  * @GST_VAAPI_CODEC_H264: H.264 aka MPEG-4 Part 10 (ISO/IEC 14496-10)
40  * @GST_VAAPI_CODEC_WMV3: Windows Media Video 9. VC-1 Simple or Main profile (SMPTE 421M)
41  * @GST_VAAPI_CODEC_VC1: VC-1 Advanced profile (SMPTE 421M)
42  *
43  * The set of all codecs for #GstVaapiCodec.
44  */
45 enum _GstVaapiCodec {
46     GST_VAAPI_CODEC_MPEG1       = GST_MAKE_FOURCC('M','P','1',0),
47     GST_VAAPI_CODEC_MPEG2       = GST_MAKE_FOURCC('M','P','2',0),
48     GST_VAAPI_CODEC_MPEG4       = GST_MAKE_FOURCC('M','P','4',0),
49     GST_VAAPI_CODEC_H263        = GST_MAKE_FOURCC('2','6','3',0),
50     GST_VAAPI_CODEC_H264        = GST_MAKE_FOURCC('2','6','4',0),
51     GST_VAAPI_CODEC_WMV3        = GST_MAKE_FOURCC('W','M','V',0),
52     GST_VAAPI_CODEC_VC1         = GST_MAKE_FOURCC('V','C','1',0),
53     GST_VAAPI_CODEC_JPEG        = GST_MAKE_FOURCC('J','P','G',0),
54 };
55
56 /**
57  * GST_VAAPI_MAKE_PROFILE:
58  * @codec: the #GstVaapiCodec without the GST_VAAPI_CODEC_ prefix
59  * @sub_id: a non-zero sub-codec id
60  *
61  * Macro that evaluates to the profile composed from @codec and
62  * @sub_id.
63  */
64 #define GST_VAAPI_MAKE_PROFILE(codec, sub_id) \
65     (GST_VAAPI_CODEC_##codec | GST_MAKE_FOURCC(0,0,0,sub_id))
66
67 /**
68  * GstVaapiProfile:
69  * @GST_VAAPI_PROFILE_UNKNOWN:
70  *   Unknown profile, used for initializers
71  * @GST_VAAPI_PROFILE_MPEG1:
72  *   MPEG-1
73  * @GST_VAAPI_PROFILE_MPEG2_SIMPLE:
74  *   MPEG-2 simple profile
75  * @GST_VAAPI_PROFILE_MPEG2_MAIN:
76  *   MPEG-2 main profile
77  * @GST_VAAPI_PROFILE_MPEG2_HIGH:
78  *   MPEG-2 high profile
79  * @GST_VAAPI_PROFILE_MPEG4_SIMPLE:
80  *   MPEG-4 Part-2 simple profile
81  * @GST_VAAPI_PROFILE_MPEG4_ADVANCED_SIMPLE:
82  *   MPEG-4 Part-2 advanced simple profile
83  * @GST_VAAPI_PROFILE_MPEG4_MAIN:
84  *   MPEG-4 Part-2 main profile
85  * @GST_VAAPI_PROFILE_H263_BASELINE:
86  *   H.263 baseline profile
87  * @GST_VAAPI_PROFILE_H264_BASELINE:
88  *   H.264 (MPEG-4 Part-10) baseline profile
89  * @GST_VAAPI_PROFILE_H264_MAIN:
90  *   H.264 (MPEG-4 Part-10) main profile
91  * @GST_VAAPI_PROFILE_H264_HIGH:
92  *   H.264 (MPEG-4 Part-10) high profile
93  * @GST_VAAPI_PROFILE_VC1_SIMPLE:
94  *   VC-1 simple profile
95  * @GST_VAAPI_PROFILE_VC1_MAIN:
96  *   VC-1 main profile
97  * @GST_VAAPI_PROFILE_VC1_ADVANCED:
98  *   VC-1 advanced profile
99  *
100  * The set of all profiles for #GstVaapiProfile.
101  */
102 enum _GstVaapiProfile {
103     GST_VAAPI_PROFILE_UNKNOWN               = 0,
104     GST_VAAPI_PROFILE_MPEG1                 = GST_VAAPI_MAKE_PROFILE(MPEG1,1),
105     GST_VAAPI_PROFILE_MPEG2_SIMPLE          = GST_VAAPI_MAKE_PROFILE(MPEG2,1),
106     GST_VAAPI_PROFILE_MPEG2_MAIN            = GST_VAAPI_MAKE_PROFILE(MPEG2,2),
107     GST_VAAPI_PROFILE_MPEG2_HIGH            = GST_VAAPI_MAKE_PROFILE(MPEG2,3),
108     GST_VAAPI_PROFILE_MPEG4_SIMPLE          = GST_VAAPI_MAKE_PROFILE(MPEG4,1),
109     GST_VAAPI_PROFILE_MPEG4_ADVANCED_SIMPLE = GST_VAAPI_MAKE_PROFILE(MPEG4,2),
110     GST_VAAPI_PROFILE_MPEG4_MAIN            = GST_VAAPI_MAKE_PROFILE(MPEG4,3),
111     GST_VAAPI_PROFILE_H263_BASELINE         = GST_VAAPI_MAKE_PROFILE(H263,1),
112     GST_VAAPI_PROFILE_H264_BASELINE         = GST_VAAPI_MAKE_PROFILE(H264,1),
113     GST_VAAPI_PROFILE_H264_MAIN             = GST_VAAPI_MAKE_PROFILE(H264,2),
114     GST_VAAPI_PROFILE_H264_HIGH             = GST_VAAPI_MAKE_PROFILE(H264,3),
115     GST_VAAPI_PROFILE_VC1_SIMPLE            = GST_VAAPI_MAKE_PROFILE(VC1,1),
116     GST_VAAPI_PROFILE_VC1_MAIN              = GST_VAAPI_MAKE_PROFILE(VC1,2),
117     GST_VAAPI_PROFILE_VC1_ADVANCED          = GST_VAAPI_MAKE_PROFILE(VC1,3),
118     GST_VAAPI_PROFILE_JPEG_BASELINE         = GST_VAAPI_MAKE_PROFILE(JPEG,1),
119 };
120
121 /**
122  * GstVaapiEntrypoint:
123  * @GST_VAAPI_ENTRYPOINT_VLD: Variable Length Decoding
124  * @GST_VAAPI_ENTRYPOINT_IDCT: Inverse Decrete Cosine Transform
125  * @GST_VAAPI_ENTRYPOINT_MOCO: Motion Compensation
126  * @GST_VAAPI_ENTRYPOINT_SLICE_ENCODE: Encode Slice
127  *
128  * The set of all entrypoints for #GstVaapiEntrypoint
129  */
130 enum _GstVaapiEntrypoint {
131     GST_VAAPI_ENTRYPOINT_VLD = 1,
132     GST_VAAPI_ENTRYPOINT_IDCT,
133     GST_VAAPI_ENTRYPOINT_MOCO,
134     GST_VAAPI_ENTRYPOINT_SLICE_ENCODE
135 };
136
137 GstVaapiProfile
138 gst_vaapi_profile(VAProfile profile);
139
140 GstVaapiProfile
141 gst_vaapi_profile_from_caps(GstCaps *caps);
142
143 VAProfile
144 gst_vaapi_profile_get_va_profile(GstVaapiProfile profile);
145
146 GstCaps *
147 gst_vaapi_profile_get_caps(GstVaapiProfile profile);
148
149 GstVaapiCodec
150 gst_vaapi_profile_get_codec(GstVaapiProfile profile);
151
152 GstVaapiEntrypoint
153 gst_vaapi_entrypoint(VAEntrypoint entrypoint);
154
155 VAEntrypoint
156 gst_vaapi_entrypoint_get_va_entrypoint(GstVaapiEntrypoint entrypoint);
157
158 G_END_DECLS
159
160 #endif /* GST_GST_VAAPI_IMAGE_H */