FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
cbs_vp9.h
Go to the documentation of this file.
1 /*
2  * This file is part of FFmpeg.
3  *
4  * FFmpeg is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * FFmpeg is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with FFmpeg; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17  */
18 
19 #ifndef AVCODEC_CBS_VP9_H
20 #define AVCODEC_CBS_VP9_H
21 
22 #include <stddef.h>
23 #include <stdint.h>
24 
25 #include "cbs.h"
26 
27 
28 // Miscellaneous constants (section 3).
29 enum {
31 
34 
37 
40 };
41 
42 // Frame types (section 7.2).
43 enum {
46 };
47 
48 // Frame sync bytes (section 7.2.1).
49 enum {
53 };
54 
55 // Color space values (section 7.2.2).
56 enum {
65 };
66 
67 // Reference frame types (section 7.4.12).
68 enum {
73 };
74 
75 // Superframe properties (section B.3).
76 enum {
78 
80 };
81 
82 
83 typedef struct VP9RawFrameHeader {
87 
90 
94 
95  // Color config.
101 
103 
106 
109 
111 
114 
116 
117  // Frame/render size.
124 
125  // Interpolation filter.
128 
129  // Loop filter params.
138 
139  // Quantization params.
141  int8_t delta_q_y_dc;
144 
145  // Segmentation params.
156 
157  // Tile info.
160 
163 
164 typedef struct VP9RawFrame {
166 
168  size_t data_size;
170 } VP9RawFrame;
171 
172 typedef struct VP9RawSuperframeIndex {
178 
179 typedef struct VP9RawSuperframe {
183 
184 typedef struct VP9ReferenceFrameState {
185  int frame_width; // RefFrameWidth
186  int frame_height; // RefFrameHeight
187  int subsampling_x; // RefSubsamplingX
188  int subsampling_y; // RefSubsamplingY
189  int bit_depth; // RefBitDepth
191 
192 typedef struct CodedBitstreamVP9Context {
193  int profile;
194 
195  // Frame dimensions in 8x8 mode info blocks.
196  uint16_t mi_cols;
197  uint16_t mi_rows;
198  // Frame dimensions in 64x64 superblocks.
199  uint16_t sb64_cols;
200  uint16_t sb64_rows;
201 
204 
208 
210 
211  // Write buffer.
215 
216 
217 #endif /* AVCODEC_CBS_VP9_H */
uint8_t update_ref_delta[VP9_MAX_REF_FRAMES]
Definition: cbs_vp9.h:134
uint8_t subsampling_y
Definition: cbs_vp9.h:100
uint8_t intra_only
Definition: cbs_vp9.h:104
uint8_t color_space
Definition: cbs_vp9.h:97
uint8_t reset_frame_context
Definition: cbs_vp9.h:105
uint8_t ref_frame_idx[VP9_REFS_PER_FRAME]
Definition: cbs_vp9.h:107
uint8_t show_frame
Definition: cbs_vp9.h:92
AVBufferRef * data_ref
Definition: cbs_vp9.h:169
uint8_t error_resilient_mode
Definition: cbs_vp9.h:93
int8_t delta_q_uv_ac
Definition: cbs_vp9.h:143
uint8_t show_existing_frame
Definition: cbs_vp9.h:88
uint8_t render_and_frame_size_different
Definition: cbs_vp9.h:121
uint8_t subsampling_x
Definition: cbs_vp9.h:99
uint8_t profile_high_bit
Definition: cbs_vp9.h:86
VP9RawFrame frames[VP9_MAX_FRAMES_IN_SUPERFRAME]
Definition: cbs_vp9.h:180
uint8_t
uint8_t ref_frame_sign_bias[VP9_MAX_REF_FRAMES]
Definition: cbs_vp9.h:108
uint8_t found_ref[VP9_REFS_PER_FRAME]
Definition: cbs_vp9.h:118
uint8_t refresh_frame_flags
Definition: cbs_vp9.h:102
int8_t delta_q_uv_dc
Definition: cbs_vp9.h:142
uint8_t refresh_frame_context
Definition: cbs_vp9.h:112
uint8_t segmentation_temporal_update
Definition: cbs_vp9.h:149
uint8_t is_filter_switchable
Definition: cbs_vp9.h:126
int8_t loop_filter_ref_deltas[VP9_MAX_REF_FRAMES]
Definition: cbs_vp9.h:135
uint8_t loop_filter_level
Definition: cbs_vp9.h:130
uint16_t render_height_minus_1
Definition: cbs_vp9.h:123
uint8_t superframe_marker
Definition: cbs_vp9.h:173
uint8_t bytes_per_framesize_minus_1
Definition: cbs_vp9.h:174
VP9ReferenceFrameState ref[VP9_NUM_REF_FRAMES]
Definition: cbs_vp9.h:209
uint8_t profile_low_bit
Definition: cbs_vp9.h:85
uint16_t header_size_in_bytes
Definition: cbs_vp9.h:161
uint32_t frame_sizes[VP9_MAX_FRAMES_IN_SUPERFRAME]
Definition: cbs_vp9.h:176
uint8_t loop_filter_delta_enabled
Definition: cbs_vp9.h:132
size_t data_size
Definition: cbs_vp9.h:168
uint8_t segmentation_tree_probs[7]
Definition: cbs_vp9.h:148
uint8_t tile_rows_log2
Definition: cbs_vp9.h:159
int8_t loop_filter_mode_deltas[2]
Definition: cbs_vp9.h:137
uint16_t render_width_minus_1
Definition: cbs_vp9.h:122
uint8_t segmentation_update_map
Definition: cbs_vp9.h:147
uint8_t ten_or_twelve_bit
Definition: cbs_vp9.h:96
uint16_t frame_height_minus_1
Definition: cbs_vp9.h:120
uint8_t * write_buffer
Definition: cbs_vp9.h:212
uint8_t segmentation_abs_or_delta_update
Definition: cbs_vp9.h:152
uint8_t feature_enabled[VP9_MAX_SEGMENTS][VP9_SEG_LVL_MAX]
Definition: cbs_vp9.h:153
uint8_t * data
Definition: cbs_vp9.h:167
uint8_t allow_high_precision_mv
Definition: cbs_vp9.h:110
uint8_t frames_in_superframe_minus_1
Definition: cbs_vp9.h:175
uint8_t color_range
Definition: cbs_vp9.h:98
uint8_t segmentation_update_data
Definition: cbs_vp9.h:151
A reference to a data buffer.
Definition: buffer.h:81
VP9RawFrameHeader header
Definition: cbs_vp9.h:165
uint8_t update_mode_delta[2]
Definition: cbs_vp9.h:136
uint8_t feature_value[VP9_MAX_SEGMENTS][VP9_SEG_LVL_MAX]
Definition: cbs_vp9.h:154
uint8_t segmentation_pred_prob[3]
Definition: cbs_vp9.h:150
int8_t delta_q_y_dc
Definition: cbs_vp9.h:141
uint8_t frame_type
Definition: cbs_vp9.h:91
uint8_t tile_cols_log2
Definition: cbs_vp9.h:158
uint8_t frame_parallel_decoding_mode
Definition: cbs_vp9.h:113
uint8_t segmentation_enabled
Definition: cbs_vp9.h:146
uint8_t loop_filter_delta_update
Definition: cbs_vp9.h:133
uint8_t frame_context_idx
Definition: cbs_vp9.h:115
VP9RawSuperframeIndex index
Definition: cbs_vp9.h:181
uint16_t frame_width_minus_1
Definition: cbs_vp9.h:119
uint8_t raw_interpolation_filter_type
Definition: cbs_vp9.h:127
uint8_t frame_marker
Definition: cbs_vp9.h:84
uint8_t loop_filter_sharpness
Definition: cbs_vp9.h:131
uint8_t base_q_idx
Definition: cbs_vp9.h:140
uint8_t frame_to_show_map_idx
Definition: cbs_vp9.h:89
uint8_t feature_sign[VP9_MAX_SEGMENTS][VP9_SEG_LVL_MAX]
Definition: cbs_vp9.h:155