diff mbox

[FFmpeg-devel] lavf:Constify AVInputFormat pointer

Message ID CAB0OVGr1dUjagB+H2dK6tdh7vqxStSiGgWhWGRUq=vQ8=HHX2g@mail.gmail.com
State Superseded
Headers show

Commit Message

Carl Eugen Hoyos Jan. 27, 2019, 9:38 p.m. UTC
Hi!

Attached patch was requested in ticket #7220 iiuc.

Please review, Carl Eugen

Comments

Carl Eugen Hoyos Jan. 29, 2019, 9:50 p.m. UTC | #1
2019-01-27 22:38 GMT+01:00, Carl Eugen Hoyos <ceffmpeg@gmail.com>:

> Attached patch was requested in ticket #7220 iiuc.

Ping.

Carl Eugen
Michael Niedermayer Jan. 30, 2019, 3:33 p.m. UTC | #2
On Sun, Jan 27, 2019 at 10:38:13PM +0100, Carl Eugen Hoyos wrote:
> Hi!
> 
> Attached patch was requested in ticket #7220 iiuc.
> 
> Please review, Carl Eugen

>  avformat.h |    8 ++++----
>  format.c   |    4 ++--
>  hls.c      |    2 +-
>  utils.c    |    4 ++--
>  4 files changed, 9 insertions(+), 9 deletions(-)
> 0a59a10c224ba092d8b7b61e3cac78a93c23bee2  0001-lavf-Constify-AVInputFormat-pointer.patch
> From a713b58767e8d77b641d1b87e68de11c176fd454 Mon Sep 17 00:00:00 2001
> From: Carl Eugen Hoyos <ceffmpeg@gmail.com>
> Date: Sun, 27 Jan 2019 22:35:51 +0100
> Subject: [PATCH] lavf: Constify AVInputFormat pointer.

there is some tiny chance this could break some user apps build i think
so if done strictly correct it would need to be delayed to the next
bump i think

[...]
James Almer Jan. 30, 2019, 4:03 p.m. UTC | #3
On 1/30/2019 12:33 PM, Michael Niedermayer wrote:
> On Sun, Jan 27, 2019 at 10:38:13PM +0100, Carl Eugen Hoyos wrote:
>> Hi!
>>
>> Attached patch was requested in ticket #7220 iiuc.
>>
>> Please review, Carl Eugen
> 
>>  avformat.h |    8 ++++----
>>  format.c   |    4 ++--
>>  hls.c      |    2 +-
>>  utils.c    |    4 ++--
>>  4 files changed, 9 insertions(+), 9 deletions(-)
>> 0a59a10c224ba092d8b7b61e3cac78a93c23bee2  0001-lavf-Constify-AVInputFormat-pointer.patch
>> From a713b58767e8d77b641d1b87e68de11c176fd454 Mon Sep 17 00:00:00 2001
>> From: Carl Eugen Hoyos <ceffmpeg@gmail.com>
>> Date: Sun, 27 Jan 2019 22:35:51 +0100
>> Subject: [PATCH] lavf: Constify AVInputFormat pointer.
> 
> there is some tiny chance this could break some user apps build i think
> so if done strictly correct it would need to be delayed to the next
> bump i think

We have tied constifying (or the opposite) to major bumps before, so i
agree.
Carl Eugen Hoyos Jan. 30, 2019, 8:50 p.m. UTC | #4
2019-01-30 17:03 GMT+01:00, James Almer <jamrial@gmail.com>:
> On 1/30/2019 12:33 PM, Michael Niedermayer wrote:
>> On Sun, Jan 27, 2019 at 10:38:13PM +0100, Carl Eugen Hoyos wrote:

>>> Attached patch was requested in ticket #7220 iiuc.
>>>
>>> Please review, Carl Eugen
>>
>>>  avformat.h |    8 ++++----
>>>  format.c   |    4 ++--
>>>  hls.c      |    2 +-
>>>  utils.c    |    4 ++--
>>>  4 files changed, 9 insertions(+), 9 deletions(-)
>>> 0a59a10c224ba092d8b7b61e3cac78a93c23bee2
>>> 0001-lavf-Constify-AVInputFormat-pointer.patch
>>> From a713b58767e8d77b641d1b87e68de11c176fd454 Mon Sep 17 00:00:00 2001
>>> From: Carl Eugen Hoyos <ceffmpeg@gmail.com>
>>> Date: Sun, 27 Jan 2019 22:35:51 +0100
>>> Subject: [PATCH] lavf: Constify AVInputFormat pointer.
>>
>> there is some tiny chance this could break some user apps
>> build i think so if done strictly correct it would need to be
>> delayed to the next bump i think

Yes, it unfortunately breaks C++ compilation:
#define __STDC_CONSTANT_MACROS
#include "libavformat/avformat.h"
int main()
{
/*const*/ AVInputFormat **dummy = NULL;
return av_probe_input_buffer2(NULL, dummy, NULL, NULL, 0, 0);
}

> We have tied constifying (or the opposite) to major bumps before,
> so i agree.

It depended on the placement of const, I believe this patch did not
break anything:
http://git.videolan.org/?p=ffmpeg.git;a=commitdiff;h=f2c86705

