1*54e60f84SAndroid Build Coastguard Worker /* 2*54e60f84SAndroid Build Coastguard Worker * Copyright (c) 2007-2012 Intel Corporation. All Rights Reserved. 3*54e60f84SAndroid Build Coastguard Worker * 4*54e60f84SAndroid Build Coastguard Worker * Permission is hereby granted, free of charge, to any person obtaining a 5*54e60f84SAndroid Build Coastguard Worker * copy of this software and associated documentation files (the 6*54e60f84SAndroid Build Coastguard Worker * "Software"), to deal in the Software without restriction, including 7*54e60f84SAndroid Build Coastguard Worker * without limitation the rights to use, copy, modify, merge, publish, 8*54e60f84SAndroid Build Coastguard Worker * distribute, sub license, and/or sell copies of the Software, and to 9*54e60f84SAndroid Build Coastguard Worker * permit persons to whom the Software is furnished to do so, subject to 10*54e60f84SAndroid Build Coastguard Worker * the following conditions: 11*54e60f84SAndroid Build Coastguard Worker * 12*54e60f84SAndroid Build Coastguard Worker * The above copyright notice and this permission notice (including the 13*54e60f84SAndroid Build Coastguard Worker * next paragraph) shall be included in all copies or substantial portions 14*54e60f84SAndroid Build Coastguard Worker * of the Software. 15*54e60f84SAndroid Build Coastguard Worker * 16*54e60f84SAndroid Build Coastguard Worker * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 17*54e60f84SAndroid Build Coastguard Worker * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18*54e60f84SAndroid Build Coastguard Worker * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 19*54e60f84SAndroid Build Coastguard Worker * IN NO EVENT SHALL INTEL AND/OR ITS SUPPLIERS BE LIABLE FOR 20*54e60f84SAndroid Build Coastguard Worker * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 21*54e60f84SAndroid Build Coastguard Worker * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 22*54e60f84SAndroid Build Coastguard Worker * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23*54e60f84SAndroid Build Coastguard Worker */ 24*54e60f84SAndroid Build Coastguard Worker 25*54e60f84SAndroid Build Coastguard Worker /** 26*54e60f84SAndroid Build Coastguard Worker * \file va_enc_vp8.h 27*54e60f84SAndroid Build Coastguard Worker * \brief VP8 encoding API 28*54e60f84SAndroid Build Coastguard Worker * 29*54e60f84SAndroid Build Coastguard Worker * This file contains the \ref api_enc_vp8 "VP8 encoding API". 30*54e60f84SAndroid Build Coastguard Worker */ 31*54e60f84SAndroid Build Coastguard Worker 32*54e60f84SAndroid Build Coastguard Worker #ifndef VA_ENC_VP8_H 33*54e60f84SAndroid Build Coastguard Worker #define VA_ENC_VP8_H 34*54e60f84SAndroid Build Coastguard Worker 35*54e60f84SAndroid Build Coastguard Worker #ifdef __cplusplus 36*54e60f84SAndroid Build Coastguard Worker extern "C" { 37*54e60f84SAndroid Build Coastguard Worker #endif 38*54e60f84SAndroid Build Coastguard Worker 39*54e60f84SAndroid Build Coastguard Worker /** 40*54e60f84SAndroid Build Coastguard Worker * \defgroup api_enc_vp8 VP8 encoding API 41*54e60f84SAndroid Build Coastguard Worker * 42*54e60f84SAndroid Build Coastguard Worker * @{ 43*54e60f84SAndroid Build Coastguard Worker */ 44*54e60f84SAndroid Build Coastguard Worker 45*54e60f84SAndroid Build Coastguard Worker /** 46*54e60f84SAndroid Build Coastguard Worker * \brief VP8 Encoding Sequence Parameter Buffer Structure 47*54e60f84SAndroid Build Coastguard Worker * 48*54e60f84SAndroid Build Coastguard Worker * This structure conveys sequence level parameters. 49*54e60f84SAndroid Build Coastguard Worker * 50*54e60f84SAndroid Build Coastguard Worker */ 51*54e60f84SAndroid Build Coastguard Worker typedef struct _VAEncSequenceParameterBufferVP8 { 52*54e60f84SAndroid Build Coastguard Worker /* frame width in pixels */ 53*54e60f84SAndroid Build Coastguard Worker uint32_t frame_width; 54*54e60f84SAndroid Build Coastguard Worker /* frame height in pixels */ 55*54e60f84SAndroid Build Coastguard Worker uint32_t frame_height; 56*54e60f84SAndroid Build Coastguard Worker /* horizontal scale */ 57*54e60f84SAndroid Build Coastguard Worker uint32_t frame_width_scale; 58*54e60f84SAndroid Build Coastguard Worker /* vertical scale */ 59*54e60f84SAndroid Build Coastguard Worker uint32_t frame_height_scale; 60*54e60f84SAndroid Build Coastguard Worker 61*54e60f84SAndroid Build Coastguard Worker /* whether to enable error resilience features */ 62*54e60f84SAndroid Build Coastguard Worker uint32_t error_resilient; 63*54e60f84SAndroid Build Coastguard Worker /* auto keyframe placement, non-zero means enable auto keyframe placement */ 64*54e60f84SAndroid Build Coastguard Worker uint32_t kf_auto; 65*54e60f84SAndroid Build Coastguard Worker /* keyframe minimum interval */ 66*54e60f84SAndroid Build Coastguard Worker uint32_t kf_min_dist; 67*54e60f84SAndroid Build Coastguard Worker /* keyframe maximum interval */ 68*54e60f84SAndroid Build Coastguard Worker uint32_t kf_max_dist; 69*54e60f84SAndroid Build Coastguard Worker 70*54e60f84SAndroid Build Coastguard Worker 71*54e60f84SAndroid Build Coastguard Worker /* RC related fields. RC modes are set with VAConfigAttribRateControl */ 72*54e60f84SAndroid Build Coastguard Worker /* For VP8, CBR implies HRD conformance and VBR implies no HRD conformance */ 73*54e60f84SAndroid Build Coastguard Worker 74*54e60f84SAndroid Build Coastguard Worker /** 75*54e60f84SAndroid Build Coastguard Worker * Initial bitrate set for this sequence in CBR or VBR modes. 76*54e60f84SAndroid Build Coastguard Worker * 77*54e60f84SAndroid Build Coastguard Worker * This field represents the initial bitrate value for this 78*54e60f84SAndroid Build Coastguard Worker * sequence if CBR or VBR mode is used, i.e. if the encoder 79*54e60f84SAndroid Build Coastguard Worker * pipeline was created with a #VAConfigAttribRateControl 80*54e60f84SAndroid Build Coastguard Worker * attribute set to either \ref VA_RC_CBR or \ref VA_RC_VBR. 81*54e60f84SAndroid Build Coastguard Worker * 82*54e60f84SAndroid Build Coastguard Worker * The bitrate can be modified later on through 83*54e60f84SAndroid Build Coastguard Worker * #VAEncMiscParameterRateControl buffers. 84*54e60f84SAndroid Build Coastguard Worker */ 85*54e60f84SAndroid Build Coastguard Worker uint32_t bits_per_second; 86*54e60f84SAndroid Build Coastguard Worker /* Period between I frames. */ 87*54e60f84SAndroid Build Coastguard Worker uint32_t intra_period; 88*54e60f84SAndroid Build Coastguard Worker 89*54e60f84SAndroid Build Coastguard Worker /* reference and reconstructed frame buffers 90*54e60f84SAndroid Build Coastguard Worker * Used for driver auto reference management when configured through 91*54e60f84SAndroid Build Coastguard Worker * VAConfigAttribEncAutoReference. 92*54e60f84SAndroid Build Coastguard Worker */ 93*54e60f84SAndroid Build Coastguard Worker VASurfaceID reference_frames[4]; 94*54e60f84SAndroid Build Coastguard Worker 95*54e60f84SAndroid Build Coastguard Worker /** \brief Reserved bytes for future use, must be zero */ 96*54e60f84SAndroid Build Coastguard Worker uint32_t va_reserved[VA_PADDING_LOW]; 97*54e60f84SAndroid Build Coastguard Worker } VAEncSequenceParameterBufferVP8; 98*54e60f84SAndroid Build Coastguard Worker 99*54e60f84SAndroid Build Coastguard Worker 100*54e60f84SAndroid Build Coastguard Worker /** 101*54e60f84SAndroid Build Coastguard Worker * \brief VP8 Encoding Picture Parameter Buffer Structure 102*54e60f84SAndroid Build Coastguard Worker * 103*54e60f84SAndroid Build Coastguard Worker * This structure conveys picture level parameters. 104*54e60f84SAndroid Build Coastguard Worker * 105*54e60f84SAndroid Build Coastguard Worker */ 106*54e60f84SAndroid Build Coastguard Worker typedef struct _VAEncPictureParameterBufferVP8 { 107*54e60f84SAndroid Build Coastguard Worker /* surface to store reconstructed frame */ 108*54e60f84SAndroid Build Coastguard Worker VASurfaceID reconstructed_frame; 109*54e60f84SAndroid Build Coastguard Worker 110*54e60f84SAndroid Build Coastguard Worker /* 111*54e60f84SAndroid Build Coastguard Worker * surfaces to store reference frames in non auto reference mode 112*54e60f84SAndroid Build Coastguard Worker * VA_INVALID_SURFACE can be used to denote an invalid reference frame. 113*54e60f84SAndroid Build Coastguard Worker */ 114*54e60f84SAndroid Build Coastguard Worker VASurfaceID ref_last_frame; 115*54e60f84SAndroid Build Coastguard Worker VASurfaceID ref_gf_frame; 116*54e60f84SAndroid Build Coastguard Worker VASurfaceID ref_arf_frame; 117*54e60f84SAndroid Build Coastguard Worker 118*54e60f84SAndroid Build Coastguard Worker /* buffer to store coded data */ 119*54e60f84SAndroid Build Coastguard Worker VABufferID coded_buf; 120*54e60f84SAndroid Build Coastguard Worker 121*54e60f84SAndroid Build Coastguard Worker union { 122*54e60f84SAndroid Build Coastguard Worker struct { 123*54e60f84SAndroid Build Coastguard Worker /* force this frame to be a keyframe */ 124*54e60f84SAndroid Build Coastguard Worker uint32_t force_kf : 1; 125*54e60f84SAndroid Build Coastguard Worker /* don't reference the last frame */ 126*54e60f84SAndroid Build Coastguard Worker uint32_t no_ref_last : 1; 127*54e60f84SAndroid Build Coastguard Worker /* don't reference the golden frame */ 128*54e60f84SAndroid Build Coastguard Worker uint32_t no_ref_gf : 1; 129*54e60f84SAndroid Build Coastguard Worker /* don't reference the alternate reference frame */ 130*54e60f84SAndroid Build Coastguard Worker uint32_t no_ref_arf : 1; 131*54e60f84SAndroid Build Coastguard Worker /* The temporal id the frame belongs to. */ 132*54e60f84SAndroid Build Coastguard Worker uint32_t temporal_id : 8; 133*54e60f84SAndroid Build Coastguard Worker /** 134*54e60f84SAndroid Build Coastguard Worker * following two flags indicate the reference order 135*54e60f84SAndroid Build Coastguard Worker * LastRef is specified by 01b; 136*54e60f84SAndroid Build Coastguard Worker * GoldRef is specified by 10b; 137*54e60f84SAndroid Build Coastguard Worker * AltRef is specified by 11b; 138*54e60f84SAndroid Build Coastguard Worker * first_ref specifies the reference frame which is searched first. 139*54e60f84SAndroid Build Coastguard Worker * second_ref specifies the reference frame which is searched second 140*54e60f84SAndroid Build Coastguard Worker * if there is. 141*54e60f84SAndroid Build Coastguard Worker */ 142*54e60f84SAndroid Build Coastguard Worker uint32_t first_ref : 2; 143*54e60f84SAndroid Build Coastguard Worker uint32_t second_ref : 2; 144*54e60f84SAndroid Build Coastguard Worker /** \brief Reserved for future use, must be zero */ 145*54e60f84SAndroid Build Coastguard Worker uint32_t reserved : 16; 146*54e60f84SAndroid Build Coastguard Worker } bits; 147*54e60f84SAndroid Build Coastguard Worker uint32_t value; 148*54e60f84SAndroid Build Coastguard Worker } ref_flags; 149*54e60f84SAndroid Build Coastguard Worker 150*54e60f84SAndroid Build Coastguard Worker union { 151*54e60f84SAndroid Build Coastguard Worker struct { 152*54e60f84SAndroid Build Coastguard Worker /* version */ 153*54e60f84SAndroid Build Coastguard Worker uint32_t frame_type : 1; 154*54e60f84SAndroid Build Coastguard Worker uint32_t version : 3; 155*54e60f84SAndroid Build Coastguard Worker /* show_frame */ 156*54e60f84SAndroid Build Coastguard Worker uint32_t show_frame : 1; 157*54e60f84SAndroid Build Coastguard Worker /* color_space */ 158*54e60f84SAndroid Build Coastguard Worker uint32_t color_space : 1; 159*54e60f84SAndroid Build Coastguard Worker /* 0: bicubic, 1: bilinear, other: none */ 160*54e60f84SAndroid Build Coastguard Worker uint32_t recon_filter_type : 2; 161*54e60f84SAndroid Build Coastguard Worker /* 0: no loop fitler, 1: simple loop filter */ 162*54e60f84SAndroid Build Coastguard Worker uint32_t loop_filter_type : 2; 163*54e60f84SAndroid Build Coastguard Worker /* 0: disabled, 1: normal, 2: simple */ 164*54e60f84SAndroid Build Coastguard Worker uint32_t auto_partitions : 1; 165*54e60f84SAndroid Build Coastguard Worker /* same as log2_nbr_of_dct_partitions in frame header syntax */ 166*54e60f84SAndroid Build Coastguard Worker uint32_t num_token_partitions : 2; 167*54e60f84SAndroid Build Coastguard Worker 168*54e60f84SAndroid Build Coastguard Worker /** 169*54e60f84SAndroid Build Coastguard Worker * The following fields correspond to the same VP8 syntax elements 170*54e60f84SAndroid Build Coastguard Worker * in the frame header. 171*54e60f84SAndroid Build Coastguard Worker */ 172*54e60f84SAndroid Build Coastguard Worker /** 173*54e60f84SAndroid Build Coastguard Worker * 0: clamping of reconstruction pixels is disabled, 174*54e60f84SAndroid Build Coastguard Worker * 1: clamping enabled. 175*54e60f84SAndroid Build Coastguard Worker */ 176*54e60f84SAndroid Build Coastguard Worker uint32_t clamping_type : 1; 177*54e60f84SAndroid Build Coastguard Worker /* indicate segmentation is enabled for the current frame. */ 178*54e60f84SAndroid Build Coastguard Worker uint32_t segmentation_enabled : 1; 179*54e60f84SAndroid Build Coastguard Worker /** 180*54e60f84SAndroid Build Coastguard Worker * Determines if the MB segmentation map is updated in the current 181*54e60f84SAndroid Build Coastguard Worker * frame. 182*54e60f84SAndroid Build Coastguard Worker */ 183*54e60f84SAndroid Build Coastguard Worker uint32_t update_mb_segmentation_map : 1; 184*54e60f84SAndroid Build Coastguard Worker /** 185*54e60f84SAndroid Build Coastguard Worker * Indicates if the segment feature data is updated in the current 186*54e60f84SAndroid Build Coastguard Worker * frame. 187*54e60f84SAndroid Build Coastguard Worker */ 188*54e60f84SAndroid Build Coastguard Worker uint32_t update_segment_feature_data : 1; 189*54e60f84SAndroid Build Coastguard Worker /** 190*54e60f84SAndroid Build Coastguard Worker * indicates if the MB level loop filter adjustment is enabled for 191*54e60f84SAndroid Build Coastguard Worker * the current frame (0 off, 1 on). 192*54e60f84SAndroid Build Coastguard Worker */ 193*54e60f84SAndroid Build Coastguard Worker uint32_t loop_filter_adj_enable : 1; 194*54e60f84SAndroid Build Coastguard Worker /** 195*54e60f84SAndroid Build Coastguard Worker * Determines whether updated token probabilities are used only for 196*54e60f84SAndroid Build Coastguard Worker * this frame or until further update. 197*54e60f84SAndroid Build Coastguard Worker * It may be used by application to enable error resilient mode. 198*54e60f84SAndroid Build Coastguard Worker * In this mode probability updates are allowed only at Key Frames. 199*54e60f84SAndroid Build Coastguard Worker */ 200*54e60f84SAndroid Build Coastguard Worker uint32_t refresh_entropy_probs : 1; 201*54e60f84SAndroid Build Coastguard Worker /** 202*54e60f84SAndroid Build Coastguard Worker * Determines if the current decoded frame refreshes the golden frame. 203*54e60f84SAndroid Build Coastguard Worker */ 204*54e60f84SAndroid Build Coastguard Worker uint32_t refresh_golden_frame : 1; 205*54e60f84SAndroid Build Coastguard Worker /** 206*54e60f84SAndroid Build Coastguard Worker * Determines if the current decoded frame refreshes the alternate 207*54e60f84SAndroid Build Coastguard Worker * reference frame. 208*54e60f84SAndroid Build Coastguard Worker */ 209*54e60f84SAndroid Build Coastguard Worker uint32_t refresh_alternate_frame : 1; 210*54e60f84SAndroid Build Coastguard Worker /** 211*54e60f84SAndroid Build Coastguard Worker * Determines if the current decoded frame refreshes the last frame 212*54e60f84SAndroid Build Coastguard Worker * reference buffer. 213*54e60f84SAndroid Build Coastguard Worker */ 214*54e60f84SAndroid Build Coastguard Worker uint32_t refresh_last : 1; 215*54e60f84SAndroid Build Coastguard Worker /** 216*54e60f84SAndroid Build Coastguard Worker * Determines if the golden reference is replaced by another reference. 217*54e60f84SAndroid Build Coastguard Worker */ 218*54e60f84SAndroid Build Coastguard Worker uint32_t copy_buffer_to_golden : 2; 219*54e60f84SAndroid Build Coastguard Worker /** 220*54e60f84SAndroid Build Coastguard Worker * Determines if the alternate reference is replaced by another reference. 221*54e60f84SAndroid Build Coastguard Worker */ 222*54e60f84SAndroid Build Coastguard Worker uint32_t copy_buffer_to_alternate : 2; 223*54e60f84SAndroid Build Coastguard Worker /** 224*54e60f84SAndroid Build Coastguard Worker * Controls the sign of motion vectors when the golden frame is referenced. 225*54e60f84SAndroid Build Coastguard Worker */ 226*54e60f84SAndroid Build Coastguard Worker uint32_t sign_bias_golden : 1; 227*54e60f84SAndroid Build Coastguard Worker /** 228*54e60f84SAndroid Build Coastguard Worker * Controls the sign of motion vectors when the alternate frame is 229*54e60f84SAndroid Build Coastguard Worker * referenced. 230*54e60f84SAndroid Build Coastguard Worker */ 231*54e60f84SAndroid Build Coastguard Worker uint32_t sign_bias_alternate : 1; 232*54e60f84SAndroid Build Coastguard Worker /** 233*54e60f84SAndroid Build Coastguard Worker * Enables or disables the skipping of macroblocks containing no 234*54e60f84SAndroid Build Coastguard Worker * non-zero coefficients. 235*54e60f84SAndroid Build Coastguard Worker */ 236*54e60f84SAndroid Build Coastguard Worker uint32_t mb_no_coeff_skip : 1; 237*54e60f84SAndroid Build Coastguard Worker /** 238*54e60f84SAndroid Build Coastguard Worker * Enforces unconditional per-MB loop filter delta update setting frame 239*54e60f84SAndroid Build Coastguard Worker * header flags mode_ref_lf_delta_update, all mb_mode_delta_update_flag[4], 240*54e60f84SAndroid Build Coastguard Worker * and all ref_frame_delta_update_flag[4] to 1. 241*54e60f84SAndroid Build Coastguard Worker * Since loop filter deltas are not automatically refreshed to default 242*54e60f84SAndroid Build Coastguard Worker * values at key frames, dropped frame with delta update may prevent 243*54e60f84SAndroid Build Coastguard Worker * correct decoding from the next key frame. 244*54e60f84SAndroid Build Coastguard Worker * Encoder application is advised to set this flag to 1 at key frames. 245*54e60f84SAndroid Build Coastguard Worker */ 246*54e60f84SAndroid Build Coastguard Worker uint32_t forced_lf_adjustment : 1; 247*54e60f84SAndroid Build Coastguard Worker uint32_t reserved : 2; 248*54e60f84SAndroid Build Coastguard Worker } bits; 249*54e60f84SAndroid Build Coastguard Worker uint32_t value; 250*54e60f84SAndroid Build Coastguard Worker } pic_flags; 251*54e60f84SAndroid Build Coastguard Worker 252*54e60f84SAndroid Build Coastguard Worker /** 253*54e60f84SAndroid Build Coastguard Worker * Contains a list of 4 loop filter level values (updated value if applicable) 254*54e60f84SAndroid Build Coastguard Worker * controlling the deblocking filter strength. Each entry represents a segment. 255*54e60f84SAndroid Build Coastguard Worker * When segmentation is disabled, use entry 0. 256*54e60f84SAndroid Build Coastguard Worker * When loop_filter_level is 0, loop filter shall be disabled. 257*54e60f84SAndroid Build Coastguard Worker */ 258*54e60f84SAndroid Build Coastguard Worker int8_t loop_filter_level[4]; 259*54e60f84SAndroid Build Coastguard Worker 260*54e60f84SAndroid Build Coastguard Worker /** 261*54e60f84SAndroid Build Coastguard Worker * Contains a list of 4 delta values for reference frame based MB-level 262*54e60f84SAndroid Build Coastguard Worker * loop filter adjustment. 263*54e60f84SAndroid Build Coastguard Worker * If no update, then set to 0. 264*54e60f84SAndroid Build Coastguard Worker */ 265*54e60f84SAndroid Build Coastguard Worker int8_t ref_lf_delta[4]; 266*54e60f84SAndroid Build Coastguard Worker 267*54e60f84SAndroid Build Coastguard Worker /** 268*54e60f84SAndroid Build Coastguard Worker * Contains a list of 4 delta values for coding mode based MB-level loop 269*54e60f84SAndroid Build Coastguard Worker * filter adjustment. 270*54e60f84SAndroid Build Coastguard Worker * If no update, then set to 0. 271*54e60f84SAndroid Build Coastguard Worker */ 272*54e60f84SAndroid Build Coastguard Worker int8_t mode_lf_delta[4]; 273*54e60f84SAndroid Build Coastguard Worker 274*54e60f84SAndroid Build Coastguard Worker /** 275*54e60f84SAndroid Build Coastguard Worker * Controls the deblocking filter sensitivity. 276*54e60f84SAndroid Build Coastguard Worker * Corresponds to the same VP8 syntax element in frame header. 277*54e60f84SAndroid Build Coastguard Worker */ 278*54e60f84SAndroid Build Coastguard Worker uint8_t sharpness_level; 279*54e60f84SAndroid Build Coastguard Worker 280*54e60f84SAndroid Build Coastguard Worker /** 281*54e60f84SAndroid Build Coastguard Worker * Application supplied maximum clamp value for Qindex used in quantization. 282*54e60f84SAndroid Build Coastguard Worker * Qindex will not be allowed to exceed this value. 283*54e60f84SAndroid Build Coastguard Worker * It has a valid range [0..127] inclusive. 284*54e60f84SAndroid Build Coastguard Worker */ 285*54e60f84SAndroid Build Coastguard Worker uint8_t clamp_qindex_high; 286*54e60f84SAndroid Build Coastguard Worker 287*54e60f84SAndroid Build Coastguard Worker /** 288*54e60f84SAndroid Build Coastguard Worker * Application supplied minimum clamp value for Qindex used in quantization. 289*54e60f84SAndroid Build Coastguard Worker * Qindex will not be allowed to be lower than this value. 290*54e60f84SAndroid Build Coastguard Worker * It has a valid range [0..127] inclusive. 291*54e60f84SAndroid Build Coastguard Worker * Condition clamp_qindex_low <= clamp_qindex_high must be guaranteed, 292*54e60f84SAndroid Build Coastguard Worker * otherwise they are ignored. 293*54e60f84SAndroid Build Coastguard Worker */ 294*54e60f84SAndroid Build Coastguard Worker uint8_t clamp_qindex_low; 295*54e60f84SAndroid Build Coastguard Worker 296*54e60f84SAndroid Build Coastguard Worker /** \brief Reserved bytes for future use, must be zero */ 297*54e60f84SAndroid Build Coastguard Worker uint32_t va_reserved[VA_PADDING_LOW]; 298*54e60f84SAndroid Build Coastguard Worker } VAEncPictureParameterBufferVP8; 299*54e60f84SAndroid Build Coastguard Worker 300*54e60f84SAndroid Build Coastguard Worker 301*54e60f84SAndroid Build Coastguard Worker /** 302*54e60f84SAndroid Build Coastguard Worker * \brief VP8 MB Segmentation ID Buffer 303*54e60f84SAndroid Build Coastguard Worker * 304*54e60f84SAndroid Build Coastguard Worker * application provides buffer containing the initial segmentation id for each 305*54e60f84SAndroid Build Coastguard Worker * MB, in raster scan order. Rate control may reassign it. 306*54e60f84SAndroid Build Coastguard Worker * For an 640x480 video, the buffer has 1200 entries. 307*54e60f84SAndroid Build Coastguard Worker * the value of each entry should be in the range [0..3], inclusive. 308*54e60f84SAndroid Build Coastguard Worker * If segmentation is not enabled, application does not need to provide it. 309*54e60f84SAndroid Build Coastguard Worker */ 310*54e60f84SAndroid Build Coastguard Worker typedef struct _VAEncMBMapBufferVP8 { 311*54e60f84SAndroid Build Coastguard Worker /** 312*54e60f84SAndroid Build Coastguard Worker * number of MBs in the frame. 313*54e60f84SAndroid Build Coastguard Worker * It is also the number of entries of mb_segment_id[]; 314*54e60f84SAndroid Build Coastguard Worker */ 315*54e60f84SAndroid Build Coastguard Worker uint32_t num_mbs; 316*54e60f84SAndroid Build Coastguard Worker /** 317*54e60f84SAndroid Build Coastguard Worker * per MB Segmentation ID Buffer 318*54e60f84SAndroid Build Coastguard Worker */ 319*54e60f84SAndroid Build Coastguard Worker uint8_t *mb_segment_id; 320*54e60f84SAndroid Build Coastguard Worker 321*54e60f84SAndroid Build Coastguard Worker /** \brief Reserved bytes for future use, must be zero */ 322*54e60f84SAndroid Build Coastguard Worker uint32_t va_reserved[VA_PADDING_LOW]; 323*54e60f84SAndroid Build Coastguard Worker } VAEncMBMapBufferVP8; 324*54e60f84SAndroid Build Coastguard Worker 325*54e60f84SAndroid Build Coastguard Worker 326*54e60f84SAndroid Build Coastguard Worker /** 327*54e60f84SAndroid Build Coastguard Worker * \brief VP8 Quantization Matrix Buffer Structure 328*54e60f84SAndroid Build Coastguard Worker * 329*54e60f84SAndroid Build Coastguard Worker * Contains quantization index for yac(0-3) for each segment and quantization 330*54e60f84SAndroid Build Coastguard Worker * index deltas, ydc(0), y2dc(1), y2ac(2), uvdc(3), uvac(4) that are applied 331*54e60f84SAndroid Build Coastguard Worker * to all segments. When segmentation is disabled, only quantization_index[0] 332*54e60f84SAndroid Build Coastguard Worker * will be used. This structure is sent once per frame. 333*54e60f84SAndroid Build Coastguard Worker */ 334*54e60f84SAndroid Build Coastguard Worker typedef struct _VAQMatrixBufferVP8 { 335*54e60f84SAndroid Build Coastguard Worker uint16_t quantization_index[4]; 336*54e60f84SAndroid Build Coastguard Worker int16_t quantization_index_delta[5]; 337*54e60f84SAndroid Build Coastguard Worker 338*54e60f84SAndroid Build Coastguard Worker /** \brief Reserved bytes for future use, must be zero */ 339*54e60f84SAndroid Build Coastguard Worker uint32_t va_reserved[VA_PADDING_LOW]; 340*54e60f84SAndroid Build Coastguard Worker } VAQMatrixBufferVP8; 341*54e60f84SAndroid Build Coastguard Worker 342*54e60f84SAndroid Build Coastguard Worker 343*54e60f84SAndroid Build Coastguard Worker 344*54e60f84SAndroid Build Coastguard Worker /**@}*/ 345*54e60f84SAndroid Build Coastguard Worker 346*54e60f84SAndroid Build Coastguard Worker #ifdef __cplusplus 347*54e60f84SAndroid Build Coastguard Worker } 348*54e60f84SAndroid Build Coastguard Worker #endif 349*54e60f84SAndroid Build Coastguard Worker 350*54e60f84SAndroid Build Coastguard Worker #endif /* VA_ENC_VP8_H */ 351