mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-06 23:37:31 +09:00
Update aom to commit id f5bdeac22930ff4c6b219be49c843db35970b918
This commit is contained in:
parent
e329bc4331
commit
2ab8fcbfd1
370 changed files with 56185 additions and 32026 deletions
50
third_party/aom/av1/av1_dx_iface.c
vendored
50
third_party/aom/av1/av1_dx_iface.c
vendored
|
|
@ -106,6 +106,8 @@ static aom_codec_err_t decoder_init(aom_codec_ctx_t *ctx,
|
|||
(ctx->init_flags & AOM_CODEC_USE_FRAME_THREADING))
|
||||
? 1
|
||||
: 0;
|
||||
// TODO(tdaede): this should not be exposed to the API
|
||||
priv->cfg.allow_lowbitdepth = CONFIG_LOWBITDEPTH;
|
||||
if (ctx->config.dec) {
|
||||
priv->cfg = *ctx->config.dec;
|
||||
ctx->config.dec = &priv->cfg;
|
||||
|
|
@ -154,14 +156,40 @@ static aom_codec_err_t decoder_destroy(aom_codec_alg_priv_t *ctx) {
|
|||
static int parse_bitdepth_colorspace_sampling(BITSTREAM_PROFILE profile,
|
||||
struct aom_read_bit_buffer *rb) {
|
||||
aom_color_space_t color_space;
|
||||
#if CONFIG_COLORSPACE_HEADERS
|
||||
int subsampling_x = 0;
|
||||
int subsampling_y = 0;
|
||||
#endif
|
||||
|
||||
if (profile >= PROFILE_2) rb->bit_offset += 1; // Bit-depth 10 or 12.
|
||||
#if CONFIG_COLORSPACE_HEADERS
|
||||
color_space = (aom_color_space_t)aom_rb_read_literal(rb, 5);
|
||||
rb->bit_offset += 5; // Transfer function
|
||||
#else
|
||||
color_space = (aom_color_space_t)aom_rb_read_literal(rb, 3);
|
||||
#endif
|
||||
if (color_space != AOM_CS_SRGB) {
|
||||
rb->bit_offset += 1; // [16,235] (including xvycc) vs [0,255] range.
|
||||
|
||||
if (profile == PROFILE_1 || profile == PROFILE_3) {
|
||||
#if CONFIG_COLORSPACE_HEADERS
|
||||
subsampling_x = aom_rb_read_bit(rb);
|
||||
subsampling_y = aom_rb_read_bit(rb);
|
||||
#else
|
||||
rb->bit_offset += 2; // subsampling x/y.
|
||||
#endif
|
||||
rb->bit_offset += 1; // unused.
|
||||
#if CONFIG_COLORSPACE_HEADERS
|
||||
} else {
|
||||
subsampling_x = 1;
|
||||
subsampling_y = 1;
|
||||
}
|
||||
if (subsampling_x == 1 && subsampling_y == 1) {
|
||||
rb->bit_offset += 2;
|
||||
}
|
||||
#else
|
||||
}
|
||||
#endif
|
||||
} else {
|
||||
if (profile == PROFILE_1 || profile == PROFILE_3) {
|
||||
rb->bit_offset += 1; // unused
|
||||
|
|
@ -196,6 +224,9 @@ static aom_codec_err_t decoder_peek_si_internal(
|
|||
struct aom_read_bit_buffer rb = { data, data + data_sz, 0, NULL, NULL };
|
||||
const int frame_marker = aom_rb_read_literal(&rb, 2);
|
||||
const BITSTREAM_PROFILE profile = av1_read_profile(&rb);
|
||||
#if CONFIG_EXT_TILE
|
||||
unsigned int large_scale_tile;
|
||||
#endif // CONFIG_EXT_TILE
|
||||
|
||||
if (frame_marker != AOM_FRAME_MARKER) return AOM_CODEC_UNSUP_BITSTREAM;
|
||||
|
||||
|
|
@ -204,6 +235,10 @@ static aom_codec_err_t decoder_peek_si_internal(
|
|||
if ((profile >= 2 && data_sz <= 1) || data_sz < 1)
|
||||
return AOM_CODEC_UNSUP_BITSTREAM;
|
||||
|
||||
#if CONFIG_EXT_TILE
|
||||
large_scale_tile = aom_rb_read_literal(&rb, 1);
|
||||
#endif // CONFIG_EXT_TILE
|
||||
|
||||
if (aom_rb_read_bit(&rb)) { // show an existing frame
|
||||
aom_rb_read_literal(&rb, 3); // Frame buffer to show.
|
||||
return AOM_CODEC_OK;
|
||||
|
|
@ -220,6 +255,9 @@ static aom_codec_err_t decoder_peek_si_internal(
|
|||
int frame_id_len;
|
||||
SequenceHeader seq_params;
|
||||
read_sequence_header(&seq_params);
|
||||
#if CONFIG_EXT_TILE
|
||||
if (large_scale_tile) seq_params.frame_id_numbers_present_flag = 0;
|
||||
#endif // CONFIG_EXT_TILE
|
||||
if (seq_params.frame_id_numbers_present_flag) {
|
||||
frame_id_len = seq_params.frame_id_length_minus7 + 7;
|
||||
aom_rb_read_literal(&rb, frame_id_len);
|
||||
|
|
@ -417,6 +455,8 @@ static aom_codec_err_t init_decoder(aom_codec_alg_priv_t *ctx) {
|
|||
return AOM_CODEC_MEM_ERROR;
|
||||
}
|
||||
#endif
|
||||
frame_worker_data->pbi->allow_lowbitdepth = ctx->cfg.allow_lowbitdepth;
|
||||
|
||||
// If decoding in serial mode, FrameWorker thread could create tile worker
|
||||
// thread or loopfilter thread.
|
||||
frame_worker_data->pbi->max_threads =
|
||||
|
|
@ -597,10 +637,14 @@ static aom_codec_err_t decoder_decode(aom_codec_alg_priv_t *ctx,
|
|||
if (res != AOM_CODEC_OK) return res;
|
||||
}
|
||||
|
||||
int index_size = 0;
|
||||
res = av1_parse_superframe_index(data, data_sz, frame_sizes, &frame_count,
|
||||
ctx->decrypt_cb, ctx->decrypt_state);
|
||||
&index_size, ctx->decrypt_cb,
|
||||
ctx->decrypt_state);
|
||||
if (res != AOM_CODEC_OK) return res;
|
||||
|
||||
data_start += index_size;
|
||||
|
||||
if (ctx->frame_parallel_decode) {
|
||||
// Decode in frame parallel mode. When decoding in this mode, the frame
|
||||
// passed to the decoder must be either a normal frame or a superframe with
|
||||
|
|
@ -752,7 +796,7 @@ static aom_image_t *decoder_get_frame(aom_codec_alg_priv_t *ctx,
|
|||
yuvconfig2image(&ctx->img, &sd, frame_worker_data->user_priv);
|
||||
|
||||
#if CONFIG_EXT_TILE
|
||||
if (cm->tile_encoding_mode &&
|
||||
if (cm->single_tile_decoding &&
|
||||
frame_worker_data->pbi->dec_tile_row >= 0) {
|
||||
const int tile_row =
|
||||
AOMMIN(frame_worker_data->pbi->dec_tile_row, cm->tile_rows - 1);
|
||||
|
|
@ -768,7 +812,7 @@ static aom_image_t *decoder_get_frame(aom_codec_alg_priv_t *ctx,
|
|||
AOMMIN(cm->tile_height, cm->mi_rows - mi_row) * MI_SIZE;
|
||||
}
|
||||
|
||||
if (cm->tile_encoding_mode &&
|
||||
if (cm->single_tile_decoding &&
|
||||
frame_worker_data->pbi->dec_tile_col >= 0) {
|
||||
const int tile_col =
|
||||
AOMMIN(frame_worker_data->pbi->dec_tile_col, cm->tile_cols - 1);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue