1bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/*
2bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    This file is provided under a dual BSD/GPLv2 license.  When using or
3bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    redistributing this file, you may do so under either license.
4bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
5bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    GPL LICENSE SUMMARY
6bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
7bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    Copyright(c) 2007-2009 Intel Corporation. All rights reserved.
8bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
9bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    This program is free software; you can redistribute it and/or modify
10bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    it under the terms of version 2 of the GNU General Public License as
11bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    published by the Free Software Foundation.
12bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
13bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    This program is distributed in the hope that it will be useful, but
14bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    WITHOUT ANY WARRANTY; without even the implied warranty of
15bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    General Public License for more details.
17bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
18bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    You should have received a copy of the GNU General Public License
19bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    along with this program; if not, write to the Free Software
20bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    Foundation, Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
21bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    The full GNU General Public License is included in this distribution
22bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    in the file called LICENSE.GPL.
23bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
24bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    Contact Information:
25bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
26bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    BSD LICENSE
27bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
28bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    Copyright(c) 2007-2009 Intel Corporation. All rights reserved.
29bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    All rights reserved.
30bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
31bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    Redistribution and use in source and binary forms, with or without
32bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    modification, are permitted provided that the following conditions
33bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    are met:
34bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
35bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    * Redistributions of source code must retain the above copyright
36bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    notice, this list of conditions and the following disclaimer.
37bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    * Redistributions in binary form must reproduce the above copyright
38bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    notice, this list of conditions and the following disclaimer in
39bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    the documentation and/or other materials provided with the
40bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    distribution.
41bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    * Neither the name of Intel Corporation nor the names of its
42bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    contributors may be used to endorse or promote products derived
43bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    from this software without specific prior written permission.
44bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
45bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
46bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
47bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
48bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
49bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
50bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
51bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
52bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
53bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
54bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
55bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
56bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
57bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee*/
58bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#ifndef VIDDEC_FW_FRAME_ATTR_H
59bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#define VIDDEC_FW_FRAME_ATTR_H
60bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
61bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#define VIDDEC_PANSCAN_MAX_OFFSETS 4
62bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#define VIDDEC_MAX_CPB_CNT 32
63bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
64bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/**
65bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeThis enumeration lists all the frame types defined by the MPEG, VC1 and H264 specifications.
66bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeFrame types applicable to a single codec are specified in the comments.
67bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee*/
68bd8388b4555645b3d29abc6a94c303638064d69awonjong.leetypedef enum
69bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{
70bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    VIDDEC_FRAME_TYPE_INVALID=0,   /** Unknown type - default value */
71bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    VIDDEC_FRAME_TYPE_IDR=0x1,       /** IDR frame - h264 only */
72bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    VIDDEC_FRAME_TYPE_I=0x2,         /** I frame */
73bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    VIDDEC_FRAME_TYPE_P=0x3,         /** P frame */
74bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    VIDDEC_FRAME_TYPE_B=0x4,         /** B frame */
75bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    VIDDEC_FRAME_TYPE_BI=0x5,        /** BI frame - Intracoded B frame - vc1 only */
76bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    VIDDEC_FRAME_TYPE_SKIP=0x6,      /** Skipped frame - vc1 only */
77bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    VIDDEC_FRAME_TYPE_D=0x7,         /** D frame - mpeg1 only */
78bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    VIDDEC_FRAME_TYPE_S=0x8,         /** SVOP frame - mpeg4 only - sprite encoded frame - treat as P */
79bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    VIDDEC_FRAME_TYPE_MAX,
80bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee} viddec_frame_type_t;
81bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
82bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/**
83bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeThis structure contains the content size info extracted from the stream.
84bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee*/
85bd8388b4555645b3d29abc6a94c303638064d69awonjong.leetypedef struct viddec_rect_size
86bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{
87bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    unsigned int width;
88bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    unsigned int height;
89bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee}viddec_rect_size_t;
90bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
91bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/**
92bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeThis structure contains MPEG2 specific pan scan offsets extracted from the stream.
93bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee*/
94bd8388b4555645b3d29abc6a94c303638064d69awonjong.leetypedef struct viddec_mpeg2_frame_center_offset
95bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{
96bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    int horz;
97bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    int vert;
98bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee}viddec_mpeg2_frame_center_offset_t;
99bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
100bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/**
101bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeThis structure contains the MPEG2 specific frame attributes.
102bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee*/
103bd8388b4555645b3d29abc6a94c303638064d69awonjong.leetypedef struct viddec_mpeg2_frame_attributes
104bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{
105bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    /**
106bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    10 bit unsigned integer corresponding to the display order of each coded picture
107bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    in the stream (or gop if gop header is present).
108bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    Refer to "temporal_reference" of the picture header in ITU-T H.262 Specification.
109bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    */
110bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    unsigned int temporal_ref;
111bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
112bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    /**
113bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    Pan/Scan rectangle info
114bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    Refer to the picture display extension in ITU-T H.262 Specification.
115bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    */
116bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    viddec_mpeg2_frame_center_offset_t frame_center_offset[VIDDEC_PANSCAN_MAX_OFFSETS];
117bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    unsigned int number_of_frame_center_offsets;
118bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
119bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    /**
120bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    Top-Field first flag
121bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    Refer to "top_field_first" of the picture coding extension in ITU-T H.262 Specification.
122bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    */
123bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    unsigned int top_field_first;
124bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
125bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    /**
126bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    Progressive frame flag - Indicates if current frame is progressive or not.
127bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    Refer to "progressive_frame" of the picture coding extension in ITU-T H.262 Specification.
128bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    */
129bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    unsigned int progressive_frame;
130bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
131bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    /**
132bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    Frame/field polarity for each coded picture.
133bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    Refer to Table 6-14 in ITU-T H.262 Specification.
134bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    */
135bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    unsigned int picture_struct;
136bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
137bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    /**
138bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    Repeat field/frame flag.
139bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    Refer to "repeat_first_field" of the picture coding extension in ITU-T H.262 Specification.
140bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    */
141bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    unsigned int repeat_first_field;
142bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
143bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee}viddec_mpeg2_frame_attributes_t;
144bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
145bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/**
146bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeThis structure contains MPEG2 specific pan scan offsets extracted from the stream.
147bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee*/
148bd8388b4555645b3d29abc6a94c303638064d69awonjong.leetypedef struct viddec_vc1_pan_scan_window
149bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{
150bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    unsigned int hoffset;
151bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    unsigned int voffset;
152bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    unsigned int width;
153bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    unsigned int height;
154bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee}viddec_vc1_pan_scan_window_t;
155bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
156bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/**
157bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeThis structure contains the VC1 specific frame attributes.
158bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee*/
159bd8388b4555645b3d29abc6a94c303638064d69awonjong.leetypedef struct viddec_vc1_frame_attributes
160bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{
161bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    /**
162bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    Temporal Reference of frame/field.
163bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    Refer to "TFCNTR" in the picture layer of the SMPTE VC1 Specification.
164bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    */
165bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    unsigned int tfcntr;
166bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
167bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    /**
168bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    Frame/field repeat information in the bitstream.
169bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    Refer to "RPTFRM", "TFF", "BFF" in the picture layer
170bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    of the SMPTE VC1 Specification.
171bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    */
172bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    unsigned int rptfrm;
173bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    unsigned int tff;
174bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    unsigned int rff;
175bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
176bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    /**
177bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    Pan-scan information in the bitstream.
178bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    Refer to "PANSCAN_FLAG" in the entrypoint layer, "PS_PRESENT", "PS_HOFFSET", "PS_VOFFSET",
179bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    "PS_WIDTH" and "PS_HEIGHT" in the picture layer of the SMPTE VC1 Specification.
180bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    */
181bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    unsigned int panscan_flag;
182bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    unsigned int ps_present;
183bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    unsigned int num_of_pan_scan_windows;
184bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    viddec_vc1_pan_scan_window_t pan_scan_window[VIDDEC_PANSCAN_MAX_OFFSETS];
185bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
186bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee}viddec_vc1_frame_attributes_t;
187bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
188bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/**
189bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeThis structure contains the H264 specific frame attributes.
190bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee*/
191bd8388b4555645b3d29abc6a94c303638064d69awonjong.leetypedef struct viddec_h264_frame_attributes
192bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{
193bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	/**
194bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	used_for_reference : 1 means this frame is used as ref frame of others. 0 means no any frame ref to this frame
195bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	*/
196bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	///// This flag hasn't been enable so far
197bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	unsigned int used_for_reference;
198bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
199bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
200bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	/** -
201bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	Picture Order Count for the current frame/field.-
202bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	This value is computed using information from the bitstream.-
203bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	Refer to Section 8.2.1, function 8-1 of the ITU-T H.264 Specification.-
204bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	*/
205bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	// These fileds will be supported in future
206bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	int top_field_poc;
207bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	int bottom_field_poc;
208bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
209bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	/**
210bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	Display size, which is cropped from content size.
211bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	Currently, the cont_size is cropped, so this paramter is redundant, but in future, cont_size may be changed
212bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	*/
213bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	viddec_rect_size_t cropped_size;
214bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
215bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	/**
216bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	top_field_first: 0 means bottom_field_POC is smaller than top_field_POC, else 1
217bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	*/
218bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	unsigned int top_field_first;
219bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
220bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	/**
221bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	field_frame_flag: 0 means all slice of this frame are frame-base encoded, else 1
222bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	*/
223bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	unsigned int field_pic_flag;
224bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
225bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee}viddec_h264_frame_attributes_t;
226bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
227bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/**
228bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeThis structure contains the MPEG4 specific frame attributes.
229bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee*/
230bd8388b4555645b3d29abc6a94c303638064d69awonjong.leetypedef struct viddec_mpeg4_frame_attributes
231bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{
232bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    /**
233bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    Top-Field first flag
234bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    Refer to "top_field_first" of the Video Object Plane of the MPEG4 Spec.
235bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    */
236bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    unsigned int top_field_first;
237bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
238bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee}viddec_mpeg4_frame_attributes_t;
239bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
240bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/**
241bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeThis structure groups all the frame attributes that are exported by the firmware.
242bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeThe frame attributes are split into attributes that are common to all codecs and
243bd8388b4555645b3d29abc6a94c303638064d69awonjong.leethat are specific to codec type.
244bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeAs of this release, it is populated only for mpeg2 only.
245bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee*/
246bd8388b4555645b3d29abc6a94c303638064d69awonjong.leetypedef struct viddec_frame_attributes
247bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{
248bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    /**
249bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    Content size specified in the stream.
250bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    For MPEG2, refer to "horizontal_size_value, vertical_size_value" of the sequence header and
251bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    "horizontal_size_extension, vertical_size_extension" of the sequence extension in ITU-T H.262 Specification.
252bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    For H264, refer to "pic_width_in_mbs_minus1" and "pic_height_in_map_units_minus1" of the
253bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    sequence parameter set in ITU-T H.264 Specification.
254bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    For VC1, refer to "MAX_CODED_WIDTH" and "MAX_CODED_HEIGHT" in the sequence layer,
255bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    "CODED_SIZE_FLAG", "CODED_WIDTH" and "CODED_HEIGHT" in the entrypoint layer of the SMPTE VC1 Specification.
256bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    */
257bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    viddec_rect_size_t cont_size;
258bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
259bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    /**
260bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    Type of frame populated in the workload.
261bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    frame_type contains the frame type for progressive frame and the field type for the top field for interlaced frames.
262bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    bottom_field_type contains the field type for the bottom field for interlaced frames.
263bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    For MPEG2, refer to "picture_coding_type" in picture header (Table 6-12) in ITU-T H.262 Specification.
264bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    For H264, refer to "slice_type" in slice header (Table 7-6) in ITU-T H.264 Specification.
265bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    For VC1, refer to "PTYPE" and FPTYPE in the picture layer (Tables 33, 34, 35, 105) in SMPTE VC1 Specification.
266bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    */
267bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    viddec_frame_type_t frame_type;
268bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    viddec_frame_type_t bottom_field_type;
269bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
270bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    /** Codec specific attributes */
271bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    union
272bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    {
273bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee        viddec_mpeg2_frame_attributes_t  mpeg2;
274bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee        viddec_vc1_frame_attributes_t    vc1;
275bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee        viddec_h264_frame_attributes_t   h264;
276bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee        viddec_mpeg4_frame_attributes_t  mpeg4;
277bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    };
278bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
279bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee}viddec_frame_attributes_t;
280bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
281bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#endif /* VIDDEC_FRAME_ATTR_H */
282