From patchwork Wed Nov 2 14:37:25 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Derek Buitenhuis X-Patchwork-Id: 1258 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.90.1 with SMTP id o1csp307912vsb; Wed, 2 Nov 2016 07:54:23 -0700 (PDT) X-Received: by 10.28.27.23 with SMTP id b23mr3615866wmb.82.1478098463324; Wed, 02 Nov 2016 07:54:23 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id pj9si2951402wjb.279.2016.11.02.07.54.22; Wed, 02 Nov 2016 07:54:23 -0700 (PDT) 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; 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 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 EA483689C49; Wed, 2 Nov 2016 16:54:16 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm0-f66.google.com (mail-wm0-f66.google.com [74.125.82.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 545A5689756 for ; Wed, 2 Nov 2016 16:54:10 +0200 (EET) Received: by mail-wm0-f66.google.com with SMTP id u144so3455103wmu.0 for ; Wed, 02 Nov 2016 07:54:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:subject:date:message-id; bh=U+UBoP0R5i9W+0uttH0AtWqgXCz4ywD/pzHg1EtSYAQ=; b=EjoYipH9P68R7PjK0rl3NYsqTXdXtaLNyabvPVi9vXu3ZyqMoOmFhj7KmWpJ1jelCV 6la6ViHEt3QFnoF8BfTBUTHov8997V2BGgx0BGtmOfLlX6pAnTOVi9rDnG/aGj/J/CkU f7a/CDtv3BZQY+RiicnAhNWlyVUroX3zvpqBfsr2IzNp49hjbRApNajHWk3MdWvJi87y yj6/d0iltNtFXBVIHcgJ3JEMli/peonVDg1FB92E49RSoIod5OKaEWFE6BDTbgxDsqmP cyyGHyAIEXiK8kTeC4ItI9Ha9tVANQLwVnuCagFUyeV2hY4V6VmzTaoePnTUG/xCg6qs vuUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:subject:date:message-id; bh=U+UBoP0R5i9W+0uttH0AtWqgXCz4ywD/pzHg1EtSYAQ=; b=iqxEBpx5M/nuIOSP3JahWNAv5YoFOZp0vMPjHzJ5BZRTENsLqcInbr1dsGfaGx7y37 RDRSeCEvDZP9r6mLvCfcmlywqC1TPE8++icxtfusAUeag6Ic6ReOxLcPpPAtf8VeVB+g P0LjTUDizf5ynTI1JhIvGWJRymHqHnfe2/zj3LX0GQLkBTwACrVWpAlRcbqjgaD6Z9pf ivE4k5xcmtqZiui0O0tMVal7RV4dXuZq2JwnCv7irmsRAWzpHIs2eRoIxOXDN8iEpaZJ /PKKuVOm4XFeOQq7hbvno3Sgvrbalt2qmWMCUXJ+QpWe76CIEA3UpeP0xn6es9dixElC aL4Q== X-Gm-Message-State: ABUngvdpPpTaHftVvNtVhtR7aIP45OQni8wbB6b7boIkrjXl87sc9RpKpI7bV+GPowfheA== X-Received: by 10.28.113.13 with SMTP id m13mr3666344wmc.39.1478097478780; Wed, 02 Nov 2016 07:37:58 -0700 (PDT) Received: from vimeo-vm.localdomain ([154.57.242.29]) by smtp.googlemail.com with ESMTPSA id r1sm3094373wjc.43.2016.11.02.07.37.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 02 Nov 2016 07:37:58 -0700 (PDT) From: Derek Buitenhuis To: ffmpeg-devel@ffmpeg.org Date: Wed, 2 Nov 2016 14:37:25 +0000 Message-Id: <1478097445-37076-1-git-send-email-derek.buitenhuis@gmail.com> X-Mailer: git-send-email 1.8.3.1 Subject: [FFmpeg-devel] [PATCH] libx265: Add option to force IDR frames 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" This is in the same the same vein as c981b1145a857c8f962c93b8eecb1c613b20ffe9. Signed-off-by: Derek Buitenhuis --- libavcodec/libx265.c | 5 ++++- libavcodec/version.h | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/libavcodec/libx265.c b/libavcodec/libx265.c index d25be70..f9b287e 100644 --- a/libavcodec/libx265.c +++ b/libavcodec/libx265.c @@ -42,6 +42,7 @@ typedef struct libx265Context { const x265_api *api; float crf; + int forced_idr; char *preset; char *tune; char *x265_opts; @@ -273,7 +274,8 @@ static int libx265_encode_frame(AVCodecContext *avctx, AVPacket *pkt, x265pic.pts = pic->pts; x265pic.bitDepth = av_pix_fmt_desc_get(avctx->pix_fmt)->comp[0].depth; - x265pic.sliceType = pic->pict_type == AV_PICTURE_TYPE_I ? X265_TYPE_I : + x265pic.sliceType = pic->pict_type == AV_PICTURE_TYPE_I ? + (ctx->forced_idr ? X265_TYPE_IDR : X265_TYPE_I) : pic->pict_type == AV_PICTURE_TYPE_P ? X265_TYPE_P : pic->pict_type == AV_PICTURE_TYPE_B ? X265_TYPE_B : X265_TYPE_AUTO; @@ -382,6 +384,7 @@ static av_cold void libx265_encode_init_csp(AVCodec *codec) #define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM static const AVOption options[] = { { "crf", "set the x265 crf", OFFSET(crf), AV_OPT_TYPE_FLOAT, { .dbl = -1 }, -1, FLT_MAX, VE }, + { "forced-idr", "if forcing keyframes, force them as IDR frames", OFFSET(forced_idr),AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, VE }, { "preset", "set the x265 preset", OFFSET(preset), AV_OPT_TYPE_STRING, { 0 }, 0, 0, VE }, { "tune", "set the x265 tune parameter", OFFSET(tune), AV_OPT_TYPE_STRING, { 0 }, 0, 0, VE }, { "x265-params", "set the x265 configuration using a :-separated list of key=value parameters", OFFSET(x265_opts), AV_OPT_TYPE_STRING, { 0 }, 0, 0, VE }, diff --git a/libavcodec/version.h b/libavcodec/version.h index f292d9d..31d5f19 100644 --- a/libavcodec/version.h +++ b/libavcodec/version.h @@ -29,7 +29,7 @@ #define LIBAVCODEC_VERSION_MAJOR 57 #define LIBAVCODEC_VERSION_MINOR 65 -#define LIBAVCODEC_VERSION_MICRO 100 +#define LIBAVCODEC_VERSION_MICRO 101 #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ LIBAVCODEC_VERSION_MINOR, \