1fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton/************************************************************************** 2d18bd04dde2aca78afd8cec4d9dc4b2fd172ad38Younes Manton * 3fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton * Copyright 2009 Younes Manton. 4fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton * All Rights Reserved. 5d18bd04dde2aca78afd8cec4d9dc4b2fd172ad38Younes Manton * 6fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton * Permission is hereby granted, free of charge, to any person obtaining a 7fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton * copy of this software and associated documentation files (the 8fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton * "Software"), to deal in the Software without restriction, including 9fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton * without limitation the rights to use, copy, modify, merge, publish, 10fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton * distribute, sub license, and/or sell copies of the Software, and to 11fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton * permit persons to whom the Software is furnished to do so, subject to 12fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton * the following conditions: 13d18bd04dde2aca78afd8cec4d9dc4b2fd172ad38Younes Manton * 14fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton * The above copyright notice and this permission notice (including the 15fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton * next paragraph) shall be included in all copies or substantial portions 16fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton * of the Software. 17d18bd04dde2aca78afd8cec4d9dc4b2fd172ad38Younes Manton * 18fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 21fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR 22fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25d18bd04dde2aca78afd8cec4d9dc4b2fd172ad38Younes Manton * 26fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton **************************************************************************/ 27fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton 28f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Manton#ifndef PIPE_VIDEO_STATE_H 29f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Manton#define PIPE_VIDEO_STATE_H 30f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Manton 3151ecb33c6b218af8e7c401a701b51f52331a1782Kai Wasserbäch#include "pipe/p_defines.h" 3251ecb33c6b218af8e7c401a701b51f52331a1782Kai Wasserbäch#include "pipe/p_format.h" 3351ecb33c6b218af8e7c401a701b51f52331a1782Kai Wasserbäch#include "pipe/p_state.h" 3451ecb33c6b218af8e7c401a701b51f52331a1782Kai Wasserbäch#include "pipe/p_screen.h" 3551ecb33c6b218af8e7c401a701b51f52331a1782Kai Wasserbäch#include "util/u_inlines.h" 36f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Manton 37f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Manton#ifdef __cplusplus 38f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Mantonextern "C" { 39f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Manton#endif 40f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Manton 41835ea8480f656ba4076e30813eb8c85965017266Christian König/* 429765dede7556f7ccfef1d90bab14a2bfa03384e5Christian König * see table 6-12 in the spec 439765dede7556f7ccfef1d90bab14a2bfa03384e5Christian König */ 449765dede7556f7ccfef1d90bab14a2bfa03384e5Christian Königenum pipe_mpeg12_picture_coding_type 459765dede7556f7ccfef1d90bab14a2bfa03384e5Christian König{ 469765dede7556f7ccfef1d90bab14a2bfa03384e5Christian König PIPE_MPEG12_PICTURE_CODING_TYPE_I = 0x01, 479765dede7556f7ccfef1d90bab14a2bfa03384e5Christian König PIPE_MPEG12_PICTURE_CODING_TYPE_P = 0x02, 489765dede7556f7ccfef1d90bab14a2bfa03384e5Christian König PIPE_MPEG12_PICTURE_CODING_TYPE_B = 0x03, 499765dede7556f7ccfef1d90bab14a2bfa03384e5Christian König PIPE_MPEG12_PICTURE_CODING_TYPE_D = 0x04 509765dede7556f7ccfef1d90bab14a2bfa03384e5Christian König}; 519765dede7556f7ccfef1d90bab14a2bfa03384e5Christian König 529765dede7556f7ccfef1d90bab14a2bfa03384e5Christian König/* 53835ea8480f656ba4076e30813eb8c85965017266Christian König * see table 6-14 in the spec 54835ea8480f656ba4076e30813eb8c85965017266Christian König */ 55835ea8480f656ba4076e30813eb8c85965017266Christian Königenum pipe_mpeg12_picture_structure 56f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Manton{ 57835ea8480f656ba4076e30813eb8c85965017266Christian König PIPE_MPEG12_PICTURE_STRUCTURE_RESERVED = 0x00, 58835ea8480f656ba4076e30813eb8c85965017266Christian König PIPE_MPEG12_PICTURE_STRUCTURE_FIELD_TOP = 0x01, 59835ea8480f656ba4076e30813eb8c85965017266Christian König PIPE_MPEG12_PICTURE_STRUCTURE_FIELD_BOTTOM = 0x02, 60835ea8480f656ba4076e30813eb8c85965017266Christian König PIPE_MPEG12_PICTURE_STRUCTURE_FRAME = 0x03 61f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Manton}; 62f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Manton 63d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König/* 64d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König * flags for macroblock_type, see section 6.3.17.1 in the spec 65d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König */ 66d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian Königenum pipe_mpeg12_macroblock_type 672e6274fc3b123e7de695038054b5cbd20b11559aChristian König{ 68d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König PIPE_MPEG12_MB_TYPE_QUANT = 0x01, 69d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König PIPE_MPEG12_MB_TYPE_MOTION_FORWARD = 0x02, 70d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König PIPE_MPEG12_MB_TYPE_MOTION_BACKWARD = 0x04, 71d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König PIPE_MPEG12_MB_TYPE_PATTERN = 0x08, 72d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König PIPE_MPEG12_MB_TYPE_INTRA = 0x10 732e6274fc3b123e7de695038054b5cbd20b11559aChristian König}; 742e6274fc3b123e7de695038054b5cbd20b11559aChristian König 75d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König/* 76d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König * flags for motion_type, see table 6-17 and 6-18 in the spec 77d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König */ 78d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian Königenum pipe_mpeg12_motion_type 79f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Manton{ 80d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König PIPE_MPEG12_MO_TYPE_RESERVED = 0x00, 81d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König PIPE_MPEG12_MO_TYPE_FIELD = 0x01, 82d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König PIPE_MPEG12_MO_TYPE_FRAME = 0x02, 83d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König PIPE_MPEG12_MO_TYPE_16x8 = 0x02, 84d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König PIPE_MPEG12_MO_TYPE_DUAL_PRIME = 0x03 85f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Manton}; 86f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Manton 87d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König/* 88d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König * see section 6.3.17.1 and table 6-19 in the spec 89d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König */ 90d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian Königenum pipe_mpeg12_dct_type 91b7acf83d523563cde613fe805bd8edaa02f64b53Christian König{ 92d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König PIPE_MPEG12_DCT_TYPE_FRAME = 0, 93d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König PIPE_MPEG12_DCT_TYPE_FIELD = 1 94b7acf83d523563cde613fe805bd8edaa02f64b53Christian König}; 95b7acf83d523563cde613fe805bd8edaa02f64b53Christian König 96d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian Königenum pipe_mpeg12_field_select 97bac8760f7f3523e9b6d5b2fd7cd46091d4883f5eChristian König{ 98d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König PIPE_MPEG12_FS_FIRST_FORWARD = 0x01, 99d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König PIPE_MPEG12_FS_FIRST_BACKWARD = 0x02, 100d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König PIPE_MPEG12_FS_SECOND_FORWARD = 0x04, 101d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König PIPE_MPEG12_FS_SECOND_BACKWARD = 0x08 102bac8760f7f3523e9b6d5b2fd7cd46091d4883f5eChristian König}; 103bac8760f7f3523e9b6d5b2fd7cd46091d4883f5eChristian König 104d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian Königstruct pipe_picture_desc 105f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Manton{ 106d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König enum pipe_video_profile profile; 107f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Manton}; 108f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Manton 1092e62b30826679e9d5e1a783dc19baabec4fc8dfaChristian Königstruct pipe_quant_matrix 1102e62b30826679e9d5e1a783dc19baabec4fc8dfaChristian König{ 1112e62b30826679e9d5e1a783dc19baabec4fc8dfaChristian König enum pipe_video_codec codec; 1122e62b30826679e9d5e1a783dc19baabec4fc8dfaChristian König}; 1132e62b30826679e9d5e1a783dc19baabec4fc8dfaChristian König 114d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian Königstruct pipe_macroblock 115f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Manton{ 116d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König enum pipe_video_codec codec; 117f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Manton}; 118f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Manton 119f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Mantonstruct pipe_mpeg12_picture_desc 120f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Manton{ 121f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Manton struct pipe_picture_desc base; 122f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Manton 123f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Manton unsigned picture_coding_type; 124f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Manton unsigned picture_structure; 125f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Manton unsigned frame_pred_frame_dct; 126f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Manton unsigned q_scale_type; 127f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Manton unsigned alternate_scan; 128c888fe027c338f337123de4da2de1ac73b0f7587Christian König unsigned intra_vlc_format; 129c888fe027c338f337123de4da2de1ac73b0f7587Christian König unsigned concealment_motion_vectors; 1302e62b30826679e9d5e1a783dc19baabec4fc8dfaChristian König unsigned intra_dc_precision; 131c888fe027c338f337123de4da2de1ac73b0f7587Christian König unsigned f_code[2][2]; 13245bb4b79f6ddd1fdb447632c88333866585fb80cMaarten Lankhorst unsigned top_field_first; 13345bb4b79f6ddd1fdb447632c88333866585fb80cMaarten Lankhorst unsigned full_pel_forward_vector; 13445bb4b79f6ddd1fdb447632c88333866585fb80cMaarten Lankhorst unsigned full_pel_backward_vector; 135c4d47f065ae2a015a9d2e9a060d71e04d5935c2bMaarten Lankhorst unsigned num_slices; 1362e62b30826679e9d5e1a783dc19baabec4fc8dfaChristian König 1372e62b30826679e9d5e1a783dc19baabec4fc8dfaChristian König const uint8_t *intra_matrix; 1382e62b30826679e9d5e1a783dc19baabec4fc8dfaChristian König const uint8_t *non_intra_matrix; 1398ea416f35de0c664ef47b71841756758f22d7faaChristian König 1408ea416f35de0c664ef47b71841756758f22d7faaChristian König struct pipe_video_buffer *ref[2]; 1412e62b30826679e9d5e1a783dc19baabec4fc8dfaChristian König}; 1422e62b30826679e9d5e1a783dc19baabec4fc8dfaChristian König 143d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian Königstruct pipe_mpeg12_macroblock 144d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König{ 145d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König struct pipe_macroblock base; 146d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König 147d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König /* see section 6.3.17 in the spec */ 148d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König unsigned short x, y; 149d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König 150d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König /* see section 6.3.17.1 in the spec */ 151d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König unsigned char macroblock_type; 152d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König 153d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König union { 154d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König struct { 155d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König /* see table 6-17 in the spec */ 156d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König unsigned int frame_motion_type:2; 157d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König 158d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König /* see table 6-18 in the spec */ 159d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König unsigned int field_motion_type:2; 160d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König 161d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König /* see table 6-19 in the spec */ 162d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König unsigned int dct_type:1; 163d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König } bits; 164d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König unsigned int value; 165d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König } macroblock_modes; 166d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König 167d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König /* see section 6.3.17.2 in the spec */ 168d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König unsigned char motion_vertical_field_select; 169d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König 170d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König /* see Table 7-7 in the spec */ 171d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König short PMV[2][2][2]; 172d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König 173d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König /* see figure 6.10-12 in the spec */ 174d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König unsigned short coded_block_pattern; 175d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König 176d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König /* see figure 6.10-12 in the spec */ 177d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König short *blocks; 178d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König 179d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König /* Number of skipped macroblocks after this macroblock */ 180d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König unsigned short num_skipped_macroblocks; 181d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König}; 182d3770d6229d95e9beb67358ae2b2c8824ed3ae58Christian König 18312bf452945ae64da69f474298758f9a7c8b94af5Maarten Lankhorststruct pipe_mpeg4_picture_desc 18412bf452945ae64da69f474298758f9a7c8b94af5Maarten Lankhorst{ 18512bf452945ae64da69f474298758f9a7c8b94af5Maarten Lankhorst struct pipe_picture_desc base; 1868ea416f35de0c664ef47b71841756758f22d7faaChristian König 18712bf452945ae64da69f474298758f9a7c8b94af5Maarten Lankhorst int32_t trd[2]; 18812bf452945ae64da69f474298758f9a7c8b94af5Maarten Lankhorst int32_t trb[2]; 18912bf452945ae64da69f474298758f9a7c8b94af5Maarten Lankhorst uint16_t vop_time_increment_resolution; 19012bf452945ae64da69f474298758f9a7c8b94af5Maarten Lankhorst uint8_t vop_coding_type; 19112bf452945ae64da69f474298758f9a7c8b94af5Maarten Lankhorst uint8_t vop_fcode_forward; 19212bf452945ae64da69f474298758f9a7c8b94af5Maarten Lankhorst uint8_t vop_fcode_backward; 19312bf452945ae64da69f474298758f9a7c8b94af5Maarten Lankhorst uint8_t resync_marker_disable; 19412bf452945ae64da69f474298758f9a7c8b94af5Maarten Lankhorst uint8_t interlaced; 19512bf452945ae64da69f474298758f9a7c8b94af5Maarten Lankhorst uint8_t quant_type; 19612bf452945ae64da69f474298758f9a7c8b94af5Maarten Lankhorst uint8_t quarter_sample; 19712bf452945ae64da69f474298758f9a7c8b94af5Maarten Lankhorst uint8_t short_video_header; 19812bf452945ae64da69f474298758f9a7c8b94af5Maarten Lankhorst uint8_t rounding_control; 19912bf452945ae64da69f474298758f9a7c8b94af5Maarten Lankhorst uint8_t alternate_vertical_scan_flag; 20012bf452945ae64da69f474298758f9a7c8b94af5Maarten Lankhorst uint8_t top_field_first; 20112bf452945ae64da69f474298758f9a7c8b94af5Maarten Lankhorst 20212bf452945ae64da69f474298758f9a7c8b94af5Maarten Lankhorst const uint8_t *intra_matrix; 20312bf452945ae64da69f474298758f9a7c8b94af5Maarten Lankhorst const uint8_t *non_intra_matrix; 2048ea416f35de0c664ef47b71841756758f22d7faaChristian König 2058ea416f35de0c664ef47b71841756758f22d7faaChristian König struct pipe_video_buffer *ref[2]; 20612bf452945ae64da69f474298758f9a7c8b94af5Maarten Lankhorst}; 20712bf452945ae64da69f474298758f9a7c8b94af5Maarten Lankhorst 208eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorststruct pipe_vc1_picture_desc 209eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst{ 210eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst struct pipe_picture_desc base; 2118ea416f35de0c664ef47b71841756758f22d7faaChristian König 212eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst uint32_t slice_count; 213eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst uint8_t picture_type; 214eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst uint8_t frame_coding_mode; 215eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst uint8_t postprocflag; 216eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst uint8_t pulldown; 217eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst uint8_t interlace; 218eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst uint8_t tfcntrflag; 219eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst uint8_t finterpflag; 220eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst uint8_t psf; 221eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst uint8_t dquant; 222eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst uint8_t panscan_flag; 223eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst uint8_t refdist_flag; 224eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst uint8_t quantizer; 225eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst uint8_t extended_mv; 226eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst uint8_t extended_dmv; 227eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst uint8_t overlap; 228eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst uint8_t vstransform; 229eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst uint8_t loopfilter; 230eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst uint8_t fastuvmc; 231eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst uint8_t range_mapy_flag; 232eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst uint8_t range_mapy; 233eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst uint8_t range_mapuv_flag; 234eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst uint8_t range_mapuv; 235eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst uint8_t multires; 236eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst uint8_t syncmarker; 237eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst uint8_t rangered; 238eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst uint8_t maxbframes; 239eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst uint8_t deblockEnable; 240eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst uint8_t pquant; 2418ea416f35de0c664ef47b71841756758f22d7faaChristian König 2428ea416f35de0c664ef47b71841756758f22d7faaChristian König struct pipe_video_buffer *ref[2]; 243eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst}; 244eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst 245d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian Königstruct pipe_h264_picture_desc 246d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König{ 247d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König struct pipe_picture_desc base; 248d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König 249d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König uint32_t slice_count; 250d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König int32_t field_order_cnt[2]; 251d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König bool is_reference; 252d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König uint32_t frame_num; 253d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König uint8_t field_pic_flag; 254d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König uint8_t bottom_field_flag; 255d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König uint8_t num_ref_frames; 256d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König uint8_t mb_adaptive_frame_field_flag; 257d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König uint8_t constrained_intra_pred_flag; 258d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König uint8_t weighted_pred_flag; 259d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König uint8_t weighted_bipred_idc; 260d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König uint8_t frame_mbs_only_flag; 261d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König uint8_t transform_8x8_mode_flag; 262d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König int8_t chroma_qp_index_offset; 263d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König int8_t second_chroma_qp_index_offset; 264d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König int8_t pic_init_qp_minus26; 265d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König uint8_t num_ref_idx_l0_active_minus1; 266d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König uint8_t num_ref_idx_l1_active_minus1; 267d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König uint8_t log2_max_frame_num_minus4; 268d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König uint8_t pic_order_cnt_type; 269d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König uint8_t log2_max_pic_order_cnt_lsb_minus4; 270d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König uint8_t delta_pic_order_always_zero_flag; 271d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König uint8_t direct_8x8_inference_flag; 272d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König uint8_t entropy_coding_mode_flag; 273d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König uint8_t pic_order_present_flag; 274d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König uint8_t deblocking_filter_control_present_flag; 275d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König uint8_t redundant_pic_cnt_present_flag; 276d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König uint8_t scaling_lists_4x4[6][16]; 277d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König uint8_t scaling_lists_8x8[2][64]; 278d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König 279d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König bool is_long_term[16]; 280d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König bool top_is_reference[16]; 281d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König bool bottom_is_reference[16]; 282d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König uint32_t field_order_cnt_list[16][2]; 283d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König uint32_t frame_num_list[16]; 284d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König 285d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König struct pipe_video_buffer *ref[16]; 286d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König}; 287d6aa0ad55dc245bfacb7d9c3b479fe5a6557d43fChristian König 288f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Manton#ifdef __cplusplus 289f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Manton} 290f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Manton#endif 291f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Manton 292f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Manton#endif /* PIPE_VIDEO_STATE_H */ 293