X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Flibx264.c;h=a31195b80def4b842bf476ec1e7c6c92c760eb73;hb=7b0b10ce4186eaa1cd3c0a2bfbb86307d65eecfd;hp=7410112172e11da5a9a4ef3f3b2a3c1b908ac463;hpb=6ace8374bacf33e5f3407cb50e928e7533eb5e92;p=ffmpeg diff --git a/libavcodec/libx264.c b/libavcodec/libx264.c index 7410112172e..a31195b80de 100644 --- a/libavcodec/libx264.c +++ b/libavcodec/libx264.c @@ -350,8 +350,10 @@ static av_cold int X264_init(AVCodecContext *avctx) const char *p= x4->x264opts; while(p){ char param[256]={0}, val[256]={0}; - sscanf(p, "%255[^:=]=%255[^:]", param, val); - OPT_STR(param, val); + if(sscanf(p, "%255[^:=]=%255[^:]", param, val) == 1){ + OPT_STR(param, "1"); + }else + OPT_STR(param, val); p= strchr(p, ':'); p+=!!p; } @@ -561,10 +563,6 @@ static const enum PixelFormat pix_fmts_8bit[] = { PIX_FMT_YUVJ420P, PIX_FMT_YUV422P, PIX_FMT_YUV444P, -#ifdef X264_CSP_BGR - PIX_FMT_BGR24, - PIX_FMT_RGB24, -#endif PIX_FMT_NONE }; static const enum PixelFormat pix_fmts_9bit[] = { @@ -578,6 +576,13 @@ static const enum PixelFormat pix_fmts_10bit[] = { PIX_FMT_YUV444P10, PIX_FMT_NONE }; +static const enum PixelFormat pix_fmts_8bit_rgb[] = { +#ifdef X264_CSP_BGR + PIX_FMT_BGR24, + PIX_FMT_RGB24, +#endif + PIX_FMT_NONE +}; static av_cold void X264_init_static(AVCodec *codec) { @@ -648,6 +653,13 @@ static const AVClass class = { .version = LIBAVUTIL_VERSION_INT, }; +static const AVClass rgbclass = { + .class_name = "libx264rgb", + .item_name = av_default_item_name, + .option = options, + .version = LIBAVUTIL_VERSION_INT, +}; + static const AVCodecDefault x264_defaults[] = { { "b", "0" }, { "bf", "-1" }, @@ -688,3 +700,18 @@ AVCodec ff_libx264_encoder = { .defaults = x264_defaults, .init_static_data = X264_init_static, }; + +AVCodec ff_libx264rgb_encoder = { + .name = "libx264rgb", + .type = AVMEDIA_TYPE_VIDEO, + .id = CODEC_ID_H264, + .priv_data_size = sizeof(X264Context), + .init = X264_init, + .encode = X264_frame, + .close = X264_close, + .capabilities = CODEC_CAP_DELAY, + .long_name = NULL_IF_CONFIG_SMALL("libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 RGB"), + .priv_class = &rgbclass, + .defaults = x264_defaults, + .pix_fmts = pix_fmts_8bit_rgb, +};