xine-lib  1.2.10
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 
43 #include "alterh264_bits_reader.h"
44 
45 
46 
48 {
68 };
69 
70 
71 
72 typedef 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;
83 } vui_param_t;
84 
85 
86 
87 typedef 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];
112  uint8_t num_ref_frames;
126 } seq_param_t;
127 
128 
129 
130 typedef 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];
161 } pic_param_t;
162 
163 
164 
165 typedef struct
166 {
167  uint8_t nal_ref_idc;
168  uint8_t nal_unit_type;
169  uint8_t slice_type;
171  uint16_t frame_num;
172  uint32_t MaxFrameNum;
173  uint8_t field_pic_flag;
175  uint16_t idr_pic_id;
178  int32_t delta_pic_order_cnt[2];
182 } slice_param_t;
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 
192 typedef struct
193 {
194  uint8_t used;
195  uint8_t missing_header;
196  int64_t pts;
197  uint8_t drop_pts;
198  uint8_t completed;
200  uint16_t FrameNum;
201  int32_t FrameNumWrap;
202  int32_t PicNum[2]; /* 0:top, 1:bottom */
203  uint8_t is_reference[2]; /* 0:top, 1:bottom, short or long term */
204  uint8_t field_pic_flag;
205  int32_t PicOrderCntMsb;
209  uint8_t mmc5;
210 
212 } dpb_frame_t;
213 
214 
215 
216 typedef struct
217 {
218  uint32_t buf_offset;
219  uint32_t len;
220 } slice_t;
221 
222 
223 
224 typedef 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 
249  int chroma;
251  VdpDecoderProfile profile;
252 
253  uint8_t *buf; /* accumulate data */
254  int bufseek;
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;
288  uint32_t decoder_width;
289  uint32_t decoder_height;
290 
292 
293 #endif /* ALTERH264_DECODE_H */
xine_s
Definition: xine_internal.h:80
vdpau_mpeg12_decoder_s
Definition: alterh264_decode.h:278
XINE_STREAM_INFO_VIDEO_WIDTH
#define XINE_STREAM_INFO_VIDEO_WIDTH
Definition: xine.h:1007
slice_param_t::redundant_pic_cnt
uint8_t redundant_pic_cnt
Definition: alterh264_decode.h:179
sequence_t::cur_pic
dpb_frame_t cur_pic
Definition: alterh264_decode.h:244
dpb_frame_t::PicNum
int32_t PicNum[2]
Definition: alterh264_decode.h:202
NAL_SLICE_NO_IDR
#define NAL_SLICE_NO_IDR
Definition: alterh264_decode.c:38
buf_element_s::size
int32_t size
Definition: buffer.h:343
ASPECT_15_11
@ ASPECT_15_11
Definition: alterh264_decode.h:60
slice_t::buf_offset
uint32_t buf_offset
Definition: alterh264_decode.h:218
MAX_POC
#define MAX_POC
Definition: alterh264_decode.c:56
sequence_t::flag_header
uint8_t flag_header
Definition: alterh264_decode.h:270
pred_weight_table
static void pred_weight_table(vdpau_h264_alter_decoder_t *this_gen, uint8_t slice_type, uint8_t ChromaArrayType, uint8_t l0, uint8_t l1)
Definition: alterh264_decode.c:1051
bits_reader_t
Definition: alterh264_bits_reader.h:31
seq_param_t::bit_depth_chroma_minus8
uint8_t bit_depth_chroma_minus8
Definition: alterh264_decode.h:99
video_decoder_s
Definition: video_decoder.h:73
dpb
Definition: vdpau_h264.c:777
seq_param_t::num_ref_frames_in_pic_order_cnt_cycle
uint8_t num_ref_frames_in_pic_order_cnt_cycle
Definition: alterh264_decode.h:110
sequence_t::slices
slice_t slices[68]
Definition: alterh264_decode.h:235
XINE_STREAM_INFO_VIDEO_RATIO
#define XINE_STREAM_INFO_VIDEO_RATIO
Definition: xine.h:1009
xine_stream_s
Definition: xine_internal.h:123
vdpau_accel_t::vdp_decoder_render
VdpDecoderRender * vdp_decoder_render
Definition: accel_vdpau.h:45
VO_GET_FRAME_MAY_FAIL
#define VO_GET_FRAME_MAY_FAIL
Definition: video_out.h:299
parse_startcodes
static int parse_startcodes(vdpau_h264_alter_decoder_t *this_gen, uint8_t *buf, uint32_t len)
Definition: alterh264_decode.c:2016
dpb_draw_frames
static void dpb_draw_frames(vdpau_h264_alter_decoder_t *this_gen, int32_t curpoc, int draw_mode)
Definition: alterh264_decode.c:232
vo_frame_s::pts
int64_t pts
Definition: video_out.h:109
xine_bmiheader::biHeight
int32_t biHeight
Definition: buffer.h:745
BUF_FLAG_FRAME_END
#define BUF_FLAG_FRAME_END
Definition: buffer.h:371
vui_param_t::sar_width
uint16_t sar_width
Definition: alterh264_decode.h:76
seq_param_t::constraint_set0_flag
uint8_t constraint_set0_flag
Definition: alterh264_decode.h:92
vui_param_t::sar_height
uint16_t sar_height
Definition: alterh264_decode.h:77
xineutils.h
sequence_t::ratio
double ratio
Definition: alterh264_decode.h:232
seq_param_t::vui
vui_param_t vui
Definition: alterh264_decode.h:125
vdpau_accel_t::lock
void(* lock)(vo_frame_t *frame)
Definition: accel_vdpau.h:48
ASPECT_1_1
@ ASPECT_1_1
Definition: alterh264_decode.h:50
BUF_FLAG_FRAMERATE
#define BUF_FLAG_FRAMERATE
Definition: buffer.h:389
sequence_t::accel_vdpau
vdpau_accel_t * accel_vdpau
Definition: alterh264_decode.h:264
CAST_VdpPictureInfo_PTR
#define CAST_VdpPictureInfo_PTR
Definition: group_vdpau.h:43
ASPECT_24_11
@ ASPECT_24_11
Definition: alterh264_decode.h:55
BUF_FLAG_FRAME_START
#define BUF_FLAG_FRAME_START
Definition: buffer.h:370
seq_param_t::chroma_format_idc
uint8_t chroma_format_idc
Definition: alterh264_decode.h:96
accel_vdpau.h
scaling_list_fallback_A
static void scaling_list_fallback_A(uint8_t *scaling_lists_4x4, uint8_t *scaling_lists_8x8, int i)
Definition: alterh264_decode.c:588
BUF_FLAG_ASPECT
#define BUF_FLAG_ASPECT
Definition: buffer.h:405
dpb_frame_t::pts
int64_t pts
Definition: alterh264_decode.h:196
pic_param_t::deblocking_filter_control_present_flag
uint8_t deblocking_filter_control_present_flag
Definition: alterh264_decode.h:152
scaling_list_fallback_B
static void scaling_list_fallback_B(seq_param_t *sp, pic_param_t *pic, int i)
Definition: alterh264_decode.c:625
seq_param_t::pic_height_in_map_units_minus1
uint8_t pic_height_in_map_units_minus1
Definition: alterh264_decode.h:115
seq_param_t::scaling_lists_4x4
uint8_t scaling_lists_4x4[6][16]
Definition: alterh264_decode.h:102
SLICE_TYPE_B
#define SLICE_TYPE_B
Definition: alterh264_decode.c:49
ASPECT_12_11
@ ASPECT_12_11
Definition: alterh264_decode.h:51
slice_param_t::idr_pic_id
uint16_t idr_pic_id
Definition: alterh264_decode.h:175
xine_fast_memcpy
void *(* xine_fast_memcpy)(void *to, const void *from, size_t len)
Definition: memcpy.c:60
NAL_SEQUENCE
#define NAL_SEQUENCE
Definition: alterh264_decode.c:41
xine_event_t
Definition: xine.h:1923
sequence_t
Definition: alterh264_decode.h:224
pic_param_t::pic_init_qp_minus26
int8_t pic_init_qp_minus26
Definition: alterh264_decode.h:149
ASPECT_RESERVED
@ ASPECT_RESERVED
Definition: alterh264_decode.h:66
seq_param_t::log2_max_frame_num_minus4
uint8_t log2_max_frame_num_minus4
Definition: alterh264_decode.h:104
seq_param_t::qpprime_y_zero_transform_bypass_flag
uint8_t qpprime_y_zero_transform_bypass_flag
Definition: alterh264_decode.h:100
buf_element_s::decoder_info
uint32_t decoder_info[5]
Definition: buffer.h:353
VO_NEW_SEQUENCE_FLAG
#define VO_NEW_SEQUENCE_FLAG
Definition: video_out.h:296
sequence_t::prevMMC5
uint8_t prevMMC5
Definition: alterh264_decode.h:247
seq_param_t::direct_8x8_inference_flag
uint8_t direct_8x8_inference_flag
Definition: alterh264_decode.h:118
vo_frame_s::drawn
int drawn
Definition: video_out.h:142
pic_param_t::weighted_bipred_idc
uint8_t weighted_bipred_idc
Definition: alterh264_decode.h:148
bits_reader_t::oflow
int oflow
Definition: alterh264_bits_reader.h:33
xine_format_change_data_t::aspect
int aspect
Definition: xine.h:1993
VO_CAP_VDPAU_H264
#define VO_CAP_VDPAU_H264
Definition: video_out.h:314
slice_header_post
static void slice_header_post(vdpau_h264_alter_decoder_t *this_gen)
Definition: alterh264_decode.c:1349
vdpau_accel_t
Definition: accel_vdpau.h:36
seq_param_t::offset_for_top_to_bottom_field
int32_t offset_for_top_to_bottom_field
Definition: alterh264_decode.h:109
vdpau_mpeg12_decoder_s::video_decoder
video_decoder_t video_decoder
Definition: alterh264_decode.h:280
ASPECT_32_11
@ ASPECT_32_11
Definition: alterh264_decode.h:57
open_plugin
static video_decoder_t * open_plugin(video_decoder_class_t *class_gen, xine_stream_t *stream)
Definition: alterh264_decode.c:2382
slice_param_t::bottom_field_flag
uint8_t bottom_field_flag
Definition: alterh264_decode.h:174
set_ratio
static void set_ratio(sequence_t *seq, seq_param_t *sp)
Definition: alterh264_decode.c:451
slice_t
Definition: alterh264_decode.h:216
check_ref_list
static int check_ref_list(vdpau_h264_alter_decoder_t *this_gen)
Definition: alterh264_decode.c:1608
ASPECT_UNSPECIFIED
@ ASPECT_UNSPECIFIED
Definition: alterh264_decode.h:49
slice_param_t
Definition: alterh264_decode.h:165
read_bits
static uint32_t read_bits(bits_reader_t *br, int nbits)
Definition: alterh264_bits_reader.h:95
sequence_t::prevFrameNumOffset
uint16_t prevFrameNumOffset
Definition: alterh264_decode.h:246
slice_param_t::delta_pic_order_cnt_bottom
int32_t delta_pic_order_cnt_bottom
Definition: alterh264_decode.h:177
BUF_SPECIAL_DECODER_CONFIG
#define BUF_SPECIAL_DECODER_CONFIG
Definition: buffer.h:489
ASPECT_2_1
@ ASPECT_2_1
Definition: alterh264_decode.h:65
dpb_mmc1
static void dpb_mmc1(vdpau_h264_alter_decoder_t *this_gen, int32_t picnum)
Definition: alterh264_decode.c:315
sequence_t::mode_frame
uint8_t mode_frame
Definition: alterh264_decode.h:269
dpb_frame_t::field_pic_flag
uint8_t field_pic_flag
Definition: alterh264_decode.h:204
sequence_t::slices_count
int slices_count
Definition: alterh264_decode.h:236
sequence_t::seq_param
seq_param_t * seq_param[32]
Definition: alterh264_decode.h:239
vdpau_accel_t::unlock
void(* unlock)(vo_frame_t *frame)
Definition: accel_vdpau.h:49
slice_param_t::num_ref_idx_l0_active_minus1
uint8_t num_ref_idx_l0_active_minus1
Definition: alterh264_decode.h:180
seq_param_t::vui_parameters_present_flag
uint8_t vui_parameters_present_flag
Definition: alterh264_decode.h:124
default_8x8_inter
static const uint8_t default_8x8_inter[64]
Definition: alterh264_decode.c:111
xine_bmiheader::biWidth
int32_t biWidth
Definition: buffer.h:744
alterh264_bits_reader.h
bits_reader_t::buffer
const uint8_t * buffer
Definition: alterh264_bits_reader.h:32
lprintf
#define lprintf(...)
Definition: xineutils.h:620
seq_param_t
Definition: alterh264_decode.h:87
ref_pic_list_reordering
static void ref_pic_list_reordering(vdpau_h264_alter_decoder_t *this_gen)
Definition: alterh264_decode.c:1101
seq_param_t::mb_adaptive_frame_field_flag
uint8_t mb_adaptive_frame_field_flag
Definition: alterh264_decode.h:117
DPB_DRAW_CURRENT
#define DPB_DRAW_CURRENT
Definition: alterh264_decode.c:60
reset_sequence
static void reset_sequence(sequence_t *sequence)
Definition: alterh264_decode.c:429
sequence_t::profile
VdpDecoderProfile profile
Definition: alterh264_decode.h:251
zigzag_8x8
static const uint8_t zigzag_8x8[64]
Definition: alterh264_decode.c:75
seq_param_t::frame_cropping_flag
uint8_t frame_cropping_flag
Definition: alterh264_decode.h:119
XINE_STREAM_INFO_VIDEO_HEIGHT
#define XINE_STREAM_INFO_VIDEO_HEIGHT
Definition: xine.h:1008
seq_param_t::delta_pic_order_always_zero_flag
uint8_t delta_pic_order_always_zero_flag
Definition: alterh264_decode.h:107
sequence_t::top_field_first
int top_field_first
Definition: alterh264_decode.h:250
sequence_t::buf
uint8_t * buf
Definition: alterh264_decode.h:253
default_4x4_inter
static const uint8_t default_4x4_inter[16]
Definition: alterh264_decode.c:93
vdpau_h264_alter_decoder_t
struct vdpau_mpeg12_decoder_s vdpau_h264_alter_decoder_t
sequence_t::coded_height
uint32_t coded_height
Definition: alterh264_decode.h:228
pic_param_t::transform_8x8_mode_flag
uint8_t transform_8x8_mode_flag
Definition: alterh264_decode.h:155
xine_format_change_data_t::height
int height
Definition: xine.h:1990
pic_param_t::pic_order_present_flag
uint8_t pic_order_present_flag
Definition: alterh264_decode.h:135
sequence_t::reported_coded_height
uint32_t reported_coded_height
Definition: alterh264_decode.h:229
pic_param_t::num_ref_idx_l1_active_minus1
uint8_t num_ref_idx_l1_active_minus1
Definition: alterh264_decode.h:146
ASPECT_80_33
@ ASPECT_80_33
Definition: alterh264_decode.h:58
default_8x8_intra
static const uint8_t default_8x8_intra[64]
Definition: alterh264_decode.c:100
video_out.h
pic_param_t::constrained_intra_pred_flag
uint8_t constrained_intra_pred_flag
Definition: alterh264_decode.h:153
sequence_t::bufsize
uint32_t bufsize
Definition: alterh264_decode.h:255
buf_element_s::pts
int64_t pts
Definition: buffer.h:345
dec_ref_pic_marking
static void dec_ref_pic_marking(vdpau_h264_alter_decoder_t *this_gen, uint8_t idr)
Definition: alterh264_decode.c:1143
slice_param_t::nal_unit_type
uint8_t nal_unit_type
Definition: alterh264_decode.h:168
sequence_t::reported_coded_width
uint32_t reported_coded_width
Definition: alterh264_decode.h:227
more_rbsp_data
static uint32_t more_rbsp_data(bits_reader_t *br)
Definition: alterh264_bits_reader.h:50
sequence_t::frame_header_size
uint32_t frame_header_size
Definition: alterh264_decode.h:271
SLICE_TYPE_I
#define SLICE_TYPE_I
Definition: alterh264_decode.c:50
seq_param_t::bit_depth_luma_minus8
uint8_t bit_depth_luma_minus8
Definition: alterh264_decode.h:98
decode_picture
static void decode_picture(vdpau_h264_alter_decoder_t *decoder)
Definition: alterh264_decode.c:1922
NULL
NULL
Definition: xine_plugin.c:78
pic_param_t::num_ref_idx_l0_active_minus1
uint8_t num_ref_idx_l0_active_minus1
Definition: alterh264_decode.h:145
decode_picnum
static void decode_picnum(vdpau_h264_alter_decoder_t *this_gen)
Definition: alterh264_decode.c:1568
xine_event_send
void xine_event_send(xine_stream_t *s, const xine_event_t *event)
Definition: events.c:194
flush_buffer
static void flush_buffer(sequence_t *seq)
Definition: alterh264_decode.c:2108
ASPECT_4_3
@ ASPECT_4_3
Definition: alterh264_decode.h:63
vdpau_accel_t::vdp_runtime_nr
int vdp_runtime_nr
Definition: accel_vdpau.h:54
dpb_get_prev_ref
static dpb_frame_t * dpb_get_prev_ref(sequence_t *sequence)
Definition: alterh264_decode.c:215
SHORT_TERM_REF
#define SHORT_TERM_REF
Definition: alterh264_decode.h:189
slice_type
static uint32_t slice_type(uint32_t slice_type)
Definition: vdpau_h264.c:124
vui_parameters
static void vui_parameters(sequence_t *seq, vui_param_t *vui)
Definition: alterh264_decode.c:652
sequence_t::bufpos
uint32_t bufpos
Definition: alterh264_decode.h:256
sequence_t::pic_pts
int64_t pic_pts
Definition: alterh264_decode.h:259
ASPECT_64_33
@ ASPECT_64_33
Definition: alterh264_decode.h:61
pic_param_t::pic_parameter_set_id
uint8_t pic_parameter_set_id
Definition: alterh264_decode.h:132
vo_frame_s::bad_frame
int bad_frame
Definition: video_out.h:111
group_vdpau.h
vui_param_t::colour_desc
uint8_t colour_desc
Definition: alterh264_decode.h:78
sequence_t::video_step
uint64_t video_step
Definition: alterh264_decode.h:230
sequence_t::prevFrameNum
uint16_t prevFrameNum
Definition: alterh264_decode.h:245
parse_codec_private
static void parse_codec_private(vdpau_h264_alter_decoder_t *this_gen, const uint8_t *buf, uint32_t len)
Definition: alterh264_decode.c:2061
sequence_t::reported_ratio
double reported_ratio
Definition: alterh264_decode.h:233
aspect_ratio
aspect_ratio
Definition: alterh264_decode.h:47
seq_param_t::separate_colour_plane_flag
uint8_t separate_colour_plane_flag
Definition: alterh264_decode.h:97
vdpau_accel_t::vdp_get_error_string
VdpGetErrorString * vdp_get_error_string
Definition: accel_vdpau.h:41
skip_bits
static void skip_bits(bits_reader_t *br, int nbits)
Definition: alterh264_bits_reader.h:115
dpb_frame_t::BottomFieldOrderCnt
int32_t BottomFieldOrderCnt
Definition: alterh264_decode.h:207
sequence_t::vdp_runtime_nr
int vdp_runtime_nr
Definition: alterh264_decode.h:263
dpb_frame_t::used
uint8_t used
Definition: alterh264_decode.h:194
vui_param_t::colour_primaries
uint8_t colour_primaries
Definition: alterh264_decode.h:79
read_exp_se
static int32_t read_exp_se(bits_reader_t *br)
Definition: alterh264_bits_reader.h:143
_x_stream_info_set
void _x_stream_info_set(xine_stream_t *s, int info, int value)
Definition: info_helper.c:79
zigzag_4x4
static const uint8_t zigzag_4x4[16]
Definition: alterh264_decode.c:68
sequence_t::reported_video_step
uint64_t reported_video_step
Definition: alterh264_decode.h:231
vdpau_accel_t::current_vdp_runtime_nr
int * current_vdp_runtime_nr
Definition: accel_vdpau.h:55
SLICE_TYPE_SI
#define SLICE_TYPE_SI
Definition: alterh264_decode.c:52
ASPECT_16_11
@ ASPECT_16_11
Definition: alterh264_decode.h:53
seq_param_t::frame_crop_left_offset
uint16_t frame_crop_left_offset
Definition: alterh264_decode.h:120
BUF_FLAG_SPECIAL
#define BUF_FLAG_SPECIAL
Definition: buffer.h:395
dpb_remove
static void dpb_remove(sequence_t *sequence, int index)
Definition: alterh264_decode.c:190
vdpau_mpeg12_decoder_s::decoder_profile
VdpDecoderProfile decoder_profile
Definition: alterh264_decode.h:287
seq_param_t::num_ref_frames
uint8_t num_ref_frames
Definition: alterh264_decode.h:112
vdpau_h264_alter_dispose
static void vdpau_h264_alter_dispose(video_decoder_t *this_gen)
Definition: alterh264_decode.c:2342
vui_param_t
Definition: alterh264_decode.h:72
vdpau_h264_alter_decode_data
static void vdpau_h264_alter_decode_data(video_decoder_t *this_gen, buf_element_t *buf)
Definition: alterh264_decode.c:2137
sequence_t::dpb
dpb_frame_t * dpb[16]
Definition: alterh264_decode.h:243
dpb_reset
static void dpb_reset(sequence_t *sequence)
Definition: alterh264_decode.c:169
sequence_t::slice_param
slice_param_t slice_param
Definition: alterh264_decode.h:241
seq_param_t::gaps_in_frame_num_value_allowed_flag
uint8_t gaps_in_frame_num_value_allowed_flag
Definition: alterh264_decode.h:113
dpb_clear_all_pts
static void dpb_clear_all_pts(sequence_t *sequence)
Definition: alterh264_decode.c:153
slice_t::len
uint32_t len
Definition: alterh264_decode.h:219
alterh264_decode.h
dpb_frame_t::pic_order_cnt_lsb
uint16_t pic_order_cnt_lsb
Definition: alterh264_decode.h:208
ASPECT_40_33
@ ASPECT_40_33
Definition: alterh264_decode.h:54
_x_meta_info_set_utf8
void _x_meta_info_set_utf8(xine_stream_t *s, int info, const char *str)
Definition: info_helper.c:341
dpb_frame_t::drop_pts
uint8_t drop_pts
Definition: alterh264_decode.h:197
VO_BOTH_FIELDS
#define VO_BOTH_FIELDS
Definition: video_out.h:293
decode_render
static void decode_render(vdpau_h264_alter_decoder_t *vd, int bad_frame)
Definition: alterh264_decode.c:1697
ASPECT_18_11
@ ASPECT_18_11
Definition: alterh264_decode.h:59
MIN_BUFFER_SIZE
#define MIN_BUFFER_SIZE
Definition: alterh264_decode.c:34
vdpau_mpeg12_decoder_s::decoder_width
uint32_t decoder_width
Definition: alterh264_decode.h:288
buf_element_s
Definition: buffer.h:337
MAX_DPB_SIZE
#define MAX_DPB_SIZE
Definition: alterh264_decode.c:33
seq_param_t::frame_mbs_only_flag
uint8_t frame_mbs_only_flag
Definition: alterh264_decode.h:116
slice_param_t::MaxFrameNum
uint32_t MaxFrameNum
Definition: alterh264_decode.h:172
vdpau_accel_t::vdp_decoder_destroy
VdpDecoderDestroy * vdp_decoder_destroy
Definition: accel_vdpau.h:44
dpb_frame_t::is_reference
uint8_t is_reference[2]
Definition: alterh264_decode.h:203
seq_param_t::pic_order_cnt_type
uint8_t pic_order_cnt_type
Definition: alterh264_decode.h:105
reset_slices
static void reset_slices(sequence_t *sequence)
Definition: alterh264_decode.c:420
vdpau_mpeg12_decoder_s::decoder_height
uint32_t decoder_height
Definition: alterh264_decode.h:289
vdpau_mpeg12_decoder_s::stream
xine_stream_t * stream
Definition: alterh264_decode.h:282
pic_param_t::chroma_qp_index_offset
int8_t chroma_qp_index_offset
Definition: alterh264_decode.h:151
vdpau_accel_t::vdp_decoder_create
VdpDecoderCreate * vdp_decoder_create
Definition: accel_vdpau.h:43
xine_stream_s::video_out
xine_video_port_t *volatile video_out
Definition: xine_internal.h:135
dpb_get_PicNum
static dpb_frame_t * dpb_get_PicNum(sequence_t *sequence, int32_t pic_num, int *index)
Definition: alterh264_decode.c:293
sequence_t::pic_param
pic_param_t * pic_param[256]
Definition: alterh264_decode.h:240
buffer.h
vdpau_mpeg12_decoder_s::decoder
VdpDecoder decoder
Definition: alterh264_decode.h:286
VO_SET_FLAGS_CM
#define VO_SET_FLAGS_CM(cm, flags)
Definition: video_out.h:304
vdpau_h264_alter_discontinuity
static void vdpau_h264_alter_discontinuity(video_decoder_t *this_gen)
Definition: alterh264_decode.c:2328
dpb_frame_t::top_field_first
uint8_t top_field_first
Definition: alterh264_decode.h:199
DPB_DRAW_CLEAR
#define DPB_DRAW_CLEAR
Definition: alterh264_decode.c:58
vdpau_mpeg12_decoder_s::sequence
sequence_t sequence
Definition: alterh264_decode.h:284
dpb_frame_t::completed
uint8_t completed
Definition: alterh264_decode.h:198
pic_param_t::second_chroma_qp_index_offset
int8_t second_chroma_qp_index_offset
Definition: alterh264_decode.h:160
read_exp_ue
static uint32_t read_exp_ue(bits_reader_t *br)
Definition: alterh264_bits_reader.h:129
video_decoder_class_s
Definition: video_decoder.h:41
dpb_frame_t::videoSurface
vo_frame_t * videoSurface
Definition: alterh264_decode.h:211
pic_param_t::scaling_lists_8x8
uint8_t scaling_lists_8x8[2][64]
Definition: alterh264_decode.h:159
BUF_FLAG_STDHEADER
#define BUF_FLAG_STDHEADER
Definition: buffer.h:401
parse_scaling_list
static void parse_scaling_list(bits_reader_t *br, uint8_t *scaling_list, int len, int index)
Definition: alterh264_decode.c:521
dpb_frame_t::mmc5
uint8_t mmc5
Definition: alterh264_decode.h:209
seq_param_t::constraint_set1_flag
uint8_t constraint_set1_flag
Definition: alterh264_decode.h:93
slice_param_t::nal_ref_idc
uint8_t nal_ref_idc
Definition: alterh264_decode.h:167
dpb_frame_t::PicOrderCntMsb
int32_t PicOrderCntMsb
Definition: alterh264_decode.h:205
XINE_STREAM_INFO_FRAME_DURATION
#define XINE_STREAM_INFO_FRAME_DURATION
Definition: xine.h:1015
SLICE_TYPE_SP
#define SLICE_TYPE_SP
Definition: alterh264_decode.c:51
default_4x4_intra
static const uint8_t default_4x4_intra[16]
Definition: alterh264_decode.c:86
seq_param_t::scaling_lists_8x8
uint8_t scaling_lists_8x8[2][64]
Definition: alterh264_decode.h:103
xine_video_port_s::open
void(* open)(xine_video_port_t *self, xine_stream_t *stream)
Definition: video_out.h:183
vui_param_t::num_units_in_tick
uint32_t num_units_in_tick
Definition: alterh264_decode.h:81
XINE_META_INFO_VIDEOCODEC
#define XINE_META_INFO_VIDEOCODEC
Definition: xine.h:1068
vdpau_accel_t::surface
VdpVideoSurface surface
Definition: accel_vdpau.h:51
DPB_DRAW_REFS
#define DPB_DRAW_REFS
Definition: alterh264_decode.c:59
vui_param_t::timing_info
uint8_t timing_info
Definition: alterh264_decode.h:80
pic_param_t::weighted_pred_flag
uint8_t weighted_pred_flag
Definition: alterh264_decode.h:147
seq_param_t::constraint_set3_flag
uint8_t constraint_set3_flag
Definition: alterh264_decode.h:95
pic_param_t::scaling_lists_4x4
uint8_t scaling_lists_4x4[6][16]
Definition: alterh264_decode.h:158
xine_format_change_data_t::width
int width
Definition: xine.h:1989
dpb_frame_t::FrameNum
uint16_t FrameNum
Definition: alterh264_decode.h:200
xine_video_port_s::get_frame
vo_frame_t *(* get_frame)(xine_video_port_t *self, uint32_t width, uint32_t height, double ratio, int format, int flags)
Definition: video_out.h:194
sequence_t::start
int start
Definition: alterh264_decode.h:257
PICTURE_DONE
#define PICTURE_DONE
Definition: alterh264_decode.h:187
slice_param_t::pic_order_cnt_lsb
uint16_t pic_order_cnt_lsb
Definition: alterh264_decode.h:176
buf_element_s::decoder_info_ptr
void * decoder_info_ptr[5]
Definition: buffer.h:355
ASPECT_20_11
@ ASPECT_20_11
Definition: alterh264_decode.h:56
seq_param_t::frame_crop_bottom_offset
uint16_t frame_crop_bottom_offset
Definition: alterh264_decode.h:123
bits_reader_t::length
int length
Definition: alterh264_bits_reader.h:33
sequence_t::coded_width
uint32_t coded_width
Definition: alterh264_decode.h:226
slice_param_t::slice_type
uint8_t slice_type
Definition: alterh264_decode.h:169
PICTURE_BOTTOM_DONE
#define PICTURE_BOTTOM_DONE
Definition: alterh264_decode.h:186
xine_bmiheader
xine version of BITMAPINFOHEADER.
Definition: buffer.h:742
buf_element_s::content
unsigned char * content
Definition: buffer.h:341
xine_bmiheader::biSize
int32_t biSize
Definition: buffer.h:743
ASPECT_3_2
@ ASPECT_3_2
Definition: alterh264_decode.h:64
ASPECT_160_99
@ ASPECT_160_99
Definition: alterh264_decode.h:62
decode_poc
static void decode_poc(vdpau_h264_alter_decoder_t *this_gen)
Definition: alterh264_decode.c:1379
seq_param_t::profile_idc
uint8_t profile_idc
Definition: alterh264_decode.h:89
dpb_frame_t::TopFieldOrderCnt
int32_t TopFieldOrderCnt
Definition: alterh264_decode.h:206
slice_param_t::pic_parameter_set_id
uint8_t pic_parameter_set_id
Definition: alterh264_decode.h:170
bits_reader_t::start
const uint8_t * start
Definition: alterh264_bits_reader.h:32
ASPECT_10_11
@ ASPECT_10_11
Definition: alterh264_decode.h:52
seq_param_t::frame_crop_right_offset
uint16_t frame_crop_right_offset
Definition: alterh264_decode.h:121
vdpau_h264_alter_reset
static void vdpau_h264_alter_reset(video_decoder_t *this_gen)
Definition: alterh264_decode.c:2315
xine_internal.h
pic_param_t::seq_parameter_set_id
uint8_t seq_parameter_set_id
Definition: alterh264_decode.h:133
h264_alter_init_plugin
void * h264_alter_init_plugin(xine_t *xine, const void *data)
Definition: alterh264_decode.c:2479
vdpau_accel_t::vdp_device
VdpDevice vdp_device
Definition: accel_vdpau.h:39
seq_param_t::seq_parameter_set_id
uint8_t seq_parameter_set_id
Definition: alterh264_decode.h:91
vo_frame_s::accel_data
void * accel_data
Definition: video_out.h:147
buf_element_s::decoder_flags
uint32_t decoder_flags
Definition: buffer.h:350
vui_param_t::aspect_ratio_info
uint8_t aspect_ratio_info
Definition: alterh264_decode.h:74
seq_param_t::log2_max_pic_order_cnt_lsb_minus4
uint8_t log2_max_pic_order_cnt_lsb_minus4
Definition: alterh264_decode.h:106
sequence_t::chroma
int chroma
Definition: alterh264_decode.h:249
config.h
dpb_frame_t::missing_header
uint8_t missing_header
Definition: alterh264_decode.h:195
sequence_t::reset
int reset
Definition: alterh264_decode.h:266
vo_frame_s
Definition: video_out.h:59
seq_param_t::frame_crop_top_offset
uint16_t frame_crop_top_offset
Definition: alterh264_decode.h:122
slice_param_t::frame_num
uint16_t frame_num
Definition: alterh264_decode.h:171
vui_param_t::time_scale
uint32_t time_scale
Definition: alterh264_decode.h:82
slice_param_t::num_ref_idx_l1_active_minus1
uint8_t num_ref_idx_l1_active_minus1
Definition: alterh264_decode.h:181
PICTURE_TOP_DONE
#define PICTURE_TOP_DONE
Definition: alterh264_decode.h:185
ASPECT_EXTENDED_SAR
@ ASPECT_EXTENDED_SAR
Definition: alterh264_decode.h:67
dbp_append
static void dbp_append(vdpau_h264_alter_decoder_t *this_gen, int second_field)
Definition: alterh264_decode.c:341
pic_param_t::entropy_coding_mode_flag
uint8_t entropy_coding_mode_flag
Definition: alterh264_decode.h:134
dpb_frame_t::FrameNumWrap
int32_t FrameNumWrap
Definition: alterh264_decode.h:201
xine_format_change_data_t
Definition: xine.h:1988
seq_param_t::pic_width_in_mbs_minus1
uint8_t pic_width_in_mbs_minus1
Definition: alterh264_decode.h:114
vui_param_t::aspect_ratio_idc
uint8_t aspect_ratio_idc
Definition: alterh264_decode.h:75
pic_param_t::pic_scaling_matrix_present_flag
uint8_t pic_scaling_matrix_present_flag
Definition: alterh264_decode.h:156
sequence_t::startup_frame
int startup_frame
Definition: alterh264_decode.h:267
seq_param_t::constraint_set2_flag
uint8_t constraint_set2_flag
Definition: alterh264_decode.h:94
NAL_SLICE_IDR
#define NAL_SLICE_IDR
Definition: alterh264_decode.c:39
dpb_print
static void dpb_print(sequence_t *sequence)
Definition: alterh264_decode.c:126
bits_reader_set
static void bits_reader_set(bits_reader_t *br, const uint8_t *buf, int len)
Definition: alterh264_bits_reader.h:39
pic_parameter_set
static void pic_parameter_set(vdpau_h264_alter_decoder_t *this_gen)
Definition: alterh264_decode.c:902
seq_param_t::seq_scaling_matrix_present_flag
uint8_t seq_scaling_matrix_present_flag
Definition: alterh264_decode.h:101
vdpau_h264_alter_flush
static void vdpau_h264_alter_flush(video_decoder_t *this_gen)
Definition: alterh264_decode.c:2302
video_decoder_class_s::open_plugin
video_decoder_t *(* open_plugin)(video_decoder_class_t *this_gen, xine_stream_t *stream)
Definition: video_decoder.h:46
sequence_t::color_matrix
int color_matrix
Definition: alterh264_decode.h:273
MAX_BUFFER_SIZE
#define MAX_BUFFER_SIZE
Definition: alterh264_decode.c:35
XINE_IMGFMT_VDPAU
#define XINE_IMGFMT_VDPAU
Definition: xine.h:498
pic_param_t
Definition: alterh264_decode.h:130
SLICE_TYPE_P
#define SLICE_TYPE_P
Definition: alterh264_decode.c:48
dpb_frame_t
Definition: alterh264_decode.h:192
NAL_PICTURE
#define NAL_PICTURE
Definition: alterh264_decode.c:42
sequence_t::slice_mode
int slice_mode
Definition: alterh264_decode.h:237
seq_param_t::level_idc
uint8_t level_idc
Definition: alterh264_decode.h:90
slice_header
static void slice_header(vdpau_h264_alter_decoder_t *this_gen, uint8_t nal_ref_idc, uint8_t nal_unit_type)
Definition: alterh264_decode.c:1233
seq_param_t::offset_for_non_ref_pic
int32_t offset_for_non_ref_pic
Definition: alterh264_decode.h:108
NAL_END_SEQUENCE
#define NAL_END_SEQUENCE
Definition: alterh264_decode.c:44
pic_param_t::pic_init_qs_minus26
int8_t pic_init_qs_minus26
Definition: alterh264_decode.h:150
sequence_t::br
bits_reader_t br
Definition: alterh264_decode.h:261
sequence_t::bufseek
int bufseek
Definition: alterh264_decode.h:254
vdpau_accel_t::vo_frame
vo_frame_t * vo_frame
Definition: accel_vdpau.h:37
seq_parameter_set_data
static void seq_parameter_set_data(vdpau_h264_alter_decoder_t *this_gen)
Definition: alterh264_decode.c:709
pic_param_t::redundant_pic_cnt_present_flag
uint8_t redundant_pic_cnt_present_flag
Definition: alterh264_decode.h:154
START_IDR_FLAG
#define START_IDR_FLAG
Definition: alterh264_decode.c:54
N_
#define N_(String)
Definition: xineintl.h:47
vo_frame_s::free
void(* free)(vo_frame_t *vo_img)
Definition: video_out.h:100
XINE_EVENT_FRAME_FORMAT_CHANGE
#define XINE_EVENT_FRAME_FORMAT_CHANGE
Definition: xine.h:1818
slice_param_t::field_pic_flag
uint8_t field_pic_flag
Definition: alterh264_decode.h:173