FFmpeg
|
#include "libavutil/avassert.h"
#include "libavutil/crc.h"
#include "libavutil/mem.h"
#include "avcodec.h"
#include "dovi_rpu.h"
#include "itut35.h"
#include "put_bits.h"
#include "put_golomb.h"
#include "refstruct.h"
Go to the source code of this file.
Macros | |
#define | ANY6(arr) (arr[0] || arr[1] || arr[2] || arr[3] || arr[4] || arr[5]) |
#define | ANY_XY(xy) (xy.x.num || xy.y.num) |
#define | ANY_CSP(csp) |
Functions | |
int | ff_dovi_configure (DOVIContext *s, AVCodecContext *avctx) |
Configure the encoder for Dolby Vision encoding. More... | |
static void | put_ue_coef (PutBitContext *pb, const AVDOVIRpuDataHeader *hdr, uint64_t coef) |
static void | put_se_coef (PutBitContext *pb, const AVDOVIRpuDataHeader *hdr, uint64_t coef) |
static int | av_q2den (AVRational q, int den) |
static void | generate_ext_v1 (PutBitContext *pb, const AVDOVIDmData *dm) |
static void | put_cie_xy (PutBitContext *pb, AVCIExy xy) |
static void | generate_ext_v2 (PutBitContext *pb, const AVDOVIDmData *dm) |
int | ff_dovi_rpu_generate (DOVIContext *s, const AVDOVIMetadata *metadata, uint8_t **out_rpu, int *out_size) |
Synthesize a Dolby Vision RPU reflecting the current state. More... | |
Variables | |
struct { | |
uint64_t pps | |
int width | |
int main | |
int high | |
} | dv_levels [] |
#define ANY6 | ( | arr | ) | (arr[0] || arr[1] || arr[2] || arr[3] || arr[4] || arr[5]) |
Definition at line 323 of file dovi_rpuenc.c.
#define ANY_XY | ( | xy | ) | (xy.x.num || xy.y.num) |
Definition at line 324 of file dovi_rpuenc.c.
#define ANY_CSP | ( | csp | ) |
Definition at line 325 of file dovi_rpuenc.c.
int ff_dovi_configure | ( | DOVIContext * | s, |
AVCodecContext * | avctx | ||
) |
Configure the encoder for Dolby Vision encoding.
Generates a configuration record in s->cfg, and attaches it to avctx->coded_side_data. Sets the correct profile and compatibility ID based on the tagged AVCodecContext colorspace metadata, and the correct level based on the resolution and tagged framerate.
Returns 0 or a negative error code.
Definition at line 55 of file dovi_rpuenc.c.
Referenced by aom_init(), eb_enc_init(), and libx265_encode_init().
|
inlinestatic |
Definition at line 210 of file dovi_rpuenc.c.
Referenced by ff_dovi_rpu_generate().
|
inlinestatic |
Definition at line 228 of file dovi_rpuenc.c.
Referenced by ff_dovi_rpu_generate().
|
static |
Definition at line 246 of file dovi_rpuenc.c.
Referenced by ff_dovi_rpu_generate(), and put_cie_xy().
|
static |
Definition at line 254 of file dovi_rpuenc.c.
Referenced by ff_dovi_rpu_generate().
|
static |
Definition at line 316 of file dovi_rpuenc.c.
Referenced by generate_ext_v2().
|
static |
Definition at line 328 of file dovi_rpuenc.c.
Referenced by ff_dovi_rpu_generate().
int ff_dovi_rpu_generate | ( | DOVIContext * | s, |
const AVDOVIMetadata * | metadata, | ||
uint8_t ** | out_rpu, | ||
int * | out_size | ||
) |
Synthesize a Dolby Vision RPU reflecting the current state.
Note that this assumes all previous calls to ff_dovi_rpu_generate
have been appropriately signalled, i.e. it will not re-send already transmitted redundant data.
Mutates the internal state of DOVIContext to reflect the change. Returns 0 or a negative error code.
This generates a fully formed RPU ready for inclusion in the bitstream, including the EMDF header (profile 10) or NAL encapsulation (otherwise).
Definition at line 443 of file dovi_rpuenc.c.
Referenced by aom_encode(), eb_send_frame(), and libx265_encode_frame().
uint64_t pps |
Definition at line 35 of file dovi_rpuenc.c.
Referenced by alloc_cu(), alloc_frame(), bcw_idx_decode(), bs_tl_init(), build_qp_table(), can_split(), cbs_h264_read_nal_unit(), cbs_h264_write_nal_unit(), cbs_h265_read_nal_unit(), cbs_h265_write_nal_unit(), cbs_h266_read_nal_unit(), cbs_h266_write_nal_unit(), chroma_qp_offset_decode(), coding_tree_bth(), coding_tree_btv(), coding_tree_qt(), colour_mapping_octants(), colour_mapping_table(), ctu_nz_tl_init(), ctu_rs(), ctu_tl_init(), ctu_xy(), decode_ph(), decode_pps(), decode_scaling_matrices(), delta_dlt(), derive_center_luma_intra_pred_mode(), derive_chroma_intra_pred_mode(), derive_dmvr_bdof_flag(), derive_weight(), derive_weight_uni(), dual_tree_implicit_qt_split(), emulated_edge(), emulated_edge_bilinear(), emulated_edge_dmvr(), end_of_access_unit_found(), export_frame_params(), ff_dovi_configure(), ff_dxva2_h264_fill_picture_parameters(), ff_dxva2_h264_fill_scaling_lists(), ff_dxva2_hevc_fill_picture_parameters(), ff_evc_derive_poc(), ff_evc_parse_pps(), ff_evc_parse_slice_header(), ff_h264_decode_picture_parameter_set(), ff_h264_execute_ref_pic_marking(), ff_h264_parse_ref_count(), ff_h264_queue_decode_slice(), ff_hevc_decode_nal_pps(), ff_isom_write_avcc(), ff_videotoolbox_hvcc_extradata_create(), ff_vvc_alf_filter(), ff_vvc_cabac_init(), ff_vvc_coding_tree_unit(), ff_vvc_frame_thread_init(), ff_vvc_slice_rpl(), ff_vvc_split_cu_flag(), fill_dmvr_info(), generate_missing_ref(), get_chroma_qp(), get_qp_y_pred(), h264_extradata_to_annexb(), h264_probe(), h264_redundant_pps_fixup_pps(), h264_redundant_pps_fixup_slice(), h264_slice_header_parse(), h265_metadata_guess_level(), hevc_pps_free(), hevc_probe(), hls_coding_tree(), hls_coding_tree_unit(), hls_transform_unit(), ibc_tl_init(), init_dequant4_coeff_table(), init_dequant8_coeff_table(), init_dequant_tables(), intra_luma_pred_modes(), intra_pred(), is_first_row(), ispmf_tl_init(), min_cb_tl_init(), min_pu_tl_init(), min_tu_tl_init(), msm_tl_init(), nvdec_h264_start_frame(), nvdec_hevc_start_frame(), parse_nal_unit(), ph_derive(), pic_arrays_init(), pixel_buffer_nz_tl_init(), pps_3d_extension(), pps_add_ctus(), pps_alloc(), pps_bd(), pps_chroma_qp_offset(), pps_derive(), pps_free(), pps_multi_tiles_slice(), pps_multilayer_extension(), pps_no_rect_slice(), pps_one_tile_slices(), pps_range_extensions(), pps_rect_slice(), pps_ref_wraparound_offset(), pps_scc_extension(), pps_single_slice_per_subpic(), pps_single_slice_picture(), pps_slice_map(), pps_subpic(), pps_subpic_less_than_one_tile_slice(), pps_subpic_one_or_more_tiles_slice(), pps_subpic_slice(), pps_width_height(), sb_clip_location(), set_cb_pos(), set_cb_tab(), set_dmvr_info(), set_parser_ctx(), set_pps(), set_qp_c(), setup_pps(), sh_derive(), sh_entry_points(), sh_inter(), sh_qp_y(), sh_slice_address(), subpic_offset(), subpic_tiles(), subpic_width_height(), temporal_luma_motion_vector(), tile_xy(), vaapi_encode_h264_init_sequence_params(), vaapi_encode_h264_init_slice_params(), vaapi_encode_h265_init_sequence_params(), vaapi_encode_h265_init_slice_params(), vaapi_h264_start_frame(), vaapi_hevc_start_frame(), vdpau_h264_start_frame(), vdpau_hevc_start_frame(), vk_hevc_end_frame(), vk_hevc_start_frame(), vvc_deblock_bs(), and vvc_probe().
int width |
Definition at line 36 of file dovi_rpuenc.c.
int main |
Definition at line 37 of file dovi_rpuenc.c.
Referenced by compute_vif2(), do_vif(), generate_tape_maps(), init_filter(), init_gblur_pipeline(), init_vulkan(), ssim360_4x4x2_tape(), ssim360_4x4xn_8bit(), ssim360_plane_16bit(), ssim360_plane_8bit(), ssim360_tape(), and ssim_4x4xn_8bit().
int high |
Definition at line 38 of file dovi_rpuenc.c.
Referenced by ac_dec_bit(), ac_decode_bool(), ac_update(), arith2_rescale_interval(), assign_bits(), bcd2uint(), celt_bits2pulses(), cfhd_decode(), cfhd_encode_frame(), conv_down(), conv_up(), decode_signed_subexp_with_ref(), decode_type1(), eval_expr(), ff_bgmc_decode(), ff_celt_bitalloc(), ff_double_threshold(), ff_opus_rc_dec_cdf(), ff_vk_shader_rep_fmt(), ff_vorbis_ready_floor1_list(), filter(), filterfn(), get_lsp_poly(), horiz_filter(), horiz_filter_clip(), horiz_filter_clip_bayer(), interlaced_vertical_filter(), inverse_temporal_filter(), mpegaudiodec_common_init_static(), opus_rc_dec_update(), quantize(), rand_in(), read_var_block_data(), silk_stabilize_lsf(), snow_interleave_line_footer(), test_hf_g_filt(), vert_filter(), wavpack_encode_sample(), wv_unpack_dsd_fast(), and wv_unpack_dsd_high().
struct { ... } dv_levels[] |
Referenced by ff_dovi_configure().