lavc/libdavs2: correct frame type setting

Signed-off-by: hwren <hwrenx@126.com>
This commit is contained in:
hwren 2018-11-02 21:30:10 +08:00 committed by Mark Thompson
parent b75afd25ba
commit 31b79e0210
1 changed files with 20 additions and 1 deletions

View File

@ -76,6 +76,26 @@ static int davs2_dump_frames(AVCodecContext *avctx, davs2_picture_t *pic,
return 0; 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) { for (plane = 0; plane < 3; ++plane) {
int size_line = pic->widths[plane] * bytes_per_sample; int size_line = pic->widths[plane] * bytes_per_sample;
frame->buf[plane] = av_buffer_alloc(size_line * pic->lines[plane]); 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->width = cad->headerset.width;
frame->height = cad->headerset.height; frame->height = cad->headerset.height;
frame->pts = cad->out_frame.pts; frame->pts = cad->out_frame.pts;
frame->pict_type = pic->type;
frame->format = avctx->pix_fmt; frame->format = avctx->pix_fmt;
return 1; return 1;