mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-19 05:49:09 +02:00
avcodec/dovi_rpuenc: add a flag to enable compression
Keyframes must reset the metadata compression state, so we need to also signal this at rpu generation time. Default to uncompressed, because encoders cannot generally know if a given frame will be a keyframe before they finish encoding, but also cannot retroactively attach the RPU. (Within the confines of current APIs)
This commit is contained in:
parent
b3bc8f8e1e
commit
ae3a78593d
@ -126,6 +126,7 @@ int ff_dovi_configure(DOVIContext *s, AVCodecContext *avctx);
|
||||
enum {
|
||||
FF_DOVI_WRAP_NAL = 1 << 0, ///< wrap inside NAL RBSP
|
||||
FF_DOVI_WRAP_T35 = 1 << 1, ///< wrap inside T.35+EMDF
|
||||
FF_DOVI_COMPRESS_RPU = 1 << 2, ///< enable compression for this RPU
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -444,6 +444,7 @@ int ff_dovi_rpu_generate(DOVIContext *s, const AVDOVIMetadata *metadata,
|
||||
int vdr_dm_metadata_present, vdr_rpu_id, use_prev_vdr_rpu, profile,
|
||||
buffer_size, rpu_size, pad, zero_run;
|
||||
int num_ext_blocks_v1, num_ext_blocks_v2;
|
||||
int dv_md_compression = s->cfg.dv_md_compression;
|
||||
uint32_t crc;
|
||||
uint8_t *dst;
|
||||
if (!metadata) {
|
||||
@ -463,6 +464,9 @@ int ff_dovi_rpu_generate(DOVIContext *s, const AVDOVIMetadata *metadata,
|
||||
return AVERROR_INVALIDDATA;
|
||||
}
|
||||
|
||||
if (!(flags & FF_DOVI_COMPRESS_RPU))
|
||||
dv_md_compression = AV_DOVI_COMPRESSION_NONE;
|
||||
|
||||
vdr_rpu_id = mapping->vdr_rpu_id;
|
||||
use_prev_vdr_rpu = 0;
|
||||
|
||||
@ -472,7 +476,7 @@ int ff_dovi_rpu_generate(DOVIContext *s, const AVDOVIMetadata *metadata,
|
||||
return AVERROR(ENOMEM);
|
||||
}
|
||||
|
||||
switch (s->cfg.dv_md_compression) {
|
||||
switch (dv_md_compression) {
|
||||
case AV_DOVI_COMPRESSION_LIMITED:
|
||||
/* Limited metadata compression requires vdr_rpi_id == 0 */
|
||||
if (vdr_rpu_id != 0)
|
||||
|
Loading…
x
Reference in New Issue
Block a user