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