| Index: third_party/libva/va/va_enc_mpeg2.h
|
| diff --git a/third_party/libva/va/va_enc_mpeg2.h b/third_party/libva/va/va_enc_mpeg2.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..c12c8defc45c6910d93a934d20801ccbe8664818
|
| --- /dev/null
|
| +++ b/third_party/libva/va/va_enc_mpeg2.h
|
| @@ -0,0 +1,287 @@
|
| +/*
|
| + * Copyright (c) 2012 Intel Corporation. All Rights Reserved.
|
| + *
|
| + * Permission is hereby granted, free of charge, to any person obtaining a
|
| + * copy of this software and associated documentation files (the
|
| + * "Software"), to deal in the Software without restriction, including
|
| + * without limitation the rights to use, copy, modify, merge, publish,
|
| + * distribute, sub license, and/or sell copies of the Software, and to
|
| + * permit persons to whom the Software is furnished to do so, subject to
|
| + * the following conditions:
|
| + *
|
| + * The above copyright notice and this permission notice (including the
|
| + * next paragraph) shall be included in all copies or substantial portions
|
| + * of the Software.
|
| + *
|
| + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
| + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
| + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
|
| + * IN NO EVENT SHALL INTEL AND/OR ITS SUPPLIERS BE LIABLE FOR
|
| + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
| + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
| + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
| + */
|
| +
|
| +/**
|
| + * \file va_enc_mpeg2.h
|
| + * \brief The MPEG-2 encoding API
|
| + *
|
| + * This file contains the \ref api_enc_mpeg2 "MPEG-2 encoding API".
|
| + */
|
| +
|
| +#ifndef _VA_ENC_MPEG2_H_
|
| +#define _VA_ENC_MPEG2_H_
|
| +
|
| +#ifdef __cplusplus
|
| +extern "C" {
|
| +#endif
|
| +
|
| +/**
|
| + * \defgroup api_enc_mpeg2 MPEG-2 encoding API
|
| + *
|
| + * @{
|
| + */
|
| +
|
| +/**
|
| + * \brief MPEG-2 Quantization Matrix Buffer
|
| + *
|
| + */
|
| +typedef VAIQMatrixBufferMPEG2 VAQMatrixBufferMPEG2;
|
| +
|
| +/**
|
| + * \brief Packed header types specific to MPEG-2 encoding.
|
| + *
|
| + * Types of packed headers generally used for MPEG-2 encoding.
|
| + */
|
| +typedef enum {
|
| + /**
|
| + * \brief Packed Sequence Parameter Set (SPS).
|
| + *
|
| + */
|
| + VAEncPackedHeaderMPEG2_SPS = VAEncPackedHeaderSequence,
|
| + /**
|
| + * \brief Packed Picture Parameter Set (PPS).
|
| + *
|
| + */
|
| + VAEncPackedHeaderMPEG2_PPS = VAEncPackedHeaderPicture,
|
| + /**
|
| + * \brief Packed slice header.
|
| + *
|
| + */
|
| + VAEncPackedHeaderMPEG2_Slice = VAEncPackedHeaderSlice,
|
| +} VAEncPackedHeaderTypeMPEG2;
|
| +
|
| +/**
|
| + * \brief Sequence parameter for MPEG-2 encoding
|
| + *
|
| + * This structure holds information for \c sequence_header() and
|
| + * sequence_extension().
|
| + *
|
| + * If packed sequence headers mode is used, i.e. if the encoding
|
| + * pipeline was configured with the #VA_ENC_PACKED_HEADER_SEQUENCE
|
| + * flag, then the driver expects two more buffers to be provided to
|
| + * the same \c vaRenderPicture() as this buffer:
|
| + * - a #VAEncPackedHeaderParameterBuffer with type set to
|
| + * VAEncPackedHeaderType::VAEncPackedHeaderSequence ;
|
| + * - a #VAEncPackedHeaderDataBuffer which holds the actual packed
|
| + * header data.
|
| + *
|
| + */
|
| +typedef struct _VAEncSequenceParameterBufferMPEG2 {
|
| + /** \brief Period between I frames. */
|
| + unsigned int intra_period;
|
| + /** \brief Period between I/P frames. */
|
| + unsigned int ip_period;
|
| + /** \brief Picture width.
|
| + *
|
| + * A 14bits unsigned inter, the lower 12bits
|
| + * is horizontal_size_value, and the upper
|
| + * 2bits is \c horizontal_size_extension
|
| + *
|
| + */
|
| + unsigned short picture_width;
|
| + /** \brief Picture height.
|
| + *
|
| + * A 14bits unsigned inter, the lower 12bits
|
| + * is vertical_size_value, and the upper 2bits is
|
| + * vertical_size_size_extension
|
| + *
|
| + */
|
| + unsigned short picture_height;
|
| + /**
|
| + * \brief Initial bitrate set for this sequence in CBR or VBR modes.
|
| + *
|
| + * This field represents the initial bitrate value for this
|
| + * sequence if CBR or VBR mode is used, i.e. if the encoder
|
| + * pipeline was created with a #VAConfigAttribRateControl
|
| + * attribute set to either \ref VA_RC_CBR or \ref VA_RC_VBR.
|
| + *
|
| + * bits_per_second may be derived from bit_rate.
|
| + *
|
| + */
|
| + unsigned int bits_per_second;
|
| + /**
|
| + * \brief Frame rate
|
| + *
|
| + * Derived from frame_rate_value, frame_rate_extension_n and
|
| + * frame_rate_extension_d
|
| + *
|
| + */
|
| + float frame_rate;
|
| + /** \brief Same as the element in sequence_header() */
|
| + unsigned short aspect_ratio_information;
|
| + /** \brief Define the size of VBV */
|
| + unsigned int vbv_buffer_size;
|
| +
|
| + union {
|
| + struct {
|
| + /** \brief Same as the element in Sequence extension() */
|
| + unsigned int profile_and_level_indication : 8;
|
| + /** \brief Same as the element in Sequence extension() */
|
| + unsigned int progressive_sequence : 1;
|
| + /** \brief Same as the element in Sequence extension() */
|
| + unsigned int chroma_format : 2;
|
| + /** \brief Same as the element in Sequence extension() */
|
| + unsigned int low_delay : 1;
|
| + /** \brief Same as the element in Sequence extension() */
|
| + unsigned int frame_rate_extension_n : 2;
|
| + /** \brief Same as the element in Sequence extension() */
|
| + unsigned int frame_rate_extension_d : 5;
|
| + } bits;
|
| + unsigned int value;
|
| + } sequence_extension;
|
| +
|
| + /** \brief Flag to indicate the following GOP header are being updated */
|
| + unsigned int new_gop_header;
|
| +
|
| + union {
|
| + struct {
|
| + /** \brief Time code */
|
| + unsigned int time_code : 25;
|
| + /** \brief Same as the element in GOP header */
|
| + unsigned int closed_gop : 1;
|
| + /** \brief SAme as the element in GOP header */
|
| + unsigned int broken_link : 1;
|
| + } bits;
|
| + unsigned int value;
|
| + } gop_header;
|
| +} VAEncSequenceParameterBufferMPEG2;
|
| +
|
| +/**
|
| + * \brief Picture parameter for MPEG-2 encoding
|
| + *
|
| + * This structure holds information for picture_header() and
|
| + * picture_coding_extension()
|
| + *
|
| + * If packed picture headers mode is used, i.e. if the encoding
|
| + * pipeline was configured with the #VA_ENC_PACKED_HEADER_PICTURE
|
| + * flag, then the driver expects two more buffers to be provided to
|
| + * the same \c vaRenderPicture() as this buffer:
|
| + * - a #VAEncPackedHeaderParameterBuffer with type set to
|
| + * VAEncPackedHeaderType::VAEncPackedHeaderPicture ;
|
| + * - a #VAEncPackedHeaderDataBuffer which holds the actual packed
|
| + * header data.
|
| + *
|
| + */
|
| +typedef struct _VAEncPictureParameterBufferMPEG2 {
|
| + /** \brief Forward reference picture */
|
| + VASurfaceID forward_reference_picture;
|
| + /** \brief Backward reference picture */
|
| + VASurfaceID backward_reference_picture;
|
| + /** \brief Reconstructed(decoded) picture */
|
| + VASurfaceID reconstructed_picture;
|
| + /**
|
| + * \brief Output encoded bitstream.
|
| + *
|
| + * \ref coded_buf has type #VAEncCodedBufferType. It should be
|
| + * large enough to hold the compressed NAL slice and possibly SPS
|
| + * and PPS NAL units.
|
| + */
|
| + VABufferID coded_buf;
|
| + /**
|
| + * \brief Flag to indicate the picture is the last one or not.
|
| + *
|
| + * This fields holds 0 if the picture to be encoded is not
|
| + * the last one in the stream. Otherwise, it
|
| + * is \ref MPEG2_LAST_PICTURE_EOSTREAM.
|
| + */
|
| + unsigned char last_picture;
|
| + /** \brief Picture type */
|
| + VAEncPictureType picture_type;
|
| + /** \brief Same as the element in picture_header() */
|
| + unsigned int temporal_reference;
|
| + /** \brief Same as the element in picture_header() */
|
| + unsigned int vbv_delay;
|
| + /** \brief Same as the element in Picture coding extension */
|
| + unsigned char f_code[2][2];
|
| + union {
|
| + struct {
|
| + /** \brief Same as the element in Picture coding extension */
|
| + unsigned int intra_dc_precision : 2;
|
| + /** \brief Same as the element in Picture coding extension */
|
| + unsigned int picture_structure : 2;
|
| + /** \brief Same as the element in Picture coding extension */
|
| + unsigned int top_field_first : 1;
|
| + /** \brief Same as the element in Picture coding extension */
|
| + unsigned int frame_pred_frame_dct : 1;
|
| + /** \brief Same as the element in Picture coding extension */
|
| + unsigned int concealment_motion_vectors : 1;
|
| + /** \brief Same as the element in Picture coding extension */
|
| + unsigned int q_scale_type : 1;
|
| + /** \brief Same as the element in Picture coding extension */
|
| + unsigned int intra_vlc_format : 1;
|
| + /** \brief Same as the element in Picture coding extension */
|
| + unsigned int alternate_scan : 1;
|
| + /** \brief Same as the element in Picture coding extension */
|
| + unsigned int repeat_first_field : 1;
|
| + /** \brief Same as the element in Picture coding extension */
|
| + unsigned int progressive_frame : 1;
|
| + /** \brief Same as the element in Picture coding extension */
|
| + unsigned int composite_display_flag : 1;
|
| + } bits;
|
| + unsigned int value;
|
| + } picture_coding_extension;
|
| +
|
| + /* \brief Parameters for composite display
|
| + *
|
| + * Valid only when omposite_display_flag is 1
|
| + */
|
| + union {
|
| + struct {
|
| + /** \brief Same as the element in Picture coding extension */
|
| + unsigned int v_axis : 1;
|
| + /** \brief Same as the element in Picture coding extension */
|
| + unsigned int field_sequence : 3;
|
| + /** \brief Same as the element in Picture coding extension */
|
| + unsigned int sub_carrier : 1;
|
| + /** \brief Same as the element in Picture coding extension */
|
| + unsigned int burst_amplitude : 7;
|
| + /** \brief Same as the element in Picture coding extension */
|
| + unsigned int sub_carrier_phase : 8;
|
| + } bits;
|
| + unsigned int value;
|
| + } composite_display;
|
| +} VAEncPictureParameterBufferMPEG2;
|
| +
|
| +/**
|
| + * \brief Slice parameter for MPEG-2 encoding
|
| + *
|
| + */
|
| +typedef struct _VAEncSliceParameterBufferMPEG2 {
|
| + /** \brief Starting MB address for this slice. */
|
| + unsigned int macroblock_address;
|
| + /** \brief Number of macroblocks in this slice. */
|
| + unsigned int num_macroblocks;
|
| + /** \brief Same as the element in slice() */
|
| + int quantiser_scale_code;
|
| + /** \brief Flag to indicate intra slice */
|
| + int is_intra_slice;
|
| +} VAEncSliceParameterBufferMPEG2;
|
| +
|
| +/**@}*/
|
| +
|
| +#ifdef __cplusplus
|
| +}
|
| +#endif
|
| +
|
| +#endif /* _VA_ENC_MPEG2_H_ */
|
|
|