From patchwork Fri Nov 9 05:31:33 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 10959 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 6A69D44D177 for ; Fri, 9 Nov 2018 07:38:39 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D474C689E0B; Fri, 9 Nov 2018 07:38:10 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 08128689BC4 for ; Fri, 9 Nov 2018 07:38:03 +0200 (EET) Received: by mail-wr1-f41.google.com with SMTP id j17-v6so534680wrq.11 for ; Thu, 08 Nov 2018 21:38:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=iJ36xIIwFU/7D0fMewMDH4fGcbKG4DunpS/TYm+FvBw=; b=bNv26YuBPIfIpb3j8++5JeLCmCO2K0YmAnPdiaHw3oxF8z+RzDCzPp0LfD5pWdgi+v VG8j8afXPeFBMB2pxLZZupEHlV/PXxTnkpuCvIh/WVgibvGjB1rcytfDD+uM0i9zxEk9 UiLEgjyJHHy4KgUCJegKNwuDHSlndSrZBALqTApgVwj8Xofo+N2sa3YVhlDQt+WMVY0l I+U9OCxGGuAfrwKeWPv8rSoIjipMupo6GtNVDmYd5c3iD+2o6PjoTrbOxR8eWwrLKnQk XFIUupuLsK1tFnr48VUudf67LaIQLQfZaY70CemOCMMgJFvXlgsLcmqWoYb5t0FsStb7 I6gA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=iJ36xIIwFU/7D0fMewMDH4fGcbKG4DunpS/TYm+FvBw=; b=py1+ITSWrOHybt1No5GS8vPOwX9PcKfs1PuEeD18TTDY56NeBAihb/fWgI/Uh8gwDE kcN3Fmji4PFEtt/bHXJmfRFKFRS7H5JoEz/vg4eWxyUdNFLRH9douOsJO4pCibxPIoYB rJkslu/D5NXpUyUm9/3t366Rc/z+c8C0iRo4tFrPyFjrsB7QMlc55Zjoh53L2Mpq+uJE tnXWhtb+u6suZ3tYDfZQrh6fXbUwP9Kmwhq3vIb64PBXXI7f1E634mpXifkkOMibBDmi awvf3gQzhPeromJWyp4mzEBGODwoK1Bpo/cUFFd13jIy6dSAsssE/FJ9YcTTmmWgtu9I sA/w== X-Gm-Message-State: AGRZ1gKi9gzDhg2t40ce8FvjkvwCLFjI2fdQ05zLxNdKuKqWPXDkS5jc y3bIzNi587UxXsUHjwACX8ulyamE X-Google-Smtp-Source: AJdET5fDglxfCeTl5cH7rzyDxY02aWBg0UhHPIfhsGGME9CuDegr+O3GYJ5nB44M1oFQxZN1ha5mKQ== X-Received: by 2002:adf:9d4a:: with SMTP id o10-v6mr6609167wre.94.1541741583730; Thu, 08 Nov 2018 21:33:03 -0800 (PST) Received: from localhost.localdomain (ipbcc08c44.dynamic.kabel-deutschland.de. [188.192.140.68]) by smtp.googlemail.com with ESMTPSA id l140-v6sm1098230wmb.24.2018.11.08.21.33.02 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 08 Nov 2018 21:33:03 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 9 Nov 2018 06:31:33 +0100 Message-Id: <20181109053138.4572-2-andreas.rheinhardt@googlemail.com> X-Mailer: git-send-email 2.19.0 In-Reply-To: <20181109053138.4572-1-andreas.rheinhardt@googlemail.com> References: <20181109053138.4572-1-andreas.rheinhardt@googlemail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/6] cbs_h2645: Unify the free-functions via macro 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" The similarity between several free-functions is exploited to create them via a common macro. Signed-off-by: Andreas Rheinhardt --- libavcodec/cbs_h2645.c | 55 ++++++++++++------------------------------ 1 file changed, 15 insertions(+), 40 deletions(-) diff --git a/libavcodec/cbs_h2645.c b/libavcodec/cbs_h2645.c index e55bd00183..37b0207420 100644 --- a/libavcodec/cbs_h2645.c +++ b/libavcodec/cbs_h2645.c @@ -414,13 +414,22 @@ static int cbs_h2645_read_more_rbsp_data(GetBitContext *gbc) #undef allocate -static void cbs_h264_free_pps(void *unit, uint8_t *content) -{ - H264RawPPS *pps = (H264RawPPS*)content; - av_buffer_unref(&pps->slice_group_id_ref); - av_freep(&content); +#define cbs_h2645_free(h26n, name, var, buffer) \ +static void cbs_h26 ## h26n ## _free_ ## var(void *unit, uint8_t *content) \ +{ \ + H26 ## h26n ## Raw ## name *var = (H26 ## h26n ## Raw ## name*)content; \ + av_buffer_unref(&var->buffer ## _ref); \ + av_freep(&content); \ } +cbs_h2645_free(4, PPS, pps, slice_group_id) +cbs_h2645_free(5, VPS, vps, extension_data.data) +cbs_h2645_free(5, SPS, sps, extension_data.data) +cbs_h2645_free(5, PPS, pps, extension_data.data) + +cbs_h2645_free(4, Slice, slice, data) +cbs_h2645_free(5, Slice, slice, data) + static void cbs_h264_free_sei_payload(H264RawSEIPayload *payload) { switch (payload->payload_type) { @@ -452,41 +461,6 @@ static void cbs_h264_free_sei(void *unit, uint8_t *content) av_freep(&content); } -static void cbs_h264_free_slice(void *unit, uint8_t *content) -{ - H264RawSlice *slice = (H264RawSlice*)content; - av_buffer_unref(&slice->data_ref); - av_freep(&content); -} - -static void cbs_h265_free_vps(void *unit, uint8_t *content) -{ - H265RawVPS *vps = (H265RawVPS*)content; - av_buffer_unref(&vps->extension_data.data_ref); - av_freep(&content); -} - -static void cbs_h265_free_sps(void *unit, uint8_t *content) -{ - H265RawSPS *sps = (H265RawSPS*)content; - av_buffer_unref(&sps->extension_data.data_ref); - av_freep(&content); -} - -static void cbs_h265_free_pps(void *unit, uint8_t *content) -{ - H265RawPPS *pps = (H265RawPPS*)content; - av_buffer_unref(&pps->extension_data.data_ref); - av_freep(&content); -} - -static void cbs_h265_free_slice(void *unit, uint8_t *content) -{ - H265RawSlice *slice = (H265RawSlice*)content; - av_buffer_unref(&slice->data_ref); - av_freep(&content); -} - static void cbs_h265_free_sei_payload(H265RawSEIPayload *payload) { switch (payload->payload_type) { @@ -727,6 +701,7 @@ static int cbs_h26 ## h26n ## _replace_ ## ps_var(CodedBitstreamContext *ctx, \ return 0; \ } + cbs_h2645_replace_ps(4, SPS, sps, seq_parameter_set_id) cbs_h2645_replace_ps(4, PPS, pps, pic_parameter_set_id) cbs_h2645_replace_ps(5, VPS, vps, vps_video_parameter_set_id)