From patchwork Fri Nov 10 21:40:52 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aman Karmani X-Patchwork-Id: 5981 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.161.90 with SMTP id m26csp3884563jah; Fri, 10 Nov 2017 13:42:28 -0800 (PST) X-Google-Smtp-Source: AGs4zMYElfgSJCKA9zypZBt2Ei4REfuQ2P9GbnrUk9SClgvEX8IAlzBV5J+iC4QL8PXuvy9oxiup X-Received: by 10.28.124.5 with SMTP id x5mr1332947wmc.151.1510350147944; Fri, 10 Nov 2017 13:42:27 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1510350147; cv=none; d=google.com; s=arc-20160816; b=W+l67dP/t2InrUhGuDIbzFwr3wW4jZ3ImGEI8L3mvKnSP3ahFlsfq4r3k9+hAA95g6 Frrk2pGczJbXoplI4mgTILLlMfaiN64VOCt4aaiOlGSapX374+WO2W47Zjc4Do3ngipm 0I4tmYngjiJ204cmOAEWQ/Vz980nPZdcFggdnB6TUbGaLehhY11XkmFzkwsTFakeBS1x D4EsDo1FCD5Tia49OiDdgOzBGUEgK5XQYddGuy3AosBTjr46jKRwFaj5xJaOxU9V/wYP cAolSdh8wpeneh+1IjAPbg1RKe5RzrKCCRKm2hhrqkcJWxECDrF262YTl8/lQe4IbLve +FWw== 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=jXJP4JNUcdl0g9hVR3kpVAha4RpsUVIZRGNpqbqupBo=; b=jNn/07SZ9YpA56SFLeWx3Dng2pyMkcXjmLMkraNkVNHxnH9lEZjwoSr3x2eWWnD/Ng bp5oNIcdsbpfVv1kMHLM4SAnd9gXQCeLWoQJTkm/Z3cU6hT1SaPJA4SPp5U0eAzcdXMu eaUyMJErsq6Weh85x+17D4RtrdONioLcz2VJCnm9cGJdQXJwDw5cW0u1Vk7c5y5umew3 tPKDcWDpQs0MkuB+bG4CfC1Dfq8sRFrxJahbUcixHx49c/KEIifFDwfRovFVCoqdCVem DgIPk7P4dNL2xWPx4Z+ILDVcp2gKC/RjjLDPYz92wqklrJKA2kp9OWN+mno1yUBxS+R0 VeEw== 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=XfqtTaAG; 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 f5si8842550wrg.35.2017.11.10.13.42.27; Fri, 10 Nov 2017 13:42:27 -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=@tmm1-net.20150623.gappssmtp.com header.s=20150623 header.b=XfqtTaAG; 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 B8A64689F60; Fri, 10 Nov 2017 23:41:05 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pf0-f178.google.com (mail-pf0-f178.google.com [209.85.192.178]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7FE85689EF4 for ; Fri, 10 Nov 2017 23:40:57 +0200 (EET) Received: by mail-pf0-f178.google.com with SMTP id b6so7295397pff.10 for ; Fri, 10 Nov 2017 13:41:11 -0800 (PST) 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=XZ3hNiomIgp0O69JktfxbZhCFcDzLRKSkY8QJjPVirU=; b=XfqtTaAGFJkzuhEHmjJtwCpqTt8Sz9mkQ1/FuEpXweplWzC/AzXCmEFoUoI89MqB+B 3rUXkPdFl6W47b5+AOHyBHckxjiL2smwbRWthRqq8dSp5s0jKVNEUSuhN/j/2JnI5GZ1 4p44wvgUeZ4vugMwL1OTr/gYfbOIpjbr9hCbFcXs9z2i+cs5YBsqxmRKzbbp/kCj989/ UCz0OH8oqF6dIWMYpZOkS0it9imhvN5Y5GyW1x+09NTIxnz/1CLOXvE9DKlpmtdapE9O x9hkSRU3E2YuCQO3RGeiirbdT62JmVdOVuoT4zvCa8gk5H8WagAdW8LeYk5nhSweJvHQ iXSA== 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=XZ3hNiomIgp0O69JktfxbZhCFcDzLRKSkY8QJjPVirU=; b=Mul3sg9Sim5ZSmZwuKAY3eXHQ2FME8Ip0qw3bCEL+bO/tBUY1jeIYUiLmkBBP+rE2T nOJVEv/tQbLWsQtevWmEklLmzwCdL0E9K+P32YJ8q2mOjQ1vgxYfYoBAF2SdUR9WsYO4 FfevsTYeTLYEGz+XfKZFrC8AsDo2k41Ff94YMIECo0AJ5vERkzPuLngAEONWJIILGpFA 8Okbp/tlfPYhFYDUz5dDUHo4jnLhkfXflcEPZ0ehS6FbMRODe155W2/Xbb8+b0BhQNq6 tER6Z8+qHhljfBOoFGanRgSmcBnxfYVfhGwvDxGDehnW0adyqMV7uPV2rGeKMEVcDDgD 6x5Q== X-Gm-Message-State: AJaThX4NBXgdV2vrJLchZEOd2m5eNMzUEblhxUkx/sUsr0bZbY6Ls9Yk h882znP+kgmHo9VaktfPwh9Cbuw0 X-Received: by 10.159.211.4 with SMTP id bc4mr1763307plb.160.1510350069304; Fri, 10 Nov 2017 13:41:09 -0800 (PST) Received: from tmm1-imac.local.net (c-73-252-174-83.hsd1.ca.comcast.net. [73.252.174.83]) by smtp.gmail.com with ESMTPSA id 81sm20734554pfh.145.2017.11.10.13.41.08 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 10 Nov 2017 13:41:08 -0800 (PST) From: Aman Gupta To: ffmpeg-devel@ffmpeg.org Date: Fri, 10 Nov 2017 13:40:52 -0800 Message-Id: <20171110214059.84891-7-ffmpeg@tmm1.net> X-Mailer: git-send-email 2.14.2 In-Reply-To: <20171110214059.84891-1-ffmpeg@tmm1.net> References: <20171110214059.84891-1-ffmpeg@tmm1.net> Subject: [FFmpeg-devel] [PATCH v4 07/14] avcodec/h264: implement new decode_params callback for PPS/SPS 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Aman Gupta This callback will be used by the VideoToolbox H264 hwaccel so that it can receive SPS and PPS NALUs. VideoToolbox requires PPS changes to be fed into the decoder session, and for the session to be recreated when the SPS changes. --- libavcodec/h264dec.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/libavcodec/h264dec.c b/libavcodec/h264dec.c index 517f6acc13..be187eb5f4 100644 --- a/libavcodec/h264dec.c +++ b/libavcodec/h264dec.c @@ -713,6 +713,14 @@ static int decode_nal_units(H264Context *h, const uint8_t *buf, int buf_size) break; case H264_NAL_SPS: { GetBitContext tmp_gb = nal->gb; + if (avctx->hwaccel && avctx->hwaccel->decode_params) { + ret = avctx->hwaccel->decode_params(avctx, + nal->type, + nal->raw_data, + nal->raw_size); + if (ret < 0) + goto end; + } if (ff_h264_decode_seq_parameter_set(&tmp_gb, avctx, &h->ps, 0) >= 0) break; av_log(h->avctx, AV_LOG_DEBUG, @@ -724,6 +732,14 @@ static int decode_nal_units(H264Context *h, const uint8_t *buf, int buf_size) break; } case H264_NAL_PPS: + if (avctx->hwaccel && avctx->hwaccel->decode_params) { + ret = avctx->hwaccel->decode_params(avctx, + nal->type, + nal->raw_data, + nal->raw_size); + if (ret < 0) + goto end; + } ret = ff_h264_decode_picture_parameter_set(&nal->gb, avctx, &h->ps, nal->size_bits); if (ret < 0 && (h->avctx->err_recognition & AV_EF_EXPLODE))