aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhwren <hwrenx@126.com>2018-11-02 21:30:10 +0800
committerMark Thompson <sw@jkqxz.net>2018-11-18 18:55:10 +0000
commit31b79e0210c4184627b5971ce1e909e6de7df976 (patch)
tree40fe5bf9755f0b0e3af2fa716ee58c695b469274
parentb75afd25ba9d1a3321341dad2e9bea4273e82536 (diff)
downloadffmpeg-31b79e0210c4184627b5971ce1e909e6de7df976.tar.gz
lavc/libdavs2: correct frame type setting
Signed-off-by: hwren <hwrenx@126.com>
-rw-r--r--libavcodec/libdavs2.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/libavcodec/libdavs2.c b/libavcodec/libdavs2.c
index 3b9efe05b1..874f2f084d 100644
--- a/libavcodec/libdavs2.c
+++ b/libavcodec/libdavs2.c
@@ -76,6 +76,26 @@ static int davs2_dump_frames(AVCodecContext *avctx, davs2_picture_t *pic,
return 0;
}
+ switch (pic->type) {
+ case DAVS2_PIC_I:
+ case DAVS2_PIC_G:
+ frame->pict_type = AV_PICTURE_TYPE_I;
+ break;
+ case DAVS2_PIC_P:
+ case DAVS2_PIC_S:
+ frame->pict_type = AV_PICTURE_TYPE_P;
+ break;
+ case DAVS2_PIC_B:
+ frame->pict_type = AV_PICTURE_TYPE_B;
+ break;
+ case DAVS2_PIC_F:
+ frame->pict_type = AV_PICTURE_TYPE_S;
+ break;
+ default:
+ av_log(avctx, AV_LOG_ERROR, "Decoder error: unknown frame type\n");
+ return AVERROR_EXTERNAL;
+ }
+
for (plane = 0; plane < 3; ++plane) {
int size_line = pic->widths[plane] * bytes_per_sample;
frame->buf[plane] = av_buffer_alloc(size_line * pic->lines[plane]);
@@ -97,7 +117,6 @@ static int davs2_dump_frames(AVCodecContext *avctx, davs2_picture_t *pic,
frame->width = cad->headerset.width;
frame->height = cad->headerset.height;
frame->pts = cad->out_frame.pts;
- frame->pict_type = pic->type;
frame->format = avctx->pix_fmt;
return 1;