|
|
|
@ -20,6 +20,7 @@ |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
#include "libavutil/opt.h" |
|
|
|
|
#include "libavutil/pixdesc.h" |
|
|
|
|
#include "avcodec.h" |
|
|
|
|
#include "internal.h" |
|
|
|
|
#include <x264.h> |
|
|
|
@ -123,6 +124,8 @@ static int X264_frame(AVCodecContext *ctx, uint8_t *buf, |
|
|
|
|
|
|
|
|
|
x264_picture_init( &x4->pic ); |
|
|
|
|
x4->pic.img.i_csp = X264_CSP_I420; |
|
|
|
|
if (x264_bit_depth > 8) |
|
|
|
|
x4->pic.img.i_csp |= X264_CSP_HIGH_DEPTH; |
|
|
|
|
x4->pic.img.i_plane = 3; |
|
|
|
|
|
|
|
|
|
if (frame) { |
|
|
|
@ -456,6 +459,30 @@ static av_cold int X264_init(AVCodecContext *avctx) |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static const enum PixelFormat pix_fmts_8bit[] = { |
|
|
|
|
PIX_FMT_YUV420P, |
|
|
|
|
PIX_FMT_YUVJ420P, |
|
|
|
|
PIX_FMT_NONE |
|
|
|
|
}; |
|
|
|
|
static const enum PixelFormat pix_fmts_9bit[] = { |
|
|
|
|
PIX_FMT_YUV420P9, |
|
|
|
|
PIX_FMT_NONE |
|
|
|
|
}; |
|
|
|
|
static const enum PixelFormat pix_fmts_10bit[] = { |
|
|
|
|
PIX_FMT_YUV420P10, |
|
|
|
|
PIX_FMT_NONE |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
static av_cold void X264_init_static(AVCodec *codec) |
|
|
|
|
{ |
|
|
|
|
if (x264_bit_depth == 8) |
|
|
|
|
codec->pix_fmts = pix_fmts_8bit; |
|
|
|
|
else if (x264_bit_depth == 9) |
|
|
|
|
codec->pix_fmts = pix_fmts_9bit; |
|
|
|
|
else if (x264_bit_depth == 10) |
|
|
|
|
codec->pix_fmts = pix_fmts_10bit; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#define OFFSET(x) offsetof(X264Context, x) |
|
|
|
|
#define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM |
|
|
|
|
static const AVOption options[] = { |
|
|
|
@ -544,8 +571,8 @@ AVCodec ff_libx264_encoder = { |
|
|
|
|
.encode = X264_frame, |
|
|
|
|
.close = X264_close, |
|
|
|
|
.capabilities = CODEC_CAP_DELAY, |
|
|
|
|
.pix_fmts = (const enum PixelFormat[]) { PIX_FMT_YUV420P, PIX_FMT_YUVJ420P, PIX_FMT_NONE }, |
|
|
|
|
.long_name = NULL_IF_CONFIG_SMALL("libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10"), |
|
|
|
|
.priv_class = &class, |
|
|
|
|
.defaults = x264_defaults, |
|
|
|
|
.init_static_data = X264_init_static, |
|
|
|
|
}; |
|
|
|
|