xine-lib 1.2.11
alterh264_decode.h
Go to the documentation of this file.
1/* kate: tab-indent on; indent-width 4; mixedindent off; indent-mode cstyle; remove-trailing-space on; */
2/*
3 * Copyright (C) 2008-2018 the xine project
4 *
5 * This file is part of xine, a free video player.
6 *
7 * xine is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * xine is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
20 *
21 */
22
23#ifndef ALTERH264_DECODE_H
24#define ALTERH264_DECODE_H
25
26//#define LOG
27#define LOG_MODULE "vdpau_h264"
28
29
30#include <stdio.h>
31#include <stdlib.h>
32#include <string.h>
33#include <sys/types.h>
34#include <unistd.h>
35
36#include <xine/xine_internal.h>
37#include <xine/video_out.h>
38#include <xine/buffer.h>
39#include <xine/xineutils.h>
40#include "accel_vdpau.h"
41#include <vdpau/vdpau.h>
42
44
45
46
48{
68};
69
70
71
72typedef struct
73{
76 uint16_t sar_width;
77 uint16_t sar_height;
78 uint8_t colour_desc;
80 uint8_t timing_info;
82 uint32_t time_scale;
84
85
86
87typedef struct
88{
89 uint8_t profile_idc;
90 uint8_t level_idc;
102 uint8_t scaling_lists_4x4[6][16];
103 uint8_t scaling_lists_8x8[2][64];
111 int32_t offset_for_ref_frame[256];
127
128
129
130typedef struct
131{
136 /*uint8_t num_slice_groups_minus1;
137 uint8_t slice_group_map_type;
138 uint16_t run_length_minus1[64];
139 uint16_t top_left[64];
140 uint16_t bottom_right[64];
141 uint8_t slice_group_change_direction_flag;
142 uint16_t slice_group_change_rate_minus1;
143 uint16_t pic_size_in_map_units_minus1;
144 uint8_t slice_group_id[64]; */
157 uint8_t pic_scaling_list_present_flag[8];
158 uint8_t scaling_lists_4x4[6][16];
159 uint8_t scaling_lists_8x8[2][64];
162
163
164
165typedef struct
166{
167 uint8_t nal_ref_idc;
169 uint8_t slice_type;
171 uint16_t frame_num;
172 uint32_t MaxFrameNum;
175 uint16_t idr_pic_id;
178 int32_t delta_pic_order_cnt[2];
183
184
185#define PICTURE_TOP_DONE 1
186#define PICTURE_BOTTOM_DONE 2
187#define PICTURE_DONE 3
188
189#define SHORT_TERM_REF 1
190#define LONG_TERM_REF 2
191
192typedef struct
193{
194 uint8_t used;
196 int64_t pts;
197 uint8_t drop_pts;
198 uint8_t completed;
200 uint16_t FrameNum;
202 int32_t PicNum[2]; /* 0:top, 1:bottom */
203 uint8_t is_reference[2]; /* 0:top, 1:bottom, short or long term */
209 uint8_t mmc5;
210
213
214
215
216typedef struct
217{
218 uint32_t buf_offset;
219 uint32_t len;
220} slice_t;
221
222
223
224typedef struct
225{
226 uint32_t coded_width;
228 uint32_t coded_height;
230 uint64_t video_step; /* frame duration in pts units */
231 uint64_t reported_video_step; /* frame duration in pts units */
232 double ratio;
234
235 slice_t slices[68];
238
239 seq_param_t *seq_param[32];
240 pic_param_t *pic_param[256];
242
245 uint16_t prevFrameNum;
247 uint8_t prevMMC5;
248
251 VdpDecoderProfile profile;
252
253 uint8_t *buf; /* accumulate data */
255 uint32_t bufsize;
256 uint32_t bufpos;
257 int start;
258
259 int64_t pic_pts;
260
262
265
266 int reset;
268
269 uint8_t mode_frame;
270 uint8_t flag_header;
272
274
275} sequence_t;
276
277
279{
280 video_decoder_t video_decoder; /* parent video decoder structure */
281
283
285
286 VdpDecoder decoder;
287 VdpDecoderProfile decoder_profile;
290
292
293#endif /* ALTERH264_DECODE_H */
aspect_ratio
Definition: alterh264_decode.h:48
@ ASPECT_3_2
Definition: alterh264_decode.h:64
@ ASPECT_12_11
Definition: alterh264_decode.h:51
@ ASPECT_32_11
Definition: alterh264_decode.h:57
@ ASPECT_16_11
Definition: alterh264_decode.h:53
@ ASPECT_UNSPECIFIED
Definition: alterh264_decode.h:49
@ ASPECT_64_33
Definition: alterh264_decode.h:61
@ ASPECT_2_1
Definition: alterh264_decode.h:65
@ ASPECT_40_33
Definition: alterh264_decode.h:54
@ ASPECT_24_11
Definition: alterh264_decode.h:55
@ ASPECT_18_11
Definition: alterh264_decode.h:59
@ ASPECT_1_1
Definition: alterh264_decode.h:50
@ ASPECT_20_11
Definition: alterh264_decode.h:56
@ ASPECT_160_99
Definition: alterh264_decode.h:62
@ ASPECT_4_3
Definition: alterh264_decode.h:63
@ ASPECT_80_33
Definition: alterh264_decode.h:58
@ ASPECT_RESERVED
Definition: alterh264_decode.h:66
@ ASPECT_10_11
Definition: alterh264_decode.h:52
@ ASPECT_15_11
Definition: alterh264_decode.h:60
@ ASPECT_EXTENDED_SAR
Definition: alterh264_decode.h:67
struct vdpau_mpeg12_decoder_s vdpau_h264_alter_decoder_t
Definition: alterh264_bits_reader.h:31
Definition: alterh264_decode.h:193
uint8_t missing_header
Definition: alterh264_decode.h:195
int32_t PicOrderCntMsb
Definition: alterh264_decode.h:205
int32_t TopFieldOrderCnt
Definition: alterh264_decode.h:206
uint8_t used
Definition: alterh264_decode.h:194
int32_t BottomFieldOrderCnt
Definition: alterh264_decode.h:207
int64_t pts
Definition: alterh264_decode.h:196
uint16_t FrameNum
Definition: alterh264_decode.h:200
uint8_t mmc5
Definition: alterh264_decode.h:209
int32_t FrameNumWrap
Definition: alterh264_decode.h:201
uint8_t completed
Definition: alterh264_decode.h:198
uint8_t top_field_first
Definition: alterh264_decode.h:199
vo_frame_t * videoSurface
Definition: alterh264_decode.h:211
uint8_t field_pic_flag
Definition: alterh264_decode.h:204
uint16_t pic_order_cnt_lsb
Definition: alterh264_decode.h:208
uint8_t drop_pts
Definition: alterh264_decode.h:197
Definition: vdpau_h264.c:777
Definition: alterh264_decode.h:131
int8_t pic_init_qp_minus26
Definition: alterh264_decode.h:149
uint8_t num_ref_idx_l1_active_minus1
Definition: alterh264_decode.h:146
uint8_t deblocking_filter_control_present_flag
Definition: alterh264_decode.h:152
uint8_t seq_parameter_set_id
Definition: alterh264_decode.h:133
uint8_t weighted_pred_flag
Definition: alterh264_decode.h:147
uint8_t pic_scaling_matrix_present_flag
Definition: alterh264_decode.h:156
uint8_t transform_8x8_mode_flag
Definition: alterh264_decode.h:155
uint8_t pic_order_present_flag
Definition: alterh264_decode.h:135
uint8_t redundant_pic_cnt_present_flag
Definition: alterh264_decode.h:154
uint8_t constrained_intra_pred_flag
Definition: alterh264_decode.h:153
uint8_t entropy_coding_mode_flag
Definition: alterh264_decode.h:134
uint8_t pic_parameter_set_id
Definition: alterh264_decode.h:132
int8_t pic_init_qs_minus26
Definition: alterh264_decode.h:150
int8_t chroma_qp_index_offset
Definition: alterh264_decode.h:151
int8_t second_chroma_qp_index_offset
Definition: alterh264_decode.h:160
uint8_t weighted_bipred_idc
Definition: alterh264_decode.h:148
uint8_t num_ref_idx_l0_active_minus1
Definition: alterh264_decode.h:145
Definition: alterh264_decode.h:88
uint8_t frame_mbs_only_flag
Definition: alterh264_decode.h:116
uint8_t level_idc
Definition: alterh264_decode.h:90
uint8_t num_ref_frames_in_pic_order_cnt_cycle
Definition: alterh264_decode.h:110
int32_t offset_for_non_ref_pic
Definition: alterh264_decode.h:108
uint8_t vui_parameters_present_flag
Definition: alterh264_decode.h:124
uint8_t separate_colour_plane_flag
Definition: alterh264_decode.h:97
uint16_t frame_crop_top_offset
Definition: alterh264_decode.h:122
uint8_t log2_max_frame_num_minus4
Definition: alterh264_decode.h:104
uint8_t seq_parameter_set_id
Definition: alterh264_decode.h:91
uint16_t frame_crop_right_offset
Definition: alterh264_decode.h:121
uint8_t constraint_set1_flag
Definition: alterh264_decode.h:93
uint8_t constraint_set0_flag
Definition: alterh264_decode.h:92
uint8_t constraint_set3_flag
Definition: alterh264_decode.h:95
uint8_t num_ref_frames
Definition: alterh264_decode.h:112
uint16_t frame_crop_bottom_offset
Definition: alterh264_decode.h:123
vui_param_t vui
Definition: alterh264_decode.h:125
int32_t offset_for_top_to_bottom_field
Definition: alterh264_decode.h:109
uint8_t qpprime_y_zero_transform_bypass_flag
Definition: alterh264_decode.h:100
uint8_t seq_scaling_matrix_present_flag
Definition: alterh264_decode.h:101
uint8_t pic_width_in_mbs_minus1
Definition: alterh264_decode.h:114
uint8_t gaps_in_frame_num_value_allowed_flag
Definition: alterh264_decode.h:113
uint16_t frame_crop_left_offset
Definition: alterh264_decode.h:120
uint8_t pic_order_cnt_type
Definition: alterh264_decode.h:105
uint8_t log2_max_pic_order_cnt_lsb_minus4
Definition: alterh264_decode.h:106
uint8_t constraint_set2_flag
Definition: alterh264_decode.h:94
uint8_t chroma_format_idc
Definition: alterh264_decode.h:96
uint8_t mb_adaptive_frame_field_flag
Definition: alterh264_decode.h:117
uint8_t bit_depth_luma_minus8
Definition: alterh264_decode.h:98
uint8_t pic_height_in_map_units_minus1
Definition: alterh264_decode.h:115
uint8_t frame_cropping_flag
Definition: alterh264_decode.h:119
uint8_t direct_8x8_inference_flag
Definition: alterh264_decode.h:118
uint8_t bit_depth_chroma_minus8
Definition: alterh264_decode.h:99
uint8_t delta_pic_order_always_zero_flag
Definition: alterh264_decode.h:107
uint8_t profile_idc
Definition: alterh264_decode.h:89
Definition: alterh264_decode.h:225
uint16_t prevFrameNum
Definition: alterh264_decode.h:245
uint64_t reported_video_step
Definition: alterh264_decode.h:231
int start
Definition: alterh264_decode.h:257
uint16_t prevFrameNumOffset
Definition: alterh264_decode.h:246
uint8_t flag_header
Definition: alterh264_decode.h:270
vdpau_accel_t * accel_vdpau
Definition: alterh264_decode.h:264
int slices_count
Definition: alterh264_decode.h:236
uint8_t * buf
Definition: alterh264_decode.h:253
uint8_t prevMMC5
Definition: alterh264_decode.h:247
double ratio
Definition: alterh264_decode.h:232
int startup_frame
Definition: alterh264_decode.h:267
int reset
Definition: alterh264_decode.h:266
uint32_t coded_height
Definition: alterh264_decode.h:228
int chroma
Definition: alterh264_decode.h:249
uint32_t bufsize
Definition: alterh264_decode.h:255
uint32_t reported_coded_height
Definition: alterh264_decode.h:229
int bufseek
Definition: alterh264_decode.h:254
int color_matrix
Definition: alterh264_decode.h:273
double reported_ratio
Definition: alterh264_decode.h:233
int vdp_runtime_nr
Definition: alterh264_decode.h:263
dpb_frame_t cur_pic
Definition: alterh264_decode.h:244
uint8_t mode_frame
Definition: alterh264_decode.h:269
uint32_t frame_header_size
Definition: alterh264_decode.h:271
int slice_mode
Definition: alterh264_decode.h:237
uint32_t coded_width
Definition: alterh264_decode.h:226
int64_t pic_pts
Definition: alterh264_decode.h:259
uint64_t video_step
Definition: alterh264_decode.h:230
int top_field_first
Definition: alterh264_decode.h:250
uint32_t reported_coded_width
Definition: alterh264_decode.h:227
slice_param_t slice_param
Definition: alterh264_decode.h:241
bits_reader_t br
Definition: alterh264_decode.h:261
VdpDecoderProfile profile
Definition: alterh264_decode.h:251
uint32_t bufpos
Definition: alterh264_decode.h:256
Definition: alterh264_decode.h:166
uint8_t num_ref_idx_l1_active_minus1
Definition: alterh264_decode.h:181
uint16_t idr_pic_id
Definition: alterh264_decode.h:175
uint32_t MaxFrameNum
Definition: alterh264_decode.h:172
uint8_t redundant_pic_cnt
Definition: alterh264_decode.h:179
uint8_t field_pic_flag
Definition: alterh264_decode.h:173
uint8_t nal_unit_type
Definition: alterh264_decode.h:168
uint8_t num_ref_idx_l0_active_minus1
Definition: alterh264_decode.h:180
uint16_t pic_order_cnt_lsb
Definition: alterh264_decode.h:176
uint8_t nal_ref_idc
Definition: alterh264_decode.h:167
int32_t delta_pic_order_cnt_bottom
Definition: alterh264_decode.h:177
uint8_t slice_type
Definition: alterh264_decode.h:169
uint8_t pic_parameter_set_id
Definition: alterh264_decode.h:170
uint16_t frame_num
Definition: alterh264_decode.h:171
uint8_t bottom_field_flag
Definition: alterh264_decode.h:174
Definition: alterh264_decode.h:217
uint32_t len
Definition: alterh264_decode.h:219
uint32_t buf_offset
Definition: alterh264_decode.h:218
Definition: accel_vdpau.h:36
Definition: alterh264_decode.h:279
xine_stream_t * stream
Definition: alterh264_decode.h:282
VdpDecoderProfile decoder_profile
Definition: alterh264_decode.h:287
sequence_t sequence
Definition: alterh264_decode.h:284
video_decoder_t video_decoder
Definition: alterh264_decode.h:280
VdpDecoder decoder
Definition: alterh264_decode.h:286
uint32_t decoder_height
Definition: alterh264_decode.h:289
uint32_t decoder_width
Definition: alterh264_decode.h:288
Definition: video_decoder.h:73
Definition: video_out.h:59
Definition: alterh264_decode.h:73
uint8_t aspect_ratio_info
Definition: alterh264_decode.h:74
uint32_t num_units_in_tick
Definition: alterh264_decode.h:81
uint16_t sar_width
Definition: alterh264_decode.h:76
uint16_t sar_height
Definition: alterh264_decode.h:77
uint32_t time_scale
Definition: alterh264_decode.h:82
uint8_t colour_desc
Definition: alterh264_decode.h:78
uint8_t timing_info
Definition: alterh264_decode.h:80
uint8_t colour_primaries
Definition: alterh264_decode.h:79
uint8_t aspect_ratio_idc
Definition: alterh264_decode.h:75
Definition: xine_internal.h:123