You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-04 22:03:09 +02:00
cbs_apv: Better constrain tile_width/height_in_mbs
The maximum number of tile columns/rows adds an extra constraint on the minimum tile width/height for large frames (over 5120 width or 2560 height).
This commit is contained in:
@ -409,7 +409,7 @@ static int apv_decode_frame(AVCodecContext *avctx, AVFrame *frame,
|
|||||||
err = ff_cbs_read_packet(apv->cbc, au, packet);
|
err = ff_cbs_read_packet(apv->cbc, au, packet);
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
av_log(avctx, AV_LOG_ERROR, "Failed to read packet.\n");
|
av_log(avctx, AV_LOG_ERROR, "Failed to read packet.\n");
|
||||||
return err;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < au->nb_units; i++) {
|
for (int i = 0; i < au->nb_units; i++) {
|
||||||
|
@ -113,12 +113,18 @@ static int FUNC(tile_info)(CodedBitstreamContext *ctx, RWContext *rw,
|
|||||||
const APVRawFrameHeader *fh)
|
const APVRawFrameHeader *fh)
|
||||||
{
|
{
|
||||||
CodedBitstreamAPVContext *priv = ctx->priv_data;
|
CodedBitstreamAPVContext *priv = ctx->priv_data;
|
||||||
|
int frame_width_in_mbs = (fh->frame_info.frame_width + 15) / 16;
|
||||||
|
int frame_height_in_mbs = (fh->frame_info.frame_height + 15) / 16;
|
||||||
|
uint32_t min_tile_width = FFMAX(APV_MIN_TILE_WIDTH_IN_MBS,
|
||||||
|
(frame_width_in_mbs + APV_MAX_TILE_COLS - 1) /
|
||||||
|
APV_MAX_TILE_COLS);
|
||||||
|
uint32_t min_tile_height = FFMAX(APV_MIN_TILE_HEIGHT_IN_MBS,
|
||||||
|
(frame_height_in_mbs + APV_MAX_TILE_ROWS - 1) /
|
||||||
|
APV_MAX_TILE_ROWS);
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
u(20, tile_width_in_mbs,
|
u(20, tile_width_in_mbs, min_tile_width, MAX_UINT_BITS(20));
|
||||||
APV_MIN_TILE_WIDTH_IN_MBS, MAX_UINT_BITS(20));
|
u(20, tile_height_in_mbs, min_tile_height, MAX_UINT_BITS(20));
|
||||||
u(20, tile_height_in_mbs,
|
|
||||||
APV_MIN_TILE_HEIGHT_IN_MBS, MAX_UINT_BITS(20));
|
|
||||||
|
|
||||||
ub(1, tile_size_present_in_fh_flag);
|
ub(1, tile_size_present_in_fh_flag);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user