[FFmpeg-devel] [PATCH] fix nvenc potential profile error when encoding yuv444p
--- libavcodec/nvenc.c | 7 ++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/libavcodec/nvenc.c b/libavcodec/nvenc.c index 0e6ef43..083e494 100644 --- a/libavcodec/nvenc.c +++ b/libavcodec/nvenc.c @@ -912,6 +912,11 @@ static av_cold int nvenc_encode_init(AVCodecContext *avctx) goto error; } } +// force setting profile as high444p if input is AV_PIX_FMT_YUV444P +if (avctx->pix_fmt == AV_PIX_FMT_YUV444P) { +ctx->encode_config.profileGUID = NV_ENC_H264_PROFILE_HIGH_444_GUID; +avctx->profile = FF_PROFILE_H264_HIGH_444_PREDICTIVE; +} ctx->encode_config.encodeCodecConfig.h264Config.chromaFormatIDC = avctx->profile == FF_PROFILE_H264_HIGH_444_PREDICTIVE ? 3 : 1; @@ -1452,7 +1457,7 @@ static const enum AVPixelFormat pix_fmts_nvenc[] = { #define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM static const AVOption options[] = { { "preset", "Set the encoding preset (one of slow = hq 2pass, medium = hq, fast = hp, hq, hp, bd, ll, llhq, llhp, default)", OFFSET(preset), AV_OPT_TYPE_STRING, { .str = "hq" }, 0, 0, VE }, -{ "profile", "Set the encoding profile (high, main or baseline)", OFFSET(profile), AV_OPT_TYPE_STRING, { 0 }, 0, 0, VE }, +{ "profile", "Set the encoding profile (high, main, baseline or high444p)", OFFSET(profile), AV_OPT_TYPE_STRING, { 0 }, 0, 0, VE }, { "level", "Set the encoding level restriction (auto, 1.0, 1.0b, 1.1, 1.2, ..., 4.2, 5.0, 5.1)", OFFSET(level), AV_OPT_TYPE_STRING, { 0 }, 0, 0, VE }, { "tier", "Set the encoding tier (main or high)", OFFSET(tier), AV_OPT_TYPE_STRING, { 0 }, 0, 0, VE }, { "cbr", "Use cbr encoding mode", OFFSET(cbr), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, VE }, -- 1.9.5.github.0 ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
[FFmpeg-devel] [PATCH] fix nvenc potential profile error when encoding yuv444p
--- libavcodec/nvenc.c | 7 ++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/libavcodec/nvenc.c b/libavcodec/nvenc.c index 0e6ef43..083e494 100644 --- a/libavcodec/nvenc.c +++ b/libavcodec/nvenc.c @@ -912,6 +912,11 @@ static av_cold int nvenc_encode_init(AVCodecContext *avctx) goto error; } } +// force setting profile as high444p if input is AV_PIX_FMT_YUV444P +if (avctx->pix_fmt == AV_PIX_FMT_YUV444P) { +ctx->encode_config.profileGUID = NV_ENC_H264_PROFILE_HIGH_444_GUID; +avctx->profile = FF_PROFILE_H264_HIGH_444_PREDICTIVE; +} ctx->encode_config.encodeCodecConfig.h264Config.chromaFormatIDC = avctx->profile == FF_PROFILE_H264_HIGH_444_PREDICTIVE ? 3 : 1; @@ -1452,7 +1457,7 @@ static const enum AVPixelFormat pix_fmts_nvenc[] = { #define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM static const AVOption options[] = { { "preset", "Set the encoding preset (one of slow = hq 2pass, medium = hq, fast = hp, hq, hp, bd, ll, llhq, llhp, default)", OFFSET(preset), AV_OPT_TYPE_STRING, { .str = "hq" }, 0, 0, VE }, -{ "profile", "Set the encoding profile (high, main or baseline)", OFFSET(profile), AV_OPT_TYPE_STRING, { 0 }, 0, 0, VE }, +{ "profile", "Set the encoding profile (high, main, baseline or high444p)", OFFSET(profile), AV_OPT_TYPE_STRING, { 0 }, 0, 0, VE }, { "level", "Set the encoding level restriction (auto, 1.0, 1.0b, 1.1, 1.2, ..., 4.2, 5.0, 5.1)", OFFSET(level), AV_OPT_TYPE_STRING, { 0 }, 0, 0, VE }, { "tier", "Set the encoding tier (main or high)", OFFSET(tier), AV_OPT_TYPE_STRING, { 0 }, 0, 0, VE }, { "cbr", "Use cbr encoding mode", OFFSET(cbr), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, VE }, -- 1.9.5.github.0 ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH] fix nvenc potential profile error when encoding yuv444p
在 2015/10/28 14:53, Agatha Hu 写道: --- libavcodec/nvenc.c | 7 ++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/libavcodec/nvenc.c b/libavcodec/nvenc.c index 0e6ef43..083e494 100644 --- a/libavcodec/nvenc.c +++ b/libavcodec/nvenc.c @@ -912,6 +912,11 @@ static av_cold int nvenc_encode_init(AVCodecContext *avctx) goto error; } } +// force setting profile as high444p if input is AV_PIX_FMT_YUV444P +if (avctx->pix_fmt == AV_PIX_FMT_YUV444P) { +ctx->encode_config.profileGUID = NV_ENC_H264_PROFILE_HIGH_444_GUID; +avctx->profile = FF_PROFILE_H264_HIGH_444_PREDICTIVE; +} ctx->encode_config.encodeCodecConfig.h264Config.chromaFormatIDC = avctx->profile == FF_PROFILE_H264_HIGH_444_PREDICTIVE ? 3 : 1; @@ -1452,7 +1457,7 @@ static const enum AVPixelFormat pix_fmts_nvenc[] = { #define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM static const AVOption options[] = { { "preset", "Set the encoding preset (one of slow = hq 2pass, medium = hq, fast = hp, hq, hp, bd, ll, llhq, llhp, default)", OFFSET(preset), AV_OPT_TYPE_STRING, { .str = "hq" }, 0, 0, VE }, -{ "profile", "Set the encoding profile (high, main or baseline)", OFFSET(profile), AV_OPT_TYPE_STRING, { 0 }, 0, 0, VE }, +{ "profile", "Set the encoding profile (high, main, baseline or high444p)", OFFSET(profile), AV_OPT_TYPE_STRING, { 0 }, 0, 0, VE }, { "level", "Set the encoding level restriction (auto, 1.0, 1.0b, 1.1, 1.2, ..., 4.2, 5.0, 5.1)", OFFSET(level), AV_OPT_TYPE_STRING, { 0 }, 0, 0, VE }, { "tier", "Set the encoding tier (main or high)", OFFSET(tier), AV_OPT_TYPE_STRING, { 0 }, 0, 0, VE }, { "cbr", "Use cbr encoding mode", OFFSET(cbr), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, VE }, The original nvenc.c misses "yuv444p" in option explanation, and since yuv444p is only for AV_PIX_FMT_YUV444P input, force setting the profile to prevent error. Agatha Hu ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH] fix nvenc potential profile error when encoding yuv444p
On Wed, 28 Oct 2015 14:53:42 +0800 Agatha Huwrote: > --- > libavcodec/nvenc.c | 7 ++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/libavcodec/nvenc.c b/libavcodec/nvenc.c > index 0e6ef43..083e494 100644 > --- a/libavcodec/nvenc.c > +++ b/libavcodec/nvenc.c > @@ -912,6 +912,11 @@ static av_cold int > nvenc_encode_init(AVCodecContext *avctx) > goto error; > } > } > +// force setting profile as high444p if input is > AV_PIX_FMT_YUV444P > +if (avctx->pix_fmt == AV_PIX_FMT_YUV444P) { > +ctx->encode_config.profileGUID = > NV_ENC_H264_PROFILE_HIGH_444_GUID; > +avctx->profile = FF_PROFILE_H264_HIGH_444_PREDICTIVE; > +} > > > ctx->encode_config.encodeCodecConfig.h264Config.chromaFormatIDC = > avctx->profile == FF_PROFILE_H264_HIGH_444_PREDICTIVE ? 3 : 1; > > @@ -1452,7 +1457,7 @@ static const enum AVPixelFormat > pix_fmts_nvenc[] = { #define VE AV_OPT_FLAG_VIDEO_PARAM | > AV_OPT_FLAG_ENCODING_PARAM static const AVOption options[] = { > { "preset", "Set the encoding preset (one of slow = hq 2pass, > medium = hq, fast = hp, hq, hp, bd, ll, llhq, llhp, default)", > OFFSET(preset), AV_OPT_TYPE_STRING, { .str = "hq" }, 0, 0, VE }, > -{ "profile", "Set the encoding profile (high, main or > baseline)", OFFSET(profile), AV_OPT_TYPE_STRING, { 0 }, 0, 0, VE }, > +{ "profile", "Set the encoding profile (high, main, baseline or > high444p)", OFFSET(profile), AV_OPT_TYPE_STRING, { 0 }, 0, 0, VE }, > { "level", "Set the encoding level restriction (auto, 1.0, > 1.0b, 1.1, 1.2, ..., 4.2, 5.0, 5.1)", OFFSET(level), > AV_OPT_TYPE_STRING, { 0 }, 0, 0, VE }, > { "tier", "Set the encoding tier (main or high)", OFFSET(tier), > AV_OPT_TYPE_STRING, { 0 }, 0, 0, VE }, > { "cbr", "Use cbr encoding mode", OFFSET(cbr), > AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, VE }, Seems reasonable to me. --phil ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH] fix nvenc potential profile error when encoding yuv444p
> --- > libavcodec/nvenc.c | 7 ++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/libavcodec/nvenc.c b/libavcodec/nvenc.c > index 0e6ef43..083e494 100644 > --- a/libavcodec/nvenc.c > +++ b/libavcodec/nvenc.c > @@ -912,6 +912,11 @@ static av_cold int nvenc_encode_init(AVCodecContext > *avctx) > goto error; > } > } > +// force setting profile as high444p if input is > AV_PIX_FMT_YUV444P > +if (avctx->pix_fmt == AV_PIX_FMT_YUV444P) { > +ctx->encode_config.profileGUID = > NV_ENC_H264_PROFILE_HIGH_444_GUID; > +avctx->profile = FF_PROFILE_H264_HIGH_444_PREDICTIVE; > +} > > > ctx->encode_config.encodeCodecConfig.h264Config.chromaFormatIDC = > avctx->profile == FF_PROFILE_H264_HIGH_444_PREDICTIVE ? 3 : 1; > > @@ -1452,7 +1457,7 @@ static const enum AVPixelFormat pix_fmts_nvenc[] = { > #define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM > static const AVOption options[] = { > { "preset", "Set the encoding preset (one of slow = hq 2pass, > medium = hq, fast = hp, hq, hp, bd, ll, llhq, llhp, default)", > OFFSET(preset), AV_OPT_TYPE_STRING, { .str = "hq" }, 0, 0, VE }, > -{ "profile", "Set the encoding profile (high, main or baseline)", > OFFSET(profile), AV_OPT_TYPE_STRING, { 0 }, 0, 0, VE }, > +{ "profile", "Set the encoding profile (high, main, baseline or > high444p)", OFFSET(profile), AV_OPT_TYPE_STRING, { 0 }, 0, 0, VE }, > { "level", "Set the encoding level restriction (auto, 1.0, 1.0b, > 1.1, 1.2, ..., 4.2, 5.0, 5.1)", OFFSET(level), AV_OPT_TYPE_STRING, { 0 > }, 0, 0, VE }, > { "tier", "Set the encoding tier (main or high)", OFFSET(tier), > AV_OPT_TYPE_STRING, { 0 }, 0, 0, VE }, > { "cbr", "Use cbr encoding mode", OFFSET(cbr), AV_OPT_TYPE_BOOL, { > .i64 = 0 }, 0, 1, VE }, LGTM, can't push it currently, will push this weekend if nobody has already done so by then. ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH] fix nvenc potential profile error when encoding yuv444p
On Wed, Oct 28, 2015 at 11:52:50AM -0700, Philip Langdale wrote: > On Wed, 28 Oct 2015 14:53:42 +0800 > Agatha Huwrote: > > > --- > > libavcodec/nvenc.c | 7 ++- > > 1 file changed, 6 insertions(+), 1 deletion(-) > > > > diff --git a/libavcodec/nvenc.c b/libavcodec/nvenc.c > > index 0e6ef43..083e494 100644 > > --- a/libavcodec/nvenc.c > > +++ b/libavcodec/nvenc.c > > @@ -912,6 +912,11 @@ static av_cold int > > nvenc_encode_init(AVCodecContext *avctx) > > goto error; > > } > > } > > +// force setting profile as high444p if input is > > AV_PIX_FMT_YUV444P > > +if (avctx->pix_fmt == AV_PIX_FMT_YUV444P) { > > +ctx->encode_config.profileGUID = > > NV_ENC_H264_PROFILE_HIGH_444_GUID; > > +avctx->profile = FF_PROFILE_H264_HIGH_444_PREDICTIVE; > > +} > > > > > > ctx->encode_config.encodeCodecConfig.h264Config.chromaFormatIDC = > > avctx->profile == FF_PROFILE_H264_HIGH_444_PREDICTIVE ? 3 : 1; > > > > @@ -1452,7 +1457,7 @@ static const enum AVPixelFormat > > pix_fmts_nvenc[] = { #define VE AV_OPT_FLAG_VIDEO_PARAM | > > AV_OPT_FLAG_ENCODING_PARAM static const AVOption options[] = { > > { "preset", "Set the encoding preset (one of slow = hq 2pass, > > medium = hq, fast = hp, hq, hp, bd, ll, llhq, llhp, default)", > > OFFSET(preset), AV_OPT_TYPE_STRING, { .str = "hq" }, 0, 0, VE }, > > -{ "profile", "Set the encoding profile (high, main or > > baseline)", OFFSET(profile), AV_OPT_TYPE_STRING, { 0 }, 0, 0, VE }, > > +{ "profile", "Set the encoding profile (high, main, baseline or > > high444p)", OFFSET(profile), AV_OPT_TYPE_STRING, { 0 }, 0, 0, VE }, > > { "level", "Set the encoding level restriction (auto, 1.0, > > 1.0b, 1.1, 1.2, ..., 4.2, 5.0, 5.1)", OFFSET(level), > > AV_OPT_TYPE_STRING, { 0 }, 0, 0, VE }, > > { "tier", "Set the encoding tier (main or high)", OFFSET(tier), > > AV_OPT_TYPE_STRING, { 0 }, 0, 0, VE }, > > { "cbr", "Use cbr encoding mode", OFFSET(cbr), > > AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, VE }, > > Seems reasonable to me. i cant apply that patch, its currupted by extra newlines [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB The worst form of inequality is to try to make unequal things equal. -- Aristotle signature.asc Description: Digital signature ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel