From patchwork Sun Nov 12 05:02:57 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 6006 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.161.94 with SMTP id m30csp753813jah; Sat, 11 Nov 2017 21:03:31 -0800 (PST) X-Google-Smtp-Source: AGs4zMbzHER3mVGMffIZVM/kHLxt4NMlfydDNq3TVMCLI9/EgECjgOgWWjZu9nadxUJxbEM/fiJ3 X-Received: by 10.223.196.156 with SMTP id m28mr4375362wrf.67.1510463011484; Sat, 11 Nov 2017 21:03:31 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1510463011; cv=none; d=google.com; s=arc-20160816; b=TuELhMdEAFy1Wi/rPT7zh5qayTQ2cMFhQjDNVo03MmgQiR39rq48PkSKWDQVvMUssL ZffLInP2GwctliCjPGH3F76RJgh4GcFxKY7Mh7C7kD6BdS46IrSSfCyIkV+AWRq5mVG0 Gh8NZQPmn6vmpDQDcnlA2sImmg14y252tvrz94INtJTr6z/luiSib/u2oGlJ5MwLxRys auVZPPg6YVbhBSZTci8o3YPzyWJamt7iyfE3vuhySHQxfonWKEU2cDP1cvReWFatOAaU h3f//VkygnBGzMUURTPjtkE1uhl/PE7lHAxwsStKw2xsbwlcSUSiH5hWLqSXFvzA3h8e vaSQ== 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=ItNsjUbfEb+cdgECB9qO3mEJejQMDjnEuLWKNSy5gHM=; b=VXLU0Z2LNLd2uHuy6HZK/9zC6OyvNxGtrJxAt+ZuE1HnYyRaEDis5CAmH16iBTPvA6 j0bvrtN2SHz7vC3NGhLUQyeSn+0Qg04lInEvg4g1O0SRqI2cjNgxhwuLNyUDbn0FZqD/ Gz+muqMOe1AlBTNc2OvqRoQKgRqFB7zrmEWgJidSMl5LfU+S3v5cjj30IvnsiTz63jC6 MPUFa6kLSeZ50N4HxUIbfZGE1KSsUyxRL4/0CT2YpNA602wHfNA3V5uP2PV9LtOdBRwo qEH7LqRCGuIyZg8rFeY3ulq4VL85ZNFiMBl2r2bBDkijd7s0V8W5KLqMNy3GVhFOJFge +muA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=QlgwUxQa; 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 u4si11300826wre.222.2017.11.11.21.03.30; Sat, 11 Nov 2017 21:03:31 -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=QlgwUxQa; 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 31F6F68A30E; Sun, 12 Nov 2017 07:03:15 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt0-f195.google.com (mail-qt0-f195.google.com [209.85.216.195]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A6E5B68A2D6 for ; Sun, 12 Nov 2017 07:03:08 +0200 (EET) Received: by mail-qt0-f195.google.com with SMTP id 31so16168294qtz.9 for ; Sat, 11 Nov 2017 21:03:22 -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=5ikfALoA+DV3H2D76B+0bkd0javzTW4mQZ7brEF+gb4=; b=QlgwUxQa8CWNvfl9tO9qdTiVCmrQAn+L6HfihGfLWWn504XT/ewS4On8yW1NBjOQc7 nd9OXyEHq5JuavqiCSiMFOMsXT/lxjOQvzQJQL+Ve0kO/Gb1VDObIfyrnu2KqNcupCLf aX6D1uOYthVpvEt6B4yiiQGf+CSMqZMAsNLkuDjEeSDD63P709SIuzZEsVbcDwZkr9pN ALZOi0dL3JF5Z7McGISzX+ir/maAGJVwAB0hDUQNaE8DVZ+eyMNsrDixdItptcAeQxSr qaDEpto18tUqoQhXEuPROgq0wqj5trqJSckf0ygJZv2ulI5CkMlgVRaMOCpY49GzM4oy Af2w== 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=5ikfALoA+DV3H2D76B+0bkd0javzTW4mQZ7brEF+gb4=; b=LAiyKGSjwHaXkRjRJilCos+szYbmVghOMzmUHESl20IGjVZb2lCdEGCyTBBavZSoh2 BhBeTdSqMbnrbMOBBCoq9MOFjxxKh8Zsna0NQYMzkGK5gHbIhJJqXXsh3uq+NcgwFoKC uMuZqu8RearyYpdxEdFmh7qY2CGFvkvqeaWrrD2y5uXWIV5KmDVBovzysH6OkGSfB5pP ng83tbd4bui7d6aVrAL7szbcMenrU7InVl1YNro/HBkaOwvqrUhT1FH1zVO7Dtu2JqA3 xlcwWkSFK3bUEUxS3zzOIyYvRxOP0wc5RdaTNFF5T65HiIq11B3RwW3ruHzmqywmMxDr HlFQ== X-Gm-Message-State: AJaThX7l4O9/nMWRNM2iPZJmluyyGeSgT+qjRWylc2aGCdYIxNMOe0Vp 7FHANpyyxaU6pi5riY+iIfdigQ== X-Received: by 10.237.61.243 with SMTP id j48mr4501091qtf.52.1510463001027; Sat, 11 Nov 2017 21:03:21 -0800 (PST) Received: from localhost.localdomain ([181.231.59.220]) by smtp.gmail.com with ESMTPSA id l9sm9728922qkh.2.2017.11.11.21.03.19 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sat, 11 Nov 2017 21:03:20 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Sun, 12 Nov 2017 02:02:57 -0300 Message-Id: <20171112050257.7248-1-jamrial@gmail.com> X-Mailer: git-send-email 2.14.2 Subject: [FFmpeg-devel] [PATCH] videotoolbox: add frame_params support 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" From: wm4 Allows decoding with API users which require this API. --- libavcodec/videotoolbox.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/libavcodec/videotoolbox.c b/libavcodec/videotoolbox.c index ecb2502c1f..f0790e7353 100644 --- a/libavcodec/videotoolbox.c +++ b/libavcodec/videotoolbox.c @@ -947,6 +947,19 @@ fail: return err; } +static int videotoolbox_frame_params(AVCodecContext *avctx, + AVBufferRef *hw_frames_ctx) +{ + AVHWFramesContext *frames_ctx = (AVHWFramesContext*)hw_frames_ctx->data; + + frames_ctx->format = AV_PIX_FMT_VIDEOTOOLBOX; + frames_ctx->width = avctx->coded_width; + frames_ctx->height = avctx->coded_height; + frames_ctx->sw_format = AV_PIX_FMT_NV12; + + return 0; +} + AVHWAccel ff_h263_videotoolbox_hwaccel = { .name = "h263_videotoolbox", .type = AVMEDIA_TYPE_VIDEO, @@ -956,6 +969,7 @@ AVHWAccel ff_h263_videotoolbox_hwaccel = { .start_frame = videotoolbox_mpeg_start_frame, .decode_slice = videotoolbox_mpeg_decode_slice, .end_frame = videotoolbox_mpeg_end_frame, + .frame_params = videotoolbox_frame_params, .init = videotoolbox_common_init, .uninit = videotoolbox_uninit, .priv_data_size = sizeof(VTContext), @@ -970,6 +984,7 @@ AVHWAccel ff_hevc_videotoolbox_hwaccel = { .start_frame = ff_videotoolbox_h264_start_frame, .decode_slice = ff_videotoolbox_h264_decode_slice, .end_frame = videotoolbox_hevc_end_frame, + .frame_params = videotoolbox_frame_params, .init = videotoolbox_common_init, .uninit = ff_videotoolbox_uninit, .priv_data_size = sizeof(VTContext), @@ -984,6 +999,7 @@ AVHWAccel ff_h264_videotoolbox_hwaccel = { .start_frame = ff_videotoolbox_h264_start_frame, .decode_slice = ff_videotoolbox_h264_decode_slice, .end_frame = videotoolbox_h264_end_frame, + .frame_params = videotoolbox_frame_params, .init = videotoolbox_common_init, .uninit = videotoolbox_uninit, .priv_data_size = sizeof(VTContext), @@ -998,6 +1014,7 @@ AVHWAccel ff_mpeg1_videotoolbox_hwaccel = { .start_frame = videotoolbox_mpeg_start_frame, .decode_slice = videotoolbox_mpeg_decode_slice, .end_frame = videotoolbox_mpeg_end_frame, + .frame_params = videotoolbox_frame_params, .init = videotoolbox_common_init, .uninit = videotoolbox_uninit, .priv_data_size = sizeof(VTContext), @@ -1012,6 +1029,7 @@ AVHWAccel ff_mpeg2_videotoolbox_hwaccel = { .start_frame = videotoolbox_mpeg_start_frame, .decode_slice = videotoolbox_mpeg_decode_slice, .end_frame = videotoolbox_mpeg_end_frame, + .frame_params = videotoolbox_frame_params, .init = videotoolbox_common_init, .uninit = videotoolbox_uninit, .priv_data_size = sizeof(VTContext), @@ -1026,6 +1044,7 @@ AVHWAccel ff_mpeg4_videotoolbox_hwaccel = { .start_frame = videotoolbox_mpeg_start_frame, .decode_slice = videotoolbox_mpeg_decode_slice, .end_frame = videotoolbox_mpeg_end_frame, + .frame_params = videotoolbox_frame_params, .init = videotoolbox_common_init, .uninit = videotoolbox_uninit, .priv_data_size = sizeof(VTContext),