|
|
|
@@ -44,7 +44,6 @@ typedef struct X264Context { |
|
|
|
x264_picture_t pic; |
|
|
|
uint8_t *sei; |
|
|
|
int sei_size; |
|
|
|
AVFrame out_pic; |
|
|
|
char *preset; |
|
|
|
char *tune; |
|
|
|
char *profile; |
|
|
|
@@ -181,20 +180,20 @@ static int X264_frame(AVCodecContext *ctx, AVPacket *pkt, const AVFrame *frame, |
|
|
|
switch (pic_out.i_type) { |
|
|
|
case X264_TYPE_IDR: |
|
|
|
case X264_TYPE_I: |
|
|
|
x4->out_pic.pict_type = AV_PICTURE_TYPE_I; |
|
|
|
ctx->coded_frame->pict_type = AV_PICTURE_TYPE_I; |
|
|
|
break; |
|
|
|
case X264_TYPE_P: |
|
|
|
x4->out_pic.pict_type = AV_PICTURE_TYPE_P; |
|
|
|
ctx->coded_frame->pict_type = AV_PICTURE_TYPE_P; |
|
|
|
break; |
|
|
|
case X264_TYPE_B: |
|
|
|
case X264_TYPE_BREF: |
|
|
|
x4->out_pic.pict_type = AV_PICTURE_TYPE_B; |
|
|
|
ctx->coded_frame->pict_type = AV_PICTURE_TYPE_B; |
|
|
|
break; |
|
|
|
} |
|
|
|
|
|
|
|
pkt->flags |= AV_PKT_FLAG_KEY*pic_out.b_keyframe; |
|
|
|
if (ret) |
|
|
|
x4->out_pic.quality = (pic_out.i_qpplus1 - 1) * FF_QP2LAMBDA; |
|
|
|
ctx->coded_frame->quality = (pic_out.i_qpplus1 - 1) * FF_QP2LAMBDA; |
|
|
|
|
|
|
|
*got_packet = ret; |
|
|
|
return 0; |
|
|
|
@@ -210,6 +209,8 @@ static av_cold int X264_close(AVCodecContext *avctx) |
|
|
|
if (x4->enc) |
|
|
|
x264_encoder_close(x4->enc); |
|
|
|
|
|
|
|
av_frame_free(&avctx->coded_frame); |
|
|
|
|
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
@@ -450,7 +451,9 @@ static av_cold int X264_init(AVCodecContext *avctx) |
|
|
|
if (!x4->enc) |
|
|
|
return -1; |
|
|
|
|
|
|
|
avctx->coded_frame = &x4->out_pic; |
|
|
|
avctx->coded_frame = av_frame_alloc(); |
|
|
|
if (!avctx->coded_frame) |
|
|
|
return AVERROR(ENOMEM); |
|
|
|
|
|
|
|
if (avctx->flags & CODEC_FLAG_GLOBAL_HEADER) { |
|
|
|
x264_nal_t *nal; |
|
|
|
|