[FFmpeg-devel] lavf:Constify AVInputFormat pointer

Submitted by Carl Eugen Hoyos on Feb. 9, 2019, 2:51 p.m.

Details

Message ID CAB0OVGoF9AHcLc3c5PdXq=4QTn5QuLvE2YcThmEcXk3x6m8bsQ@mail.gmail.com
State Accepted
Headers show

Commit Message

Carl Eugen Hoyos Feb. 9, 2019, 2:51 p.m.
2019-02-09 14:37 GMT+01:00, Carl Eugen Hoyos <ceffmpeg@gmail.com>:
> 2019-02-01 1:13 GMT+01:00, Michael Niedermayer <michael@niedermayer.cc>:
>> On Thu, Jan 31, 2019 at 09:54:14PM +0100, Carl Eugen Hoyos wrote:
>>> 2019-01-31 21:43 GMT+01:00, Carl Eugen Hoyos <ceffmpeg@gmail.com>:
>>> > Hi!
>>> >
>>> > Attached patch persistently uses "const" for AVInputFormat pointer
>>> > after the next version bump.
>>>
>>> Now with an actually working version.
>>>
>>> Please comment, Carl Eugen
>>
>>>  allformats.c |    6 +++++-
>>>  avformat.h   |   32 +++++++++++++++++++++++++++++++-
>>>  dashdec.c    |    3 +++
>>>  format.c     |   32 ++++++++++++++++++++++++++++++--
>>>  hls.c        |    3 +++
>>>  img2dec.c    |    2 +-
>>>  mpeg.c       |    3 +++
>>>  rtpdec_asf.c |    3 +++
>>>  sapdec.c     |    3 +++
>>>  utils.c      |   11 ++++++++---
>>>  version.h    |    3 +++
>>>  11 files changed, 93 insertions(+), 8 deletions(-)
>>> d3aece2f0b9a9c3ff8b2a187ceccdc744ea40de2
>>> 0001-lavf-Constify-AVInputFormat-pointer.patch
>>> From f383a7f914b2c7240378b404d529a7d73c68941b Mon Sep 17 00:00:00 2001
>>> From: Carl Eugen Hoyos <ceffmpeg@gmail.com>
>>> Date: Thu, 31 Jan 2019 21:51:56 +0100
>>> Subject: [PATCH] lavf: Constify AVInputFormat pointer.
>>>
>>> ---
>>>  libavformat/allformats.c |    6 +++++-
>>>  libavformat/avformat.h   |   32 +++++++++++++++++++++++++++++++-
>>>  libavformat/dashdec.c    |    3 +++
>>>  libavformat/format.c     |   32 ++++++++++++++++++++++++++++++--
>>>  libavformat/hls.c        |    3 +++
>>>  libavformat/img2dec.c    |    2 +-
>>>  libavformat/mpeg.c       |    3 +++
>>>  libavformat/rtpdec_asf.c |    3 +++
>>>  libavformat/sapdec.c     |    3 +++
>>>  libavformat/utils.c      |   11 ++++++++---
>>>  libavformat/version.h    |    3 +++
>>>  11 files changed, 93 insertions(+), 8 deletions(-)
>>>
>>> diff --git a/libavformat/allformats.c b/libavformat/allformats.c
>>> index 0684498..01c4c14 100644
>>> --- a/libavformat/allformats.c
>>> +++ b/libavformat/allformats.c
>>> @@ -583,7 +583,11 @@ AVInputFormat *av_iformat_next(const AVInputFormat
>>> *f)
>>>      ff_thread_once(&av_format_next_init, av_format_init_next);
>>>
>>>      if (f)
>>> -        return f->next;
>>> +        return
>>> +#if !FF_API_AVINPUTFORMAT
>>> +               (AVInputFormat *)
>>> +#endif
>>> +                                 f->next;
>>>      else {
>>>          void *opaque = NULL;
>>>          return (AVInputFormat *)av_demuxer_iterate(&opaque);
>>> diff --git a/libavformat/avformat.h b/libavformat/avformat.h
>>> index fdaffa5..7c4ec8f 100644
>>> --- a/libavformat/avformat.h
>>> +++ b/libavformat/avformat.h
>>> @@ -676,7 +676,10 @@ typedef struct AVInputFormat {
>>>       * New public fields should be added right above.
>>>       *****************************************************************
>>>       */
>>> -    struct AVInputFormat *next;
>>> +#if !FF_API_AVINPUTFORMAT
>>> +    const
>>> +#endif
>>> +struct AVInputFormat *next;
>>
>> some av_const59 which is defined to nothing until version 59
>> should avoid the repeated #if/endif
>> it would require an eventual update to change it to const at some
>> point but it would avoid most preprocessor comands
>
> New patch attached.

Now with correct condition.

Carl Eugen

Comments

Carl Eugen Hoyos Feb. 14, 2019, 8:54 p.m.
2019-02-09 15:51 GMT+01:00, Carl Eugen Hoyos <ceffmpeg@gmail.com>:
> 2019-02-09 14:37 GMT+01:00, Carl Eugen Hoyos <ceffmpeg@gmail.com>:
>> 2019-02-01 1:13 GMT+01:00, Michael Niedermayer <michael@niedermayer.cc>:
>>> On Thu, Jan 31, 2019 at 09:54:14PM +0100, Carl Eugen Hoyos wrote:
>>>> 2019-01-31 21:43 GMT+01:00, Carl Eugen Hoyos <ceffmpeg@gmail.com>:
>>>> > Hi!
>>>> >
>>>> > Attached patch persistently uses "const" for AVInputFormat pointer
>>>> > after the next version bump.
>>>>
>>>> Now with an actually working version.
>>>>
>>>> Please comment, Carl Eugen
>>>
>>>>  allformats.c |    6 +++++-
>>>>  avformat.h   |   32 +++++++++++++++++++++++++++++++-
>>>>  dashdec.c    |    3 +++
>>>>  format.c     |   32 ++++++++++++++++++++++++++++++--
>>>>  hls.c        |    3 +++
>>>>  img2dec.c    |    2 +-
>>>>  mpeg.c       |    3 +++
>>>>  rtpdec_asf.c |    3 +++
>>>>  sapdec.c     |    3 +++
>>>>  utils.c      |   11 ++++++++---
>>>>  version.h    |    3 +++
>>>>  11 files changed, 93 insertions(+), 8 deletions(-)
>>>> d3aece2f0b9a9c3ff8b2a187ceccdc744ea40de2
>>>> 0001-lavf-Constify-AVInputFormat-pointer.patch
>>>> From f383a7f914b2c7240378b404d529a7d73c68941b Mon Sep 17 00:00:00 2001
>>>> From: Carl Eugen Hoyos <ceffmpeg@gmail.com>
>>>> Date: Thu, 31 Jan 2019 21:51:56 +0100
>>>> Subject: [PATCH] lavf: Constify AVInputFormat pointer.
>>>>
>>>> ---
>>>>  libavformat/allformats.c |    6 +++++-
>>>>  libavformat/avformat.h   |   32 +++++++++++++++++++++++++++++++-
>>>>  libavformat/dashdec.c    |    3 +++
>>>>  libavformat/format.c     |   32 ++++++++++++++++++++++++++++++--
>>>>  libavformat/hls.c        |    3 +++
>>>>  libavformat/img2dec.c    |    2 +-
>>>>  libavformat/mpeg.c       |    3 +++
>>>>  libavformat/rtpdec_asf.c |    3 +++
>>>>  libavformat/sapdec.c     |    3 +++
>>>>  libavformat/utils.c      |   11 ++++++++---
>>>>  libavformat/version.h    |    3 +++
>>>>  11 files changed, 93 insertions(+), 8 deletions(-)
>>>>
>>>> diff --git a/libavformat/allformats.c b/libavformat/allformats.c
>>>> index 0684498..01c4c14 100644
>>>> --- a/libavformat/allformats.c
>>>> +++ b/libavformat/allformats.c
>>>> @@ -583,7 +583,11 @@ AVInputFormat *av_iformat_next(const AVInputFormat
>>>> *f)
>>>>      ff_thread_once(&av_format_next_init, av_format_init_next);
>>>>
>>>>      if (f)
>>>> -        return f->next;
>>>> +        return
>>>> +#if !FF_API_AVINPUTFORMAT
>>>> +               (AVInputFormat *)
>>>> +#endif
>>>> +                                 f->next;
>>>>      else {
>>>>          void *opaque = NULL;
>>>>          return (AVInputFormat *)av_demuxer_iterate(&opaque);
>>>> diff --git a/libavformat/avformat.h b/libavformat/avformat.h
>>>> index fdaffa5..7c4ec8f 100644
>>>> --- a/libavformat/avformat.h
>>>> +++ b/libavformat/avformat.h
>>>> @@ -676,7 +676,10 @@ typedef struct AVInputFormat {
>>>>       * New public fields should be added right above.
>>>>       *****************************************************************
>>>>       */
>>>> -    struct AVInputFormat *next;
>>>> +#if !FF_API_AVINPUTFORMAT
>>>> +    const
>>>> +#endif
>>>> +struct AVInputFormat *next;
>>>
>>> some av_const59 which is defined to nothing until version 59
>>> should avoid the repeated #if/endif
>>> it would require an eventual update to change it to const at some
>>> point but it would avoid most preprocessor comands
>>
>> New patch attached.
>
> Now with correct condition.

Ping.

Carl Eugen
Carl Eugen Hoyos March 20, 2019, 5:58 p.m.
2019-02-09 15:51 GMT+01:00, Carl Eugen Hoyos <ceffmpeg@gmail.com>:
> 2019-02-09 14:37 GMT+01:00, Carl Eugen Hoyos <ceffmpeg@gmail.com>:
>> 2019-02-01 1:13 GMT+01:00, Michael Niedermayer <michael@niedermayer.cc>:
>>> On Thu, Jan 31, 2019 at 09:54:14PM +0100, Carl Eugen Hoyos wrote:
>>>> 2019-01-31 21:43 GMT+01:00, Carl Eugen Hoyos <ceffmpeg@gmail.com>:
>>>> > Hi!
>>>> >
>>>> > Attached patch persistently uses "const" for AVInputFormat pointer
>>>> > after the next version bump.
>>>>
>>>> Now with an actually working version.
>>>>
>>>> Please comment, Carl Eugen
>>>
>>>>  allformats.c |    6 +++++-
>>>>  avformat.h   |   32 +++++++++++++++++++++++++++++++-
>>>>  dashdec.c    |    3 +++
>>>>  format.c     |   32 ++++++++++++++++++++++++++++++--
>>>>  hls.c        |    3 +++
>>>>  img2dec.c    |    2 +-
>>>>  mpeg.c       |    3 +++
>>>>  rtpdec_asf.c |    3 +++
>>>>  sapdec.c     |    3 +++
>>>>  utils.c      |   11 ++++++++---
>>>>  version.h    |    3 +++
>>>>  11 files changed, 93 insertions(+), 8 deletions(-)
>>>> d3aece2f0b9a9c3ff8b2a187ceccdc744ea40de2
>>>> 0001-lavf-Constify-AVInputFormat-pointer.patch
>>>> From f383a7f914b2c7240378b404d529a7d73c68941b Mon Sep 17 00:00:00 2001
>>>> From: Carl Eugen Hoyos <ceffmpeg@gmail.com>
>>>> Date: Thu, 31 Jan 2019 21:51:56 +0100
>>>> Subject: [PATCH] lavf: Constify AVInputFormat pointer.
>>>>
>>>> ---
>>>>  libavformat/allformats.c |    6 +++++-
>>>>  libavformat/avformat.h   |   32 +++++++++++++++++++++++++++++++-
>>>>  libavformat/dashdec.c    |    3 +++
>>>>  libavformat/format.c     |   32 ++++++++++++++++++++++++++++++--
>>>>  libavformat/hls.c        |    3 +++
>>>>  libavformat/img2dec.c    |    2 +-
>>>>  libavformat/mpeg.c       |    3 +++
>>>>  libavformat/rtpdec_asf.c |    3 +++
>>>>  libavformat/sapdec.c     |    3 +++
>>>>  libavformat/utils.c      |   11 ++++++++---
>>>>  libavformat/version.h    |    3 +++
>>>>  11 files changed, 93 insertions(+), 8 deletions(-)
>>>>
>>>> diff --git a/libavformat/allformats.c b/libavformat/allformats.c
>>>> index 0684498..01c4c14 100644
>>>> --- a/libavformat/allformats.c
>>>> +++ b/libavformat/allformats.c
>>>> @@ -583,7 +583,11 @@ AVInputFormat *av_iformat_next(const AVInputFormat
>>>> *f)
>>>>      ff_thread_once(&av_format_next_init, av_format_init_next);
>>>>
>>>>      if (f)
>>>> -        return f->next;
>>>> +        return
>>>> +#if !FF_API_AVINPUTFORMAT
>>>> +               (AVInputFormat *)
>>>> +#endif
>>>> +                                 f->next;
>>>>      else {
>>>>          void *opaque = NULL;
>>>>          return (AVInputFormat *)av_demuxer_iterate(&opaque);
>>>> diff --git a/libavformat/avformat.h b/libavformat/avformat.h
>>>> index fdaffa5..7c4ec8f 100644
>>>> --- a/libavformat/avformat.h
>>>> +++ b/libavformat/avformat.h
>>>> @@ -676,7 +676,10 @@ typedef struct AVInputFormat {
>>>>       * New public fields should be added right above.
>>>>       *****************************************************************
>>>>       */
>>>> -    struct AVInputFormat *next;
>>>> +#if !FF_API_AVINPUTFORMAT
>>>> +    const
>>>> +#endif
>>>> +struct AVInputFormat *next;
>>>
>>> some av_const59 which is defined to nothing until version 59
>>> should avoid the repeated #if/endif
>>> it would require an eventual update to change it to const at some
>>> point but it would avoid most preprocessor comands
>>
>> New patch attached.
>
> Now with correct condition.

Patch applied.

Carl Eugen
Lou Logan March 20, 2019, 6:23 p.m.
On Wed, Mar 20, 2019, at 9:58 AM, Carl Eugen Hoyos wrote:
>
> Patch applied.
> 

Breaks compilation for me on x86_64 linux:

/usr/bin/ld: libavformat/libavformat.a(allformats.o):(.data.rel.ro+0x398): undefined reference to `ff_kux_demuxer'
collect2: error: ld returned 1 exit status
make: *** [Makefile:108: ffmpeg_g] Error 1
Carl Eugen Hoyos March 20, 2019, 10:39 p.m.
2019-03-20 19:23 GMT+01:00, Lou Logan <lou@lrcd.com>:
> On Wed, Mar 20, 2019, at 9:58 AM, Carl Eugen Hoyos wrote:
>>
>> Patch applied.
>>
>
> Breaks compilation for me on x86_64 linux:

Should be fixed, sorry for the nuisance.

Thank you for the report, Carl Eugen

Patch hide | download patch | download mbox

From 7ab30f3dbc869ad9641d9b791bb9e3cd97a432fa Mon Sep 17 00:00:00 2001
From: Carl Eugen Hoyos <ceffmpeg@gmail.com>
Date: Sat, 9 Feb 2019 14:36:07 +0100
Subject: [PATCH] lavf: Constify AVInputFormat pointer.

---
 libavformat/allformats.c |    4 ++++
 libavformat/avformat.h   |   23 ++++++++++++++---------
 libavformat/avidec.c     |    2 +-
 libavformat/dashdec.c    |    2 +-
 libavformat/format.c     |   16 ++++++++--------
 libavformat/hls.c        |    2 +-
 libavformat/img2dec.c    |    2 +-
 libavformat/mpeg.c       |    2 +-
 libavformat/rtpdec_asf.c |    2 +-
 libavformat/sapdec.c     |    2 +-
 libavformat/utils.c      |    6 +++---
 libavformat/version.h    |    3 +++
 12 files changed, 39 insertions(+), 27 deletions(-)

diff --git a/libavformat/allformats.c b/libavformat/allformats.c
index 0684498..242edc3 100644
--- a/libavformat/allformats.c
+++ b/libavformat/allformats.c
@@ -583,7 +583,11 @@  AVInputFormat *av_iformat_next(const AVInputFormat *f)
     ff_thread_once(&av_format_next_init, av_format_init_next);
 
     if (f)
+#if FF_API_AVIOFORMAT
         return f->next;
+#else
+        return (AVInputFormat *) f->next;
+#endif
     else {
         void *opaque = NULL;
         return (AVInputFormat *)av_demuxer_iterate(&opaque);
diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index fdaffa5..a866c33 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -676,7 +676,12 @@  typedef struct AVInputFormat {
      * New public fields should be added right above.
      *****************************************************************
      */
-    struct AVInputFormat *next;
+#if FF_API_AVIOFORMAT
+#define av_const59
+#else
+#define av_const59 const
+#endif
+av_const59 struct AVInputFormat *next;
 
     /**
      * Raw demuxers store their codec ID here.
@@ -1346,7 +1351,7 @@  typedef struct AVFormatContext {
      *
      * Demuxing only, set by avformat_open_input().
      */
-    struct AVInputFormat *iformat;
+    av_const59 struct AVInputFormat *iformat;
 
     /**
      * The output container format.
@@ -2222,7 +2227,7 @@  int avformat_alloc_output_context2(AVFormatContext **ctx, AVOutputFormat *oforma
 /**
  * Find AVInputFormat based on the short name of the input format.
  */
-AVInputFormat *av_find_input_format(const char *short_name);
+av_const59 AVInputFormat *av_find_input_format(const char *short_name);
 
 /**
  * Guess the file format.
@@ -2231,7 +2236,7 @@  AVInputFormat *av_find_input_format(const char *short_name);
  * @param is_opened Whether the file is already opened; determines whether
  *                  demuxers with or without AVFMT_NOFILE are probed.
  */
-AVInputFormat *av_probe_input_format(AVProbeData *pd, int is_opened);
+av_const59 AVInputFormat *av_probe_input_format(AVProbeData *pd, int is_opened);
 
 /**
  * Guess the file format.
@@ -2245,7 +2250,7 @@  AVInputFormat *av_probe_input_format(AVProbeData *pd, int is_opened);
  *                  If the score is <= AVPROBE_SCORE_MAX / 4 it is recommended
  *                  to retry with a larger probe buffer.
  */
-AVInputFormat *av_probe_input_format2(AVProbeData *pd, int is_opened, int *score_max);
+av_const59 AVInputFormat *av_probe_input_format2(AVProbeData *pd, int is_opened, int *score_max);
 
 /**
  * Guess the file format.
@@ -2254,7 +2259,7 @@  AVInputFormat *av_probe_input_format2(AVProbeData *pd, int is_opened, int *score
  *                  demuxers with or without AVFMT_NOFILE are probed.
  * @param score_ret The score of the best detection.
  */
-AVInputFormat *av_probe_input_format3(AVProbeData *pd, int is_opened, int *score_ret);
+av_const59 AVInputFormat *av_probe_input_format3(AVProbeData *pd, int is_opened, int *score_ret);
 
 /**
  * Probe a bytestream to determine the input format. Each time a probe returns
@@ -2272,14 +2277,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, av_const59 AVInputFormat **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, av_const59 AVInputFormat **fmt,
                           const char *url, void *logctx,
                           unsigned int offset, unsigned int max_probe_size);
 
@@ -2302,7 +2307,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, av_const59 AVInputFormat *fmt, AVDictionary **options);
 
 attribute_deprecated
 int av_demuxer_open(AVFormatContext *ic);
diff --git a/libavformat/avidec.c b/libavformat/avidec.c
index 3f07479..7b589f9 100644
--- a/libavformat/avidec.c
+++ b/libavformat/avidec.c
@@ -1068,7 +1068,7 @@  static int read_gab2_sub(AVFormatContext *s, AVStream *st, AVPacket *pkt)
         uint8_t desc[256];
         int score      = AVPROBE_SCORE_EXTENSION, ret;
         AVIStream *ast = st->priv_data;
-        AVInputFormat *sub_demuxer;
+        av_const59 AVInputFormat *sub_demuxer;
         AVRational time_base;
         int size;
         AVIOContext *pb = avio_alloc_context(pkt->data + 7,
diff --git a/libavformat/dashdec.c b/libavformat/dashdec.c
index 89acd58..0512690 100644
--- a/libavformat/dashdec.c
+++ b/libavformat/dashdec.c
@@ -1851,7 +1851,7 @@  static void close_demux_for_component(struct representation *pls)
 static int reopen_demux_for_component(AVFormatContext *s, struct representation *pls)
 {
     DASHContext *c = s->priv_data;
-    AVInputFormat *in_fmt = NULL;
+    av_const59 AVInputFormat *in_fmt = NULL;
     AVDictionary  *in_fmt_opts = NULL;
     uint8_t *avio_ctx_buffer  = NULL;
     int ret = 0, i;
diff --git a/libavformat/format.c b/libavformat/format.c
index 2c4c895..3c2be62 100644
--- a/libavformat/format.c
+++ b/libavformat/format.c
@@ -115,7 +115,7 @@  enum AVCodecID av_guess_codec(AVOutputFormat *fmt, const char *short_name,
         return AV_CODEC_ID_NONE;
 }
 
-AVInputFormat *av_find_input_format(const char *short_name)
+av_const59 AVInputFormat *av_find_input_format(const char *short_name)
 {
     const AVInputFormat *fmt = NULL;
     void *i = 0;
@@ -125,12 +125,12 @@  AVInputFormat *av_find_input_format(const char *short_name)
     return NULL;
 }
 
-AVInputFormat *av_probe_input_format3(AVProbeData *pd, int is_opened,
+av_const59 AVInputFormat *av_probe_input_format3(AVProbeData *pd, int is_opened,
                                       int *score_ret)
 {
     AVProbeData lpd = *pd;
     const AVInputFormat *fmt1 = NULL;
-    AVInputFormat *fmt = NULL;
+    av_const59 AVInputFormat *fmt = NULL;
     int score, score_max = 0;
     void *i = 0;
     const static uint8_t zerobuffer[AVPROBE_PADDING_SIZE];
@@ -202,10 +202,10 @@  AVInputFormat *av_probe_input_format3(AVProbeData *pd, int is_opened,
     return fmt;
 }
 
-AVInputFormat *av_probe_input_format2(AVProbeData *pd, int is_opened, int *score_max)
+av_const59 AVInputFormat *av_probe_input_format2(AVProbeData *pd, int is_opened, int *score_max)
 {
     int score_ret;
-    AVInputFormat *fmt = av_probe_input_format3(pd, is_opened, &score_ret);
+    av_const59 AVInputFormat *fmt = av_probe_input_format3(pd, is_opened, &score_ret);
     if (score_ret > *score_max) {
         *score_max = score_ret;
         return fmt;
@@ -213,13 +213,13 @@  AVInputFormat *av_probe_input_format2(AVProbeData *pd, int is_opened, int *score
         return NULL;
 }
 
-AVInputFormat *av_probe_input_format(AVProbeData *pd, int is_opened)
+av_const59 AVInputFormat *av_probe_input_format(AVProbeData *pd, int is_opened)
 {
     int score = 0;
     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, av_const59 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, av_const59 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..61afc71 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;
+        av_const59 AVInputFormat *in_fmt = NULL;
 
         if (!(pls->ctx = avformat_alloc_context())) {
             ret = AVERROR(ENOMEM);
diff --git a/libavformat/img2dec.c b/libavformat/img2dec.c
index e82b1df..71d8aa3b 100644
--- a/libavformat/img2dec.c
+++ b/libavformat/img2dec.c
@@ -424,7 +424,7 @@  int ff_img_read_packet(AVFormatContext *s1, AVPacket *pkt)
 
         if (par->codec_id == AV_CODEC_ID_NONE) {
             AVProbeData pd = { 0 };
-            AVInputFormat *ifmt;
+            const AVInputFormat *ifmt;
             uint8_t header[PROBE_BUF_MIN + AVPROBE_PADDING_SIZE];
             int ret;
             int score = 0;
diff --git a/libavformat/mpeg.c b/libavformat/mpeg.c
index d4369b4..3b78d5f 100644
--- a/libavformat/mpeg.c
+++ b/libavformat/mpeg.c
@@ -722,7 +722,7 @@  static int vobsub_read_header(AVFormatContext *s)
     int stream_id = -1;
     char id[64] = {0};
     char alt[MAX_LINE_SIZE] = {0};
-    AVInputFormat *iformat;
+    av_const59 AVInputFormat *iformat;
 
     if (!vobsub->sub_name) {
         char *ext;
diff --git a/libavformat/rtpdec_asf.c b/libavformat/rtpdec_asf.c
index 54ffef6..2e79fe2 100644
--- a/libavformat/rtpdec_asf.c
+++ b/libavformat/rtpdec_asf.c
@@ -106,7 +106,7 @@  int ff_wms_parse_sdp_a_line(AVFormatContext *s, const char *p)
         AVDictionary *opts = NULL;
         int len = strlen(p) * 6 / 8;
         char *buf = av_mallocz(len);
-        AVInputFormat *iformat;
+        av_const59 AVInputFormat *iformat;
 
         if (!buf)
             return AVERROR(ENOMEM);
diff --git a/libavformat/sapdec.c b/libavformat/sapdec.c
index 7a6c8bf..e9debd7 100644
--- a/libavformat/sapdec.c
+++ b/libavformat/sapdec.c
@@ -68,7 +68,7 @@  static int sap_read_header(AVFormatContext *s)
     uint8_t recvbuf[RTP_MAX_PACKET_LENGTH];
     int port;
     int ret, i;
-    AVInputFormat* infmt;
+    av_const59 AVInputFormat* infmt;
 
     if (!ff_network_init())
         return AVERROR(EIO);
diff --git a/libavformat/utils.c b/libavformat/utils.c
index 7afef54..a48dde1 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -357,7 +357,7 @@  static int set_codec_from_probe_data(AVFormatContext *s, AVStream *st,
         { 0 }
     };
     int score;
-    AVInputFormat *fmt = av_probe_input_format3(pd, 1, &score);
+    const AVInputFormat *fmt = av_probe_input_format3(pd, 1, &score);
 
     if (fmt) {
         int i;
@@ -535,7 +535,7 @@  FF_ENABLE_DEPRECATION_WARNINGS
 
 
 int avformat_open_input(AVFormatContext **ps, const char *filename,
-                        AVInputFormat *fmt, AVDictionary **options)
+                        av_const59 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;
diff --git a/libavformat/version.h b/libavformat/version.h
index 4408eca..f189984 100644
--- a/libavformat/version.h
+++ b/libavformat/version.h
@@ -103,6 +103,9 @@ 
 #ifndef FF_API_LAVF_MP4A_LATM
 #define FF_API_LAVF_MP4A_LATM           (LIBAVFORMAT_VERSION_MAJOR < 59)
 #endif
+#ifndef FF_API_AVIOFORMAT
+#define FF_API_AVIOFORMAT               (LIBAVFORMAT_VERSION_MAJOR < 59)
+#endif
 
 
 #ifndef FF_API_R_FRAME_RATE
-- 
1.7.10.4