Will try to create a new patch with a version dependency, Carl Eugen
diff mbox

Patch

From a713b58767e8d77b641d1b87e68de11c176fd454 Mon Sep 17 00:00:00 2001
From: Carl Eugen Hoyos <ceffmpeg@gmail.com>
Date: Sun, 27 Jan 2019 22:35:51 +0100
Subject: [PATCH] lavf: Constify AVInputFormat pointer.

---
 libavformat/avformat.h |    8 ++++----
 libavformat/format.c   |    4 ++--
 libavformat/hls.c      |    2 +-
 libavformat/utils.c    |    4 ++--
 4 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index fdaffa5..9cfdbe8 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -1346,7 +1346,7 @@  typedef struct AVFormatContext {
      *
      * Demuxing only, set by avformat_open_input().
      */
-    struct AVInputFormat *iformat;
+    const struct AVInputFormat *iformat;
 
     /**
      * The output container format.
@@ -2272,14 +2272,14 @@  AVInputFormat *av_probe_input_format3(AVProbeData *pd, int is_opened, int *score
  *         the maximal score is AVPROBE_SCORE_MAX
  * AVERROR code otherwise
  */
-int av_probe_input_buffer2(AVIOContext *pb, AVInputFormat **fmt,
+int av_probe_input_buffer2(AVIOContext *pb, AVInputFormat const **fmt,
                            const char *url, void *logctx,
                            unsigned int offset, unsigned int max_probe_size);
 
 /**
  * Like av_probe_input_buffer2() but returns 0 on success
  */
-int av_probe_input_buffer(AVIOContext *pb, AVInputFormat **fmt,
+int av_probe_input_buffer(AVIOContext *pb, const AVInputFormat **fmt,
                           const char *url, void *logctx,
                           unsigned int offset, unsigned int max_probe_size);
 
@@ -2302,7 +2302,7 @@  int av_probe_input_buffer(AVIOContext *pb, AVInputFormat **fmt,
  *
  * @note If you want to use custom IO, preallocate the format context and set its pb field.
  */
-int avformat_open_input(AVFormatContext **ps, const char *url, AVInputFormat *fmt, AVDictionary **options);
+int avformat_open_input(AVFormatContext **ps, const char *url, const AVInputFormat *fmt, AVDictionary **options);
 
 attribute_deprecated
 int av_demuxer_open(AVFormatContext *ic);
diff --git a/libavformat/format.c b/libavformat/format.c
index 2c4c895..157e09a 100644
--- a/libavformat/format.c
+++ b/libavformat/format.c
@@ -219,7 +219,7 @@  AVInputFormat *av_probe_input_format(AVProbeData *pd, int is_opened)
     return av_probe_input_format2(pd, is_opened, &score);
 }
 
-int av_probe_input_buffer2(AVIOContext *pb, AVInputFormat **fmt,
+int av_probe_input_buffer2(AVIOContext *pb, const AVInputFormat **fmt,
                           const char *filename, void *logctx,
                           unsigned int offset, unsigned int max_probe_size)
 {
@@ -309,7 +309,7 @@  fail:
     return ret < 0 ? ret : score;
 }
 
-int av_probe_input_buffer(AVIOContext *pb, AVInputFormat **fmt,
+int av_probe_input_buffer(AVIOContext *pb, const AVInputFormat **fmt,
                           const char *filename, void *logctx,
                           unsigned int offset, unsigned int max_probe_size)
 {
diff --git a/libavformat/hls.c b/libavformat/hls.c
index 8975a87..4c2265a 100644
--- a/libavformat/hls.c
+++ b/libavformat/hls.c
@@ -1868,7 +1868,7 @@  static int hls_read_header(AVFormatContext *s)
     /* Open the demuxer for each playlist */
     for (i = 0; i < c->n_playlists; i++) {
         struct playlist *pls = c->playlists[i];
-        AVInputFormat *in_fmt = NULL;
+        const AVInputFormat *in_fmt = NULL;
 
         if (!(pls->ctx = avformat_alloc_context())) {
             ret = AVERROR(ENOMEM);
diff --git a/libavformat/utils.c b/libavformat/utils.c
index 7afef54..98e8849 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -535,7 +535,7 @@  FF_ENABLE_DEPRECATION_WARNINGS
 
 
 int avformat_open_input(AVFormatContext **ps, const char *filename,
-                        AVInputFormat *fmt, AVDictionary **options)
+                        const AVInputFormat *fmt, AVDictionary **options)
 {
     AVFormatContext *s = *ps;
     int i, ret = 0;
@@ -2163,7 +2163,7 @@  static int64_t ff_read_timestamp(AVFormatContext *s, int stream_index, int64_t *
 int ff_seek_frame_binary(AVFormatContext *s, int stream_index,
                          int64_t target_ts, int flags)
 {
-    AVInputFormat *avif = s->iformat;
+    const AVInputFormat *avif = s->iformat;
     int64_t av_uninit(pos_min), av_uninit(pos_max), pos, pos_limit;
     int64_t ts_min, ts_max, ts;
     int index;
-- 
1.7.10.4