mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-10 11:29:55 +00:00
bdf91aa765
Allow user to precise the largest profile to use for encoding due to target decoder constraints. For instance, if CABAC entropy coding mode is requested by "constrained-baseline" profile only is desired, then an error is returned during codec configuration. Also make sure that the suitable profile we derived actually matches what the HW can cope with. https://bugzilla.gnome.org/show_bug.cgi?id=719694
83 lines
2.1 KiB
C
83 lines
2.1 KiB
C
/*
|
|
* gstvaapiencoder_h264_priv.h - H.264 encoder (private definitions)
|
|
*
|
|
* Copyright (C) 2013 Intel Corporation
|
|
*
|
|
* 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_ENCODER_H264_PRIV_H
|
|
#define GST_VAAPI_ENCODER_H264_PRIV_H
|
|
|
|
#include "gstvaapiencoder_priv.h"
|
|
#include "gstvaapiutils_h264.h"
|
|
|
|
G_BEGIN_DECLS
|
|
|
|
#define GST_VAAPI_ENCODER_H264_CAST(encoder) \
|
|
((GstVaapiEncoderH264 *)(encoder))
|
|
|
|
#define GST_VAAPI_ENCODER_H264_MAX_IDR_PERIOD 512
|
|
|
|
struct _GstVaapiEncoderH264
|
|
{
|
|
GstVaapiEncoder parent_instance;
|
|
|
|
GstVaapiProfile profile;
|
|
GstVaapiLevelH264 level;
|
|
guint8 profile_idc;
|
|
guint8 max_profile_idc;
|
|
guint8 hw_max_profile_idc;
|
|
guint8 level_idc;
|
|
guint32 idr_period;
|
|
guint32 init_qp;
|
|
guint32 min_qp;
|
|
guint32 num_slices;
|
|
guint32 num_bframes;
|
|
guint32 mb_width;
|
|
guint32 mb_height;
|
|
gboolean use_cabac;
|
|
gboolean use_dct8x8;
|
|
|
|
/* re-ordering */
|
|
GQueue reorder_frame_list;
|
|
guint reorder_state;
|
|
guint frame_index;
|
|
guint cur_frame_num;
|
|
guint cur_present_index;
|
|
GstClockTime cts_offset;
|
|
|
|
/* reference list */
|
|
GQueue ref_list;
|
|
guint max_ref_frames;
|
|
/* max reflist count */
|
|
guint max_reflist0_count;
|
|
guint max_reflist1_count;
|
|
|
|
/* frame, poc */
|
|
guint32 max_frame_num;
|
|
guint32 log2_max_frame_num;
|
|
guint32 max_pic_order_cnt;
|
|
guint32 log2_max_pic_order_cnt;
|
|
guint32 idr_num;
|
|
|
|
GstBuffer *sps_data;
|
|
GstBuffer *pps_data;
|
|
};
|
|
|
|
G_END_DECLS
|
|
|
|
#endif /* GST_VAAPI_ENCODER_H264_PRIV_H */
|