52#include "extras/crypto.h"
369 return (vps_period > 0 &&
frame % vps_period == 0) ||
370 (vps_period >= 0 &&
frame == 0);
390 const int right = x + cu_width;
391 const int bottom = y + cu_width;
392 return (right % qg_width == 0 || right >= state->
tile->
frame->
width) &&
398 0, 1, 2, 3, 4, 4, 5, 5, 6, 6,
399 6, 6, 7, 7, 7, 7, 8, 8, 8, 8,
400 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
404 0, 1, 2, 3, 4, 6, 8, 12, 16, 24 };
407#define C1FLAG_NUMBER 8
408#define C2FLAG_NUMBER 1
411#define OFFSET_VER_BUF(position_x, position_y, cur_pic, i) ((position_y) + i + ((position_x)/LCU_WIDTH - 1) * (cur_pic)->height)
412#define OFFSET_VER_BUF_C(position_x, position_y, cur_pic, i) ((position_y/2) + i + ((position_x)/LCU_WIDTH - 1) * (cur_pic)->height / 2)
415#define OFFSET_HOR_BUF(position_x, position_y, cur_pic, i) ((position_x) + i + ((position_y)/LCU_WIDTH - 1) * (cur_pic)->width)
416#define OFFSET_HOR_BUF_C(position_x, position_y, cur_pic, i) ((position_x/2) + i + ((position_y)/LCU_WIDTH - 1) * (cur_pic)->width / 2)
Appending bits into an Annex-B coded bitstream.
Coding Unit data structure and related functions.
lcu_coeff_t
Definition cu.h:296
Initialization of encoder_control_t.
struct encoder_state_config_slice_t encoder_state_config_slice_t
struct lcu_stats_t lcu_stats_t
int kvz_get_cu_ref_qp(const encoder_state_t *state, int x, int y, int last_qp)
Definition encoderstate.c:1785
int kvz_encoder_state_match_children_of_previous_frame(encoder_state_t *const state)
Definition encoderstate.c:65
encoder_state_type
Definition encoderstate.h:56
@ ENCODER_STATE_TYPE_WAVEFRONT_ROW
Definition encoderstate.h:61
@ ENCODER_STATE_TYPE_TILE
Definition encoderstate.h:60
@ ENCODER_STATE_TYPE_MAIN
Definition encoderstate.h:58
@ ENCODER_STATE_TYPE_INVALID
Definition encoderstate.h:57
@ ENCODER_STATE_TYPE_SLICE
Definition encoderstate.h:59
struct encoder_state_t encoder_state_t
Definition fast_coeff_cost.h:105
struct lcu_order_element lcu_order_element_t
static bool is_last_cu_in_qg(const encoder_state_t *state, int x, int y, int depth)
Returns true if the CU is the last CU in its containing quantization group.
Definition encoderstate.h:384
void kvz_encoder_create_ref_lists(const encoder_state_t *const state)
Generate reference picture lists.
Definition encoderstate.c:1065
static const uint8_t g_group_idx[32]
Definition encoderstate.h:397
struct encoder_state_config_frame_t encoder_state_config_frame_t
void kvz_encoder_prepare(encoder_state_t *state)
Prepare the encoder state for encoding the next frame.
Definition encoderstate.c:1690
static bool encoder_state_must_write_vps(const encoder_state_t *state)
Whether the parameter sets should be written with the current frame.
Definition encoderstate.h:364
struct encoder_state_config_tile_t encoder_state_config_tile_t
void kvz_encode_one_frame(encoder_state_t *const state, kvz_picture *frame)
Definition encoderstate.c:1661
static const uint8_t g_min_in_group[10]
Definition encoderstate.h:403
coeff_scan_order_t kvz_get_scan_order(int8_t cu_type, int intra_mode, int depth)
Definition encoderstate.c:1761
lcu_stats_t * kvz_get_lcu_stats(encoder_state_t *state, int lcu_x, int lcu_y)
Definition encoderstate.c:1777
struct encoder_state_config_wfrow_t encoder_state_config_wfrow_t
Header that is included in every other header.
#define INLINE
Definition global.h:240
#define LCU_WIDTH
spec: CtbSizeY
Definition global.h:153
A reference counted YUV pixel buffer.
Container for a list of reference pictures.
This file defines the public API of Kvazaar when used as a library.
kvz_slice_type
Definition kvazaar.h:602
A stream of bits.
Definition bitstream.h:50
kvz_config cfg
Configuration.
Definition encoder.h:61
Definition encoderstate.h:95
int8_t QP
Frame-level quantization parameter.
Definition encoderstate.h:116
struct encoder_state_t const * previous_layer_state
Definition encoderstate.h:176
double * aq_offsets
Calculated adaptive QP offset for each LCU.
Definition encoderstate.h:181
double remaining_weight
Definition encoderstate.h:190
double cur_gop_target_bits
Number of bits targeted for the current GOP.
Definition encoderstate.h:143
double cur_pic_target_bits
Number of bits targeted for the current picture.
Definition encoderstate.h:146
int32_t poc
Picture order count.
Definition encoderstate.h:107
double rc_beta
Definition encoderstate.h:150
uint8_t pictype
Definition encoderstate.h:130
int8_t gop_offset
Offset in the gop structure.
Definition encoderstate.h:108
lcu_stats_t * lcu_stats
Information about the coded LCUs.
Definition encoderstate.h:170
double QP_factor
quantization factor
Definition encoderstate.h:118
bool prepared
Indicates that this encoder state is ready for encoding the next frame i.e.
Definition encoderstate.h:156
uint64_t cur_frame_bits_coded
Number of bits written in the current frame.
Definition encoderstate.h:140
enum kvz_slice_type slicetype
Definition encoderstate.h:131
int32_t num
Frame number.
Definition encoderstate.h:106
int8_t ref_list
Definition encoderstate.h:122
image_list_t * ref
Current pictures available for references.
Definition encoderstate.h:121
pthread_mutex_t rc_lock
Definition encoderstate.h:172
double lambda
Frame-level lambda.
Definition encoderstate.h:104
struct kvz_rc_data * new_ratecontrol
Definition encoderstate.h:174
uint64_t cur_gop_bits_coded
Number of bits written in the current GOP.
Definition encoderstate.h:137
uint8_t ref_LX[2][16]
L0 and L1 reference index list.
Definition encoderstate.h:125
uint64_t total_bits_coded
Total number of bits written.
Definition encoderstate.h:134
double rc_alpha
Definition encoderstate.h:149
double * k_para
Definition encoderstate.h:194
bool done
Indicates that the previous frame has been encoded and the encoded data written and the encoding the ...
Definition encoderstate.h:163
bool first_nal
Whether next NAL is the first NAL in the access unit.
Definition encoderstate.h:188
double i_bits_left
Definition encoderstate.h:191
double * c_para
Definition encoderstate.h:193
int32_t irap_poc
POC of the associated IRAP picture.
Definition encoderstate.h:109
double icost
Definition encoderstate.h:189
bool is_irap
Definition encoderstate.h:129
uint8_t ref_LX_size[2]
L0 reference index list size.
Definition encoderstate.h:127
int8_t max_qp_delta_depth
Definition encoderstate.h:183
Definition encoderstate.h:238
int32_t end_in_rs
Definition encoderstate.h:247
int32_t start_in_rs
Definition encoderstate.h:246
int32_t start_in_ts
Definition encoderstate.h:242
int32_t id
Definition encoderstate.h:239
int32_t end_in_ts
Definition encoderstate.h:243
Definition encoderstate.h:197
int32_t lcu_offset_in_ts
Definition encoderstate.h:212
yuv_t * hor_buf_before_sao
Definition encoderstate.h:226
int32_t id
Definition encoderstate.h:201
int32_t lcu_offset_x
Definition encoderstate.h:204
yuv_t * ver_buf_search
Definition encoderstate.h:221
int32_t lcu_offset_y
Definition encoderstate.h:205
yuv_t * ver_buf_before_sao
Definition encoderstate.h:231
threadqueue_job_t ** wf_jobs
Definition encoderstate.h:234
yuv_t * hor_buf_search
Definition encoderstate.h:217
int32_t offset_y
Definition encoderstate.h:209
int32_t offset_x
Definition encoderstate.h:208
videoframe_t * frame
Definition encoderstate.h:199
Definition encoderstate.h:250
int32_t lcu_offset_y
Definition encoderstate.h:252
Definition encoderstate.h:274
threadqueue_job_t * tqj_bitstream_written
Definition encoderstate.h:337
int8_t qp
Quantization parameter for the current LCU.
Definition encoderstate.h:310
lcu_order_element_t * lcu_order
Definition encoderstate.h:292
double lambda_sqrt
Lambda for SAD and SATD.
Definition encoderstate.h:308
bool must_code_qp_delta
Whether a QP delta value must be coded for the current LCU.
Definition encoderstate.h:315
uint32_t crypto_prev_pos
Definition encoderstate.h:301
bitstream_t stream
Definition encoderstate.h:295
encoder_state_config_slice_t * slice
Definition encoderstate.h:288
cabac_data_t cabac
Definition encoderstate.h:296
lcu_coeff_t * coeff
Coeffs for the LCU.
Definition encoderstate.h:333
uint32_t lcu_order_count
Definition encoderstate.h:293
uint32_t stats_bitstream_length
Definition encoderstate.h:303
cabac_data_t search_cabac
Definition encoderstate.h:297
encoder_state_config_frame_t * frame
Definition encoderstate.h:286
int8_t last_qp
QP value of the last CU in the last coded quantization group.
Definition encoderstate.h:328
struct encoder_state_t * previous_encoder_state
Definition encoderstate.h:284
crypto_handle_t * crypto_hdl
Definition encoderstate.h:300
void * constraint
Definition encoderstate.h:340
double lambda
Lambda for SSE.
Definition encoderstate.h:306
encoder_state_config_wfrow_t * wfrow
Definition encoderstate.h:289
threadqueue_job_t * tqj_recon_done
Definition encoderstate.h:336
const encoder_control_t * encoder_control
Definition encoderstate.h:275
int is_leaf
Definition encoderstate.h:291
encoder_state_config_tile_t * tile
Definition encoderstate.h:287
struct encoder_state_t * children
Definition encoderstate.h:280
encoder_state_type type
Definition encoderstate.h:276
struct encoder_state_t * parent
Definition encoderstate.h:281
Struct which contains array of picture structs.
Definition imagelist.h:50
int32_t vps_period
How often the VPS, SPS and PPS are re-sent.
Definition kvazaar.h:300
Struct which contains all picture data.
Definition kvazaar.h:504
Definition rate_control.h:46
Definition encoderstate.h:255
int last_row
Definition encoderstate.h:266
int first_row
Definition encoderstate.h:264
struct lcu_order_element * below
Definition encoderstate.h:269
struct encoder_state_t * encoder_state
Definition encoderstate.h:259
struct lcu_order_element * right
Definition encoderstate.h:271
struct lcu_order_element * left
Definition encoderstate.h:270
vector2d_t size
Definition encoderstate.h:262
int first_column
Definition encoderstate.h:263
vector2d_t position
Definition encoderstate.h:260
int index
Definition encoderstate.h:258
int last_column
Definition encoderstate.h:265
vector2d_t position_px
Definition encoderstate.h:261
struct lcu_order_element * above
Definition encoderstate.h:268
int id
Definition encoderstate.h:257
Definition encoderstate.h:65
double original_weight
Definition encoderstate.h:74
double weight
Weight of the LCU for rate control.
Definition encoderstate.h:72
double rc_alpha
Rate control alpha parameter.
Definition encoderstate.h:82
int8_t qp
Definition encoderstate.h:89
double lambda
Lambda value which was used for this LCU.
Definition encoderstate.h:77
int i_cost
Definition encoderstate.h:87
uint32_t bits
Number of bits that were spent.
Definition encoderstate.h:67
double distortion
Definition encoderstate.h:86
double adjust_lambda
Definition encoderstate.h:79
int8_t adjust_qp
Definition encoderstate.h:90
uint8_t skipped
Definition encoderstate.h:91
uint32_t pixels
Definition encoderstate.h:69
double rc_beta
Rate control beta parameter.
Definition encoderstate.h:85
Definition threadqueue.c:127
Struct which contains all picture data.
Definition videoframe.h:50
int32_t width
Luma pixel array width.
Definition videoframe.h:54
int32_t height
Luma pixel array height.
Definition videoframe.h:55
coeff_scan_order_t
Definition tables.h:93
Container for worker tasks.
Container for the frame currently being encoded.