From patchwork Thu Apr 19 22:34:01 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aman Karmani X-Patchwork-Id: 8515 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:a02:155:0:0:0:0:0 with SMTP id c82-v6csp1194829jad; Thu, 19 Apr 2018 15:42:08 -0700 (PDT) X-Google-Smtp-Source: AIpwx4+Sfxyx/BPW/YonOSz/DoxHqRzLWr3wkizkstCAxsm2v5n0PF4QX/A1enACY42ASSfQ8BAh X-Received: by 10.28.29.209 with SMTP id d200mr321862wmd.83.1524177728919; Thu, 19 Apr 2018 15:42:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1524177728; cv=none; d=google.com; s=arc-20160816; b=srmzdTnDFuF/Rc8LTDXcphDyMIr6kbQqMEXmU1RbbQNNbsIU/+UITpq/kySdxSswyk dcqnIKYhcRsBlqgzlujTpjhOtfkW+/dApxtpfSr3alm1TbBIgufVNPIasnSXG6YL9ygE uUWuG/jn5qMCtJiz+BBEBG1Y9iQSeK6UObqjA5i0WOvzgP2FO4pBjg5lQ4SL3ZDR0lgk Hh1Eml5UA4i/GmyRWBF3KHpOhpypQWPbfalPdRkcM176KDZVGst1GWrUHeRYmgyKqk4z ClfBLuPRw3soAerLQo5RbQ7UtNHI9xrtSJNpkdvM9c16lZY/PYPM47OKRrKTW+TcQKsy bX6Q== 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:cc: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=PozOVfv6w3E4I8xvB4rA8ghQ7SWy56I3ZHDaWKOIIqk=; b=s/O/IqVoSZYjWDs6KcZQaV1wDD/bTuH3G50Tfu6Bza/dCs0VlljmkW50ZZRPEI6TaF wF22unddwfU+YoZ69zFknTLIIk4tYlQIUYOfMgSqmMIU45PDX+1SOiHkTJFIdD2NdsIP CFiK6kUE6fhd/N/l+bwINn308NindUo2in8ea82j9TQIxok33mpkYM2HYrbPiZ7z9tSj p7PbSKuGfYdvcJw6IXxcTaIH3NnlN9begY3m9WaqTsEX7jreBlqbIXJ8l8Plt+b6W5Sy /oJo/mf2F3m6oXsRXtddv6d3ooNrwHQuEm3mOuXefzpnd/EKad+pCt5sdHf/B8gAYxhf ZZvQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@tmm1-net.20150623.gappssmtp.com header.s=20150623 header.b=rndhc3rk; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id w143si123260wme.14.2018.04.19.15.42.07; Thu, 19 Apr 2018 15:42:08 -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=@tmm1-net.20150623.gappssmtp.com header.s=20150623 header.b=rndhc3rk; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 70533689FA2; Fri, 20 Apr 2018 01:41:38 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pf0-f195.google.com (mail-pf0-f195.google.com [209.85.192.195]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 54199689CB9 for ; Fri, 20 Apr 2018 01:41:32 +0300 (EEST) Received: by mail-pf0-f195.google.com with SMTP id j5so3327843pfh.2 for ; Thu, 19 Apr 2018 15:42:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tmm1-net.20150623.gappssmtp.com; s=20150623; h=sender:from:to:cc:subject:date:message-id; bh=cfCeLmwLqOl1gvzoGKrDmLWfh/mwvxj6suZlyfFsifU=; b=rndhc3rkKcNFGtwQb/Zy2Ym5V66X99dFL39+wxg7E8HRw6txxgzUQuTYDdLhHjSuJU 8AiYmYXk6vGFpTAemCWj+qth+YcQs1TBn24hWt20D5u8tY0EKvKLFHhv2rXEF7N6Ad5m +wPdHwdQqedWwD8cAhY6hDdORRup98ruXA44mARH/Ih+quHqswAJnrZ1Ks80SRhy/Ydj 8BLnzFphPymmtVfsv5PjDnJWHsyAfnhG7yG2oFv5CuVup4Ta5QC4aLdzqZUEuFC9kv0P iHIfc2LgRMWBl3lL92L58mW7UU2VKPexIOFm5JUXNxqrFZxoT9RyTXox51XkBa2sRoT1 k0eQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id; bh=cfCeLmwLqOl1gvzoGKrDmLWfh/mwvxj6suZlyfFsifU=; b=qbK4DVSSszvIAXGbF4DlzyQc6iYOvptpkFQDB1fLwuP6aIoU1aEUhePkwcLyZCEFKI GbcWenuJ8ViObSozn+PPLITq1Bu+6882ysvrZ+SXLZwelNgEHTOHVpo7aEIVZiiDtgO0 afay+IjaBn4m6/+c/uwAldOjraCbpiegw/nUFMetDj+284nMMj2rPZzJwJGwdBk+yQHg L0fkv/3WZ5URoxX19dc4Ugv5ugy3eZvl0LRjt18zyml1rjIII3Y2JQsRKGm4OPOv+XEo 32SFjprQ0VDAxvrq4pFojG+K6GxOHotsbF4IgLJwWPs5cmAUU0f6DMswwYKzeqcxFKt9 3R3A== X-Gm-Message-State: ALQs6tBGS1mC1z7MC6olDvnWNCu+FeQOXKXqCImRuCw6apc5RF4vUmPx glKCTK13IlN0q/bDgtHB2JeD18bb X-Received: by 10.98.211.82 with SMTP id q79mr7401928pfg.45.1524177249384; Thu, 19 Apr 2018 15:34:09 -0700 (PDT) Received: from localhost.localdomain (c-69-181-54-242.hsd1.ca.comcast.net. [69.181.54.242]) by smtp.gmail.com with ESMTPSA id 83sm9140690pfv.131.2018.04.19.15.34.08 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 19 Apr 2018 15:34:08 -0700 (PDT) From: Aman Gupta To: ffmpeg-devel@ffmpeg.org Date: Thu, 19 Apr 2018 15:34:01 -0700 Message-Id: <20180419223401.72955-1-ffmpeg@tmm1.net> X-Mailer: git-send-email 2.14.2 Subject: [FFmpeg-devel] [PATCH] avcodec/videotoolbox: fix kVTCouldNotFindVideoDecoderErr trying to decode HEVC on iOS 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 Cc: nfxjfg@googlemail.com, Aman Gupta , kernrj@gmail.com MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Aman Gupta Older iOS devices don't have a hardware HEVC decoder, but the software decoder offered by VideoToolbox is well-optimized and performs much better than the ffmpeg decoder. --- libavcodec/videotoolbox.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/libavcodec/videotoolbox.c b/libavcodec/videotoolbox.c index 57b6698e1b..8671608a35 100644 --- a/libavcodec/videotoolbox.c +++ b/libavcodec/videotoolbox.c @@ -36,6 +36,9 @@ #ifndef kVTVideoDecoderSpecification_RequireHardwareAcceleratedVideoDecoder # define kVTVideoDecoderSpecification_RequireHardwareAcceleratedVideoDecoder CFSTR("RequireHardwareAcceleratedVideoDecoder") #endif +#ifndef kVTVideoDecoderSpecification_EnableHardwareAcceleratedVideoDecoder +# define kVTVideoDecoderSpecification_EnableHardwareAcceleratedVideoDecoder CFSTR("EnableHardwareAcceleratedVideoDecoder") +#endif #if !HAVE_KCMVIDEOCODECTYPE_HEVC enum { kCMVideoCodecType_HEVC = 'hvc1' }; @@ -709,7 +712,9 @@ static CFDictionaryRef videotoolbox_decoder_config_create(CMVideoCodecType codec &kCFTypeDictionaryValueCallBacks); CFDictionarySetValue(config_info, - kVTVideoDecoderSpecification_RequireHardwareAcceleratedVideoDecoder, + codec_type == kCMVideoCodecType_HEVC ? + kVTVideoDecoderSpecification_EnableHardwareAcceleratedVideoDecoder : + kVTVideoDecoderSpecification_RequireHardwareAcceleratedVideoDecoder, kCFBooleanTrue); CFMutableDictionaryRef avc_info; @@ -833,6 +838,9 @@ static int videotoolbox_start(AVCodecContext *avctx) case kVTVideoDecoderUnsupportedDataFormatErr: av_log(avctx, AV_LOG_VERBOSE, "VideoToolbox does not support this format.\n"); return AVERROR(ENOSYS); + case kVTCouldNotFindVideoDecoderErr: + av_log(avctx, AV_LOG_VERBOSE, "VideoToolbox decoder for this format not found.\n"); + return AVERROR(ENOSYS); case kVTVideoDecoderMalfunctionErr: av_log(avctx, AV_LOG_VERBOSE, "VideoToolbox malfunction.\n"); return AVERROR(EINVAL); @@ -842,7 +850,7 @@ static int videotoolbox_start(AVCodecContext *avctx) case 0: return 0; default: - av_log(avctx, AV_LOG_VERBOSE, "Unknown VideoToolbox session creation error %u\n", (unsigned)status); + av_log(avctx, AV_LOG_VERBOSE, "Unknown VideoToolbox session creation error %d\n", (int)status); return AVERROR_UNKNOWN; } }