From patchwork Mon Dec 25 20:58:00 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 6964 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.79.195 with SMTP id r64csp6120584jad; Mon, 25 Dec 2017 12:59:05 -0800 (PST) X-Google-Smtp-Source: ACJfBotAdKRIRZbEBUZ87W7AvyM1sgD79BgOd/gKyqkadfEiYky+OmnOZ1Dgvu5yRp8VHhK2VyvQ X-Received: by 10.223.187.130 with SMTP id q2mr5480013wrg.181.1514235545837; Mon, 25 Dec 2017 12:59:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1514235545; cv=none; d=google.com; s=arc-20160816; b=wQO6QSxYFUeMX9ON8SDX0fVb/+JUQU4EOCcy0a3IF+zNIv1n+c5fpro6gBfnzt/BHg 6JbIz536PBk0ZKKTgp+vx5vl4MNdro8WaXpqUKjXtsHxcJpKVVQWUHoTWyJns+L+RJGL RTiymvesxn5BSw4B2ExEHLXpeZF2ytpKUBMJoRWP0HVvh/GFn5CzG4cQUdxoQvZXC8FL B0q0qhw4RbQ8QlKEe+LR0KhNWWkCjM8VYBvDO/YVPbf0mTOdFzEKRWZNKWHVMJuMK3wH XvPNI8RuOXICeUEaU5cTQD09vmOk2aRQJBdUmi0eYfbShPSG4uAibXC5dKY9YUeNVkaX u/TQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:message-id:date:to:from:dkim-signature :delivered-to:arc-authentication-results; bh=+CD6JXVxURXOP7NQUBvYeQqvGpVBIZAsWmwXrqYZkkY=; b=kqs8tHFWNn6cwDHEn8RY2sfe1wrg5xHgkHv4t1xvfYxeWc37MlF2t/45onL+MF9raQ PpVdoPVJYnRC1bpOnjHorIBkwY26XB06Sk2JPEIoxEC1IbKBnJPDQ30idbNKeIm0OvkW ThCiAfWlWpws623JyYMpjoIW/qpnd5zb1CiXaIaJD3dQMM1ggLtAHdPnwhHs17GVHIK+ jf6Dh6Xp+xkKwhv2kJEUUUuUc4kkk8whc1itLZXUKbVIfsd8VMOfNlSOvaZ+HcqOR8zC OsK8LeM1l0k+VQbB9Q1i7kzArnDs9Uktpdmjj7nRInd9NosdcoNdf5DB7J/IML356aTl 50RQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=bLw9ay3M; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id h186si10784863wmf.171.2017.12.25.12.59.05; Mon, 25 Dec 2017 12:59:05 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=bLw9ay3M; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B42B868044D; Mon, 25 Dec 2017 22:58:50 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk0-f193.google.com (mail-qk0-f193.google.com [209.85.220.193]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 25F7368044D for ; Mon, 25 Dec 2017 22:58:44 +0200 (EET) Received: by mail-qk0-f193.google.com with SMTP id l19so7772424qke.5 for ; Mon, 25 Dec 2017 12:58:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id; bh=1O0adBW95hV7GyxzE5bwQZBrl01P1P+LloxfNYz65PQ=; b=bLw9ay3Mb683arq7w1aIoXIPBns/lAU199leP+3AKVqs9j8S/GLTM1/8A/7egmKyMW XxcvgZBlkgcwXkLC2dWnPZyuCrAxJulVxrcrTJLHIrH4fNkNfUmuBEz6c1QnpzKnJvez ZGXnSJPQhXTwQSwPmgTStzDe7r0dSk8wVWHUkFDD6+qu2CXil3C38hsMgnZp8r2cKj5u /GiL77tFRhBzYit9WtconQGolFB0X6cjl2M7fIya1/H6ds9BxCBlZxS3/40HQBBbbocP Xl2fHQukKyGa8x/X4CeGjbnKFP5OhKcOMw4JKdbswCQXI44VslD5G7v0eRkxplOe2/5r JI+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id; bh=1O0adBW95hV7GyxzE5bwQZBrl01P1P+LloxfNYz65PQ=; b=OGmIZfuNksHu8OvTCyAnMTgBLbitY95+Tdq2450TWY6MlSzghxgkeI6JqxSksGMpuy dn0PsfZzpYg0yUvn3J637O4Hm2o9NhyQus/2fZk9W3aKdxw5qEE1XfxnAHectHYn7og7 Ykvdswsx8sS8vuq5Pse0hgJYJGvf9c93cvQfYuwVapyHPl2anqrSFeaiiCdYdm7+7Am1 uAIwUKUskDqDL4b1qpQpoHZ+wB9KPJDPB7rEWmjMIujgm55LBU1jZGMCXOx0qx0bzWK+ bu0mMujZscUqSxGhY1g1bjvY0tOcwxWNh45BXvRu4bpCzlFrFXPukon/2xXIWSUZpMGc g7hg== X-Gm-Message-State: AKGB3mL/sE7ZSs7wG9ukoCcVg/beHQhnktkJSFdIfTcPr8EtC9GD1FMO 8ZWVCzR4gx7TsL8llE/9STksPw== X-Received: by 10.55.11.12 with SMTP id 12mr26266256qkl.286.1514235535910; Mon, 25 Dec 2017 12:58:55 -0800 (PST) Received: from localhost.localdomain ([181.229.225.176]) by smtp.gmail.com with ESMTPSA id q12sm18728606qtk.32.2017.12.25.12.58.54 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 25 Dec 2017 12:58:55 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Mon, 25 Dec 2017 17:58:00 -0300 Message-Id: <20171225205800.5948-1-jamrial@gmail.com> X-Mailer: git-send-email 2.15.0 Subject: [FFmpeg-devel] [PATCH] avcodec/libx264: fix compilation with x264 builds >= 153 X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" x264 now supports multibitdepth builds, with a slightly changed API to request bitdepth during initialization. Signed-off-by: James Almer --- libavcodec/libx264.c | 49 ++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 40 insertions(+), 9 deletions(-) diff --git a/libavcodec/libx264.c b/libavcodec/libx264.c index e2455e18de..fb0bc9f10d 100644 --- a/libavcodec/libx264.c +++ b/libavcodec/libx264.c @@ -272,6 +272,7 @@ static int X264_frame(AVCodecContext *ctx, AVPacket *pkt, const AVFrame *frame, int *got_packet) { X264Context *x4 = ctx->priv_data; + const av_unused AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(ctx->pix_fmt); x264_nal_t *nal; int nnal, i, ret; x264_picture_t pic_out = {0}; @@ -279,7 +280,7 @@ static int X264_frame(AVCodecContext *ctx, AVPacket *pkt, const AVFrame *frame, x264_picture_init( &x4->pic ); x4->pic.img.i_csp = x4->params.i_csp; - if (x264_bit_depth > 8) + if (desc->comp[0].depth > 8) x4->pic.img.i_csp |= X264_CSP_HIGH_DEPTH; x4->pic.img.i_plane = avfmt2_num_planes(ctx->pix_fmt); @@ -453,6 +454,7 @@ static av_cold int X264_init(AVCodecContext *avctx) { X264Context *x4 = avctx->priv_data; AVCPBProperties *cpb_props; + const av_unused AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(avctx->pix_fmt); int sw,sh; if (avctx->global_quality > 0) @@ -723,6 +725,9 @@ FF_ENABLE_DEPRECATION_WARNINGS x4->params.i_width = avctx->width; x4->params.i_height = avctx->height; +#if X264_BUILD >= 153 + x4->params.i_bitdepth = desc->comp[0].depth; +#endif av_reduce(&sw, &sh, avctx->sample_aspect_ratio.num, avctx->sample_aspect_ratio.den, 4096); x4->params.vui.i_sar_width = sw; x4->params.vui.i_sar_height = sh; @@ -850,6 +855,35 @@ static const enum AVPixelFormat pix_fmts_8bit[] = { #endif AV_PIX_FMT_NONE }; + +#if CONFIG_LIBX264RGB_ENCODER +static const enum AVPixelFormat pix_fmts_8bit_rgb[] = { + AV_PIX_FMT_BGR0, + AV_PIX_FMT_BGR24, + AV_PIX_FMT_RGB24, + AV_PIX_FMT_NONE +}; +#endif + +#if X264_BUILD >= 153 +static const enum AVPixelFormat pix_fmts[] = { + AV_PIX_FMT_YUV420P, + AV_PIX_FMT_YUVJ420P, + AV_PIX_FMT_YUV422P, + AV_PIX_FMT_YUVJ422P, + AV_PIX_FMT_YUV444P, + AV_PIX_FMT_YUVJ444P, + AV_PIX_FMT_YUV420P9, + AV_PIX_FMT_YUV444P9, + AV_PIX_FMT_YUV420P10, + AV_PIX_FMT_YUV422P10, + AV_PIX_FMT_YUV444P10, + AV_PIX_FMT_NV12, + AV_PIX_FMT_NV16, + AV_PIX_FMT_NV21, + AV_PIX_FMT_NONE +}; +#else static const enum AVPixelFormat pix_fmts_9bit[] = { AV_PIX_FMT_YUV420P9, AV_PIX_FMT_YUV444P9, @@ -862,14 +896,6 @@ static const enum AVPixelFormat pix_fmts_10bit[] = { AV_PIX_FMT_NV20, AV_PIX_FMT_NONE }; -#if CONFIG_LIBX264RGB_ENCODER -static const enum AVPixelFormat pix_fmts_8bit_rgb[] = { - AV_PIX_FMT_BGR0, - AV_PIX_FMT_BGR24, - AV_PIX_FMT_RGB24, - AV_PIX_FMT_NONE -}; -#endif static av_cold void X264_init_static(AVCodec *codec) { @@ -880,6 +906,7 @@ static av_cold void X264_init_static(AVCodec *codec) else if (x264_bit_depth == 10) codec->pix_fmts = pix_fmts_10bit; } +#endif #define OFFSET(x) offsetof(X264Context, x) #define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM @@ -1023,7 +1050,11 @@ AVCodec ff_libx264_encoder = { .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_AUTO_THREADS, .priv_class = &x264_class, .defaults = x264_defaults, +#if X264_BUILD >= 153 + .pix_fmts = pix_fmts, +#else .init_static_data = X264_init_static, +#endif .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, .wrapper_name = "libx264",