xine-lib 1.2.13-20230125hg15249
vdec_hw_h264.h
Go to the documentation of this file.
1/* kate: tab-indent on; indent-width 2; mixedindent off; indent-mode cstyle; remove-trailing-space on; */
2/*
3 * Copyright (C) 2008-2022 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 * h264.h, a generic H264 video stream parser for VDPAU and VAAPI hardware decoders
22 */
23
24#ifndef VDEC_HW_H264_H
25#define VDEC_HW_H264_H
26
27#include <stdio.h>
28#include <stdlib.h>
29#include <string.h>
30#include <inttypes.h>
31#include <sys/types.h>
32
35
36typedef struct {
37 void *user_data;
40 int level;
41 int width;
42 int height;
43 double ratio;
44 int64_t pts;
46#define VDEC_HW_H264_FRAME_TOP_FIELD 1
47#define VDEC_HW_H264_FRAME_BOTTOM_FIELD 2
48#define VDEC_HW_H264_FRAME_NEW_SEQ 4
49 int flags;
57
58typedef struct {
60
64
65 int32_t field_order_cnt[2];
66 uint16_t frame_idx;
68
70 const uint8_t * const *slices_bitstream;
71 const uint32_t *slices_bytes;
72 uint32_t slice_count;
73
74 int32_t field_order_cnt[2];
76
77 uint16_t frame_num;
109
110 uint8_t scaling_lists_4x4[6][16];
111 uint8_t scaling_lists_8x8[2][64];
112
114};
115
121
123 int __attribute__((format (printf, 3, 4))) (*logg) (void *user_data,
124 vdec_hw_h264_logg_t level, const char *fmt, ...),
125 void *user_data,
126 int (*frame_new) (void *user_data, vdec_hw_h264_frame_t *frame),
127 int (*frame_render) (void *user_data, vdec_hw_h264_frame_t *frame),
128 int (*frame_ready) (void *user_data, vdec_hw_h264_frame_t *frame),
129 void (*frame_delete) (void *user_data, vdec_hw_h264_frame_t *frame),
130 int num_frames
131);
139int vdec_hw_h264_put_container_info (vdec_hw_h264_t *dec, int width, int height, int duration, double ratio);
141int vdec_hw_h264_put_config (vdec_hw_h264_t *dec, const uint8_t *bitstream, uint32_t num_bytes);
143int vdec_hw_h264_put_frame (vdec_hw_h264_t *dec, int64_t pts, const uint8_t *bitstream, uint32_t num_bytes, int frame_end);
146
147#endif
148
unsigned int height
Definition gfontrle.c:5
unsigned int width
Definition gfontrle.c:4
char **__environ __attribute__((weak, alias("fake__environ")))
Definition vdec_hw_h264.h:69
uint16_t frame_num
Definition vdec_hw_h264.h:77
int is_reference
Definition vdec_hw_h264.h:75
vdec_hw_h264_info_ref_frame_t referenceFrames[16]
Definition vdec_hw_h264.h:113
uint8_t delta_pic_order_always_zero_flag
Definition vdec_hw_h264.h:101
uint8_t slice_group_map_type
Definition vdec_hw_h264.h:108
uint8_t bit_depth_luma_minus8
Definition vdec_hw_h264.h:90
uint8_t deblocking_filter_control_present_flag
Definition vdec_hw_h264.h:105
int8_t second_chroma_qp_index_offset
Definition vdec_hw_h264.h:93
uint8_t weighted_pred_flag
Definition vdec_hw_h264.h:84
uint8_t direct_8x8_inference_flag
Definition vdec_hw_h264.h:102
uint8_t chroma_format_idc
Definition vdec_hw_h264.h:88
uint8_t transform_8x8_mode_flag
Definition vdec_hw_h264.h:87
int8_t chroma_qp_index_offset
Definition vdec_hw_h264.h:92
uint8_t log2_max_pic_order_cnt_lsb_minus4
Definition vdec_hw_h264.h:100
uint8_t pic_order_cnt_type
Definition vdec_hw_h264.h:99
uint8_t pic_order_present_flag
Definition vdec_hw_h264.h:104
uint32_t slice_count
Definition vdec_hw_h264.h:72
uint8_t num_slice_groups_minus1
Definition vdec_hw_h264.h:107
uint8_t frame_mbs_only_flag
Definition vdec_hw_h264.h:86
const uint8_t *const * slices_bitstream
Definition vdec_hw_h264.h:70
uint8_t redundant_pic_cnt_present_flag
Definition vdec_hw_h264.h:106
uint8_t bit_depth_chroma_minus8
Definition vdec_hw_h264.h:91
int8_t pic_init_qp_minus26
Definition vdec_hw_h264.h:94
uint8_t num_ref_idx_l1_active_minus1
Definition vdec_hw_h264.h:97
uint8_t num_ref_idx_l0_active_minus1
Definition vdec_hw_h264.h:96
uint8_t bottom_field_flag
Definition vdec_hw_h264.h:79
uint8_t num_ref_frames
Definition vdec_hw_h264.h:80
uint8_t scaling_lists_8x8[2][64]
Definition vdec_hw_h264.h:111
uint8_t entropy_coding_mode_flag
Definition vdec_hw_h264.h:103
uint8_t separate_colour_plane_flag
Definition vdec_hw_h264.h:89
uint8_t constrained_intra_pred_flag
Definition vdec_hw_h264.h:83
uint8_t log2_max_frame_num_minus4
Definition vdec_hw_h264.h:98
int8_t pic_init_qs_minus26
Definition vdec_hw_h264.h:95
const uint32_t * slices_bytes
Definition vdec_hw_h264.h:71
uint8_t field_pic_flag
Definition vdec_hw_h264.h:78
uint8_t scaling_lists_4x4[6][16]
Definition vdec_hw_h264.h:110
int32_t field_order_cnt[2]
Definition vdec_hw_h264.h:74
uint8_t weighted_bipred_idc
Definition vdec_hw_h264.h:85
uint8_t gaps_in_frame_num_value_allowed_flag
Definition vdec_hw_h264.h:81
uint8_t mb_adaptive_frame_field_flag
Definition vdec_hw_h264.h:82
Definition vdec_hw_h264.h:36
void * user_data
Definition vdec_hw_h264.h:37
int bad_frame
Definition vdec_hw_h264.h:50
int num_ref_frames
Definition vdec_hw_h264.h:54
int color_matrix
Definition vdec_hw_h264.h:53
int duration
Definition vdec_hw_h264.h:45
const vdec_hw_h264_frame_info_t * info
Definition vdec_hw_h264.h:55
double ratio
Definition vdec_hw_h264.h:43
int flags
Definition vdec_hw_h264.h:49
int top_field_first
Definition vdec_hw_h264.h:52
vdec_hw_h264_t * vdec
Definition vdec_hw_h264.h:38
int profile
Definition vdec_hw_h264.h:39
int level
Definition vdec_hw_h264.h:40
int progressive_frame
Definition vdec_hw_h264.h:51
int64_t pts
Definition vdec_hw_h264.h:44
int height
Definition vdec_hw_h264.h:42
int width
Definition vdec_hw_h264.h:41
Definition vdec_hw_h264.h:58
int bottom_is_reference
Definition vdec_hw_h264.h:63
uint16_t frame_idx
Definition vdec_hw_h264.h:66
int top_is_reference
Definition vdec_hw_h264.h:62
vdec_hw_h264_frame_t * frame
Definition vdec_hw_h264.h:59
int is_long_term
Definition vdec_hw_h264.h:61
Definition vdec_hw_h264.c:295
int vdec_hw_h264_put_config(vdec_hw_h264_t *dec, const uint8_t *bitstream, uint32_t num_bytes)
Definition vdec_hw_h264.c:2031
int vdec_hw_h264_reset(vdec_hw_h264_t *dec)
Definition vdec_hw_h264.c:2381
int vdec_hw_h264_flush(vdec_hw_h264_t *dec)
Definition vdec_hw_h264.c:2299
void vdec_hw_h264_delete(vdec_hw_h264_t **dec)
Definition vdec_hw_h264.c:2406
int vdec_hw_h264_zero_pts(vdec_hw_h264_t *dec)
Definition vdec_hw_h264.c:499
int vdec_hw_h264_put_container_info(vdec_hw_h264_t *dec, int width, int height, int duration, double ratio)
Definition vdec_hw_h264.c:2392
vdec_hw_h264_logg_t
Definition vdec_hw_h264.h:116
@ VDEC_HW_H264_LOGG_DEBUG
Definition vdec_hw_h264.h:119
@ VDEC_HW_H264_LOGG_ERR
Definition vdec_hw_h264.h:117
@ VDEC_HW_H264_LOGG_INFO
Definition vdec_hw_h264.h:118
int vdec_hw_h264_put_frame(vdec_hw_h264_t *dec, int64_t pts, const uint8_t *bitstream, uint32_t num_bytes, int frame_end)
Definition vdec_hw_h264.c:2117
vdec_hw_h264_t * vdec_hw_h264_new(int __attribute__((format(printf, 3, 4)))(*logg)(void *user_data, vdec_hw_h264_logg_t level, const char *fmt,...), void *user_data, int(*frame_new)(void *user_data, vdec_hw_h264_frame_t *frame), int(*frame_render)(void *user_data, vdec_hw_h264_frame_t *frame), int(*frame_ready)(void *user_data, vdec_hw_h264_frame_t *frame), void(*frame_delete)(void *user_data, vdec_hw_h264_frame_t *frame), int num_frames)
static void user_data(vdpau_mpeg4_decoder_t *this_gen, uint8_t *buffer, int len)
Definition vdpau_mpeg4.c:695