msdk: move enum definitions to separte file

Move enum value defintions which are (or in future) supported
by more than one codec into a common file.

https://bugzilla.gnome.org/show_bug.cgi?id=791637
This commit is contained in:
Sreerenj Balachandran 2018-02-15 15:59:08 +00:00
parent b7dbcb26b8
commit ddd02be0de
7 changed files with 163 additions and 77 deletions

View file

@ -19,13 +19,15 @@ libgstmsdk_la_SOURCES = \
gstmsdkvc1dec.c \ gstmsdkvc1dec.c \
gstmsdkdec.c \ gstmsdkdec.c \
gstmsdkenc.c \ gstmsdkenc.c \
gstmsdk.c gstmsdk.c \
msdk-enums.c
# Causes linking libgstmsdk.la with CXXLINK, required by libmfx # Causes linking libgstmsdk.la with CXXLINK, required by libmfx
nodist_EXTRA_libgstmsdk_la_SOURCES = not_present.cxx nodist_EXTRA_libgstmsdk_la_SOURCES = not_present.cxx
noinst_HEADERS = \ noinst_HEADERS = \
msdk.h \ msdk.h \
msdk-enums.h \
gstmsdkcontext.h \ gstmsdkcontext.h \
gstmsdkcontextutil.h \ gstmsdkcontextutil.h \
gstmsdksystemmemory.h \ gstmsdksystemmemory.h \

View file

