From patchwork Fri May 4 22:57:09 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aman Karmani X-Patchwork-Id: 8787 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:a02:155:0:0:0:0:0 with SMTP id c82-v6csp528729jad; Fri, 4 May 2018 16:02:52 -0700 (PDT) X-Google-Smtp-Source: AB8JxZptx7YJE3WVs1xpvMEXf944vhFUiNNqZ+cA8+bORDvGVIz6/+Ogw2gpdiD/jXbZwaF1aHLO X-Received: by 2002:adf:c4b6:: with SMTP id m51-v6mr22988608wrf.126.1525474972760; Fri, 04 May 2018 16:02:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1525474972; cv=none; d=google.com; s=arc-20160816; b=opCBoqBn4XJDSV4ZN3OGbphUSeuVpZ/331CvM1IxKy3nU7NOXQ3vnpKknprKDdArkK +CCQ+KucXKQIw2uBh/NsrsEV2Bzo8edgeQXrMzX2yOPQRV8ga8D4wT3dl0ZG2n1yFBUy EWZEnVMpy78G19INoOHUaywP5kkqfiQof3Y6U1z7weEBC7Mq9VBCnPGtR2Or5MhDNrZl 3BKZAsqm9q/RZ5v6Xxz6kIVOHp1pGgD3ZkxtoJIx+/0TfXkqeEmjR21u6Kbvj6wo9hnY ikMFI8vHHJs7mFMrQLbgUNN8sgq1rK4JJ7Ora7J6eSaBpzI2TLccoMTBrF5ynKMloN75 ONVg== 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:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=RnouO58MkexreirxZBw16iQ5L76GZ3up+v/aSiFZGOE=; b=jNvUS4XhbBrebqD9au53HzYwSuOthE+DKDsR+ld3yKxGqjtarAykMfpgSL300HPcm0 B6GX8LcvdAFe6rzTIm4iF5QLvN7nR4OqbGFuPNsmaYH2RG1yRmwwpLwz5zzWS3/miO1q 6UgoPPuivRXkHUUXaiBp+aNGuG45XougfZv1zOF23TVOHVLfHXr6Ij+6No0WGKwpC03+ E+5MvbS9JfgzvigQJXzhKJ7oJvluDCGOfVFgp84rS9bHbM4eOl5P0gU8MQEnjuxdnUsc xaUCKq8WXxMD9iWm8edE8eSBBvWX/BaG7F9V5gaGvIaSu5UB+yUrFRZ+BW+9XF17rN0T xt7w== 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=eb1yV7GO; 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 b40-v6si8365520wrb.427.2018.05.04.16.02.52; Fri, 04 May 2018 16:02:52 -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=eb1yV7GO; 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 41AF168A544; Sat, 5 May 2018 02:02:17 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg0-f65.google.com (mail-pg0-f65.google.com [74.125.83.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 085D768A506 for ; Sat, 5 May 2018 02:02:11 +0300 (EEST) Received: by mail-pg0-f65.google.com with SMTP id g20-v6so9690998pgv.1 for ; Fri, 04 May 2018 16:02:45 -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:in-reply-to:references; bh=8iFBOZQScLM882li5bFk4kwyKYgHmiVJ/e2RR6PNDnY=; b=eb1yV7GOou0ZIKGvth5sxs/czb7QBn0FSfFIMpX7j972+iEZkXv5Lreex2HKAo6hWw BauoUfcxw8t6Jk/wGcR9LCK/kMb1adPNshPAsD0XQgdwzsflyJcdpTsD9SOrO1ijJzzL yHGt/KWC1xHtgari0uPvLgSTFYer6y889Qg855amMVv7WAmcaQcUJZ289l2botoxf5B4 rirycdNE8nTEmTScVYnYjFui6rLeuviTsQiHSfEqZSTfpmVSSwSm9pHDYf8sHo55OIhP zhg6Rkj3esIYgSP9lBkOibRFZgi6l1hli2+76NjFHSHBd3/a1mDZ3KRHjSPYUIABPrE3 vX5Q== 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 :in-reply-to:references; bh=8iFBOZQScLM882li5bFk4kwyKYgHmiVJ/e2RR6PNDnY=; b=axu9qjYV7mGqJxyRWbsph4H+iL5rSpExOJRm6ziomAjOFci6I8HN7yku3qy3Tx1STX i1j7Lvi10ISh9cjWPftFLKC9sNN0rbv4wNmAwqSlk7/kJuSFaaIjo7XZjLteo8ijDTce q7y6VRyixEL08vfLIxEPaiaPrBfhrmLsJjZdCxGhX46FYbecJi8SkFt+Qsy8i8004vyq c0c/NZw2gvQ6b/3nDYzNiqrqPUBrvFjwku7pW3k7XQkcAqtThtxvWHlInQ6C3lorg9oe 6Z7vj2lMd9au18QDBq+IUOFotbA+HxIibgcXs9pzx8/XXeENwDvqyMQWH3n+BG05tRzD UnVA== X-Gm-Message-State: ALQs6tDIvtd6ULmABCA4d8+kPW8Adp+kVuksd5BZ00bSIZyAF6gBt3Gd GYiI0NO+siExH91KGOzOw+vVUa7J X-Received: by 2002:a17:902:7c94:: with SMTP id y20-v6mr29753805pll.56.1525474637475; Fri, 04 May 2018 15:57:17 -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 h1sm34521780pfg.135.2018.05.04.15.57.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 04 May 2018 15:57:16 -0700 (PDT) From: Aman Gupta To: ffmpeg-devel@ffmpeg.org Date: Fri, 4 May 2018 15:57:09 -0700 Message-Id: <20180504225711.69909-2-ffmpeg@tmm1.net> X-Mailer: git-send-email 2.14.2 In-Reply-To: <20180504225711.69909-1-ffmpeg@tmm1.net> References: <20180504225711.69909-1-ffmpeg@tmm1.net> Subject: [FFmpeg-devel] [PATCH 2/4] avcodec/videotoolbox: split h264/hevc callbacks 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 Previously the shared callbacks were trying to interpret avctx->priv_data as H264Context* --- libavcodec/videotoolbox.c | 43 +++++++++++++++++++++++++++++++++---------- 1 file changed, 33 insertions(+), 10 deletions(-) diff --git a/libavcodec/videotoolbox.c b/libavcodec/videotoolbox.c index 1fd4be7135..08b133e1b1 100644 --- a/libavcodec/videotoolbox.c +++ b/libavcodec/videotoolbox.c @@ -372,17 +372,13 @@ static int videotoolbox_h264_decode_params(AVCodecContext *avctx, return ff_videotoolbox_h264_decode_slice(avctx, buffer, size); } -int ff_videotoolbox_h264_decode_slice(AVCodecContext *avctx, - const uint8_t *buffer, - uint32_t size) +static int videotoolbox_common_decode_slice(AVCodecContext *avctx, + const uint8_t *buffer, + uint32_t size) { VTContext *vtctx = avctx->internal->hwaccel_priv_data; - H264Context *h = avctx->priv_data; void *tmp; - if (h->is_avc == 1) - return 0; - tmp = av_fast_realloc(vtctx->bitstream, &vtctx->allocated_size, vtctx->bitstream_size+size+4); @@ -399,6 +395,18 @@ int ff_videotoolbox_h264_decode_slice(AVCodecContext *avctx, return 0; } +int ff_videotoolbox_h264_decode_slice(AVCodecContext *avctx, + const uint8_t *buffer, + uint32_t size) +{ + H264Context *h = avctx->priv_data; + + if (h->is_avc == 1) + return 0; + + return videotoolbox_common_decode_slice(avctx, buffer, size); +} + int ff_videotoolbox_uninit(AVCodecContext *avctx) { VTContext *vtctx = avctx->internal->hwaccel_priv_data; @@ -922,12 +930,27 @@ static int videotoolbox_h264_end_frame(AVCodecContext *avctx) return ret; } +static int videotoolbox_hevc_start_frame(AVCodecContext *avctx, + const uint8_t *buffer, + uint32_t size) +{ + return 0; +} + +static int videotoolbox_hevc_decode_slice(AVCodecContext *avctx, + const uint8_t *buffer, + uint32_t size) +{ + return videotoolbox_common_decode_slice(avctx, buffer, size); +} + + static int videotoolbox_hevc_decode_params(AVCodecContext *avctx, int type, const uint8_t *buffer, uint32_t size) { - return ff_videotoolbox_h264_decode_slice(avctx, buffer, size); + return videotoolbox_common_decode_slice(avctx, buffer, size); } static int videotoolbox_hevc_end_frame(AVCodecContext *avctx) @@ -1084,8 +1107,8 @@ const AVHWAccel ff_hevc_videotoolbox_hwaccel = { .id = AV_CODEC_ID_HEVC, .pix_fmt = AV_PIX_FMT_VIDEOTOOLBOX, .alloc_frame = ff_videotoolbox_alloc_frame, - .start_frame = ff_videotoolbox_h264_start_frame, - .decode_slice = ff_videotoolbox_h264_decode_slice, + .start_frame = videotoolbox_hevc_start_frame, + .decode_slice = videotoolbox_hevc_decode_slice, .decode_params = videotoolbox_hevc_decode_params, .end_frame = videotoolbox_hevc_end_frame, .frame_params = videotoolbox_frame_params,