}
static int FUNC(film_grain_params)(CodedBitstreamContext *ctx, RWContext *rw,
- AV1RawFrameHeader *current)
+ AV1RawFilmGrainParams *current,
+ AV1RawFrameHeader *frame_header)
{
CodedBitstreamAV1Context *priv = ctx->priv_data;
const AV1RawSequenceHeader *seq = priv->sequence_header;
int i, err;
if (!seq->film_grain_params_present ||
- (!current->show_frame && !current->showable_frame))
+ (!frame_header->show_frame && !frame_header->showable_frame))
return 0;
flag(apply_grain);
fb(16, grain_seed);
- if (current->frame_type == AV1_FRAME_INTER)
+ if (frame_header->frame_type == AV1_FRAME_INTER)
flag(update_grain);
else
infer(update_grain, 1);
priv->ref[i].valid = 0;
}
}
- } else if (!frame_is_intra && seq->enable_order_hint) {
- for (i = 0; i < AV1_NUM_REF_FRAMES; i++)
- infer(ref_order_hint[i], priv->ref[i].order_hint);
}
if (current->frame_type == AV1_FRAME_KEY ||
CHECK(FUNC(global_motion_params)(ctx, rw, current));
- CHECK(FUNC(film_grain_params)(ctx, rw, current));
+ CHECK(FUNC(film_grain_params)(ctx, rw, ¤t->film_grain, current));
av_log(ctx->log_ctx, AV_LOG_DEBUG, "Frame %d: size %dx%d "
"upscaled %d render %dx%d subsample %dx%d "
CHECK(FUNC(uncompressed_header)(ctx, rw, current));
+ priv->tile_num = 0;
+
if (current->show_existing_frame) {
priv->seen_frame_header = 0;
} else {
} else {
tile_bits = cbs_av1_tile_log2(1, priv->tile_cols) +
cbs_av1_tile_log2(1, priv->tile_rows);
- fb(tile_bits, tg_start);
- fb(tile_bits, tg_end);
+ fc(tile_bits, tg_start, priv->tile_num, num_tiles - 1);
+ fc(tile_bits, tg_end, current->tg_start, num_tiles - 1);
}
+ priv->tile_num = current->tg_end + 1;
+
CHECK(FUNC(byte_alignment)(ctx, rw));
// Reset header for next frame.