@ -101,37 +101,6 @@ static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
#define PROP_MAX_VBV_BITRATE_DEFAULT 0 #define PROP_MAX_VBV_BITRATE_DEFAULT 0
#define PROP_MAX_FRAME_SIZE_DEFAULT 0 #define PROP_MAX_FRAME_SIZE_DEFAULT 0
#define GST_MSDKENC_RATE_CONTROL_TYPE (gst_msdkenc_rate_control_get_type())
static GType
gst_msdkenc_rate_control_get_type (void)
{
static GType type = 0;
static const GEnumValue values[] = {
{MFX_RATECONTROL_CBR, "Constant Bitrate", "cbr"},
{MFX_RATECONTROL_VBR, "Variable Bitrate", "vbr"},
{MFX_RATECONTROL_CQP, "Constant Quantizer", "cqp"},
{MFX_RATECONTROL_AVBR, "Average Bitrate", "avbr"},
{MFX_RATECONTROL_LA, "VBR with look ahead (Non HRD compliant)", "la_vbr"},
{MFX_RATECONTROL_ICQ, "Intelligent CQP", "icq"},
{MFX_RATECONTROL_VCM, "Video Conferencing Mode (Non HRD compliant)", "vcm"},
{MFX_RATECONTROL_LA_ICQ, "Intelligent CQP with LA (Non HRD compliant)",
"la_icq"},
#if 0
/* intended for one to N transcode scenario */
{MFX_RATECONTROL_LA_EXT, "Extended LA", "la_ext"},
#endif
{MFX_RATECONTROL_LA_HRD, "HRD compliant LA", "la_hrd"},
{MFX_RATECONTROL_QVBR, "VBR with CQP", "qvbr"},
{0, NULL, NULL}
};
if (!type) {
type = g_enum_register_static ("GstMsdkEncRateControl", values);
}
return type;
}
#define gst_msdkenc_parent_class parent_class #define gst_msdkenc_parent_class parent_class
G_DEFINE_TYPE (GstMsdkEnc, gst_msdkenc, GST_TYPE_VIDEO_ENCODER); G_DEFINE_TYPE (GstMsdkEnc, gst_msdkenc, GST_TYPE_VIDEO_ENCODER);
@ -1619,7 +1588,7 @@ gst_msdkenc_install_common_properties (GstMsdkEncClass * klass)
obj_properties[GST_MSDKENC_PROP_RATE_CONTROL] = obj_properties[GST_MSDKENC_PROP_RATE_CONTROL] =
g_param_spec_enum ("rate-control", "Rate Control", g_param_spec_enum ("rate-control", "Rate Control",
"Rate control method", GST_MSDKENC_RATE_CONTROL_TYPE, "Rate control method", gst_msdkenc_rate_control_get_type (),
PROP_RATE_CONTROL_DEFAULT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); PROP_RATE_CONTROL_DEFAULT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
obj_properties[GST_MSDKENC_PROP_BITRATE] = obj_properties[GST_MSDKENC_PROP_BITRATE] =

View file

@ -35,6 +35,7 @@
#include <gst/gst.h> #include <gst/gst.h>
#include <gst/video/gstvideoencoder.h> #include <gst/video/gstvideoencoder.h>
#include "msdk.h" #include "msdk.h"
#include "msdk-enums.h"
#include "gstmsdkcontext.h" #include "gstmsdkcontext.h"
G_BEGIN_DECLS G_BEGIN_DECLS

View file

@ -50,8 +50,6 @@ enum
PROP_TRELLIS, PROP_TRELLIS,
}; };
#define _MFX_TRELLIS_NONE 0
#define PROP_CABAC_DEFAULT TRUE #define PROP_CABAC_DEFAULT TRUE
#define PROP_LOWPOWER_DEFAULT FALSE #define PROP_LOWPOWER_DEFAULT FALSE
#define PROP_FRAME_PACKING_DEFAULT -1 #define PROP_FRAME_PACKING_DEFAULT -1
@ -88,46 +86,6 @@ gst_msdkh264enc_frame_packing_get_type (void)
return format_type; return format_type;
} }
static GType
gst_msdkh264enc_rc_lookahead_ds_get_type (void)
{
static GType type = 0;
static const GEnumValue values[] = {
{MFX_LOOKAHEAD_DS_UNKNOWN, "SDK desides what to do", "default"},
{MFX_LOOKAHEAD_DS_OFF, "No downsampling", "off"},
{MFX_LOOKAHEAD_DS_2x, "Down sample 2-times before estimation", "2x"},
{MFX_LOOKAHEAD_DS_4x, "Down sample 4-times before estimation", "4x"},
{0, NULL, NULL}
};
if (!type) {
type =
g_enum_register_static ("GstMsdkH264RCLookAheadDownsampling", values);
}
return type;
}
static GType
gst_msdkh264enc_trellis_quantization_get_type (void)
{
static GType type = 0;
static const GFlagsValue values[] = {
{_MFX_TRELLIS_NONE, "Disable for all frames", "None"},
{MFX_TRELLIS_I, "Enable for I frames", "i"},
{MFX_TRELLIS_P, "Enable for P frames", "p"},
{MFX_TRELLIS_B, "Enable for B frames", "b"},
{0, NULL, NULL}
};
if (!type) {
type =
g_flags_register_static ("GstMsdkH264EncTrellisQuantization", values);
}
return type;
}
#define gst_msdkh264enc_parent_class parent_class #define gst_msdkh264enc_parent_class parent_class
G_DEFINE_TYPE (GstMsdkH264Enc, gst_msdkh264enc, GST_TYPE_MSDKENC); G_DEFINE_TYPE (GstMsdkH264Enc, gst_msdkh264enc, GST_TYPE_MSDKENC);
@ -538,14 +496,14 @@ gst_msdkh264enc_class_init (GstMsdkH264EncClass * klass)
g_object_class_install_property (gobject_class, PROP_RC_LA_DOWNSAMPLING, g_object_class_install_property (gobject_class, PROP_RC_LA_DOWNSAMPLING,
g_param_spec_enum ("rc-lookahead-ds", "Look-ahead Downsampling", g_param_spec_enum ("rc-lookahead-ds", "Look-ahead Downsampling",
"Down sampling mode in look ahead bitrate control", "Down sampling mode in look ahead bitrate control",
gst_msdkh264enc_rc_lookahead_ds_get_type (), gst_msdkenc_rc_lookahead_ds_get_type (),
PROP_RC_LA_DOWNSAMPLING_DEFAULT, PROP_RC_LA_DOWNSAMPLING_DEFAULT,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
g_object_class_install_property (gobject_class, PROP_TRELLIS, g_object_class_install_property (gobject_class, PROP_TRELLIS,
g_param_spec_flags ("trellis", "Trellis", g_param_spec_flags ("trellis", "Trellis",
"Enable Trellis Quantization", "Enable Trellis Quantization",
gst_msdkh264enc_trellis_quantization_get_type (), _MFX_TRELLIS_NONE, gst_msdkenc_trellis_quantization_get_type (), _MFX_TRELLIS_NONE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
gst_element_class_set_static_metadata (element_class, gst_element_class_set_static_metadata (element_class,

View file

@ -19,6 +19,7 @@ msdk_sources = [
'gstmsdkvp8enc.c', 'gstmsdkvp8enc.c',
'gstmsdkvc1dec.c', 'gstmsdkvc1dec.c',
'msdk.c', 'msdk.c',
'msdk-enum.c'
] ]
if host_machine.system() == 'windows' if host_machine.system() == 'windows'

102
sys/msdk/msdk-enums.c Normal file
View file

@ -0,0 +1,102 @@
/* GStreamer Intel MSDK plugin
* Copyright (c) 2018, Intel corporation
* All rights reserved.
*
* Author:Sreerenj Balachandran <sreerenj.balachandran@intel.com>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. Neither the name of the copyright holder nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "msdk-enums.h"
GType
gst_msdkenc_rate_control_get_type (void)
{
static GType type = 0;
static const GEnumValue values[] = {
{MFX_RATECONTROL_CBR, "Constant Bitrate", "cbr"},
{MFX_RATECONTROL_VBR, "Variable Bitrate", "vbr"},
{MFX_RATECONTROL_CQP, "Constant Quantizer", "cqp"},
{MFX_RATECONTROL_AVBR, "Average Bitrate", "avbr"},
{MFX_RATECONTROL_LA, "VBR with look ahead (Non HRD compliant)", "la_vbr"},
{MFX_RATECONTROL_ICQ, "Intelligent CQP", "icq"},
{MFX_RATECONTROL_VCM, "Video Conferencing Mode (Non HRD compliant)", "vcm"},
{MFX_RATECONTROL_LA_ICQ, "Intelligent CQP with LA (Non HRD compliant)",
"la_icq"},
#if 0
/* intended for one to N transcode scenario */
{MFX_RATECONTROL_LA_EXT, "Extended LA", "la_ext"},
#endif
{MFX_RATECONTROL_LA_HRD, "HRD compliant LA", "la_hrd"},
{MFX_RATECONTROL_QVBR, "VBR with CQP", "qvbr"},
{0, NULL, NULL}
};
if (!type) {
type = g_enum_register_static ("GstMsdkEncRateControl", values);
}
return type;
}
GType
gst_msdkenc_trellis_quantization_get_type (void)
{
static GType type = 0;
static const GFlagsValue values[] = {
{_MFX_TRELLIS_NONE, "Disable for all frames", "None"},
{MFX_TRELLIS_I, "Enable for I frames", "i"},
{MFX_TRELLIS_P, "Enable for P frames", "p"},
{MFX_TRELLIS_B, "Enable for B frames", "b"},
{0, NULL, NULL}
};
if (!type) {
type = g_flags_register_static ("GstMsdkEncTrellisQuantization", values);
}
return type;
}
GType
gst_msdkenc_rc_lookahead_ds_get_type (void)
{
static GType type = 0;
static const GEnumValue values[] = {
{MFX_LOOKAHEAD_DS_UNKNOWN, "SDK desides what to do", "default"},
{MFX_LOOKAHEAD_DS_OFF, "No downsampling", "off"},
{MFX_LOOKAHEAD_DS_2x, "Down sample 2-times before estimation", "2x"},
{MFX_LOOKAHEAD_DS_4x, "Down sample 4-times before estimation", "4x"},
{0, NULL, NULL}
};
if (!type) {
type = g_enum_register_static ("GstMsdkEncRCLookAheadDownsampling", values);
}
return type;
}

53
sys/msdk/msdk-enums.h Normal file
View file

@ -0,0 +1,53 @@
/* GStreamer Intel MSDK plugin
* Copyright (c) 2018, Intel Corporation
*
* Author: Sreerenj Balachandran <sreerenj.balachandran@intel.com>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. Neither the name of the copyright holder nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef __MSDKENUMS_H__
#define __MSDKENUMS_H__
#include "msdk.h"
G_BEGIN_DECLS
#define _MFX_TRELLIS_NONE 0
GType
gst_msdkenc_rate_control_get_type (void);
GType
gst_msdkenc_trellis_quantization_get_type (void);
GType
gst_msdkenc_rc_lookahead_ds_get_type (void);
G_END_DECLS
#endif