summaryrefslogtreecommitdiff
path: root/libavcodec/dnxhddec.c
diff options
context:
space:
mode:
authorJames Almer <jamrial@gmail.com>2023-04-11 15:02:14 -0300
committerJames Almer <jamrial@gmail.com>2023-05-04 18:14:02 -0300
commit2f561ba953e23887ddb25ab1b6739aab04ff9115 (patch)
treedff824910ba954804d593dbf1aee0978dd5b612e /libavcodec/dnxhddec.c
parent2df4e054d4b8f69ce3c2c06aace9df9ba6d2ac2e (diff)
downloadffmpeg-2f561ba953e23887ddb25ab1b6739aab04ff9115.tar.gz
avcodec: use the new AVFrame interlace flags in all decoders and encoders
Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavcodec/dnxhddec.c')
-rw-r--r--libavcodec/dnxhddec.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/libavcodec/dnxhddec.c b/libavcodec/dnxhddec.c
index 7cc4f94c7f..30a4e39695 100644
--- a/libavcodec/dnxhddec.c
+++ b/libavcodec/dnxhddec.c
@@ -195,8 +195,9 @@ static int dnxhd_decode_header(DNXHDContext *ctx, AVFrame *frame,
}
if (buf[5] & 2) { /* interlaced */
ctx->cur_field = first_field ? buf[5] & 1 : !ctx->cur_field;
- frame->interlaced_frame = 1;
- frame->top_field_first = first_field ^ ctx->cur_field;
+ frame->flags |= AV_FRAME_FLAG_INTERLACED;
+ if (first_field ^ ctx->cur_field)
+ frame->flags |= AV_FRAME_FLAG_TOP_FIELD_FIRST;
av_log(ctx->avctx, AV_LOG_DEBUG,
"interlaced %d, cur field %d\n", buf[5] & 3, ctx->cur_field);
} else {
@@ -298,7 +299,7 @@ static int dnxhd_decode_header(DNXHDContext *ctx, AVFrame *frame,
ctx->mb_width = (ctx->width + 15)>> 4;
ctx->mb_height = AV_RB16(buf + 0x16c);
- if ((ctx->height + 15) >> 4 == ctx->mb_height && frame->interlaced_frame)
+ if ((ctx->height + 15) >> 4 == ctx->mb_height && (frame->flags & AV_FRAME_FLAG_INTERLACED))
ctx->height <<= 1;
av_log(ctx->avctx, AV_LOG_VERBOSE, "%dx%d, 4:%s %d bits, MBAFF=%d ACT=%d\n",
@@ -316,7 +317,7 @@ static int dnxhd_decode_header(DNXHDContext *ctx, AVFrame *frame,
}
ctx->data_offset = 0x280;
}
- if ((ctx->mb_height << frame->interlaced_frame) > (ctx->height + 15) >> 4) {
+ if ((ctx->mb_height << !!(frame->flags & AV_FRAME_FLAG_INTERLACED)) > (ctx->height + 15) >> 4) {
av_log(ctx->avctx, AV_LOG_ERROR,
"mb height too big: %d\n", ctx->mb_height);
return AVERROR_INVALIDDATA;
@@ -530,7 +531,7 @@ static int dnxhd_decode_macroblock(const DNXHDContext *ctx, RowContext *row,
return AVERROR_INVALIDDATA;
}
- if (frame->interlaced_frame) {
+ if (frame->flags & AV_FRAME_FLAG_INTERLACED) {
dct_linesize_luma <<= 1;
dct_linesize_chroma <<= 1;
}
@@ -539,7 +540,7 @@ static int dnxhd_decode_macroblock(const DNXHDContext *ctx, RowContext *row,
dest_u = frame->data[1] + ((y * dct_linesize_chroma) << 4) + (x << (3 + shift1 + ctx->is_444));
dest_v = frame->data[2] + ((y * dct_linesize_chroma) << 4) + (x << (3 + shift1 + ctx->is_444));
- if (frame->interlaced_frame && ctx->cur_field) {
+ if ((frame->flags & AV_FRAME_FLAG_INTERLACED) && ctx->cur_field) {
dest_y += frame->linesize[0];
dest_u += frame->linesize[1];
dest_v += frame->linesize[2];
@@ -659,7 +660,7 @@ decode_coding_unit:
ctx->buf = buf + ctx->data_offset;
avctx->execute2(avctx, dnxhd_decode_row, picture, NULL, ctx->mb_height);
- if (first_field && picture->interlaced_frame) {
+ if (first_field && (picture->flags & AV_FRAME_FLAG_INTERLACED)) {
buf += ctx->cid_table->coding_unit_size;
buf_size -= ctx->cid_table->coding_unit_size;
first_field = 0;