From patchwork Tue May 19 10:45:57 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 19772 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 3A59144B23E for ; Tue, 19 May 2020 14:13:50 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0AEE068A8F8; Tue, 19 May 2020 14:13:50 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f68.google.com (mail-wr1-f68.google.com [209.85.221.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EDFF6680A4B for ; Tue, 19 May 2020 14:13:43 +0300 (EEST) Received: by mail-wr1-f68.google.com with SMTP id y3so15469348wrt.1 for ; Tue, 19 May 2020 04:13:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=wsAIsDx32dKG8MOsAnf3Fq8lj7arXEJR3XVflMT3epY=; b=IHoN5ZZ4YKlggtilGbcvQU82TRZSf6sdHOK58/qWyMat1kOILHirLx/M0Z8X805W88 R/wpKZiPSedR4yUq3mPkSES5sXu18cNzWmKMLkiGACpXF/n4qnhSOhqLp1wHBg1T5qu3 51SkS2+MCcWFKmv18q07xFm91S2QYYc0F+GNXeK7+tp+C626bX0XMXLSMA231dfOQImT OiW98dVCjZRgqAn+FTHWuL+Zodp5XEDBfcZeG322NTyhA67DZUo5zeBvVWzHbv/2E4Ao 2vWAi8vTNDoT5xBBv2orCQC9d/BSs/Y5MTBfkKGSlW+Qcj+OXTJZ8CPjMy2s45My70di Uq5g== 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:mime-version :content-transfer-encoding; bh=wsAIsDx32dKG8MOsAnf3Fq8lj7arXEJR3XVflMT3epY=; b=AR5t+ZOzgu6JdTwH3+ABowo29P70Iyk+CecUNbYUotYNx8GyLi2aTX27QrB+jnu5Lm eXUvlBlO2EXzaU/ggQRPXOka/G61LngzY/jMa/HaVyp/SRL0zCnuxj2PXaSkrNYCwmIL J1WscCqY7xrmlYD1wYRcc+CQp8E7cI8q5HcP5uLoPkO/c+qe6w1BWngMeCmIqQox3YKv Uf0JueAP5JyEcYqzDp5mo+XTbQtm5ThfAMDhivUTy4sZpQlPXAmjOHbNSXembqbFFnxV qwF0EGBsaE5n6whdOJIsFXkNebvIcBp3lMDCXI4weTwPj3BvFWgmyxdzAlp++adQNvap /BfQ== X-Gm-Message-State: AOAM533Igk8G5rf9oGerHBFgwJAzlqfSWqzS7ja2S3C7+yizLZaNxgwT OvPGLHv1KSpGhLCguBqsFDnvhiC8 X-Google-Smtp-Source: ABdhPJznNJKx/MRMUimJUcFwcbbJEapD+V+gcXO+uXV5LCmXz6DAdr0b7cm686B3IHb9LIdAOTugMA== X-Received: by 2002:a5d:5445:: with SMTP id w5mr24611105wrv.422.1589886490655; Tue, 19 May 2020 04:08:10 -0700 (PDT) Received: from sblaptop.fritz.box (ipbcc1ab57.dynamic.kabel-deutschland.de. [188.193.171.87]) by smtp.gmail.com with ESMTPSA id m23sm3511998wmg.45.2020.05.19.04.08.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 May 2020 04:08:10 -0700 (PDT) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 19 May 2020 12:45:57 +0200 Message-Id: <20200519104601.12817-1-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/5] avformat/aiffenc: Don't forget chapters 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" If the write_id3v2 option is set, the aiff muxer would write id3v2 tags if there is global metadata or if there are attached pics to write. Chapters are ignored in this check that precedes writing id3v2 tags. Yet 47ac344970f1d6ef149c4b8a883b68cdb15112c2 added support for writing chapters as id3v2 tags, so one should check for the existence of chapters, too; otherwise the chapters would only be written in case there is global metadata or an attached pic. Signed-off-by: Andreas Rheinhardt --- libavformat/aiffenc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavformat/aiffenc.c b/libavformat/aiffenc.c index 0145596bec..88c45df334 100644 --- a/libavformat/aiffenc.c +++ b/libavformat/aiffenc.c @@ -49,7 +49,7 @@ static int put_id3v2_tags(AVFormatContext *s, AIFFOutputContext *aiff) AVIOContext *pb = s->pb; AVPacketList *pict_list = aiff->pict_list; - if (!s->metadata && !aiff->pict_list) + if (!s->metadata && !s->nb_chapters && !aiff->pict_list) return 0; avio_wl32(pb, MKTAG('I', 'D', '3', ' ')); From patchwork Tue May 19 10:45:58 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 19769 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 C67D544B01F for ; Tue, 19 May 2020 14:10:02 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 98AE868A777; Tue, 19 May 2020 14:10:02 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f65.google.com (mail-wr1-f65.google.com [209.85.221.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 418D4680CAD for ; Tue, 19 May 2020 14:09:56 +0300 (EEST) Received: by mail-wr1-f65.google.com with SMTP id e16so15407067wra.7 for ; Tue, 19 May 2020 04:09:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=hBuqMFgDYrmSdqw6N/AGTfKYyR35qJbUpx1rEImU6Fo=; b=PXRfy65JHy1eL/YKgIeCvjns0EXOFdAZMT6fFI1PhPpl27MvOCV4H+KAzM+wwf8nOQ kGAA7o+AlthnCUWbYTznNu/PErhz0eea4uzF4jCDsxmdxTvr53qC30lUGseol8PcrX7/ LkAMiFxtqByXZjGpvAngu4frNIUoR9Mf0nRJ8nxwjg9CnSAk4DhWwgV/KEJukA6s3yJY ZqTrD1nneii8omPoaPzsrNkpi9I5GT8GwRN958258kVKItUQDzgl2NgCYKASdeAAPvwl /xY8EW4AIgufFeIb9iGXkTng0Z3si1ZFBLTbC4r7/FJ1cF4k4lA+AgD6ODAHVplO8s2O oNdg== 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=hBuqMFgDYrmSdqw6N/AGTfKYyR35qJbUpx1rEImU6Fo=; b=DVXUkL31ag3TejNoOLSH8Bxl2GAJF7W77zeYe6wZkrjuEFOznaJHr/iYFMyi6W0c8O dLtpiSTyRNMwIyjFKdp4jZAHY+7di6CuAUAEHGZp0Mt3BIXqo+X8I0cRudLvwgw3az74 vlxXa3gxKH8Ncx5KRhQYfNc2TtbQXAknFHToZzV70yLHayb3opj4SVVOgpccyD8E37Fy 6jfbPp8N85EEjUeMh3EOgGb2s/RekaDD/bhQyerVWr2CJRs3/W4wpdef/AjTGP7YNHL7 5KEnhwDja6S/8zZQcl5T8HdSsAqbCeinjHPEZJoNdsN5BjO+bp2GXTXpigHy18m3x8Bm ejOQ== X-Gm-Message-State: AOAM533yi/Y/e63K7BU4OC5aJXUVJWQT35RoOv1De4WIRhqTpENdVEIU C0PCtiICm2SzhiyYEvDrzeUpxqSF X-Google-Smtp-Source: ABdhPJz97qpyA90CKBhc9D4j0ozIaTmIckaT3ys3KpqYJRgXhgTc5CcQ0P+9XcHG9fofY6ZcSU4qSw== X-Received: by 2002:a5d:5445:: with SMTP id w5mr24619010wrv.422.1589886595384; Tue, 19 May 2020 04:09:55 -0700 (PDT) Received: from sblaptop.fritz.box (ipbcc1ab57.dynamic.kabel-deutschland.de. [188.193.171.87]) by smtp.gmail.com with ESMTPSA id m23sm3511998wmg.45.2020.05.19.04.09.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 May 2020 04:09:54 -0700 (PDT) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 19 May 2020 12:45:58 +0200 Message-Id: <20200519104601.12817-2-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200519104601.12817-1-andreas.rheinhardt@gmail.com> References: <20200519104601.12817-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/5] checkasm/sw_scale: Fix stack-buffer-overflow 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" A buffer whose size is not a multiple of four has been initialized using consecutive writes of 32bits. This results in a stack-buffer-overflow reported by ASAN in the checkasm-sw_scale FATE-test. Signed-off-by: Andreas Rheinhardt --- Instead of using FFALIGN one could also just remove the "- 1" if that's preferred. tests/checkasm/sw_scale.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/checkasm/sw_scale.c b/tests/checkasm/sw_scale.c index 2680e47897..9efa2b4def 100644 --- a/tests/checkasm/sw_scale.c +++ b/tests/checkasm/sw_scale.c @@ -53,7 +53,7 @@ static void check_hscale(void) struct SwsContext *ctx; // padded - LOCAL_ALIGNED_32(uint8_t, src, [SRC_PIXELS + MAX_FILTER_WIDTH - 1]); + LOCAL_ALIGNED_32(uint8_t, src, [FFALIGN(SRC_PIXELS + MAX_FILTER_WIDTH - 1, 4)]); LOCAL_ALIGNED_32(uint32_t, dst0, [SRC_PIXELS]); LOCAL_ALIGNED_32(uint32_t, dst1, [SRC_PIXELS]); From patchwork Tue May 19 10:45:59 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 19773 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 8729C44B8F8 for ; Tue, 19 May 2020 14:15:45 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 59D50689257; Tue, 19 May 2020 14:15:45 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f65.google.com (mail-wm1-f65.google.com [209.85.128.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7C42F680A4B for ; Tue, 19 May 2020 14:15:39 +0300 (EEST) Received: by mail-wm1-f65.google.com with SMTP id t8so498163wmi.0 for ; Tue, 19 May 2020 04:15:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=jIu187CAIZWeKrLC7f7bJBDeDn6BYiLCW3ajyUqfOmw=; b=OHIGSCUf071tM9Xnz6iNJOebRx9RSStLmrOQMRd6kTLrkHdOJR6YirhPvkFUuxno25 CyauK9MTkimUvXjYnnaNyjZFcojlrCBL6SmuSrbewxjHi/nAGQakm10N8clOpazbPSNR lIBifUR2mXRgH9GFHn4rvtOP1K59dHCI2ZLXwLmsvugfWbBfQvOzkTvixFagLlABn24U egjeuNOKUCQlhncsqpHtOmq3d3oIc/I7Ls1bBJZawAeSqjj4b6eSPc0B5oTFOeTBxmHo vA+anQiIFFcKaEQaKe0/iuplfWK8+FQoA11OP10RidJuTMA7f/I+vtBYp4TFp3o0Tmx8 QHzg== 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=jIu187CAIZWeKrLC7f7bJBDeDn6BYiLCW3ajyUqfOmw=; b=VuIs+EF+w3MMQmUlgtuQReWnDklnG9iWLsNdc8AsHoSMUc7Kml7e4RiEL2Dv4nsRGI dapCeVPBFH4bQs0Km7fwgyykQp+PdPBx6WYliYExKyWNGjpY3zx6gvczOcIEoHTAlYcV fuCUdVcCjGML0dkDe77HwEMgj23A2DndKNSL/Fw0n8Z2ge0TPb24l1Bp2I0CeReHlhVs WCJ1Ta90s8abSwqhKizGOIxN6EyIiDavOt5Yv3wS0oukL4nz6pB7GJnVXyXsFGwpmhAF cZCH+6pxJddGgC16Jv3kzHsjGC6km3pIT8+JLukSW65g0o61zDfvKWzRUXWrCLr+8okl rGpg== X-Gm-Message-State: AOAM533Agegd4JygV8pZUsntbmpvjkCmCXXm/QLMA2+TPs2HWTMgZvEF HtjDWC/qqkXXJGsXKPMv4g2K3O4L X-Google-Smtp-Source: ABdhPJw41jCqqobN0V4UNe/S5NCT0Ew1CELaX1XpLkzWJ7uarXj3WhkeTxpZUiF6EAFyLf1xDixRHg== X-Received: by 2002:a1c:307:: with SMTP id 7mr4893477wmd.104.1589886596353; Tue, 19 May 2020 04:09:56 -0700 (PDT) Received: from sblaptop.fritz.box (ipbcc1ab57.dynamic.kabel-deutschland.de. [188.193.171.87]) by smtp.gmail.com with ESMTPSA id m23sm3511998wmg.45.2020.05.19.04.09.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 May 2020 04:09:55 -0700 (PDT) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 19 May 2020 12:45:59 +0200 Message-Id: <20200519104601.12817-3-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200519104601.12817-1-andreas.rheinhardt@gmail.com> References: <20200519104601.12817-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 3/5] avformat/id3v2: Avoid allocations for ID3v2ExtraMeta 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Up until now, the ID3v2ExtraMeta structure (which is used when parsing ID3v2 tags containing attached pictures, chapters etc.) contained a pointer to separately allocated data that depended on the type of the tag. Yet the difference of the sizes of the largest and the smallest of these structures is fairly small, so that it is better to simply include a union of all the possible types of tag-dependent structures in ID3v2ExtraMeta. This commit implements this. Signed-off-by: Andreas Rheinhardt --- If only one were allowed to use anonymous unions! libavformat/hls.c | 4 ++-- libavformat/id3v2.c | 50 ++++++++++++++++---------------------------- libavformat/id3v2.h | 17 +++++++++------ libavformat/omadec.c | 13 ++++++------ 4 files changed, 37 insertions(+), 47 deletions(-) diff --git a/libavformat/hls.c b/libavformat/hls.c index fc45719d1c..d9e09013e6 100644 --- a/libavformat/hls.c +++ b/libavformat/hls.c @@ -1004,7 +1004,7 @@ static void parse_id3(AVFormatContext *s, AVIOContext *pb, ff_id3v2_read_dict(pb, metadata, ID3v2_DEFAULT_MAGIC, extra_meta); for (meta = *extra_meta; meta; meta = meta->next) { if (!strcmp(meta->tag, "PRIV")) { - ID3v2ExtraMetaPRIV *priv = meta->data; + ID3v2ExtraMetaPRIV *priv = &meta->data.priv; if (priv->datasize == 8 && !strcmp(priv->owner, id3_priv_owner_ts)) { /* 33-bit MPEG timestamp */ int64_t ts = AV_RB64(priv->data); @@ -1015,7 +1015,7 @@ static void parse_id3(AVFormatContext *s, AVIOContext *pb, av_log(s, AV_LOG_ERROR, "Invalid HLS ID3 audio timestamp %"PRId64"\n", ts); } } else if (!strcmp(meta->tag, "APIC") && apic) - *apic = meta->data; + *apic = &meta->data.apic; } } diff --git a/libavformat/id3v2.c b/libavformat/id3v2.c index abe073dcc1..2ba5c3857d 100644 --- a/libavformat/id3v2.c +++ b/libavformat/id3v2.c @@ -225,7 +225,6 @@ static void free_geobtag(void *obj) av_freep(&geob->file_name); av_freep(&geob->description); av_freep(&geob->data); - av_free(geob); } /** @@ -459,20 +458,15 @@ static void read_geobtag(AVFormatContext *s, AVIOContext *pb, int taglen, if (taglen < 1) return; - geob_data = av_mallocz(sizeof(ID3v2ExtraMetaGEOB)); - if (!geob_data) { - av_log(s, AV_LOG_ERROR, "Failed to alloc %"SIZE_SPECIFIER" bytes\n", - sizeof(ID3v2ExtraMetaGEOB)); - return; - } - new_extra = av_mallocz(sizeof(ID3v2ExtraMeta)); if (!new_extra) { av_log(s, AV_LOG_ERROR, "Failed to alloc %"SIZE_SPECIFIER" bytes\n", sizeof(ID3v2ExtraMeta)); - goto fail; + return; } + geob_data = &new_extra->data.geob; + /* read encoding type byte */ encoding = avio_r8(pb); taglen--; @@ -511,7 +505,6 @@ static void read_geobtag(AVFormatContext *s, AVIOContext *pb, int taglen, /* add data to the list */ new_extra->tag = "GEOB"; - new_extra->data = geob_data; new_extra->next = *extra_meta; *extra_meta = new_extra; @@ -577,7 +570,6 @@ static void free_apic(void *obj) ID3v2ExtraMetaAPIC *apic = obj; av_buffer_unref(&apic->buf); av_freep(&apic->description); - av_freep(&apic); } static void rstrip_spaces(char *buf) @@ -603,10 +595,11 @@ static void read_apic(AVFormatContext *s, AVIOContext *pb, int taglen, goto fail; new_extra = av_mallocz(sizeof(*new_extra)); - apic = av_mallocz(sizeof(*apic)); - if (!new_extra || !apic) + if (!new_extra) goto fail; + apic = &new_extra->data.apic; + enc = avio_r8(pb); taglen--; @@ -658,7 +651,6 @@ static void read_apic(AVFormatContext *s, AVIOContext *pb, int taglen, memset(apic->buf->data + taglen, 0, AV_INPUT_BUFFER_PADDING_SIZE); new_extra->tag = "APIC"; - new_extra->data = apic; new_extra->next = *extra_meta; *extra_meta = new_extra; @@ -680,7 +672,6 @@ static void free_chapter(void *obj) ID3v2ExtraMetaCHAP *chap = obj; av_freep(&chap->element_id); av_dict_free(&chap->meta); - av_freep(&chap); } static void read_chapter(AVFormatContext *s, AVIOContext *pb, int len, const char *ttag, ID3v2ExtraMeta **extra_meta, int isv34) @@ -691,10 +682,10 @@ static void read_chapter(AVFormatContext *s, AVIOContext *pb, int len, const cha ID3v2ExtraMetaCHAP *chap = NULL; new_extra = av_mallocz(sizeof(*new_extra)); - chap = av_mallocz(sizeof(*chap)); + if (!new_extra) + return; - if (!new_extra || !chap) - goto fail; + chap = &new_extra->data.chap; if (decode_str(s, pb, 0, &chap->element_id, &len) < 0) goto fail; @@ -727,15 +718,13 @@ static void read_chapter(AVFormatContext *s, AVIOContext *pb, int len, const cha ff_metadata_conv(&chap->meta, NULL, ff_id3v2_4_metadata_conv); new_extra->tag = "CHAP"; - new_extra->data = chap; new_extra->next = *extra_meta; *extra_meta = new_extra; return; fail: - if (chap) - free_chapter(chap); + free_chapter(chap); av_freep(&new_extra); } @@ -744,7 +733,6 @@ static void free_priv(void *obj) ID3v2ExtraMetaPRIV *priv = obj; av_freep(&priv->owner); av_freep(&priv->data); - av_freep(&priv); } static void read_priv(AVFormatContext *s, AVIOContext *pb, int taglen, @@ -754,10 +742,10 @@ static void read_priv(AVFormatContext *s, AVIOContext *pb, int taglen, ID3v2ExtraMetaPRIV *priv; meta = av_mallocz(sizeof(*meta)); - priv = av_mallocz(sizeof(*priv)); + if (!meta) + return; - if (!meta || !priv) - goto fail; + priv = &meta->data.priv; if (decode_str(s, pb, ID3v2_ENCODING_ISO8859, &priv->owner, &taglen) < 0) goto fail; @@ -772,15 +760,13 @@ static void read_priv(AVFormatContext *s, AVIOContext *pb, int taglen, goto fail; meta->tag = "PRIV"; - meta->data = priv; meta->next = *extra_meta; *extra_meta = meta; return; fail: - if (priv) - free_priv(priv); + free_priv(priv); av_freep(&meta); } @@ -1132,7 +1118,7 @@ void ff_id3v2_free_extra_meta(ID3v2ExtraMeta **extra_meta) while (current) { if ((extra_func = get_extra_meta_func(current->tag, 1))) - extra_func->free(current->data); + extra_func->free(¤t->data); next = current->next; av_freep(¤t); current = next; @@ -1151,7 +1137,7 @@ int ff_id3v2_parse_apic(AVFormatContext *s, ID3v2ExtraMeta **extra_meta) if (strcmp(cur->tag, "APIC")) continue; - apic = cur->data; + apic = &cur->data.apic; if (!(st = avformat_new_stream(s, NULL))) return AVERROR(ENOMEM); @@ -1197,7 +1183,7 @@ int ff_id3v2_parse_chapters(AVFormatContext *s, ID3v2ExtraMeta **extra_meta) if (strcmp(cur->tag, "CHAP")) continue; - chap = cur->data; + chap = &cur->data.chap; if ((ret = av_dynarray_add_nofree(&chapters, &num_chapters, chap)) < 0) goto end; @@ -1239,7 +1225,7 @@ int ff_id3v2_parse_priv_dict(AVDictionary **metadata, ID3v2ExtraMeta **extra_met for (cur = *extra_meta; cur; cur = cur->next) { if (!strcmp(cur->tag, "PRIV")) { - ID3v2ExtraMetaPRIV *priv = cur->data; + ID3v2ExtraMetaPRIV *priv = &cur->data.priv; AVBPrint bprint; char *escaped, *key; int i, ret; diff --git a/libavformat/id3v2.h b/libavformat/id3v2.h index 9de0bee374..3e6030c942 100644 --- a/libavformat/id3v2.h +++ b/libavformat/id3v2.h @@ -54,12 +54,6 @@ typedef struct ID3v2EncContext { int len; ///< size of the tag written so far } ID3v2EncContext; -typedef struct ID3v2ExtraMeta { - const char *tag; - void *data; - struct ID3v2ExtraMeta *next; -} ID3v2ExtraMeta; - typedef struct ID3v2ExtraMetaGEOB { uint32_t datasize; uint8_t *mime_type; @@ -87,6 +81,17 @@ typedef struct ID3v2ExtraMetaCHAP { AVDictionary *meta; } ID3v2ExtraMetaCHAP; +typedef struct ID3v2ExtraMeta { + const char *tag; + struct ID3v2ExtraMeta *next; + union { + ID3v2ExtraMetaAPIC apic; + ID3v2ExtraMetaCHAP chap; + ID3v2ExtraMetaGEOB geob; + ID3v2ExtraMetaPRIV priv; + } data; +} ID3v2ExtraMeta; + /** * Detect ID3v2 Header. * @param buf must be ID3v2_HEADER_SIZE byte long diff --git a/libavformat/omadec.c b/libavformat/omadec.c index 9521b6d59e..79896bdf4f 100644 --- a/libavformat/omadec.c +++ b/libavformat/omadec.c @@ -217,14 +217,13 @@ static int decrypt_init(AVFormatContext *s, ID3v2ExtraMeta *em, uint8_t *header) av_log(s, AV_LOG_INFO, "File is encrypted\n"); /* find GEOB metadata */ - while (em) { - if (!strcmp(em->tag, "GEOB") && - (geob = em->data) && - (!strcmp(geob->description, "OMG_LSI") || - !strcmp(geob->description, "OMG_BKLSI"))) { + for (; em; em = em->next) { + if (strcmp(em->tag, "GEOB")) + continue; + geob = &em->data.geob; + if (!strcmp(geob->description, "OMG_LSI") || + !strcmp(geob->description, "OMG_BKLSI")) break; - } - em = em->next; } if (!em) { av_log(s, AV_LOG_ERROR, "No encryption header found\n"); From patchwork Tue May 19 10:46:00 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 19770 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 EA45B44B01F for ; Tue, 19 May 2020 14:10:04 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CC4A268A9DB; Tue, 19 May 2020 14:10:04 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f44.google.com (mail-wr1-f44.google.com [209.85.221.44]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B4F5B68A636 for ; Tue, 19 May 2020 14:09:58 +0300 (EEST) Received: by mail-wr1-f44.google.com with SMTP id i15so15366604wrx.10 for ; Tue, 19 May 2020 04:09:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=RoYQrWNGKf4QWSTmtlnBTwuy5wXav018yOKl/L+CoZk=; b=FOyj2B4IdiBdgqQxGHUGEq1erywOp8VcJBd1EkSaCe+xUeCkiNdZHbSBZUWZ49Xkmx kEw7/jy7oAU805jYPY+e97sd5Snlk0qqJTGf+xZRFSV1gIqGj1EvAAsV5i4Uh3aaUr5G kMPqPz3igqTP4bmPohHx1RYiz6Y5lPa8485BARKSrezqv++nf1uzr/0qgE3hAMWLVI0/ /0DznBYZ6P0OUvcQPFTtEGftmF+oFWrZPOOJtMZa5Kg1GGDhb7uVIcxyzyjgt9TH6zG8 5NS1rSN7Knlq0ZlR0/CDw80uXJQKHztB+Gz3oQW/aoieYi0nNgKZ0x4WP7dWb2F2T7rC xuZQ== 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=RoYQrWNGKf4QWSTmtlnBTwuy5wXav018yOKl/L+CoZk=; b=nm8AAxlgfAXBbCLSlSl6m5ZN/EMpOUupAGw9k8Cdx9mPtUkT5+sEfXmI04EH5rChN/ jBdpKKhb5G98UvT20ZpEuMXXHiTpKfxQFeoDdRIjQHko5a1IEX0iFfe1TsqGXZURxchZ HvxC1mb+o+737ZJmHDkBEdqb1v58oaJIT5aNJ7YD206XOfcC5m22/ZrwFUls00q8Ib6D ZHj6/34IhrYS7NKRAX7Tta4uJcRQCX0CbgoKYuuXIEPhvbrIdsgd1dK4weHF8A5MIRxE 1gCi9zxI3MUAlIgPIcovfgZ18hUjHVqaFkyk1FLbEx40Jw0cZVi8UwGzZNo87OFmfVr6 xesA== X-Gm-Message-State: AOAM530UZppuaQqLF94jYKsGel+VziXn2GOSipKw47L1AbC27tv/skXy CB5uSaJ8fJmMJptp1jWIBqH6KO8k X-Google-Smtp-Source: ABdhPJxJAfBF0LqbE51dFOOkGJGWVbMHrN24p9x9JCAB8DHcgY0A2rfIer5P5hQF38e/YSYL8eyr0w== X-Received: by 2002:adf:c414:: with SMTP id v20mr24278661wrf.379.1589886597346; Tue, 19 May 2020 04:09:57 -0700 (PDT) Received: from sblaptop.fritz.box (ipbcc1ab57.dynamic.kabel-deutschland.de. [188.193.171.87]) by smtp.gmail.com with ESMTPSA id m23sm3511998wmg.45.2020.05.19.04.09.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 May 2020 04:09:56 -0700 (PDT) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 19 May 2020 12:46:00 +0200 Message-Id: <20200519104601.12817-4-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200519104601.12817-1-andreas.rheinhardt@gmail.com> References: <20200519104601.12817-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 4/5] avformat/id3v2: Remove unnecessary indirection 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" ff_id3v2_parse_apic/chapters/priv/priv_dict all had a parameter extra_meta of type ID3v2ExtraMeta ** as if the functions wanted to make *extra_meta point to something else. But they don't, so just use an ID3v2ExtraMeta *. Signed-off-by: Andreas Rheinhardt --- libavformat/aacdec.c | 2 +- libavformat/aiffdec.c | 4 ++-- libavformat/asfdec_f.c | 4 ++-- libavformat/asfdec_o.c | 4 ++-- libavformat/dsfdec.c | 4 ++-- libavformat/hls.c | 8 ++++---- libavformat/id3v2.c | 14 +++++++------- libavformat/id3v2.h | 8 ++++---- libavformat/iff.c | 4 ++-- libavformat/omadec.c | 2 +- libavformat/utils.c | 6 +++--- libavformat/wavdec.c | 6 +++--- 12 files changed, 33 insertions(+), 33 deletions(-) diff --git a/libavformat/aacdec.c b/libavformat/aacdec.c index ba3f5ccc6d..a0aa112a8a 100644 --- a/libavformat/aacdec.c +++ b/libavformat/aacdec.c @@ -146,7 +146,7 @@ static int handle_id3(AVFormatContext *s, AVPacket *pkt) ffio_init_context(&ioctx, pkt->data, pkt->size, 0, NULL, NULL, NULL, NULL); ff_id3v2_read_dict(&ioctx, &metadata, ID3v2_DEFAULT_MAGIC, &id3v2_extra_meta); - if ((ret = ff_id3v2_parse_priv_dict(&metadata, &id3v2_extra_meta)) < 0) + if ((ret = ff_id3v2_parse_priv_dict(&metadata, id3v2_extra_meta)) < 0) goto error; if (metadata) { diff --git a/libavformat/aiffdec.c b/libavformat/aiffdec.c index cb2f1b60fb..c650e9074d 100644 --- a/libavformat/aiffdec.c +++ b/libavformat/aiffdec.c @@ -261,8 +261,8 @@ static int aiff_read_header(AVFormatContext *s) position = avio_tell(pb); ff_id3v2_read(s, ID3v2_DEFAULT_MAGIC, &id3v2_extra_meta, size); if (id3v2_extra_meta) - if ((ret = ff_id3v2_parse_apic(s, &id3v2_extra_meta)) < 0 || - (ret = ff_id3v2_parse_chapters(s, &id3v2_extra_meta)) < 0) { + if ((ret = ff_id3v2_parse_apic(s, id3v2_extra_meta)) < 0 || + (ret = ff_id3v2_parse_chapters(s, id3v2_extra_meta)) < 0) { ff_id3v2_free_extra_meta(&id3v2_extra_meta); return ret; } diff --git a/libavformat/asfdec_f.c b/libavformat/asfdec_f.c index f0cb353587..e9ddca7151 100644 --- a/libavformat/asfdec_f.c +++ b/libavformat/asfdec_f.c @@ -308,8 +308,8 @@ static void get_id3_tag(AVFormatContext *s, int len) ff_id3v2_read(s, ID3v2_DEFAULT_MAGIC, &id3v2_extra_meta, len); if (id3v2_extra_meta) { - ff_id3v2_parse_apic(s, &id3v2_extra_meta); - ff_id3v2_parse_chapters(s, &id3v2_extra_meta); + ff_id3v2_parse_apic(s, id3v2_extra_meta); + ff_id3v2_parse_chapters(s, id3v2_extra_meta); } ff_id3v2_free_extra_meta(&id3v2_extra_meta); } diff --git a/libavformat/asfdec_o.c b/libavformat/asfdec_o.c index 7891b23445..1b10e47907 100644 --- a/libavformat/asfdec_o.c +++ b/libavformat/asfdec_o.c @@ -461,8 +461,8 @@ static void get_id3_tag(AVFormatContext *s, int len) ff_id3v2_read(s, ID3v2_DEFAULT_MAGIC, &id3v2_extra_meta, len); if (id3v2_extra_meta) { - ff_id3v2_parse_apic(s, &id3v2_extra_meta); - ff_id3v2_parse_chapters(s, &id3v2_extra_meta); + ff_id3v2_parse_apic(s, id3v2_extra_meta); + ff_id3v2_parse_chapters(s, id3v2_extra_meta); } ff_id3v2_free_extra_meta(&id3v2_extra_meta); } diff --git a/libavformat/dsfdec.c b/libavformat/dsfdec.c index 52cddab2c8..c9740cf28f 100644 --- a/libavformat/dsfdec.c +++ b/libavformat/dsfdec.c @@ -56,8 +56,8 @@ static void read_id3(AVFormatContext *s, uint64_t id3pos) ff_id3v2_read(s, ID3v2_DEFAULT_MAGIC, &id3v2_extra_meta, 0); if (id3v2_extra_meta) { - ff_id3v2_parse_apic(s, &id3v2_extra_meta); - ff_id3v2_parse_chapters(s, &id3v2_extra_meta); + ff_id3v2_parse_apic(s, id3v2_extra_meta); + ff_id3v2_parse_chapters(s, id3v2_extra_meta); } ff_id3v2_free_extra_meta(&id3v2_extra_meta); } diff --git a/libavformat/hls.c b/libavformat/hls.c index d9e09013e6..89386ea1b7 100644 --- a/libavformat/hls.c +++ b/libavformat/hls.c @@ -1070,12 +1070,12 @@ static void handle_id3(AVIOContext *pb, struct playlist *pls) /* get picture attachment and set text metadata */ if (pls->ctx->nb_streams) - ff_id3v2_parse_apic(pls->ctx, &extra_meta); + ff_id3v2_parse_apic(pls->ctx, extra_meta); else /* demuxer not yet opened, defer picture attachment */ pls->id3_deferred_extra = extra_meta; - ff_id3v2_parse_priv_dict(&metadata, &extra_meta); + ff_id3v2_parse_priv_dict(&metadata, extra_meta); av_dict_copy(&pls->ctx->metadata, metadata, 0); pls->id3_initial = metadata; @@ -1965,9 +1965,9 @@ static int hls_read_header(AVFormatContext *s) goto fail; if (pls->id3_deferred_extra && pls->ctx->nb_streams == 1) { - ff_id3v2_parse_apic(pls->ctx, &pls->id3_deferred_extra); + ff_id3v2_parse_apic(pls->ctx, pls->id3_deferred_extra); avformat_queue_attached_pictures(pls->ctx); - ff_id3v2_parse_priv(pls->ctx, &pls->id3_deferred_extra); + ff_id3v2_parse_priv(pls->ctx, pls->id3_deferred_extra); ff_id3v2_free_extra_meta(&pls->id3_deferred_extra); pls->id3_deferred_extra = NULL; } diff --git a/libavformat/id3v2.c b/libavformat/id3v2.c index 2ba5c3857d..cecd9b9f6d 100644 --- a/libavformat/id3v2.c +++ b/libavformat/id3v2.c @@ -1127,11 +1127,11 @@ void ff_id3v2_free_extra_meta(ID3v2ExtraMeta **extra_meta) *extra_meta = NULL; } -int ff_id3v2_parse_apic(AVFormatContext *s, ID3v2ExtraMeta **extra_meta) +int ff_id3v2_parse_apic(AVFormatContext *s, ID3v2ExtraMeta *extra_meta) { ID3v2ExtraMeta *cur; - for (cur = *extra_meta; cur; cur = cur->next) { + for (cur = extra_meta; cur; cur = cur->next) { ID3v2ExtraMetaAPIC *apic; AVStream *st; @@ -1167,7 +1167,7 @@ int ff_id3v2_parse_apic(AVFormatContext *s, ID3v2ExtraMeta **extra_meta) return 0; } -int ff_id3v2_parse_chapters(AVFormatContext *s, ID3v2ExtraMeta **extra_meta) +int ff_id3v2_parse_chapters(AVFormatContext *s, ID3v2ExtraMeta *extra_meta) { int ret = 0; ID3v2ExtraMeta *cur; @@ -1178,7 +1178,7 @@ int ff_id3v2_parse_chapters(AVFormatContext *s, ID3v2ExtraMeta **extra_meta) // since extra_meta is a linked list where elements are prepended, // we need to reverse the order of chapters - for (cur = *extra_meta; cur; cur = cur->next) { + for (cur = extra_meta; cur; cur = cur->next) { ID3v2ExtraMetaCHAP *chap; if (strcmp(cur->tag, "CHAP")) @@ -1218,12 +1218,12 @@ end: return ret; } -int ff_id3v2_parse_priv_dict(AVDictionary **metadata, ID3v2ExtraMeta **extra_meta) +int ff_id3v2_parse_priv_dict(AVDictionary **metadata, ID3v2ExtraMeta *extra_meta) { ID3v2ExtraMeta *cur; int dict_flags = AV_DICT_DONT_OVERWRITE | AV_DICT_DONT_STRDUP_KEY | AV_DICT_DONT_STRDUP_VAL; - for (cur = *extra_meta; cur; cur = cur->next) { + for (cur = extra_meta; cur; cur = cur->next) { if (!strcmp(cur->tag, "PRIV")) { ID3v2ExtraMetaPRIV *priv = &cur->data.priv; AVBPrint bprint; @@ -1258,7 +1258,7 @@ int ff_id3v2_parse_priv_dict(AVDictionary **metadata, ID3v2ExtraMeta **extra_met return 0; } -int ff_id3v2_parse_priv(AVFormatContext *s, ID3v2ExtraMeta **extra_meta) +int ff_id3v2_parse_priv(AVFormatContext *s, ID3v2ExtraMeta *extra_meta) { return ff_id3v2_parse_priv_dict(&s->metadata, extra_meta); } diff --git a/libavformat/id3v2.h b/libavformat/id3v2.h index 3e6030c942..a41fb271a4 100644 --- a/libavformat/id3v2.h +++ b/libavformat/id3v2.h @@ -167,25 +167,25 @@ void ff_id3v2_free_extra_meta(ID3v2ExtraMeta **extra_meta); * Create a stream for each APIC (attached picture) extracted from the * ID3v2 header. */ -int ff_id3v2_parse_apic(AVFormatContext *s, ID3v2ExtraMeta **extra_meta); +int ff_id3v2_parse_apic(AVFormatContext *s, ID3v2ExtraMeta *extra_meta); /** * Create chapters for all CHAP tags found in the ID3v2 header. */ -int ff_id3v2_parse_chapters(AVFormatContext *s, ID3v2ExtraMeta **extra_meta); +int ff_id3v2_parse_chapters(AVFormatContext *s, ID3v2ExtraMeta *extra_meta); /** * Parse PRIV tags into a dictionary. The PRIV owner is the metadata key. The * PRIV data is the value, with non-printable characters escaped. */ -int ff_id3v2_parse_priv_dict(AVDictionary **d, ID3v2ExtraMeta **extra_meta); +int ff_id3v2_parse_priv_dict(AVDictionary **d, ID3v2ExtraMeta *extra_meta); /** * Add metadata for all PRIV tags in the ID3v2 header. The PRIV owner is the * metadata key. The PRIV data is the value, with non-printable characters * escaped. */ -int ff_id3v2_parse_priv(AVFormatContext *s, ID3v2ExtraMeta **extra_meta); +int ff_id3v2_parse_priv(AVFormatContext *s, ID3v2ExtraMeta *extra_meta); extern const AVMetadataConv ff_id3v2_34_metadata_conv[]; extern const AVMetadataConv ff_id3v2_4_metadata_conv[]; diff --git a/libavformat/iff.c b/libavformat/iff.c index 9cee31a86b..7feb121cd0 100644 --- a/libavformat/iff.c +++ b/libavformat/iff.c @@ -312,8 +312,8 @@ static int parse_dsd_prop(AVFormatContext *s, AVStream *st, uint64_t eof) id3v2_extra_meta = NULL; ff_id3v2_read(s, ID3v2_DEFAULT_MAGIC, &id3v2_extra_meta, size); if (id3v2_extra_meta) { - if ((ret = ff_id3v2_parse_apic(s, &id3v2_extra_meta)) < 0 || - (ret = ff_id3v2_parse_chapters(s, &id3v2_extra_meta)) < 0) { + if ((ret = ff_id3v2_parse_apic(s, id3v2_extra_meta)) < 0 || + (ret = ff_id3v2_parse_chapters(s, id3v2_extra_meta)) < 0) { ff_id3v2_free_extra_meta(&id3v2_extra_meta); return ret; } diff --git a/libavformat/omadec.c b/libavformat/omadec.c index 79896bdf4f..c6b3f8bc2f 100644 --- a/libavformat/omadec.c +++ b/libavformat/omadec.c @@ -396,7 +396,7 @@ static int oma_read_header(AVFormatContext *s) OMAContext *oc = s->priv_data; ff_id3v2_read(s, ID3v2_EA3_MAGIC, &extra_meta, 0); - if ((ret = ff_id3v2_parse_chapters(s, &extra_meta)) < 0) { + if ((ret = ff_id3v2_parse_chapters(s, extra_meta)) < 0) { ff_id3v2_free_extra_meta(&extra_meta); return ret; } diff --git a/libavformat/utils.c b/libavformat/utils.c index e6158d8058..a48516e4e0 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -638,11 +638,11 @@ FF_ENABLE_DEPRECATION_WARNINGS if (id3v2_extra_meta) { if (!strcmp(s->iformat->name, "mp3") || !strcmp(s->iformat->name, "aac") || !strcmp(s->iformat->name, "tta") || !strcmp(s->iformat->name, "wav")) { - if ((ret = ff_id3v2_parse_apic(s, &id3v2_extra_meta)) < 0) + if ((ret = ff_id3v2_parse_apic(s, id3v2_extra_meta)) < 0) goto close; - if ((ret = ff_id3v2_parse_chapters(s, &id3v2_extra_meta)) < 0) + if ((ret = ff_id3v2_parse_chapters(s, id3v2_extra_meta)) < 0) goto close; - if ((ret = ff_id3v2_parse_priv(s, &id3v2_extra_meta)) < 0) + if ((ret = ff_id3v2_parse_priv(s, id3v2_extra_meta)) < 0) goto close; } else av_log(s, AV_LOG_DEBUG, "demuxer does not support additional id3 data, skipping\n"); diff --git a/libavformat/wavdec.c b/libavformat/wavdec.c index 575c667452..c35966f970 100644 --- a/libavformat/wavdec.c +++ b/libavformat/wavdec.c @@ -507,9 +507,9 @@ static int wav_read_header(AVFormatContext *s) ID3v2ExtraMeta *id3v2_extra_meta = NULL; ff_id3v2_read_dict(pb, &s->internal->id3v2_meta, ID3v2_DEFAULT_MAGIC, &id3v2_extra_meta); if (id3v2_extra_meta) { - ff_id3v2_parse_apic(s, &id3v2_extra_meta); - ff_id3v2_parse_chapters(s, &id3v2_extra_meta); - ff_id3v2_parse_priv(s, &id3v2_extra_meta); + ff_id3v2_parse_apic(s, id3v2_extra_meta); + ff_id3v2_parse_chapters(s, id3v2_extra_meta); + ff_id3v2_parse_priv(s, id3v2_extra_meta); } ff_id3v2_free_extra_meta(&id3v2_extra_meta); } From patchwork Tue May 19 10:46:01 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 19771 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 E1F7644B01F for ; Tue, 19 May 2020 14:10:05 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C956D68AA69; Tue, 19 May 2020 14:10:05 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f65.google.com (mail-wr1-f65.google.com [209.85.221.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1429268A636 for ; Tue, 19 May 2020 14:09:59 +0300 (EEST) Received: by mail-wr1-f65.google.com with SMTP id e1so15429983wrt.5 for ; Tue, 19 May 2020 04:09:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=d13PE0ZOeov0Dm4tecdsVNivVRuGeXcB1hPqxIbFiuc=; b=W4L8k2uweGlpPtQZKxxDfKh5jzsktzMavSWFl7rEdLFdYoh72CwkCU2puDMax1+wwn PRqKrn9KU+N0oEr/NIHifyYq2Scb1JqoAqMHQCLkVhNxvtIN4ALvsfg4kveRcMDesnzf ZanU7dHpAODU485rDTgBB1B/ux2SQQyM4YB6px6Z5FYbBsWCXq897FjG7LmltfpeT7h7 7AHreRNphPmyn1B+BYNZ5kpeoEz0VIXeVAXE5JaY5guZsE/oGDLKdZAVHZxiARIGbG6c md6TO+n2ZffrDcHmbuSjDPO3KJj3U26qJsC6kW29133T0+M5o2MR008K9akIFFoOcGpS zdWA== 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=d13PE0ZOeov0Dm4tecdsVNivVRuGeXcB1hPqxIbFiuc=; b=Py2ljQ/z6Jxey4Fg+k/oJHXex33xM5Aaj4/5pFkkS7DGhLi7Zic2B7R8oRvxg/urSm ctKt/XErTptpyKY2TIioWp+LIjlc8fpNPnPkIF9SqOwcTLSfSJeWZMzz1He6cxOmmHyP QBIbvymICBAyoKR+6BEmorK/pX8rRqVzGSAhmwKtUzjC2cZ4c2dlz+XcfTZo9B7G7iCj 29S6Kv2B+h/X4POH+Xa/A3T+jkUViiabEaSW7YsqKvS8tdhpY7gsEU3OJUcK80kMYm7b 3n93euO/7GIvBJk8tltxz4pD7vbFi7J2UtQbQv3uDB7rbVo40Nie0bY7dPJVQBW7JAA9 BGSQ== X-Gm-Message-State: AOAM532liX0zECNbOmiRwdr1PBxuW9e9QFP6PESSmAHIa6lcmwSX7lzG 5zcjkPdo8+2svf59fHwuPenOsfN/ X-Google-Smtp-Source: ABdhPJyBQHLg3VRdsMjQJSJ8c8a6KWNA08PgdDlIioZwAwuKtGPLOWXluzKOaWqa/aj6qFrGqoFzQA== X-Received: by 2002:adf:f8c1:: with SMTP id f1mr24792695wrq.171.1589886598223; Tue, 19 May 2020 04:09:58 -0700 (PDT) Received: from sblaptop.fritz.box (ipbcc1ab57.dynamic.kabel-deutschland.de. [188.193.171.87]) by smtp.gmail.com with ESMTPSA id m23sm3511998wmg.45.2020.05.19.04.09.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 May 2020 04:09:57 -0700 (PDT) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 19 May 2020 12:46:01 +0200 Message-Id: <20200519104601.12817-5-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200519104601.12817-1-andreas.rheinhardt@gmail.com> References: <20200519104601.12817-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 5/5] avformat/hls: Remove redundant resetting of pointer 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" ff_id3v2_free_extra_meta() takes a ID3V2ExtraMeta ** so that it can already reset the pointer. Signed-off-by: Andreas Rheinhardt --- libavformat/hls.c | 1 - 1 file changed, 1 deletion(-) diff --git a/libavformat/hls.c b/libavformat/hls.c index 89386ea1b7..3e35d157ad 100644 --- a/libavformat/hls.c +++ b/libavformat/hls.c @@ -1969,7 +1969,6 @@ static int hls_read_header(AVFormatContext *s) avformat_queue_attached_pictures(pls->ctx); ff_id3v2_parse_priv(pls->ctx, pls->id3_deferred_extra); ff_id3v2_free_extra_meta(&pls->id3_deferred_extra); - pls->id3_deferred_extra = NULL; } if (pls->is_id3_timestamped == -1)