gstreamer/gst-libs/gst/vaapi/gstvaapiencoder_h264_priv.h
Gwenole Beauchesne b59a5572af encoder: h264: derive profile and level from active coding tools.
Automatically derive the minimum profile and level to be used for
encoding, based on the activated coding tools. The encoder will
be trying to generate a bitstream that has the best chances to be
decoded on most platforms by default.

Also change the default profile to "constrained-baseline" so that
to ensure maximum compatibility when the stream is decoded.

https://bugzilla.gnome.org/show_bug.cgi?id=719691
2014-01-13 17:31:55 +01:00

79 lines
2 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 level_idc;
guint32 idr_period;
guint32 init_qp;
guint32 min_qp;
guint32 num_slices;
guint32 num_bframes;
guint32 mb_width;
guint32 mb_height;
/* 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 */