aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDerek Buitenhuis <derek.buitenhuis@gmail.com>2014-06-11 21:19:42 +0100
committerDerek Buitenhuis <derek.buitenhuis@gmail.com>2014-06-12 13:53:34 +0100
commit6ee95af8a1181f02e7f3adb9b5d488ba3314e220 (patch)
treec7cbcda2f888ad68971f21bc5ca2115efa1385d6
parent4e9b46b0568196e9e1640350a3c6f5f09bfd9e47 (diff)
downloadffmpeg-6ee95af8a1181f02e7f3adb9b5d488ba3314e220.tar.gz
libx265: Add 4:2:2 support
It is also not final yet, so require -strict experimental. Requires a bump to version 17. Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
-rwxr-xr-xconfigure4
-rw-r--r--libavcodec/libx265.c12
2 files changed, 11 insertions, 5 deletions
diff --git a/configure b/configure
index fa66c4f49d..7ad9d119cd 100755
--- a/configure
+++ b/configure
@@ -4722,8 +4722,8 @@ enabled libx264 && require libx264 x264.h x264_encoder_encode -lx264 &
{ check_cpp_condition x264.h "X264_BUILD >= 118" ||
die "ERROR: libx264 must be installed and version must be >= 0.118."; }
enabled libx265 && require_pkg_config x265 x265.h x265_encoder_encode &&
- { check_cpp_condition x265.h "X265_BUILD >= 13" ||
- die "ERROR: libx265 version must be >= 13."; }
+ { check_cpp_condition x265.h "X265_BUILD >= 17" ||
+ die "ERROR: libx265 version must be >= 17."; }
enabled libxavs && require libxavs xavs.h xavs_encoder_encode -lxavs
enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore
enabled libzmq && require_pkg_config libzmq zmq.h zmq_ctx_new
diff --git a/libavcodec/libx265.c b/libavcodec/libx265.c
index 9be84698ba..be5aa1ed76 100644
--- a/libavcodec/libx265.c
+++ b/libavcodec/libx265.c
@@ -82,10 +82,9 @@ static av_cold int libx265_encode_init(AVCodecContext *avctx)
int nnal;
if (avctx->strict_std_compliance > FF_COMPLIANCE_EXPERIMENTAL &&
- !av_pix_fmt_desc_get(avctx->pix_fmt)->log2_chroma_w &&
- !av_pix_fmt_desc_get(avctx->pix_fmt)->log2_chroma_h) {
+ !av_pix_fmt_desc_get(avctx->pix_fmt)->log2_chroma_w) {
av_log(avctx, AV_LOG_ERROR,
- "4:4:4 support is not fully defined for HEVC yet. "
+ "4:2:2 and 4:4:4 support is not fully defined for HEVC yet. "
"Set -strict experimental to encode anyway.\n");
return AVERROR(ENOSYS);
}
@@ -134,6 +133,10 @@ static av_cold int libx265_encode_init(AVCodecContext *avctx)
case AV_PIX_FMT_YUV420P10:
ctx->params->internalCsp = X265_CSP_I420;
break;
+ case AV_PIX_FMT_YUV422P:
+ case AV_PIX_FMT_YUV422P10:
+ ctx->params->internalCsp = X265_CSP_I422;
+ break;
case AV_PIX_FMT_YUV444P:
case AV_PIX_FMT_YUV444P10:
ctx->params->internalCsp = X265_CSP_I444;
@@ -262,14 +265,17 @@ static int libx265_encode_frame(AVCodecContext *avctx, AVPacket *pkt,
static const enum AVPixelFormat x265_csp_eight[] = {
AV_PIX_FMT_YUV420P,
+ AV_PIX_FMT_YUV422P,
AV_PIX_FMT_YUV444P,
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_NONE
};