UltraGrid
UltraGrid Low-Latency High-Resolution Transmission System
Loading...
Searching...
No Matches
h264_stream.h
Go to the documentation of this file.
1/*
2 * h264bitstream - a library for reading and writing H.264 video
3 * Copyright (C) 2005-2007 Auroras Entertainment, LLC
4 * Copyright (C) 2008-2011 Avail-TVN
5 *
6 * Written by Alex Izvorski <aizvorski@gmail.com> and Alex Giladi <alex.giladi@gmail.com>
7 *
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
12 *
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
17 *
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this library; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21 */
22
23#ifndef _H264_STREAM_H
24#define _H264_STREAM_H 1
25
26#include <stdint.h>
27#include <stdio.h>
28#include <assert.h>
29
30#include "bs.h"
31
32#ifdef __cplusplus
33extern "C" {
34#endif
35
43typedef struct
44{
61 int seq_scaling_list_present_flag[8];
62 int* ScalingList4x4[6];
63 int UseDefaultScalingMatrix4x4Flag[6];
64 int* ScalingList8x8[2];
65 int UseDefaultScalingMatrix8x8Flag[2];
73 int offset_for_ref_frame[256];
87
88 struct
89 {
122 } vui;
123
124 struct
125 {
129 int bit_rate_value_minus1[32]; // up to cpb_cnt_minus1, which is <= 31
130 int cpb_size_value_minus1[32];
131 int cbr_flag[32];
136 } hrd;
137
138} sps_t;
139
148int nal_to_rbsp(const uint8_t* nal_buf, int* nal_size, uint8_t* rbsp_buf, int* rbsp_size);
149
151void read_scaling_list(bs_t* b, int* scalingList, int sizeOfScalingList, int useDefaultScalingMatrixFlag );
152void read_vui_parameters(sps_t* h, bs_t* b);
153void read_hrd_parameters(sps_t* h, bs_t* b);
154
156
157void debug_sps(sps_t* sps);
158
159#define SAR_Extended 255
160
161#ifdef __cplusplus
162}
163#endif
164
165#endif
void read_vui_parameters(sps_t *h, bs_t *b)
int read_seq_parameter_set_rbsp(sps_t *h, bs_t *b)
void read_scaling_list(bs_t *b, int *scalingList, int sizeOfScalingList, int useDefaultScalingMatrixFlag)
void read_hrd_parameters(sps_t *h, bs_t *b)
int nal_to_rbsp(const uint8_t *nal_buf, int *nal_size, uint8_t *rbsp_buf, int *rbsp_size)
Definition h264_stream.c:51
void read_rbsp_trailing_bits(bs_t *b)
void debug_sps(sps_t *sps)
Definition bs.h:35
int video_signal_type_present_flag
Definition h264_stream.h:96
int transfer_characteristics
int cpb_cnt_minus1
int matrix_coefficients
int frame_crop_right_offset
Definition h264_stream.h:83
int reserved_zero_2bits
Definition h264_stream.h:52
int frame_crop_left_offset
Definition h264_stream.h:82
int level_idc
Definition h264_stream.h:53
int vui_parameters_present_flag
Definition h264_stream.h:86
int nal_hrd_parameters_present_flag
int timing_info_present_flag
int video_format
Definition h264_stream.h:97
int mb_adaptive_frame_field_flag
Definition h264_stream.h:79
int dpb_output_delay_length_minus1
int direct_8x8_inference_flag
Definition h264_stream.h:80
int pic_height_in_map_units_minus1
Definition h264_stream.h:77
int colour_primaries
int fixed_frame_rate_flag
int video_full_range_flag
Definition h264_stream.h:98
int constraint_set2_flag
Definition h264_stream.h:48
int max_dec_frame_buffering
int vcl_hrd_parameters_present_flag
int num_units_in_tick
int offset_for_non_ref_pic
Definition h264_stream.h:70
int bit_rate_scale
int colour_description_present_flag
Definition h264_stream.h:99
int log2_max_pic_order_cnt_lsb_minus4
Definition h264_stream.h:68
int sar_width
Definition h264_stream.h:92
int frame_cropping_flag
Definition h264_stream.h:81
int log2_max_frame_num_minus4
Definition h264_stream.h:66
int overscan_info_present_flag
Definition h264_stream.h:94
int max_bits_per_mb_denom
int constraint_set4_flag
Definition h264_stream.h:50
int seq_parameter_set_id
Definition h264_stream.h:54
int bit_depth_luma_minus8
Definition h264_stream.h:57
int frame_crop_top_offset
Definition h264_stream.h:84
int qpprime_y_zero_transform_bypass_flag
Definition h264_stream.h:59
int time_scale
int motion_vectors_over_pic_boundaries_flag
int bit_depth_chroma_minus8
Definition h264_stream.h:58
int offset_for_top_to_bottom_field
Definition h264_stream.h:71
int constraint_set3_flag
Definition h264_stream.h:49
int frame_crop_bottom_offset
Definition h264_stream.h:85
int pic_order_cnt_type
Definition h264_stream.h:67
int num_reorder_frames
int chroma_loc_info_present_flag
int pic_struct_present_flag
int chroma_sample_loc_type_top_field
int constraint_set5_flag
Definition h264_stream.h:51
int aspect_ratio_idc
Definition h264_stream.h:91
int initial_cpb_removal_delay_length_minus1
int bitstream_restriction_flag
int low_delay_hrd_flag
int log2_max_mv_length_vertical
int sar_height
Definition h264_stream.h:93
int profile_idc
Definition h264_stream.h:45
int cpb_removal_delay_length_minus1
int cpb_size_scale
int log2_max_mv_length_horizontal
int num_ref_frames
Definition h264_stream.h:74
int chroma_format_idc
Definition h264_stream.h:55
int gaps_in_frame_num_value_allowed_flag
Definition h264_stream.h:75
int chroma_sample_loc_type_bottom_field
int constraint_set0_flag
Definition h264_stream.h:46
int aspect_ratio_info_present_flag
Definition h264_stream.h:90
int delta_pic_order_always_zero_flag
Definition h264_stream.h:69
int overscan_appropriate_flag
Definition h264_stream.h:95
int max_bytes_per_pic_denom
int time_offset_length
int constraint_set1_flag
Definition h264_stream.h:47
int pic_width_in_mbs_minus1
Definition h264_stream.h:76
int frame_mbs_only_flag
Definition h264_stream.h:78
int residual_colour_transform_flag
Definition h264_stream.h:56
int seq_scaling_matrix_present_flag
Definition h264_stream.h:60
int num_ref_frames_in_pic_order_cnt_cycle
Definition h264_stream.h:72