From 589078f2a4390aefc1da25aed2709408a6d9c3ab Mon Sep 17 00:00:00 2001 From: Gwenole Beauchesne Date: Fri, 10 Jan 2014 18:27:20 +0100 Subject: [PATCH] utils: h264: expose levels in public header. Instal header but only expose the H.264 levels in there. The additional helper functions are meant to be private for now. --- gst-libs/gst/vaapi/Makefile.am | 3 +- gst-libs/gst/vaapi/gstvaapidecoder_h264.c | 2 +- gst-libs/gst/vaapi/gstvaapiutils_h264.c | 2 +- gst-libs/gst/vaapi/gstvaapiutils_h264.h | 61 ------------- gst-libs/gst/vaapi/gstvaapiutils_h264_priv.h | 93 ++++++++++++++++++++ 5 files changed, 97 insertions(+), 64 deletions(-) create mode 100644 gst-libs/gst/vaapi/gstvaapiutils_h264_priv.h diff --git a/gst-libs/gst/vaapi/Makefile.am b/gst-libs/gst/vaapi/Makefile.am index 6fc45836fd..f429c07309 100644 --- a/gst-libs/gst/vaapi/Makefile.am +++ b/gst-libs/gst/vaapi/Makefile.am @@ -94,6 +94,7 @@ libgstvaapi_source_h = \ gstvaapisurfacepool.h \ gstvaapisurfaceproxy.h \ gstvaapitypes.h \ + gstvaapiutils_h264.h \ gstvaapivalue.h \ gstvaapivideopool.h \ gstvaapiwindow.h \ @@ -121,7 +122,7 @@ libgstvaapi_source_priv_h = \ gstvaapisurface_priv.h \ gstvaapisurfaceproxy_priv.h \ gstvaapiutils.h \ - gstvaapiutils_h264.h \ + gstvaapiutils_h264_priv.h \ gstvaapiversion.h \ gstvaapivideopool_priv.h \ gstvaapiwindow_priv.h \ diff --git a/gst-libs/gst/vaapi/gstvaapidecoder_h264.c b/gst-libs/gst/vaapi/gstvaapidecoder_h264.c index 8d8efa027a..b523cbccdd 100644 --- a/gst-libs/gst/vaapi/gstvaapidecoder_h264.c +++ b/gst-libs/gst/vaapi/gstvaapidecoder_h264.c @@ -34,7 +34,7 @@ #include "gstvaapidecoder_priv.h" #include "gstvaapidisplay_priv.h" #include "gstvaapiobject_priv.h" -#include "gstvaapiutils_h264.h" +#include "gstvaapiutils_h264_priv.h" #define DEBUG 1 #include "gstvaapidebug.h" diff --git a/gst-libs/gst/vaapi/gstvaapiutils_h264.c b/gst-libs/gst/vaapi/gstvaapiutils_h264.c index 54d8dd7e9a..e78adda596 100644 --- a/gst-libs/gst/vaapi/gstvaapiutils_h264.c +++ b/gst-libs/gst/vaapi/gstvaapiutils_h264.c @@ -22,7 +22,7 @@ #include "sysdeps.h" #include -#include "gstvaapiutils_h264.h" +#include "gstvaapiutils_h264_priv.h" /* Table A-1 - Level limits */ /* *INDENT-OFF* */ diff --git a/gst-libs/gst/vaapi/gstvaapiutils_h264.h b/gst-libs/gst/vaapi/gstvaapiutils_h264.h index cbd7217982..2aee036214 100644 --- a/gst-libs/gst/vaapi/gstvaapiutils_h264.h +++ b/gst-libs/gst/vaapi/gstvaapiutils_h264.h @@ -71,67 +71,6 @@ typedef enum GST_VAAPI_LEVEL_H264_L5_2, } GstVaapiLevelH264; -/** - * GstVaapiH264LevelLimits: - * @level: the #GstVaapiLevelH264 - * @level_idc: the H.264 level_idc value - * @MaxMBPS: the maximum macroblock processing rate (MB/sec) - * @MaxFS: the maximum frame size (MBs) - * @MaxDpbMbs: the maxium decoded picture buffer size (MBs) - * @MaxBR: the maximum video bit rate (kbps) - * - * The data structure that describes the limits of an H.264 level. - */ -typedef struct -{ - GstVaapiLevelH264 level; - guint8 level_idc; - guint32 MaxMBPS; - guint32 MaxFS; - guint32 MaxDpbMbs; - guint32 MaxBR; -} GstVaapiH264LevelLimits; - -/* Returns GstVaapiProfile from H.264 profile_idc value */ -G_GNUC_INTERNAL -GstVaapiProfile -gst_vaapi_utils_h264_get_profile (guint8 profile_idc); - -/* Returns H.264 profile_idc value from GstVaapiProfile */ -G_GNUC_INTERNAL -guint8 -gst_vaapi_utils_h264_get_profile_idc (GstVaapiProfile profile); - -/* Returns GstVaapiLevelH264 from H.264 level_idc value */ -G_GNUC_INTERNAL -GstVaapiLevelH264 -gst_vaapi_utils_h264_get_level (guint8 level_idc); - -/* Returns H.264 level_idc value from GstVaapiLevelH264 */ -G_GNUC_INTERNAL -guint8 -gst_vaapi_utils_h264_get_level_idc (GstVaapiLevelH264 level); - -/* Returns level limits as specified in Table A-1 of the H.264 standard */ -G_GNUC_INTERNAL -const GstVaapiH264LevelLimits * -gst_vaapi_utils_h264_get_level_limits (GstVaapiLevelH264 level); - -/* Returns the Table A-1 specification */ -G_GNUC_INTERNAL -const GstVaapiH264LevelLimits * -gst_vaapi_utils_h264_get_level_limits_table (guint *out_length_ptr); - -/* Returns GstVaapiChromaType from H.264 chroma_format_idc value */ -G_GNUC_INTERNAL -GstVaapiChromaType -gst_vaapi_utils_h264_get_chroma_type (guint chroma_format_idc); - -/* Returns H.264 chroma_format_idc value from GstVaapiChromaType */ -G_GNUC_INTERNAL -guint -gst_vaapi_utils_h264_get_chroma_format_idc (GstVaapiChromaType chroma_type); - G_END_DECLS #endif /* GST_VAAPI_UTILS_H264_H */ diff --git a/gst-libs/gst/vaapi/gstvaapiutils_h264_priv.h b/gst-libs/gst/vaapi/gstvaapiutils_h264_priv.h new file mode 100644 index 0000000000..1c7db35150 --- /dev/null +++ b/gst-libs/gst/vaapi/gstvaapiutils_h264_priv.h @@ -0,0 +1,93 @@ +/* + * gstvaapiutils_h264_priv.h - H.264 related utilities + * + * Copyright (C) 2011-2013 Intel Corporation + * Author: Gwenole Beauchesne + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA + */ + +#ifndef GST_VAAPI_UTILS_H264_PRIV_H +#define GST_VAAPI_UTILS_H264_PRIV_H + +#include "gstvaapiutils_h264.h" + +G_BEGIN_DECLS + +/** + * GstVaapiH264LevelLimits: + * @level: the #GstVaapiLevelH264 + * @level_idc: the H.264 level_idc value + * @MaxMBPS: the maximum macroblock processing rate (MB/sec) + * @MaxFS: the maximum frame size (MBs) + * @MaxDpbMbs: the maxium decoded picture buffer size (MBs) + * @MaxBR: the maximum video bit rate (kbps) + * + * The data structure that describes the limits of an H.264 level. + */ +typedef struct +{ + GstVaapiLevelH264 level; + guint8 level_idc; + guint32 MaxMBPS; + guint32 MaxFS; + guint32 MaxDpbMbs; + guint32 MaxBR; +} GstVaapiH264LevelLimits; + +/* Returns GstVaapiProfile from H.264 profile_idc value */ +G_GNUC_INTERNAL +GstVaapiProfile +gst_vaapi_utils_h264_get_profile (guint8 profile_idc); + +/* Returns H.264 profile_idc value from GstVaapiProfile */ +G_GNUC_INTERNAL +guint8 +gst_vaapi_utils_h264_get_profile_idc (GstVaapiProfile profile); + +/* Returns GstVaapiLevelH264 from H.264 level_idc value */ +G_GNUC_INTERNAL +GstVaapiLevelH264 +gst_vaapi_utils_h264_get_level (guint8 level_idc); + +/* Returns H.264 level_idc value from GstVaapiLevelH264 */ +G_GNUC_INTERNAL +guint8 +gst_vaapi_utils_h264_get_level_idc (GstVaapiLevelH264 level); + +/* Returns level limits as specified in Table A-1 of the H.264 standard */ +G_GNUC_INTERNAL +const GstVaapiH264LevelLimits * +gst_vaapi_utils_h264_get_level_limits (GstVaapiLevelH264 level); + +/* Returns the Table A-1 specification */ +G_GNUC_INTERNAL +const GstVaapiH264LevelLimits * +gst_vaapi_utils_h264_get_level_limits_table (guint *out_length_ptr); + +/* Returns GstVaapiChromaType from H.264 chroma_format_idc value */ +G_GNUC_INTERNAL +GstVaapiChromaType +gst_vaapi_utils_h264_get_chroma_type (guint chroma_format_idc); + +/* Returns H.264 chroma_format_idc value from GstVaapiChromaType */ +G_GNUC_INTERNAL +guint +gst_vaapi_utils_h264_get_chroma_format_idc (GstVaapiChromaType chroma_type); + +G_END_DECLS + +#endif /* GST_VAAPI_UTILS_H264_PRIV_H */