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,