diff --git a/libavcodec/libx264.c b/libavcodec/libx264.c index 9a4c9f4..64a1e53 100644 --- a/libavcodec/libx264.c +++ b/libavcodec/libx264.c @@ -89,8 +89,13 @@ static int X264_frame(AVCodecContext *ctx, uint8_t *buf, int nnal, i; x264_picture_t pic_out; - x4->pic.img.i_csp = X264_CSP_I420; - x4->pic.img.i_plane = 3; + if (ctx->pix_fmt == PIX_FMT_NV12) { + x4->pic.img.i_csp = X264_CSP_NV12; + x4->pic.img.i_plane = 2; + } else { + x4->pic.img.i_csp = X264_CSP_I420; + x4->pic.img.i_plane = 3; + } if (frame) { for (i = 0; i < 3; i++) { @@ -311,6 +316,6 @@ AVCodec libx264_encoder = { .encode = X264_frame, .close = X264_close, .capabilities = CODEC_CAP_DELAY, - .pix_fmts = (const enum PixelFormat[]) { PIX_FMT_YUV420P, PIX_FMT_NONE }, + .pix_fmts = (const enum PixelFormat[]) { PIX_FMT_NV12, PIX_FMT_YUV420P, PIX_FMT_NONE }, .long_name = NULL_IF_CONFIG_SMALL("libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10"), };