From patchwork Sat Mar 2 19:50:54 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 46708 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a919:b0:19e:cdac:8cce with SMTP id cd25csp2009083pzb; Sat, 2 Mar 2024 11:49:19 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCX0+pbMRpGHNAPOD5JZxDO6e34XMbo9MHy+NrgbzSuRHP+2zY71ObnRbQu8bnmMGeeHdYTcxw0nOtKsduC76zq5f3Hsuba3XCpCCw== X-Google-Smtp-Source: AGHT+IGTACCbaYqju1Thar9v+qTjxTRyh2G/SbI/JLOjmET60mf+C9S2arSs3YXcu+JQXLWr86Qd X-Received: by 2002:a2e:8906:0:b0:2d2:af88:894a with SMTP id d6-20020a2e8906000000b002d2af88894amr3205677lji.1.1709408959307; Sat, 02 Mar 2024 11:49:19 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id r16-20020aa7cb90000000b00563f6984908si2608608edt.517.2024.03.02.11.49.18; Sat, 02 Mar 2024 11:49:19 -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=@outlook.com header.s=selector1 header.b="khNptu/y"; arc=fail (body hash mismatch); 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=QUARANTINE dis=NONE) header.from=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6580968D2FD; Sat, 2 Mar 2024 21:49:15 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01olkn2037.outbound.protection.outlook.com [40.92.65.37]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9DD2068D2E3 for ; Sat, 2 Mar 2024 21:49:08 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZZ1NGF+U/k0PVvUJDsajLuUsxLKbYPVQ7gKcE24FNZ08ihOQaEZaQmje3MKu4g9Sakm8qIIc6IPyCgmKxi+kQjq6U1EO4MNYu+jdlOFNhM+EjQcwtsV9+d6RPhx++xKZIPclop57G9P2szp7Ktx9s5oIeCyG0ED4hUSBfuj5Vk72hTL4yodbuXs58tt+eIe3sGFhhBoXRIw9YOrJVgywHdaUbfWG9+Iz8rmF7/KEkEchhoHA4+eLyZheenqHrInsY2h1pA6Po3/Ava8si0NN0RYKP1ppmtwfUyj/f3RqtXYTS6in3+UXOKLWnzTvrwMjLlSb5d3Dafubf3iE79SJsg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=5S0WbxhJCYjTYjvcgshcHJg+599jPneVxe63BsfB4G0=; b=JC4bBlas2U/cjoBC9s9nr6XWh4jGUYx7iHgRDZYZ5E3Fx85fkS+fM1/vFytzAiH+ezLoTfH+K1Bh98CcZEjQxS6nNqKXHj7Q5RI6TJTnW1okm/4XqJ5z6G67wQ5rN3/xdXY7j8knZopVAWPLUESwN6OofWvLVxydELliGJf52MDbZg0LUltIMKkG9yfwHgUYoDELfShM/lUDUXbJcggr9pgiaFkXC2P5CRC9RFvX9ZJLgZ6RLup3X/caovcVsU8cEGtU1zt7K9z1XOHim6K9VdJyn9M7zCW2/WArEHCBLH4EK0g3d35QS5NTDPjtiSzYEzv37si1dazawAbsdEEOrg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=5S0WbxhJCYjTYjvcgshcHJg+599jPneVxe63BsfB4G0=; b=khNptu/y1oWBOQB6k0kPs851akZg4Llqr510t4LoHNt92PatGL4V1zWGTPvH3/lBIv2m9pwRuRApvvIkG5aBDo/9Ahw11VfMdpqIgIMX2QLtexM5jKJHe+feC/s7XeJGOoY67rb0wTN1d2/nXp2wxpAH5162qSf7p8xgFiz/4R/SSIZD/7FlXz6q7+6K7cM56aSTWL4qdbyGFPS+44gbIHASMEM8NPn2CoXJ4MbPqZsc0z/xyvJPBRikmM/a3yMh1PW1HGKDBw+mQSOPRbZdy0ECwV45QfSMYpNZcBZtC0PjQ+5oK4qBEYlaANvtM29NU8e5o1CE/yy8+9cx8AFvug== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by DU2P250MB0045.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:2b6::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7339.32; Sat, 2 Mar 2024 19:49:04 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::65aa:deb0:a18e:d48d]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::65aa:deb0:a18e:d48d%5]) with mapi id 15.20.7316.023; Sat, 2 Mar 2024 19:49:04 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 2 Mar 2024 20:50:54 +0100 Message-ID: X-Mailer: git-send-email 2.40.1 X-TMN: [UKY9FpJaokn6gYhXHCmpn/96pFnP7AqRn4DzuajxTDU=] X-ClientProxiedBy: FR2P281CA0165.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:99::7) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20240302195057.48229-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|DU2P250MB0045:EE_ X-MS-Office365-Filtering-Correlation-Id: ea82639b-3a45-408c-05a7-08dc3af1d09a X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: DNqEH3p2ZYqiSebysoeXALxvduvmY59fBVMq+iYKaYj8Bg1y0XfT2JI4AG6hI9o2tXMuC105xyzlQHuyNPHg5yCLQ0D4JR1vRwzRre8oVeRmoHHH+fikNpml1h/1IJmIkXRc5EBgknUcNSgWKgeRRO30h9/i07pBE8wbbmyVhGIVe4WMcWZs506/5nTkCVbueWaKutbAuYuNUfqW6Td7fKwD9hTIDKLTe8vA9mX9hCHpaHO3uuE+ZLsn4EyIvHaklNPCmpBu+XIwvdkiIKa8KBJtQ0opUxHe/6Ay9ScPI99FN8U7lzHjHTvC1wgZVzaB2thf9OoDv3pvrw8rNjv3HUOndXkWTI+XiMX11z7dO+ZC0GXw0rDl37LaXybTWNFqRe/j5RfTIOPmmhLZgZGJQHkABf2f6E9GeSFQ29NjL6AVAafk1wqvV67X8agZnWUoLRRuG/Uribs/ttRgMgDVHq4w3fXL+tTBanVM6efWOGAeeaF4sv8q8fpgWg8rAnmwWUWJ1IcNt5hcp4PHYmqxzZ7GF4VgTm1RRDQxLc2F1rLR7S0uX6n/Jfr/c/Pi5zLmKut5elgtz0tfAVD/K3aqH9CE/4yRNfmXuMZEZtjzfOw= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Wskp0we6khPa5IzpHWnBD99zrKbPGqODnCD8IMm0zrBXng9YF9x9eRHG/SaGJYbAbmg5fxNwu/v/SsKXzlrMf7RkSUE+MZgYdJOCv4Mv2h26ABFE57nshm3ZvjVKxkiXWC8qj4n+Tb9FYMUYIcEMvcy1XAImhPmZW2gWPyarHsfH8yzg0jSnVGYupRJAL1E8GgZM8/3tknmcJf1KE+M9+OAwg+dcGsMSEkQgw+BsoKezqTRaaUBviZ2JAsVb7qAGCvoZ7uSG69cad4kByIrsHnWAKWx6xLp/CZD2myeoJd3pFZ3oxKnyUWEYOJqXy0PQPvevsZ1yo3m7jrwE+nrWFYv/indKo7YC/7rsdNmT3VbEw08WqL7W5jzQfrV5ZHarKWhTwCUGNIpL6fkMFjq/+fLDwrjteJJYRcWckj5u6RG2cbBNGeV2TfzST35KDbfjQKvwaKujpnRgbS85+uFrr6KKHHC73cdgINWGzNzXamVXCTGlQNhgHRu1rlwKiO8H87TKeFABmkc4s+stuOwwIRBRerl60NhodYJMsm4MJhu04Vxfmzoynmr7uShynbLDW3d6jyFdiZyt5aETchvjSa7WmEFfBlHAoNb4gLXBXCNTDXISiY7nqSuAyiERIW0OhBZJi8rnlyUCtTLjwhDePvOVrgpWsCLb7k0U1DGv2Bt+Mzm25GlfDkox29uq4INa69R8Y5EA3XIjIVPmbsIQPZi5uas9R5EdKWFX2/mp4f2gu7aWxKOySzfRK/b/AOazz8yX0b7m4y2qx8y0zE/9NJfczHoBximaRWiuaBBT1OIhWYmVx93iHZjWx2z45iVyOpqOHwSRKW71P6inN6LIAOXRrY3u3s2rL3b2Avtw+9QGgKkPgwegYCAcIol1wQ33BWPjfYtbtKVLGMzehQJgJ2PYnhTPj3J45YqF8J5DkfpXCdW9qGwFLgjdWkImdr60rsMgRFSCaReFhcgMiGdc3f1FZBghGr+P/jxHAeTVr26zMh8+3KMZBEaFIF38My2GS70/uwNsiWIr5wUq25huGPdxk8GwGx/45N86I5VlOBYVAE4AmaWnXZQBfyWsfR5ZgATsJgB6jhlC+E7Vnq7neoyRlHw0hd70seeqkaB1cN3HteFosV+iEYgqDF51JHGkf3IS+KoL2NDuuS6M/0EAewQOZM7XLvfJ0npzZGaI6z/8H885ZAgZjsauRtPEsLDX2i53kLfP28VSUBR3l1Q3TfPuFoE90NgZU2L2LnU3VbbPCN28DILg1790GloglZUjWPlHyw//cybykcl3UwT1vA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ea82639b-3a45-408c-05a7-08dc3af1d09a X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Mar 2024 19:49:04.2817 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2P250MB0045 Subject: [FFmpeg-devel] [PATCH 1/4] avformat/aviobuf: Move code specific to URLContexts to avio.c X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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" X-TUID: iSwOb4pAj4VH This separates the URL-layer adjacent parts of the code from the parts that are also usable with custom IO. Signed-off-by: Andreas Rheinhardt --- libavformat/avio.c | 191 +++++++++++++++++++++++++++++++++++++++++- libavformat/aviobuf.c | 186 ---------------------------------------- libavformat/url.h | 2 - 3 files changed, 189 insertions(+), 190 deletions(-) diff --git a/libavformat/avio.c b/libavformat/avio.c index b793a7546c..794ebd4bd8 100644 --- a/libavformat/avio.c +++ b/libavformat/avio.c @@ -24,6 +24,7 @@ #include "libavutil/opt.h" #include "libavutil/time.h" #include "libavutil/avassert.h" +#include "avio_internal.h" #include "os_support.h" #include "internal.h" #if CONFIG_NETWORK @@ -31,6 +32,8 @@ #endif #include "url.h" +#define IO_BUFFER_SIZE 32768 + /** @name Logging context. */ /*@{*/ static const char *urlcontext_to_name(void *ptr) @@ -60,7 +63,7 @@ static const AVOption options[] = { { NULL } }; -const AVClass ffurl_context_class = { +static const AVClass url_context_class = { .class_name = "URLContext", .item_name = urlcontext_to_name, .option = options, @@ -70,6 +73,47 @@ const AVClass ffurl_context_class = { }; /*@}*/ +static void *avio_child_next(void *obj, void *prev) +{ + AVIOContext *s = obj; + return prev ? NULL : s->opaque; +} + +static const AVClass *child_class_iterate(void **iter) +{ + const AVClass *c = *iter ? NULL : &url_context_class; + *iter = (void*)(uintptr_t)c; + return c; +} + +#define AVIOOFFSET(x) offsetof(AVIOContext,x) +#define E AV_OPT_FLAG_ENCODING_PARAM +#define D AV_OPT_FLAG_DECODING_PARAM +static const AVOption avio_options[] = { + {"protocol_whitelist", "List of protocols that are allowed to be used", AVIOOFFSET(protocol_whitelist), AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, D }, + { NULL }, +}; + +const AVClass ff_avio_class = { + .class_name = "AVIOContext", + .item_name = av_default_item_name, + .version = LIBAVUTIL_VERSION_INT, + .option = avio_options, + .child_next = avio_child_next, + .child_class_iterate = child_class_iterate, +}; + +URLContext *ffio_geturlcontext(AVIOContext *s) +{ + if (!s) + return NULL; + + if (s->opaque && s->read_packet == ffurl_read2) + return s->opaque; + else + return NULL; +} + static int url_alloc_for_protocol(URLContext **puc, const URLProtocol *up, const char *filename, int flags, const AVIOInterruptCB *int_cb) @@ -96,7 +140,7 @@ static int url_alloc_for_protocol(URLContext **puc, const URLProtocol *up, err = AVERROR(ENOMEM); goto fail; } - uc->av_class = &ffurl_context_class; + uc->av_class = &url_context_class; uc->filename = (char *)&uc[1]; strcpy(uc->filename, filename); uc->prot = up; @@ -225,6 +269,17 @@ int ffurl_accept(URLContext *s, URLContext **c) return AVERROR(EBADF); } +int avio_accept(AVIOContext *s, AVIOContext **c) +{ + int ret; + URLContext *sc = s->opaque; + URLContext *cc = NULL; + ret = ffurl_accept(sc, &cc); + if (ret < 0) + return ret; + return ffio_fdopen(c, cc); +} + int ffurl_handshake(URLContext *c) { int ret; @@ -237,6 +292,12 @@ int ffurl_handshake(URLContext *c) return 0; } +int avio_handshake(AVIOContext *c) +{ + URLContext *cc = c->opaque; + return ffurl_handshake(cc); +} + #define URL_SCHEME_CHARS \ "abcdefghijklmnopqrstuvwxyz" \ "ABCDEFGHIJKLMNOPQRSTUVWXYZ" \ @@ -347,6 +408,92 @@ fail: return ret; } +int ffio_fdopen(AVIOContext **s, URLContext *h) +{ + uint8_t *buffer = NULL; + int buffer_size, max_packet_size; + + max_packet_size = h->max_packet_size; + if (max_packet_size) { + buffer_size = max_packet_size; /* no need to bufferize more than one packet */ + } else { + buffer_size = IO_BUFFER_SIZE; + } + if (!(h->flags & AVIO_FLAG_WRITE) && h->is_streamed) { + if (buffer_size > INT_MAX/2) + return AVERROR(EINVAL); + buffer_size *= 2; + } + buffer = av_malloc(buffer_size); + if (!buffer) + return AVERROR(ENOMEM); + + *s = avio_alloc_context(buffer, buffer_size, h->flags & AVIO_FLAG_WRITE, h, + ffurl_read2, ffurl_write2, ffurl_seek2); + if (!*s) { + av_freep(&buffer); + return AVERROR(ENOMEM); + } + (*s)->protocol_whitelist = av_strdup(h->protocol_whitelist); + if (!(*s)->protocol_whitelist && h->protocol_whitelist) { + avio_closep(s); + return AVERROR(ENOMEM); + } + (*s)->protocol_blacklist = av_strdup(h->protocol_blacklist); + if (!(*s)->protocol_blacklist && h->protocol_blacklist) { + avio_closep(s); + return AVERROR(ENOMEM); + } + (*s)->direct = h->flags & AVIO_FLAG_DIRECT; + + (*s)->seekable = h->is_streamed ? 0 : AVIO_SEEKABLE_NORMAL; + (*s)->max_packet_size = max_packet_size; + (*s)->min_packet_size = h->min_packet_size; + if(h->prot) { + (*s)->read_pause = (int (*)(void *, int))h->prot->url_read_pause; + (*s)->read_seek = + (int64_t (*)(void *, int, int64_t, int))h->prot->url_read_seek; + + if (h->prot->url_read_seek) + (*s)->seekable |= AVIO_SEEKABLE_TIME; + } + ((FFIOContext*)(*s))->short_seek_get = ffurl_get_short_seek; + (*s)->av_class = &ff_avio_class; + return 0; +} + +int ffio_open_whitelist(AVIOContext **s, const char *filename, int flags, + const AVIOInterruptCB *int_cb, AVDictionary **options, + const char *whitelist, const char *blacklist) +{ + URLContext *h; + int err; + + *s = NULL; + + err = ffurl_open_whitelist(&h, filename, flags, int_cb, options, whitelist, blacklist, NULL); + if (err < 0) + return err; + err = ffio_fdopen(s, h); + if (err < 0) { + ffurl_close(h); + return err; + } + return 0; +} + +int avio_open2(AVIOContext **s, const char *filename, int flags, + const AVIOInterruptCB *int_cb, AVDictionary **options) +{ + return ffio_open_whitelist(s, filename, flags, int_cb, options, NULL, NULL); +} + +int avio_open(AVIOContext **s, const char *filename, int flags) +{ + return avio_open2(s, filename, flags, NULL, NULL); +} + + static inline int retry_transfer_wrapper(URLContext *h, uint8_t *buf, const uint8_t *cbuf, int size, int size_min, @@ -464,6 +611,46 @@ int ffurl_close(URLContext *h) return ffurl_closep(&h); } +int avio_close(AVIOContext *s) +{ + FFIOContext *const ctx = ffiocontext(s); + URLContext *h; + int ret, error; + + if (!s) + return 0; + + avio_flush(s); + h = s->opaque; + s->opaque = NULL; + + av_freep(&s->buffer); + if (s->write_flag) + av_log(s, AV_LOG_VERBOSE, + "Statistics: %"PRId64" bytes written, %d seeks, %d writeouts\n", + ctx->bytes_written, ctx->seek_count, ctx->writeout_count); + else + av_log(s, AV_LOG_VERBOSE, "Statistics: %"PRId64" bytes read, %d seeks\n", + ctx->bytes_read, ctx->seek_count); + av_opt_free(s); + + error = s->error; + avio_context_free(&s); + + ret = ffurl_close(h); + if (ret < 0) + return ret; + + return error; +} + +int avio_closep(AVIOContext **s) +{ + int ret = avio_close(*s); + *s = NULL; + return ret; +} + const char *avio_find_protocol_name(const char *url) { diff --git a/libavformat/aviobuf.c b/libavformat/aviobuf.c index d80b8527bb..8dfed22622 100644 --- a/libavformat/aviobuf.c +++ b/libavformat/aviobuf.c @@ -22,7 +22,6 @@ #include "libavutil/bprint.h" #include "libavutil/crc.h" #include "libavutil/dict.h" -#include "libavutil/internal.h" #include "libavutil/intreadwrite.h" #include "libavutil/log.h" #include "libavutil/opt.h" @@ -31,7 +30,6 @@ #include "avio.h" #include "avio_internal.h" #include "internal.h" -#include "url.h" #include #define IO_BUFFER_SIZE 32768 @@ -43,36 +41,6 @@ */ #define SHORT_SEEK_THRESHOLD 32768 -static void *ff_avio_child_next(void *obj, void *prev) -{ - AVIOContext *s = obj; - return prev ? NULL : s->opaque; -} - -static const AVClass *child_class_iterate(void **iter) -{ - const AVClass *c = *iter ? NULL : &ffurl_context_class; - *iter = (void*)(uintptr_t)c; - return c; -} - -#define OFFSET(x) offsetof(AVIOContext,x) -#define E AV_OPT_FLAG_ENCODING_PARAM -#define D AV_OPT_FLAG_DECODING_PARAM -static const AVOption ff_avio_options[] = { - {"protocol_whitelist", "List of protocols that are allowed to be used", OFFSET(protocol_whitelist), AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, D }, - { NULL }, -}; - -const AVClass ff_avio_class = { - .class_name = "AVIOContext", - .item_name = av_default_item_name, - .version = LIBAVUTIL_VERSION_INT, - .option = ff_avio_options, - .child_next = ff_avio_child_next, - .child_class_iterate = child_class_iterate, -}; - static void fill_buffer(AVIOContext *s); static int url_resetbuf(AVIOContext *s, int flags); /** @warning must be called before any I/O */ @@ -1035,71 +1003,6 @@ void ffio_write_lines(AVIOContext *s, const unsigned char *buf, int size, } } -int ffio_fdopen(AVIOContext **s, URLContext *h) -{ - uint8_t *buffer = NULL; - int buffer_size, max_packet_size; - - max_packet_size = h->max_packet_size; - if (max_packet_size) { - buffer_size = max_packet_size; /* no need to bufferize more than one packet */ - } else { - buffer_size = IO_BUFFER_SIZE; - } - if (!(h->flags & AVIO_FLAG_WRITE) && h->is_streamed) { - if (buffer_size > INT_MAX/2) - return AVERROR(EINVAL); - buffer_size *= 2; - } - buffer = av_malloc(buffer_size); - if (!buffer) - return AVERROR(ENOMEM); - - *s = avio_alloc_context(buffer, buffer_size, h->flags & AVIO_FLAG_WRITE, h, - ffurl_read2, ffurl_write2, ffurl_seek2); - if (!*s) { - av_freep(&buffer); - return AVERROR(ENOMEM); - } - (*s)->protocol_whitelist = av_strdup(h->protocol_whitelist); - if (!(*s)->protocol_whitelist && h->protocol_whitelist) { - avio_closep(s); - return AVERROR(ENOMEM); - } - (*s)->protocol_blacklist = av_strdup(h->protocol_blacklist); - if (!(*s)->protocol_blacklist && h->protocol_blacklist) { - avio_closep(s); - return AVERROR(ENOMEM); - } - (*s)->direct = h->flags & AVIO_FLAG_DIRECT; - - (*s)->seekable = h->is_streamed ? 0 : AVIO_SEEKABLE_NORMAL; - (*s)->max_packet_size = max_packet_size; - (*s)->min_packet_size = h->min_packet_size; - if(h->prot) { - (*s)->read_pause = (int (*)(void *, int))h->prot->url_read_pause; - (*s)->read_seek = - (int64_t (*)(void *, int, int64_t, int))h->prot->url_read_seek; - - if (h->prot->url_read_seek) - (*s)->seekable |= AVIO_SEEKABLE_TIME; - } - ((FFIOContext*)(*s))->short_seek_get = ffurl_get_short_seek; - (*s)->av_class = &ff_avio_class; - return 0; -} - -URLContext* ffio_geturlcontext(AVIOContext *s) -{ - if (!s) - return NULL; - - if (s->opaque && s->read_packet == ffurl_read2) - return s->opaque; - else - return NULL; -} - int ffio_copy_url_options(AVIOContext* pb, AVDictionary** avio_opts) { const char *opts[] = { @@ -1300,78 +1203,6 @@ int ffio_rewind_with_probe_data(AVIOContext *s, unsigned char **bufp, int buf_si return 0; } -int avio_open(AVIOContext **s, const char *filename, int flags) -{ - return avio_open2(s, filename, flags, NULL, NULL); -} - -int ffio_open_whitelist(AVIOContext **s, const char *filename, int flags, - const AVIOInterruptCB *int_cb, AVDictionary **options, - const char *whitelist, const char *blacklist - ) -{ - URLContext *h; - int err; - - *s = NULL; - - err = ffurl_open_whitelist(&h, filename, flags, int_cb, options, whitelist, blacklist, NULL); - if (err < 0) - return err; - err = ffio_fdopen(s, h); - if (err < 0) { - ffurl_close(h); - return err; - } - return 0; -} - -int avio_open2(AVIOContext **s, const char *filename, int flags, - const AVIOInterruptCB *int_cb, AVDictionary **options) -{ - return ffio_open_whitelist(s, filename, flags, int_cb, options, NULL, NULL); -} - -int avio_close(AVIOContext *s) -{ - FFIOContext *const ctx = ffiocontext(s); - URLContext *h; - int ret, error; - - if (!s) - return 0; - - avio_flush(s); - h = s->opaque; - s->opaque = NULL; - - av_freep(&s->buffer); - if (s->write_flag) - av_log(s, AV_LOG_VERBOSE, - "Statistics: %"PRId64" bytes written, %d seeks, %d writeouts\n", - ctx->bytes_written, ctx->seek_count, ctx->writeout_count); - else - av_log(s, AV_LOG_VERBOSE, "Statistics: %"PRId64" bytes read, %d seeks\n", - ctx->bytes_read, ctx->seek_count); - av_opt_free(s); - - error = s->error; - avio_context_free(&s); - - ret = ffurl_close(h); - if (ret < 0) - return ret; - - return error; -} - -int avio_closep(AVIOContext **s) -{ - int ret = avio_close(*s); - *s = NULL; - return ret; -} - int avio_vprintf(AVIOContext *s, const char *fmt, va_list ap) { AVBPrint bp; @@ -1450,23 +1281,6 @@ int avio_read_to_bprint(AVIOContext *h, AVBPrint *pb, size_t max_size) return 0; } -int avio_accept(AVIOContext *s, AVIOContext **c) -{ - int ret; - URLContext *sc = s->opaque; - URLContext *cc = NULL; - ret = ffurl_accept(sc, &cc); - if (ret < 0) - return ret; - return ffio_fdopen(c, cc); -} - -int avio_handshake(AVIOContext *c) -{ - URLContext *cc = c->opaque; - return ffurl_handshake(cc); -} - /* output in a dynamic buffer */ typedef struct DynBuffer { diff --git a/libavformat/url.h b/libavformat/url.h index 59d9f1b870..4f3bfb6d57 100644 --- a/libavformat/url.h +++ b/libavformat/url.h @@ -32,8 +32,6 @@ #define URL_PROTOCOL_FLAG_NESTED_SCHEME 1 /*< The protocol name can be the first part of a nested protocol scheme */ #define URL_PROTOCOL_FLAG_NETWORK 2 /*< The protocol uses network */ -extern const AVClass ffurl_context_class; - typedef struct URLContext { const AVClass *av_class; /**< information for av_log(). Set by url_open(). */ const struct URLProtocol *prot; From patchwork Sat Mar 2 19:51:57 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 46709 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a919:b0:19e:cdac:8cce with SMTP id cd25csp2009375pzb; Sat, 2 Mar 2024 11:50:19 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCVbHKfk8gbJl7Px/tZRuVznLxSvY/cKGzLoIJNQOeJt2ckv48HgQBgBnoEvVhfDkyoDSmyYRlpIt14f5UdpzhhZk5v4y2dpSqGuMQ== X-Google-Smtp-Source: AGHT+IHAdD03pcHetXtb5h5LBzoie+RpySpk4yal+iVfMgk2uTnlQOafsGZ/dYq8iLifB8zUizYI X-Received: by 2002:a17:906:409:b0:a44:bf81:6faa with SMTP id d9-20020a170906040900b00a44bf816faamr2486837eja.7.1709409019355; Sat, 02 Mar 2024 11:50:19 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id m8-20020a17090607c800b00a445a821510si2169514ejc.1020.2024.03.02.11.50.18; Sat, 02 Mar 2024 11:50:19 -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=@outlook.com header.s=selector1 header.b=TlBOrdwU; arc=fail (body hash mismatch); 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=QUARANTINE dis=NONE) header.from=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id AF3D968CFCE; Sat, 2 Mar 2024 21:50:16 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01olkn2072.outbound.protection.outlook.com [40.92.65.72]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A11CB68C959 for ; Sat, 2 Mar 2024 21:50:09 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XGxHOdP9716YPUU37HUJ0zKkMACNDHBtq+yycpQ6qUalKyArlvZgy3uoXYrNphYcAEwcFe7H4BKiyNBJtQAhHptZ0yBae095pCdUwlT70WBHlxWzguL1DAwmmUxxMoFuQ8YzVij2/dMUW6PaifQmIrpIlnfgKD2z37nCB1jeQv0Qm+MLIAubA+eEQ+v0+czVCtcOHE+h56w5IiIdpZUSQ6uhkitl9FeXfYo2gymq36QZk41jlP8+XR3KEjiD07ESQjHQGQqBqmZdJc9am4/gy1fw6FkJvkAjh6A4AgGPBJI+AXotBoZBJsGKVhbhlRC6TN94txjAKV+e8u4qNuh2uw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=KTCgx2DpoXM6sCvNVI8sxKN0qJmZrZVK8sLWtY1igb0=; b=K2tlUpndiCLGNPU+5J6c43Y47RISTpl5xdqwNg7wgcu+Dc29+HE9aNNYg7Z83MUl2c1vGOHnMDIDIG9QI0EGDi1jR5Db0F1EAIA/q7L+WDOP2W+Wx7n2hFNk9NG1NlLG9VssDdM2GScT/cVQSgZ44/8Onzvbnpc4/QaUdWupwCe9B8Ae/8h9pz5QQUi3wmN69gu3dVHvK4WjzOmKx1T8sUvOpA7yI3shNoU7cvkgJkwS6KVdk6n6+nNCS8mAeCnYyTT/sdQrMyylBIW4wohs/vEkFpuOa9Ddrj3kjmM1qRS52QtxX1s1JAqbcQPvVBqw5n3Ah+pZockUtYzHfEg/RQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KTCgx2DpoXM6sCvNVI8sxKN0qJmZrZVK8sLWtY1igb0=; b=TlBOrdwUv3TKsvRP0CcRSd8ifXnXyLWN82VKvX+ETNxlNqHaKrOmianHcfbIkw7ZmsYrHqjZwnVM4qp8ywoJETsg2y2oO/OeV28Ptpp+IPPvPpR/ONRuJH8no6QaUzXN8qhdywmQHloZJWrTgv16z2DCf2bstli3GFWw7FK86nc4DiLH+z4XV/lI1j6JkvAnjHjXNXGWGanyjJkyVR62fL0di85Bqpl+et8FFqNOKziK7mhBRrEfJLq7jL7Geapc6PKruxTBr6DIMc17rUGS29lQ5W62RPEWP5k1S3kYhJXnzgvFq/nG7gFP8dyGL414fX7nRsEtKanoZDsrji7adg== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by DU2P250MB0045.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:2b6::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7339.32; Sat, 2 Mar 2024 19:50:07 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::65aa:deb0:a18e:d48d]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::65aa:deb0:a18e:d48d%5]) with mapi id 15.20.7316.023; Sat, 2 Mar 2024 19:50:07 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 2 Mar 2024 20:51:57 +0100 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [1XG3Gz20e6xgTf96tSIbaikvz4hnDfhbvYH63tpE4Ho=] X-ClientProxiedBy: FR4P281CA0079.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:cd::9) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20240302195159.70943-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|DU2P250MB0045:EE_ X-MS-Office365-Filtering-Correlation-Id: ad55fdfc-6d97-48a0-fa71-08dc3af1f662 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: BTPW8wyNdKS7tOPIu47vzIX7g/Gc+rRT9HBnVKBqP77dp+A7SL788ATuimrlxu/RIek7gKZGplKVY/h1sgRugo5eYTa6rM8xquwjBxTy4wf9zWIus1IFBel34haG0CI+n5MBewy72/P5eMvV4aIL/1/Hb6npq++212kQRq0CMDMD6fnUPAPzSoU3lo+wBxMQ1WdL/eQJN2NZdlRtvzxTbnxecLRaVW4sqyTosSBO31Cu7dM04qGB7/NKKYlKPCc0dHZovXKl9Dni0uEPXamJe2eOPgH9b9eHvP3IczUDjPjnvX2hp/imJr5XSVOSgHSUARdO3owueneU4eTCtJyvmN3ydZjN+bLVew00/ZNFirbrD832rKi7QnGWmUpn9AkEhe5VxuOCQTTb5CTm+WkMmfVEa3401JeQ2OPuORIDWqN3yJNRlvz9u0yB4a9P5pYF7MfUyCHule8wFVTEK2iQDqnb2+BHX3mWQftHfdtAq5EM6j7V9LL0QdqPTTqMm3520eRTNTmbHVa/iTv9vF56qpbEFsMR+2ojffN20WEff2DnolNOpGcjai9qrifsdwqUJCgMkaBWQQEFtAe1x69aVq1R23BVuPApvFLCTNfYRL+dvO53oAqDMf1G0r8kVzsH X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: E5cfWwSLGf07PSHwbPc9wfKlmactplbM11jN0tKb5vTLito5gQzzYDTHFojdOBOjPgGmMVc8QB0XHpTE5TzEiGu+XTqi/p4MiG2jcmAn7LVYPvdrEJIIYyIRkwJo+miUvOk/x5qZJribwZT1oSHEMasdpoBdEnmWaJomr4FzfuhYQWGRjypo3Mf2w1wIjdQ37D+fmczAgvrWTz/KfVQ5HuA09XBTdkjED89RCRwAV8tXs4oDVSjuVtcZlxJU9h5/sXz6rYaK64Z1Z6CPx1MPywOKpRGR3RDP0IF0aHwU2Vg9omNTMGmpR47mv3AFAKHxdsU3uPnW9vSAg/8FSBvqlAu0QV4wD6WKsHBLwKk5prOlQ9KH7gyv/RsLGUfjYl9HZJq6vy874CcDfg/5FqfDmMI0iaCQw/wo0xw4nUaCpbkhYoVtoLOPy+NSogGFMngp2IBq9DM6I0sccYVQ6KdwpK6v3x7Vo4/j1b6VHY8BwE7352WHS6o7i7wd/lZ70FRhB6MANZL3kuUQLQabOvakcn73VjaVVR5dE4FQMaU+lyfIsOEcTt/WkE3owRcBaQEr9LExbSRi32ZU1gAIcXeXAht2i/xtddmJFw6R77W3pDVzX98G/GAAgIZsr7/JtGTrlbvcjf+5wJiVOzkgOTEu6JQpiQD7+xP5U4APLIfwAec8hHmTDUtSnoGXolXCX//uz21NOBvypsSW0tMpYGpqHH7YnJnKfZunP9ZzT2XvIBNGH9GOnHFqX8MLAJr9pHVjE62ws+NI1Cx6Qfz4+ZhdGkagPhV75zwrkluuAaG2MN7wDTHD313xd0uC4W9PYNA+oJ0ibC1mJqS6E/FlSoCFh0RCh6fCYD2aPQMs14DMrGaEuWkaWTsdLxsk07I8YmVaXHbSTbxZ52WINi+tZK/NO+SleAJXvG7EQYozu9xqTck3YoMG0ENcGlcaMsfPUyVtUhvnOzdCSuLEfVVWWRpaFjGeWhEHcXVhFdJbZDEepYnQ6F2HQudJz64JNt1HHskjheeAH80kixoIPp7oA71I5r0VaPniooIAV5fHBQjMd9tYJOFkFR6qDnoq2NthYjRxDrzgMgjRliFSjf7bdQ+JazQcQZ1XrUQOPWMHFcKQenh71DnTRrdRFUEe4hct0NJoAt3YHvMBHhYOQyy3kSB0V7PK8YWvDe34DNeRaqbr3Zz8pVs+ktCHMe+re5kSQAvPkIyqjP0UZfraQac/TPMCMvhJ5xHdlnGyaNDCiXpT9MTGrwYmhTcsHD0BdW8qCNpPvWoSDSDpLfUImm3WIcVNcA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ad55fdfc-6d97-48a0-fa71-08dc3af1f662 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Mar 2024 19:50:07.6497 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2P250MB0045 Subject: [FFmpeg-devel] [PATCH 2/4] avformat/avio: Avoid function pointer casts X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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" X-TUID: cYHQINTifZJP It is undefined behaviour to use a different type for a call than the actual type of the function. Signed-off-by: Andreas Rheinhardt --- libavformat/avio.c | 5 ++--- libavformat/librtmp.c | 6 ++++-- libavformat/mmsh.c | 3 ++- libavformat/rtmpproto.c | 6 ++++-- libavformat/url.h | 4 ++-- 5 files changed, 14 insertions(+), 10 deletions(-) diff --git a/libavformat/avio.c b/libavformat/avio.c index 794ebd4bd8..1622a03d7f 100644 --- a/libavformat/avio.c +++ b/libavformat/avio.c @@ -450,9 +450,8 @@ int ffio_fdopen(AVIOContext **s, URLContext *h) (*s)->max_packet_size = max_packet_size; (*s)->min_packet_size = h->min_packet_size; if(h->prot) { - (*s)->read_pause = (int (*)(void *, int))h->prot->url_read_pause; - (*s)->read_seek = - (int64_t (*)(void *, int, int64_t, int))h->prot->url_read_seek; + (*s)->read_pause = h->prot->url_read_pause; + (*s)->read_seek = h->prot->url_read_seek; if (h->prot->url_read_seek) (*s)->seekable |= AVIO_SEEKABLE_TIME; diff --git a/libavformat/librtmp.c b/libavformat/librtmp.c index 5fa788fac8..bdd82ce15f 100644 --- a/libavformat/librtmp.c +++ b/libavformat/librtmp.c @@ -220,8 +220,9 @@ static int rtmp_read(URLContext *s, uint8_t *buf, int size) return ret; } -static int rtmp_read_pause(URLContext *s, int pause) +static int rtmp_read_pause(void *opaque, int pause) { + URLContext *s = opaque; LibRTMPContext *ctx = s->priv_data; RTMP *r = &ctx->rtmp; @@ -230,9 +231,10 @@ static int rtmp_read_pause(URLContext *s, int pause) return 0; } -static int64_t rtmp_read_seek(URLContext *s, int stream_index, +static int64_t rtmp_read_seek(void *opaque, int stream_index, int64_t timestamp, int flags) { + URLContext *s = opaque; LibRTMPContext *ctx = s->priv_data; RTMP *r = &ctx->rtmp; diff --git a/libavformat/mmsh.c b/libavformat/mmsh.c index 672f4b3788..60113d61d2 100644 --- a/libavformat/mmsh.c +++ b/libavformat/mmsh.c @@ -371,9 +371,10 @@ static int mmsh_read(URLContext *h, uint8_t *buf, int size) return res; } -static int64_t mmsh_read_seek(URLContext *h, int stream_index, +static int64_t mmsh_read_seek(void *opaque, int stream_index, int64_t timestamp, int flags) { + URLContext *h = opaque; MMSHContext *mmsh_old = h->priv_data; MMSHContext *mmsh = av_mallocz(sizeof(*mmsh)); int ret; diff --git a/libavformat/rtmpproto.c b/libavformat/rtmpproto.c index 817c27b7ef..4b01b67d28 100644 --- a/libavformat/rtmpproto.c +++ b/libavformat/rtmpproto.c @@ -2952,9 +2952,10 @@ static int rtmp_read(URLContext *s, uint8_t *buf, int size) return orig_size; } -static int64_t rtmp_seek(URLContext *s, int stream_index, int64_t timestamp, +static int64_t rtmp_seek(void *opaque, int stream_index, int64_t timestamp, int flags) { + URLContext *s = opaque; RTMPContext *rt = s->priv_data; int ret; av_log(s, AV_LOG_DEBUG, @@ -2972,8 +2973,9 @@ static int64_t rtmp_seek(URLContext *s, int stream_index, int64_t timestamp, return timestamp; } -static int rtmp_pause(URLContext *s, int pause) +static int rtmp_pause(void *opaque, int pause) { + URLContext *s = opaque; RTMPContext *rt = s->priv_data; int ret; av_log(s, AV_LOG_DEBUG, "Pause at timestamp %d\n", diff --git a/libavformat/url.h b/libavformat/url.h index 4f3bfb6d57..f62afedb78 100644 --- a/libavformat/url.h +++ b/libavformat/url.h @@ -76,8 +76,8 @@ typedef struct URLProtocol { int (*url_write)(URLContext *h, const unsigned char *buf, int size); int64_t (*url_seek)( URLContext *h, int64_t pos, int whence); int (*url_close)(URLContext *h); - int (*url_read_pause)(URLContext *h, int pause); - int64_t (*url_read_seek)(URLContext *h, int stream_index, + int (*url_read_pause)(void *urlcontext, int pause); + int64_t (*url_read_seek)(void *urlcontext, int stream_index, int64_t timestamp, int flags); int (*url_get_file_handle)(URLContext *h); int (*url_get_multi_file_handle)(URLContext *h, int **handles, From patchwork Sat Mar 2 19:51:58 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 46710 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a919:b0:19e:cdac:8cce with SMTP id cd25csp2009416pzb; Sat, 2 Mar 2024 11:50:28 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCXhGSWws1OwJ7yFXKrAEkWWCGY+S4MTof04rN3btHlfaUIXlCt+hRbf/fjsKZk1EZQARKmVr5rG5autwLMZjhaCZtxy1jQq12wJfQ== X-Google-Smtp-Source: AGHT+IFusH2CegJopnbgZhBdAbbzYReQSZ/IFP/Ba3Hy84ug3THGfoA99VhQvjRtMwdJCPlGnVC7 X-Received: by 2002:a17:906:830c:b0:a44:1103:8282 with SMTP id j12-20020a170906830c00b00a4411038282mr3158747ejx.24.1709409028108; Sat, 02 Mar 2024 11:50:28 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id rs27-20020a170907037b00b00a3dec96d61fsi2473394ejb.440.2024.03.02.11.50.27; Sat, 02 Mar 2024 11:50:28 -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=@outlook.com header.s=selector1 header.b="AJy7/Ngz"; arc=fail (body hash mismatch); 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=QUARANTINE dis=NONE) header.from=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B22A168D306; Sat, 2 Mar 2024 21:50:21 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01olkn2072.outbound.protection.outlook.com [40.92.65.72]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D2B8768CC25 for ; Sat, 2 Mar 2024 21:50:14 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SUXFX9Y7TlE/TbFisKUb77AiIGgc+WYpum5AIt9GB72DIqeAGgG/Ohb5rDAyVWnlAMCyFOT9LQNwwpWQQog0+9jjL13zau/XhRkTaI9T6456qY4IqlNvCHJdk4MJZy/tvQWvzX0R7DFqvUgE5gkuQwz4KvOjKIJfzL9p0uPdCI6ThXy98/cZoDT/ASXVfKfEJsf/Tyo93warmSGx48uhXH3KsRPqFUSb/XcPY7mlK0G8HuB6OHL9BS4vHR9gDa+ihKZ8aBI/l0XMYPvw+9aT7dWDJBeHDuzfX1a6HC7HsVl9S5bWRhrL4uLvNQOIRQrDFdK51E3h9h+ZJmLB1yw/gg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=we1NB+KVEPgyM0SWAxtb1K4tRzVXkT7dchDpbZr3nx0=; b=asEN1t9SS+8Bp17+mNhMVbq48xGGwoZcX5OeGNorZVn71kihF+RYNC9GoJu6ull9E+cXiTsn+eEbY6BieLe2PHxvp648aefxUjKWqvu5qj/gjT0ojWXJO5B1FJrtfWaCFBtx0IJJ8J/HoqN0EPbykO7qrTQQxzZvQTrOg32JPvnX7dljivdzao1/imUyfZ2C/KT8yspeEsBxAJ1L9fqHN6HNCqDr8DpjYInYfZbkyzranZoJYt+G6Zv7p/jJXCKpO7eZGbbtRp34vhlFNftrP4V3BTeuWeMCt5SqrtcAQnlCGHy8KrMSKOPO/fKCotUddWrifdEKwoCxs9Em1DQbCQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=we1NB+KVEPgyM0SWAxtb1K4tRzVXkT7dchDpbZr3nx0=; b=AJy7/NgzeDQaVH/ROCg2mvionWhgxUWJdFTa4vh4AuSC/tjAPY89R0DfHNecPCPVAhBcb63+g/6CDRUNJ+ay8GBAru2HTCawQkJsErDmFsLNDxpwHsFEfB0buljjHQIXZkb24VA0ArAcHIJ1J7OrNPYBpcQq1lqlyprugi4wgaqQjho0r3YM3h3cwU8s5l3bBMPBiQM52hsQW4Uhd1q41PqyjN1wyO9Qcq+jZXPyxNl5oZeYVx4HHIJODWRxZdOgDgTU1PCEParnBplMYYU/mKAs+ni+lNHvGeZ9rkvBIQw3CO2hEFIHhzRSIkHC6H5tguMNg0Wo3xuErCEKHVRwqg== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by DU2P250MB0045.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:2b6::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7339.32; Sat, 2 Mar 2024 19:50:09 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::65aa:deb0:a18e:d48d]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::65aa:deb0:a18e:d48d%5]) with mapi id 15.20.7316.023; Sat, 2 Mar 2024 19:50:09 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 2 Mar 2024 20:51:58 +0100 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [x8Z1Iw3hqOGQXvbVmSfIFbznItQMJgvT] X-ClientProxiedBy: FR4P281CA0079.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:cd::9) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20240302195159.70943-2-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|DU2P250MB0045:EE_ X-MS-Office365-Filtering-Correlation-Id: 626925a8-709a-4b9a-a94b-08dc3af1f757 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: /gpmlw+9n451xndCZ9Y3bx1JhLO7oAmsuQchLQp4VR6NI6b36ienkVcTldALBy+vjoh1+/FPSrGHVZaY04s93aocghYP+6Y+rdr6uENmZrquqL+S1sslt1U8uAKl1ooz9Zcgh6lhBgRi8si8EH21A23c4HgrWoWWPqTSPAcJqFFuXLlgcovwupEKLeIay1FuAFQATxsUQISUpwGfbrdqLEQWgOwxgrwJJh+UdgYsKRofBijz9t1y20tR77EzQE64jPbEc2TSni4xrXUAuJYkEfetBswZofbIhnm/i066LUEDX1b/CZNnMUH+hj9wiYMGWA0rs+IpZVW5QACqtuGqRKscT585uGipnMlEZ616ytYoXckbh78XB6nstENkkSUbYme1gjfj0x+PSN9ial3idyD+a8uPhrJ2VRN7gkXyEPso6YKOH6Z4mDAV8rcVb4NxJKAjQyPMlmlnXMe9fMx3wP9LrP91qnCFRCSh+2RtqjB9f1uEeC0o2QgMHNym5L4P2GHedw1ZWNwpv0de67T9us8Wv6XxeIJ4mBIX24q8w4sNWs2bSt+Z2V4IvfU/TLLejtHEkGxxOVialcLJThGUHcG+DYqOeeCLESHolb6vJFbHLMtN75f5Avl4lgIeE+0G X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: uwqCjWHOg26o4euJ/GJxUmLEIoj5vmqEM+grF6zRU7yrXNrb89fS5QFGbuVNR6jIOv7gEkamcM8lTuVNWCTbfM+WMC2TqG/rCgGFbVxqeSe14tLjK76QB4GRpUJ9jHlzHMEiqMZajip2iH6jSDbGnVbSc2kCapTyxndCtLZ2sjeil8PNHQUcytrOZR6DIT1qO3Atop9qUOzr0cf8WwwSUSGEq2B1F/Nf99v1kz6FL1T7pYU1NYLXiQXae91GgNRvaNof/+9cKwPboeR+C86xEgVWeqa9uV8DzFjfIUbNDptjR5I6euDYaftbAoQ002MQYz/4y8JWr6gVvFcc+5v2koTsuDH6KF7TQMWv48mUjVnEq9axwtQpqurNcMV6EfDHAhyH2is+M0ZteThIgq6AxHF2bM+1ICx5qEYUeaUYU1fKwTEDKzAwRhOnWl5WEfkzg7I2QGCiBb9iqJkpLu1f9IApIWLgqxi3EyQ8DkfSScWUw610PQMfHXGwhCMleaz50QhUqDTOjauaw0y/lBycX1N9I6iV7Ok9zFVyO73F9yDvT03pFNIMmIECIpfW5uVk4Soxy+LzPGHSLzskYQkGOXyjvp1HLne5QT9DEZKnwkDx1KFbf/b0kigaRPe9f5i2ZjTfjcfi2ZMNglRV3pmhMW2iZ4DS72CJDSiJE1mqPjzT0Kve/celquU04HVS133g/HEBt88ou5xzBRenlg5FRldvXEzGGTTv5t5D06AitvjPRI/407zWFwoQ2uiUg77Hl7ROFzPZ/crY1/fnagHDSya4HLQvlzpwslhAqR7+P8LXt6ySH2L1HyUovI3V0EGcxDutjP1QRlu5e5HgQeflXWhHPXcnNpvMU6Z/Q56EHwr6+abdjcqE+Z+4UyrHRjZZk7/B1kJSDt6E1UrKwrV7Mq9PWFYJmXLoOMpwoxHPMM6eUnwnqsTKYFup1JqswE/Si5pzum21PvnS0sc/Gx8p9YDVNuD7j/vNxAenaQrImUQs81n3o7G5fNU+2pEFLF53LpuqiawDXMgQSHvXIjDQECDZ0QcBWzi2mwkGBVZ5SNUh/ujQBbDAu8I8doxhqv5UvlPdUcVqUxBMLAuv1Uw+8gz0P7fdABuOI9HhY76xCf61paztQ+Hr6WHGxOS+dW4wvLl01t43KAWkaBJAwlCF2ipCqiYa9pCk3mCtPRKhxYhbASwoJwWhwvnB09dngZH5kyAQ+YrY2fznGKVzs5hlvKSkpfzp87iY6ywJQ8pUMbyMG97DsId3J4skv/sJjQIGshAdUaCDhXVMDJqbTlsCoQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 626925a8-709a-4b9a-a94b-08dc3af1f757 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Mar 2024 19:50:09.2474 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2P250MB0045 Subject: [FFmpeg-devel] [PATCH 3/4] avformat/avio: Avoid indirection in ffio_fdopen() X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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" X-TUID: CHi3p93OqNH7 Signed-off-by: Andreas Rheinhardt --- libavformat/avio.c | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/libavformat/avio.c b/libavformat/avio.c index 1622a03d7f..f3d10fac39 100644 --- a/libavformat/avio.c +++ b/libavformat/avio.c @@ -408,8 +408,9 @@ fail: return ret; } -int ffio_fdopen(AVIOContext **s, URLContext *h) +int ffio_fdopen(AVIOContext **sp, URLContext *h) { + AVIOContext *s; uint8_t *buffer = NULL; int buffer_size, max_packet_size; @@ -428,36 +429,37 @@ int ffio_fdopen(AVIOContext **s, URLContext *h) if (!buffer) return AVERROR(ENOMEM); - *s = avio_alloc_context(buffer, buffer_size, h->flags & AVIO_FLAG_WRITE, h, - ffurl_read2, ffurl_write2, ffurl_seek2); - if (!*s) { + *sp = avio_alloc_context(buffer, buffer_size, h->flags & AVIO_FLAG_WRITE, h, + ffurl_read2, ffurl_write2, ffurl_seek2); + if (!*sp) { av_freep(&buffer); return AVERROR(ENOMEM); } - (*s)->protocol_whitelist = av_strdup(h->protocol_whitelist); - if (!(*s)->protocol_whitelist && h->protocol_whitelist) { - avio_closep(s); + s = *sp; + s->protocol_whitelist = av_strdup(h->protocol_whitelist); + if (!s->protocol_whitelist && h->protocol_whitelist) { + avio_closep(sp); return AVERROR(ENOMEM); } - (*s)->protocol_blacklist = av_strdup(h->protocol_blacklist); - if (!(*s)->protocol_blacklist && h->protocol_blacklist) { - avio_closep(s); + s->protocol_blacklist = av_strdup(h->protocol_blacklist); + if (!s->protocol_blacklist && h->protocol_blacklist) { + avio_closep(sp); return AVERROR(ENOMEM); } - (*s)->direct = h->flags & AVIO_FLAG_DIRECT; + s->direct = h->flags & AVIO_FLAG_DIRECT; - (*s)->seekable = h->is_streamed ? 0 : AVIO_SEEKABLE_NORMAL; - (*s)->max_packet_size = max_packet_size; - (*s)->min_packet_size = h->min_packet_size; + s->seekable = h->is_streamed ? 0 : AVIO_SEEKABLE_NORMAL; + s->max_packet_size = max_packet_size; + s->min_packet_size = h->min_packet_size; if(h->prot) { - (*s)->read_pause = h->prot->url_read_pause; - (*s)->read_seek = h->prot->url_read_seek; + s->read_pause = h->prot->url_read_pause; + s->read_seek = h->prot->url_read_seek; if (h->prot->url_read_seek) - (*s)->seekable |= AVIO_SEEKABLE_TIME; + s->seekable |= AVIO_SEEKABLE_TIME; } - ((FFIOContext*)(*s))->short_seek_get = ffurl_get_short_seek; - (*s)->av_class = &ff_avio_class; + ((FFIOContext*)s)->short_seek_get = ffurl_get_short_seek; + s->av_class = &ff_avio_class; return 0; } From patchwork Sat Mar 2 19:51:59 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 46711 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a919:b0:19e:cdac:8cce with SMTP id cd25csp2009461pzb; Sat, 2 Mar 2024 11:50:36 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCWevE4IbXGTY1VkR9QpguvjE5Q6L0/QuaLfpjYzh4Lh3HfEhgkh9AMbhPOc4Tu4gK/Pa1GtqBkTKHge7CyxiwA9uRkRw+4FlR2oUQ== X-Google-Smtp-Source: AGHT+IH9YJAEHHCTxU2jkVGNotVkT/TediODw7ZLdh6n4lrrNdxB1uXfeesc9n+xaw6Mj8Y4cy1R X-Received: by 2002:a05:6512:2829:b0:513:3d25:d2f0 with SMTP id cf41-20020a056512282900b005133d25d2f0mr1084276lfb.1.1709409036000; Sat, 02 Mar 2024 11:50:36 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id f19-20020a170906c09300b00a3f851fc3f3si2509195ejz.504.2024.03.02.11.50.35; Sat, 02 Mar 2024 11:50:35 -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=@outlook.com header.s=selector1 header.b=MmuieRYV; arc=fail (body hash mismatch); 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=QUARANTINE dis=NONE) header.from=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id ACB5568CD00; Sat, 2 Mar 2024 21:50:26 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01olkn2072.outbound.protection.outlook.com [40.92.65.72]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1576568D30B for ; Sat, 2 Mar 2024 21:50:20 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Yhg/3zne402UbgyVWbwmmdWgqPuqvTl/+2i2EMOrR1mDXA6FXKju6AnMUW6z2wZcXjipnuWcckEYx4FLLKayCxJaS7BviWuiEi/5WfrrBB2+wh9VChKJSlLxYE+7j9VHnkUgdID3+2bwoGACBVUALHGT/as7DZENBKXoFJVbBCkS3PEW2AC8PLZX55066EyGfajNhxaWW8qlgh297HAf5ksZesMsyfPLiMbYGQRLYBEztk1Nv2pC3j1AjuGWX85XAIP4gYBc8AVqyCImJgFu1gqd5aW/9hns20ATGusNUiHXB22GETFdeMfeX32otkiG1h950/hcRt3q1ckZIG+JNg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=U4WBhWu/CaVOJP6YFu90rNyM3aGUq9XiqbeM6hguXg8=; b=DWgc6ic0j3Qtp0VP8ZoDkaCepICfrcBuOrSD8VRPQC6bAULdDaDa+6KnFGn04k8Q1JjRSaLr8Ce3BJGgq35qKUhps5Fglf3PCurv4GB9H9vdvHAy3bytXlfr/1jjZW84tRUxcx0QeFWpW1g9t/H1ToL6W42eje3cf4eZDCQ8Nug1RcCtn7U5mUXD0+hxU8Tpx9hOzlojx7B+cmOyzD9NrTV0vD7ozSnxo9bFqBx7Be4cq56Ft+CQOGPZAYNrq3wUzd5zdezVDGJdS0o2TWxaEuKP6cs84sMXJc3EBgN0knGOOWXbsWHgE3cI6LF2IV79zUVVMJxNdQzFdQcoq8DthQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=U4WBhWu/CaVOJP6YFu90rNyM3aGUq9XiqbeM6hguXg8=; b=MmuieRYV4Yf+7Fuun1toSXs/MU23yGro+fYUNt8b5EM5UlOdwt5ioy1HUY7j27YqRR1qqUcvqVwYvA1k0vnMfWjVamoMzGbAHmveN+FGwJEXxv3Jc2QYMXAei2g+IH6w36G+x5GxCabhwKqSuR9Xiy29+4Ur3LlFG4Nn9DcFqxMgvNZHQboE6N3cUO/JfJYdeJi6GI4szz6F1Xxpm8fKUB+vykUu71AQS9VDodCdL9JTKCMX6DBzxzUS19krslgu4Z5O5G/jQkoOCU8bf6a0yXtzKQSrGcTWEsGrsRDom8Oo4ISZ+q4+5Q8dHp8GbuZku6hxnbc/VxiXSeegOyQNFQ== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by DU2P250MB0045.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:2b6::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7339.32; Sat, 2 Mar 2024 19:50:10 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::65aa:deb0:a18e:d48d]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::65aa:deb0:a18e:d48d%5]) with mapi id 15.20.7316.023; Sat, 2 Mar 2024 19:50:10 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 2 Mar 2024 20:51:59 +0100 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [FZdZrNwZSEZpIY5QUmAybGJhjLPKbzJg] X-ClientProxiedBy: FR4P281CA0079.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:cd::9) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20240302195159.70943-3-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|DU2P250MB0045:EE_ X-MS-Office365-Filtering-Correlation-Id: 3b543242-b298-44f1-9b0f-08dc3af1f7da X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: yBuflFZOfFdg4XpzqvqQs36gmQOg+SkFiAyzwvtOBXPqAfTmMKGMxxOK/iM1p977lc2y5AHGl0iDTUKsqSp0LXvIeVS8ZLkkSc0VJtk6/UsjtojDce4iCGGJxbsFUovwWWfJ+TqNaIjIT5ov87crFs8p+Q7enideMC85BkX4/4kC7DkpCqk5NkI8TB8VqH/GDpWT42euzd0zY+EJvX22jeFXQugono4YUARHHw4wsu7KVg4+CnXuyVzFKk+UPJ0R8qt9JmVov5mTTWW31F+N0zrrUlDW+gyAZElsrrKxi73NryUDajGVnDKaWtk9YH8EDXsyrnZynXbiSi6ILlnR4s3n0flqptlMbInOnDkABRL58Jb/2nnVixD4hYbOHbZ0SdD6yd3cxGwpZDND6cbH/rfixT6InK+TlrVOr9kCWh1X4GR2pnyHRjS2GtRq9nOvXTa4Tlwy7jYk6AHepvxxVRBw4Z4RsihTl31q9WuOmqD7pHMTtE0rm06XLxBAyRc7nf53hWM3IDtRZTtJ352n0n78YiyhIfVy520B8Lzd/jzUg20k/BLJJPgcGOvafVeDYbJkPGo7nzK+QWUTqIY3Cu1Y/9wyS/kGhIT9proj3IkduFRGttB6rhOOSoILFGEE X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: WFywlyBsY2f+nlC/cwYZuA0/ODFgV1HBn3LZn6yZDuYbUhk7rumAOqVbtzs7Ta9ce+mltizGDpbArekDGQ9N/rD2Iu2TPcal/CXvCrF4ZXNzqJpdp/va9mek/OU0VZkvoJpJZlG87hOnLFnftrbbv0qpCN3mqkVVSk2usT9tSKdi0Z1RvJqhtuJL+1eTbYHf/zYkvSKWvU3NURS35wekDAFnD3UnbrKP2VHLDwc8X+IglBk2e/UrxrwsUROGjAQEH+uCLj9j/llR+VUFMBa639JARpnymqSi3YiN/5HPMObGGQhFhFjBfapwqSv3PI/DAiHYbpHA7dMRL7RQMBNFrjYdpqal/gwRpB40xaY2pKZkeB+3abV83g84hzQRx8/U9F9Qe6T2BP1hUhhwHypv1dgekvjlbAqEPBGpmOVCaSmO15qlGSdkuxUCbUS/ztmIOUAGWM6TnjxjMG0wxKp1Ox4Po3IlJprdsQkS6OE3cspHzebVi5T4BrvNf/FN2f3NUWH0HMR8/7c/hARrhy3QICaopuZyzJDkS9qYVqWWrKqRw9l4Cco8jsz675kkMmNFTvdvjGcLbM/DJNaPEePhZkUQ2SjYQYhC8mSV0uR/iey5yKXoG2Leq8YWBKti5DlIyZAkE8gtiV/2bKdgh3KivRn2vbuJUeHNt8iBSmrChOOshQxv6hIJpxgVZwgAsdPfvbuZvtUICNMtSzQ4sweWYesGfIk7l8p0CmBEYWndpCagahYjJLpgQdAogTSgawKKNXyiUgZwhXjWS5S0kNQqzAJXkJ4HJ9+yDLDPsaxZu95xeUsuyPgb66wZS5ND3emGMDKECWMdk2xqTtqXXpe4dso4kIyng/JKEu3Y948QbH9AZY4zvUB65U3eHTcGu1HdHNIPf7O2c77GtfpPK5UGcFnl7ijWJrLWkiSe8uUOKHeoPpAAdXU1qOvj20mlIHdLfXre+EGdWZnOq+2M8hlSbYOBXhvhgn3IPG4y/WMQk3mvoCaJW80vU8vkukfKUdNEP4SOmbkzjoXGZqmzFPoj+X+O9fFz/Vj5IljlHtsQzikiFbLZ0zAvpUxY3L9Eq7IdJhu6F/PDnzIEiwzU2uV2FT5iYrYRv55/tk1YD+uZD4e4gh1jnIr0at0VqVAfvBH6E8jKJIf3L/aBCb3stgnd4nwg3HQBrLKfcMwOwEZR/vIEzdaLMRS99m+WXlGj4gRyqQSpWp4P8fcgXNKPxdMSRRdJHWCAGr+ARYdQEDMNazLhp1BgWTqXWIkvlu6WayKR83loEXU29apsB8pxJsud5g== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3b543242-b298-44f1-9b0f-08dc3af1f7da X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Mar 2024 19:50:10.1464 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2P250MB0045 Subject: [FFmpeg-devel] [PATCH 4/4] avformat/avio: Avoid av_strdup(NULL) X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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" X-TUID: 8bBsuQKZSruk Signed-off-by: Andreas Rheinhardt --- libavformat/avio.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/libavformat/avio.c b/libavformat/avio.c index f3d10fac39..5186c2b464 100644 --- a/libavformat/avio.c +++ b/libavformat/avio.c @@ -436,15 +436,19 @@ int ffio_fdopen(AVIOContext **sp, URLContext *h) return AVERROR(ENOMEM); } s = *sp; - s->protocol_whitelist = av_strdup(h->protocol_whitelist); - if (!s->protocol_whitelist && h->protocol_whitelist) { - avio_closep(sp); - return AVERROR(ENOMEM); + if (h->protocol_whitelist) { + s->protocol_whitelist = av_strdup(h->protocol_whitelist); + if (!s->protocol_whitelist) { + avio_closep(sp); + return AVERROR(ENOMEM); + } } - s->protocol_blacklist = av_strdup(h->protocol_blacklist); - if (!s->protocol_blacklist && h->protocol_blacklist) { - avio_closep(sp); - return AVERROR(ENOMEM); + if (h->protocol_blacklist) { + s->protocol_blacklist = av_strdup(h->protocol_blacklist); + if (!s->protocol_blacklist) { + avio_closep(sp); + return AVERROR(ENOMEM); + } } s->direct = h->flags & AVIO_FLAG_DIRECT;