mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
libx265: Enable 12-bit encoding
The configure detection is bumped to X265_BUILD >= 68, since API version 68 corresponds with the x265 1.8 release tarball. The warnings inside x265 about 12-bit being experimental were removed prior to API version 72 a short time later. At this time of writing, X265_BUILD is at version 80. 12-bit support in the HEVC standard was approved in October 2014 as part of HEVC Version 2 and published in January 2015: http://www.itu.int/ITU-T/recommendations/rec.aspx?rec=12296 http://www.itu.int/rec/T-REC-H.265-201410-S https://hevc.hhi.fraunhofer.de/rext Reveiwed-by: Derek Buitenhuis <derek.buitenhuis@gmail.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
parent
80075b0149
commit
70742e599b
4
configure
vendored
4
configure
vendored
@ -5556,8 +5556,8 @@ enabled libx264 && { use_pkg_config x264 "stdint.h x264.h" x264_encode
|
||||
{ check_cpp_condition x264.h "X264_MPEG2" &&
|
||||
enable libx262; }
|
||||
enabled libx265 && require_pkg_config x265 x265.h x265_api_get &&
|
||||
{ check_cpp_condition x265.h "X265_BUILD >= 57" ||
|
||||
die "ERROR: libx265 version must be >= 57."; }
|
||||
{ check_cpp_condition x265.h "X265_BUILD >= 68" ||
|
||||
die "ERROR: libx265 version must be >= 68."; }
|
||||
enabled libxavs && require libxavs xavs.h xavs_encoder_encode -lxavs
|
||||
enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore
|
||||
enabled libzimg && require_pkg_config zimg zimg.h zimg_get_api_version
|
||||
|
@ -146,14 +146,17 @@ static av_cold int libx265_encode_init(AVCodecContext *avctx)
|
||||
switch (avctx->pix_fmt) {
|
||||
case AV_PIX_FMT_YUV420P:
|
||||
case AV_PIX_FMT_YUV420P10:
|
||||
case AV_PIX_FMT_YUV420P12:
|
||||
ctx->params->internalCsp = X265_CSP_I420;
|
||||
break;
|
||||
case AV_PIX_FMT_YUV422P:
|
||||
case AV_PIX_FMT_YUV422P10:
|
||||
case AV_PIX_FMT_YUV422P12:
|
||||
ctx->params->internalCsp = X265_CSP_I422;
|
||||
break;
|
||||
case AV_PIX_FMT_YUV444P:
|
||||
case AV_PIX_FMT_YUV444P10:
|
||||
case AV_PIX_FMT_YUV444P12:
|
||||
ctx->params->internalCsp = X265_CSP_I444;
|
||||
break;
|
||||
}
|
||||
@ -318,7 +321,7 @@ static const enum AVPixelFormat x265_csp_eight[] = {
|
||||
AV_PIX_FMT_NONE
|
||||
};
|
||||
|
||||
static const enum AVPixelFormat x265_csp_twelve[] = {
|
||||
static const enum AVPixelFormat x265_csp_ten[] = {
|
||||
AV_PIX_FMT_YUV420P,
|
||||
AV_PIX_FMT_YUV422P,
|
||||
AV_PIX_FMT_YUV444P,
|
||||
@ -328,10 +331,25 @@ static const enum AVPixelFormat x265_csp_twelve[] = {
|
||||
AV_PIX_FMT_NONE
|
||||
};
|
||||
|
||||
static const enum AVPixelFormat x265_csp_twelve[] = {
|
||||
AV_PIX_FMT_YUV420P,
|
||||
AV_PIX_FMT_YUV422P,
|
||||
AV_PIX_FMT_YUV444P,
|
||||
AV_PIX_FMT_YUV420P10,
|
||||
AV_PIX_FMT_YUV422P10,
|
||||
AV_PIX_FMT_YUV444P10,
|
||||
AV_PIX_FMT_YUV420P12,
|
||||
AV_PIX_FMT_YUV422P12,
|
||||
AV_PIX_FMT_YUV444P12,
|
||||
AV_PIX_FMT_NONE
|
||||
};
|
||||
|
||||
static av_cold void libx265_encode_init_csp(AVCodec *codec)
|
||||
{
|
||||
if (x265_api_get(10))
|
||||
if (x265_api_get(12))
|
||||
codec->pix_fmts = x265_csp_twelve;
|
||||
else if (x265_api_get(10))
|
||||
codec->pix_fmts = x265_csp_ten;
|
||||
else if (x265_api_get(8))
|
||||
codec->pix_fmts = x265_csp_eight;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user