rate-control: add rate-control attributes
[vaapi:windyuan-gstreamer-vaapi.git] / gst-libs / gst / vaapi / gstvaapivalue.c
1 /*
2  *  gstvaapivalue.c - GValue implementations specific to VA-API
3  *
4  *  Copyright (C) 2010-2011 Splitted-Desktop Systems
5  *  Copyright (C) 2012 Intel Corporation
6  *
7  *  This library is free software; you can redistribute it and/or
8  *  modify it under the terms of the GNU Lesser General Public License
9  *  as published by the Free Software Foundation; either version 2.1
10  *  of the License, or (at your option) any later version.
11  *
12  *  This library is distributed in the hope that it will be useful,
13  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15  *  Lesser General Public License for more details.
16  *
17  *  You should have received a copy of the GNU Lesser General Public
18  *  License along with this library; if not, write to the Free
19  *  Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20  *  Boston, MA 02110-1301 USA
21  */
22
23 /**
24  * SECTION:gstvaapivalue
25  * @short_description: GValue implementations specific to VA-API
26  */
27
28 #include "sysdeps.h"
29 #include <gobject/gvaluecollector.h>
30 #include "gstvaapivalue.h"
31
32 /* --- GstVaapiRenderMode --- */
33
34 GType
35 gst_vaapi_render_mode_get_type(void)
36 {
37     static GType render_mode_type = 0;
38
39     static const GEnumValue render_modes[] = {
40         { GST_VAAPI_RENDER_MODE_OVERLAY,
41           "Overlay render mode", "overlay" },
42         { GST_VAAPI_RENDER_MODE_TEXTURE,
43           "Textured-blit render mode", "texture" },
44         { 0, NULL, NULL }
45     };
46
47     if (!render_mode_type) {
48         render_mode_type =
49             g_enum_register_static("GstVaapiRenderMode", render_modes);
50     }
51     return render_mode_type;
52 }
53
54 /* --- GstVaapiRotation --- */
55
56 GType
57 gst_vaapi_rotation_get_type(void)
58 {
59     static GType g_type = 0;
60
61     static const GEnumValue rotation_values[] = {
62         { GST_VAAPI_ROTATION_0,
63           "Unrotated mode", "0" },
64         { GST_VAAPI_ROTATION_90,
65           "Rotated by 90°, clockwise", "90" },
66         { GST_VAAPI_ROTATION_180,
67           "Rotated by 180°, clockwise", "180" },
68         { GST_VAAPI_ROTATION_270,
69           "Rotated by 270°, clockwise", "270" },
70         { 0, NULL, NULL },
71     };
72
73     if (!g_type)
74         g_type = g_enum_register_static("GstVaapiRotation", rotation_values);
75     return g_type;
76 }
77
78 /* --- GstVaapiRateControl --- */
79
80 GType
81 gst_vaapi_rate_control_get_type(void)
82 {
83     static GType g_type = 0;
84
85     static const GEnumValue rate_control_values[] = {
86         { GST_VAAPI_RATECONTROL_NONE,
87           "None rate control mode", "none" },
88         { GST_VAAPI_RATECONTROL_CBR,
89           "Constant bitrate control mode", "cbr" },
90         { GST_VAAPI_RATECONTROL_VBR,
91           "Variable bitrate control mode", "vbr" },
92         { GST_VAAPI_RATECONTROL_VCM,
93           "Video conference mode", "vcm" },
94         { GST_VAAPI_RATECONTROL_CQP,
95           "Constant QP mode", "cqp" },
96         { GST_VAAPI_RATECONTROL_VBR_CONSTRAINED,
97           "Variable bitrate control with peak rate higher than average bitrate",
98           "vbr_constrain" },
99         { 0, NULL, NULL },
100     };
101
102     if (!g_type)
103         g_type = g_enum_register_static("GstVaapiRateControl", rate_control_values);
104     return g_type;
105
106 }