From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 53C15473F9 for ; Thu, 7 Sep 2023 01:06:55 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7C1C868C8AD; Thu, 7 Sep 2023 04:05:59 +0300 (EEST) Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03olkn2054.outbound.protection.outlook.com [40.92.59.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6E56C68C89E for ; Thu, 7 Sep 2023 04:05:57 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=e1AzVkXqbu/cFmLQQhVEt5x6Zwoy/YMNpkWghYnpjRk6QR90g7vBlnYE/5h5U0FctXh3Z8QalgZo5qU4Lga5klygAUTVXoQDPBthibMVsoKrTPZg7aSPO4U3IQn07XAYfecjcIdUiDYQWV/93yQN1fkmQ88+8dU603xtJD5t+tyixvE6pjT1A+ApXv+iN0NaeCE5re19ZVhXtI0v0SaL9eF5IWNsjUJ0MDbrxb8gEsA594qBZcoVAIcEkSdS2xX3yfzYVAGjsKtOwX8ACys0AZVcpA2urW5cDIhQg2Eumg1FUUcu7SkcFoLDxZExH5HVK1/vBBnrRkIgtZ5n2armWw== 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=8SwMSSJwUq6DeaK7S7ro8zuihUQBljSTII+UoHfLJMg=; b=O7lH5jXzp1cTbNjc1Y4J3nmuxyBm5FgUJsy4DwhickX5gF5JH8fG5eOcBUlNFncT3VXN+4ad4raxqRXID4PHZ0CUhZCcyd3rgsNyNODsOaTOe1t7nqfcv+/C61RQDOgeSmox7JJnuuz8dE78MDjDJoT4A8M+cumfDAfAHboyXy4t862B5Vzq6+RqQYnRNgiTXvpsJGZV7ky2xU5okduZYqzqOH1c2URid8u6lyZHw3sf0hJO4NoamyJbpnXd0v0ORTJf1daSuEViJ4f2+Cw47kzVNyBjuFKCb7SrKvdJCspjcHPWzmBAFRmbQOBgxZyyaHeLWAxMZ0Vgy0vFkhVLtA== 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=8SwMSSJwUq6DeaK7S7ro8zuihUQBljSTII+UoHfLJMg=; b=cNBfsdFuoLzR0vYiniPNeNbMBBwmqTUyXQ4pTkI+PF/bu6XrUyICesX4x4EKEWzkUn8gaYtmi9nYF8F6ka885iM5IIvwxk8xJNJQsplTI3MkMfgeXYR8fr44lM1oFujQrgRkH/eQBFkocGq9f1B+g8nKBJXxvB50kCIcerJQoPMCnKJpzvBvOzhvV1BEh8NAq5X8IOfe7GyAD2ajmqcV7EchjYJzjHh1mms5G0v9urlG7q6XGEsxIr/ZesIqvxhQEf7vv07pJkVN3+MVeMBC1uVTs05MRAi2OOZQqeRgU+qcYq68tR9La7cRyDzRKaP06QNLALztMWFKWGaz5pXvXQ== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by DU2P250MB0025.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:2b6::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6745.34; Thu, 7 Sep 2023 01:05:56 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::5e01:aea5:d3a8:cafa]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::5e01:aea5:d3a8:cafa%3]) with mapi id 15.20.6745.034; Thu, 7 Sep 2023 01:05:56 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 7 Sep 2023 03:05:31 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [KlSV+Hinllmi3wk4AwxtpL92g+BitB/V] X-ClientProxiedBy: ZR0P278CA0096.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:23::11) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20230907010538.488975-14-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|DU2P250MB0025:EE_ X-MS-Office365-Filtering-Correlation-Id: dfdaf9c4-b75e-4ba9-4ca7-08dbaf3e974b X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Xt4DOwqnRu2wmIdvQSHtFEW/M4yTBaIpwtTfp6zONziJiuzTcRDMu3RPRm4cWNL1BsPxeyVoCWhYB8jRU5v245Nd1iR0cUB7ystwGdGPH/oq+n7A5KIEAT48wehopfHuvRrgxh8mbxvlyquGP7XOuPz8xlAB2HLbo9crai08ZMO6c1I6LRBE9JLARJOiWM0Io26zHS+phIrF2580eo9ZucYdm4vWDJBPb0gls9xka6muq+oftc4EnjFtZmnzGRcmhxobG2aMM5LTA85xcLLMqp2L0D9AYxWZchxbynCy2J6NzcFipkgMyM7iccPLvrulRcNG3gAHm01Yi5SHPsGB4gJCoUb4ZeAPf2psqmfzqopiHHKcd8YdLXcgMyec1kSkzHse5ldID0zp4u2Sv8MoyESAcA3uitXN61z3pJd0DYscxBR29ewtuY/1tEpuE37ggI12vS2vJjDf1fsOLuyqxx5JWj4Ie/Ma5HF5+wRbhtBN/fJVRF8MJnjKHdPLCWeirVVokbbvYNJgTc6PqZUO3l+7l7SjcRj6tzX7yYT6GNOS4XFoulsr8dMP9UKN5WuNqoJiMI9NWVEEpbWOMoxv0Eyy/q88mgxkImkUH060FJFgtYDuVHxf6mg6YyEJOeCm X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?MzHlmZbbDIWwKLBJ4b05hrnrk7DZ4BdSdm7pG6+ztCPNtHEsb5S8fnLNy2R9?= =?us-ascii?Q?64zNViM5gJ0cvPBfaW0y+3hzXvrsPG9sv9GyxuriOxMoqioWnRxGWBPM9tvg?= =?us-ascii?Q?AlCSu04spDMiDldVgkjvjLTcOrVJUoivDetwcw35cQxT+XN+0dAx/45zHb6n?= =?us-ascii?Q?0/Q0GrIkllL9M9VXfLrCbDl96j/q2WZKPhVq/j6YRvPzNShbB2liHk6iXID3?= =?us-ascii?Q?nkz35wVRKmO7CNpDxfowLaYlMvTq7YogJjmGGUrj2K61ImMGPc2UYkYSHWuw?= =?us-ascii?Q?zEBcr5MeUt9YzNMF0rBvnQYKgV9NPUU+2H6EOUyDMEyg8qcr0aN7P1EWJlQi?= =?us-ascii?Q?CY46c+cQgyoPXec57lrVf1YkQWqE1ACqVgB9TBwKk8T30NvEpmDZijGHmpTS?= =?us-ascii?Q?O1n5e+DJLf7mK6VGmbyZTPCuN38zKQzvDkBEtSoBBv9u+VUyIUhvOPdNg1xM?= =?us-ascii?Q?axYKC62cgiRqqkOY+Pi0eclErkyf5yTavRVe8Ga6kJ0OwKpEmD43w13+kVbC?= =?us-ascii?Q?BI+soek5uus4+LqtnbWW7asLstKcOsSkiAlhYkWspw0dQoV5FFfH0p5b8sAX?= =?us-ascii?Q?BoAIqqbmVFulaGb7ppPxBQlm2nXjM8Ytcl4xednJ/k5Nok4NiMTnjBUVWpWU?= =?us-ascii?Q?U/w9QVii6RtwenAOBSbwiljYu3z7C3iT86TnQcVizHRQUHvO7Wq80y9Gm+1K?= =?us-ascii?Q?/ZjX3ajiaDgOK5KIiVwZAkK956VrMUT90U0mADjKDHFu8ITl5/Iqi9Wc9Xa0?= =?us-ascii?Q?An9DO+7yx6kwEkxoh6/bpGGMH9LCoX8Pvmfl5xkUUqQV+pWvMc7GiO6dpvHi?= =?us-ascii?Q?1g9O0QJ36uGgRDMbZktB8KHs+aJHuyJymA2G+YBJUuY4JwNLSKJ3FmT5N3gw?= =?us-ascii?Q?rPs4AvilpPIsv7ZyjNelafwUoBdvSCBYl7VSY6kweWADwTslCMG+CPifELjQ?= =?us-ascii?Q?zi8MWSLvzqEsNmRHDc8/SWtGcI7DlEL/0B8ZXjG5GwsztSnY8IP2KAw69zI4?= =?us-ascii?Q?y6sd/PK730BG3Y4RB50BneDxQm6Rh1OzzFnWbNx6TtLoyZ0RDVNhdmvs4VtG?= =?us-ascii?Q?TSURAqyzsqrlUwT0QvapB5VaNC+TpKG2zXeEkr3gGMhCLZ99vwozL/aMBF8/?= =?us-ascii?Q?gJshT0RW8vqM+JhFQlTWxhB1bPF4gRSKAMHtK6qIa7WeKm65QvGvMgJ2Vthz?= =?us-ascii?Q?Umg38XjxRNh9rqbvEDmhpjwZa3xGHglMsHF6H9RydqJX/CvaUXjkKAtXDKQ9?= =?us-ascii?Q?EoTRyrFPr+fj1P3MuwS7?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: dfdaf9c4-b75e-4ba9-4ca7-08dbaf3e974b X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Sep 2023 01:05:56.6372 (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: DU2P250MB0025 Subject: [FFmpeg-devel] [PATCH v2 15/22] avformat/avio: Constify data pointees of write callbacks 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: They are currently non-const for reasons unknown, although avio_write() accepts a const buffer. Signed-off-by: Andreas Rheinhardt --- rtmpcrypt.c sometimes modifies the buffer whose content it is supposed to write. doc/APIchanges | 4 ++++ libavformat/avio.c | 4 ++++ libavformat/avio.h | 13 +++++++++++++ libavformat/avio_internal.h | 4 ++++ libavformat/aviobuf.c | 28 ++++++++++++++++++++++++++++ libavformat/hdsenc.c | 4 ++++ libavformat/smoothstreamingenc.c | 4 ++++ libavformat/url.h | 8 ++++++++ libavformat/version_major.h | 1 + 9 files changed, 70 insertions(+) diff --git a/doc/APIchanges b/doc/APIchanges index 762c2d6628..963ad477bf 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -2,6 +2,10 @@ The last version increases of all libraries were on 2023-02-09 API changes, most recent first: +2023-09-07 - xxxxxxxxxx - lavf 60.xx.100 - avio.h + Constify the buffer pointees in the write_packet and write_data_type + callbacks of AVIOContext. + 2023-09-07 - xxxxxxxxxx - lavc 60.26.100 - defs.h Add AV_PROFILE_* and AV_LEVEL_* replacements in defs.h for the defines from avcodec.h. The latter are deprecated. diff --git a/libavformat/avio.c b/libavformat/avio.c index 5e1acba31b..053cb2e05a 100644 --- a/libavformat/avio.c +++ b/libavformat/avio.c @@ -421,7 +421,11 @@ int ffurl_read_complete(URLContext *h, unsigned char *buf, int size) h->prot->url_read, NULL, 1); } +#if FF_API_AVIO_WRITE_NONCONST int ffurl_write2(void *urlcontext, uint8_t *buf, int size) +#else +int ffurl_write2(void *urlcontext, const uint8_t *buf, int size) +#endif { URLContext *h = urlcontext; diff --git a/libavformat/avio.h b/libavformat/avio.h index 5f13e0622d..887a397c37 100644 --- a/libavformat/avio.h +++ b/libavformat/avio.h @@ -238,7 +238,11 @@ typedef struct AVIOContext { void *opaque; /**< A private pointer, passed to the read/write/seek/... functions. */ int (*read_packet)(void *opaque, uint8_t *buf, int buf_size); +#if FF_API_AVIO_WRITE_NONCONST int (*write_packet)(void *opaque, uint8_t *buf, int buf_size); +#else + int (*write_packet)(void *opaque, const uint8_t *buf, int buf_size); +#endif int64_t (*seek)(void *opaque, int64_t offset, int whence); int64_t pos; /**< position in the file of the current buffer */ int eof_reached; /**< true if was unable to read due to error or eof */ @@ -286,8 +290,13 @@ typedef struct AVIOContext { /** * A callback that is used instead of write_packet. */ +#if FF_API_AVIO_WRITE_NONCONST int (*write_data_type)(void *opaque, uint8_t *buf, int buf_size, enum AVIODataMarkerType type, int64_t time); +#else + int (*write_data_type)(void *opaque, const uint8_t *buf, int buf_size, + enum AVIODataMarkerType type, int64_t time); +#endif /** * If set, don't call write_data_type separately for AVIO_DATA_MARKER_BOUNDARY_POINT, * but ignore them and treat them as AVIO_DATA_MARKER_UNKNOWN (to avoid needlessly @@ -407,7 +416,11 @@ AVIOContext *avio_alloc_context( int write_flag, void *opaque, int (*read_packet)(void *opaque, uint8_t *buf, int buf_size), +#if FF_API_AVIO_WRITE_NONCONST int (*write_packet)(void *opaque, uint8_t *buf, int buf_size), +#else + int (*write_packet)(void *opaque, const uint8_t *buf, int buf_size), +#endif int64_t (*seek)(void *opaque, int64_t offset, int whence)); /** diff --git a/libavformat/avio_internal.h b/libavformat/avio_internal.h index aef6ab660e..bd58499b64 100644 --- a/libavformat/avio_internal.h +++ b/libavformat/avio_internal.h @@ -89,7 +89,11 @@ void ffio_init_context(FFIOContext *s, int write_flag, void *opaque, int (*read_packet)(void *opaque, uint8_t *buf, int buf_size), +#if FF_API_AVIO_WRITE_NONCONST int (*write_packet)(void *opaque, uint8_t *buf, int buf_size), +#else + int (*write_packet)(void *opaque, const uint8_t *buf, int buf_size), +#endif int64_t (*seek)(void *opaque, int64_t offset, int whence)); /** diff --git a/libavformat/aviobuf.c b/libavformat/aviobuf.c index ad5827f216..c55fe8a837 100644 --- a/libavformat/aviobuf.c +++ b/libavformat/aviobuf.c @@ -84,7 +84,11 @@ void ffio_init_context(FFIOContext *ctx, int write_flag, void *opaque, int (*read_packet)(void *opaque, uint8_t *buf, int buf_size), +#if FF_API_AVIO_WRITE_NONCONST int (*write_packet)(void *opaque, uint8_t *buf, int buf_size), +#else + int (*write_packet)(void *opaque, const uint8_t *buf, int buf_size), +#endif int64_t (*seek)(void *opaque, int64_t offset, int whence)) { AVIOContext *const s = &ctx->pub; @@ -143,7 +147,11 @@ AVIOContext *avio_alloc_context( int write_flag, void *opaque, int (*read_packet)(void *opaque, uint8_t *buf, int buf_size), +#if FF_API_AVIO_WRITE_NONCONST int (*write_packet)(void *opaque, uint8_t *buf, int buf_size), +#else + int (*write_packet)(void *opaque, const uint8_t *buf, int buf_size), +#endif int64_t (*seek)(void *opaque, int64_t offset, int whence)) { FFIOContext *s = av_malloc(sizeof(*s)); @@ -165,12 +173,20 @@ static void writeout(AVIOContext *s, const uint8_t *data, int len) if (!s->error) { int ret = 0; if (s->write_data_type) +#if FF_API_AVIO_WRITE_NONCONST ret = s->write_data_type(s->opaque, (uint8_t *)data, +#else + ret = s->write_data_type(s->opaque, data, +#endif len, ctx->current_type, ctx->last_time); else if (s->write_packet) +#if FF_API_AVIO_WRITE_NONCONST ret = s->write_packet(s->opaque, (uint8_t *)data, len); +#else + ret = s->write_packet(s->opaque, data, len); +#endif if (ret < 0) { s->error = ret; } else { @@ -1396,7 +1412,11 @@ typedef struct DynBuffer { uint8_t io_buffer[1]; } DynBuffer; +#if FF_API_AVIO_WRITE_NONCONST static int dyn_buf_write(void *opaque, uint8_t *buf, int buf_size) +#else +static int dyn_buf_write(void *opaque, const uint8_t *buf, int buf_size) +#endif { DynBuffer *d = opaque; unsigned new_size; @@ -1428,7 +1448,11 @@ static int dyn_buf_write(void *opaque, uint8_t *buf, int buf_size) return buf_size; } +#if FF_API_AVIO_WRITE_NONCONST static int dyn_packet_buf_write(void *opaque, uint8_t *buf, int buf_size) +#else +static int dyn_packet_buf_write(void *opaque, const uint8_t *buf, int buf_size) +#endif { unsigned char buf1[4]; int ret; @@ -1565,7 +1589,11 @@ void ffio_free_dyn_buf(AVIOContext **s) avio_context_free(s); } +#if FF_API_AVIO_WRITE_NONCONST static int null_buf_write(void *opaque, uint8_t *buf, int buf_size) +#else +static int null_buf_write(void *opaque, const uint8_t *buf, int buf_size) +#endif { DynBuffer *d = opaque; diff --git a/libavformat/hdsenc.c b/libavformat/hdsenc.c index 080a873ee8..7062441b70 100644 --- a/libavformat/hdsenc.c +++ b/libavformat/hdsenc.c @@ -112,7 +112,11 @@ static int parse_header(OutputStream *os, const uint8_t *buf, int buf_size) return 0; } +#if FF_API_AVIO_WRITE_NONCONST static int hds_write(void *opaque, uint8_t *buf, int buf_size) +#else +static int hds_write(void *opaque, const uint8_t *buf, int buf_size) +#endif { OutputStream *os = opaque; if (os->out) { diff --git a/libavformat/smoothstreamingenc.c b/libavformat/smoothstreamingenc.c index 3c050ca54e..0379e9a079 100644 --- a/libavformat/smoothstreamingenc.c +++ b/libavformat/smoothstreamingenc.c @@ -75,7 +75,11 @@ typedef struct SmoothStreamingContext { int nb_fragments; } SmoothStreamingContext; +#if FF_API_AVIO_WRITE_NONCONST static int ism_write(void *opaque, uint8_t *buf, int buf_size) +#else +static int ism_write(void *opaque, const uint8_t *buf, int buf_size) +#endif { OutputStream *os = opaque; if (os->out) diff --git a/libavformat/url.h b/libavformat/url.h index bba1a9a1df..f0327218d4 100644 --- a/libavformat/url.h +++ b/libavformat/url.h @@ -194,7 +194,11 @@ static inline int ffurl_read(URLContext *h, uint8_t *buf, int size) */ int ffurl_read_complete(URLContext *h, unsigned char *buf, int size); +#if FF_API_AVIO_WRITE_NONCONST int ffurl_write2(void *urlcontext, uint8_t *buf, int size); +#else +int ffurl_write2(void *urlcontext, const uint8_t *buf, int size); +#endif /** * Write size bytes from buf to the resource accessed by h. * @@ -203,7 +207,11 @@ int ffurl_write2(void *urlcontext, uint8_t *buf, int size); */ static inline int ffurl_write(URLContext *h, const uint8_t *buf, int size) { +#if FF_API_AVIO_WRITE_NONCONST return ffurl_write2(h, (uint8_t*)buf, size); +#else + return ffurl_write2(h, buf, size); +#endif } int64_t ffurl_seek2(void *urlcontext, int64_t pos, int whence); diff --git a/libavformat/version_major.h b/libavformat/version_major.h index 293fbd3397..1b43fe64cb 100644 --- a/libavformat/version_major.h +++ b/libavformat/version_major.h @@ -45,6 +45,7 @@ #define FF_API_GET_END_PTS (LIBAVFORMAT_VERSION_MAJOR < 61) #define FF_API_AVIODIRCONTEXT (LIBAVFORMAT_VERSION_MAJOR < 61) #define FF_API_AVFORMAT_IO_CLOSE (LIBAVFORMAT_VERSION_MAJOR < 61) +#define FF_API_AVIO_WRITE_NONCONST (LIBAVFORMAT_VERSION_MAJOR < 61) #define FF_API_R_FRAME_RATE 1 -- 2.34.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".