[FFmpeg-devel,07/17] lavc: Mark all AVHWAccel structures as const

Submitted by Mark Thompson on Nov. 24, 2017, 12:51 a.m.

Details

Message ID 20171124005134.5683-7-sw@jkqxz.net
State New
Headers show

Commit Message

Mark Thompson Nov. 24, 2017, 12:51 a.m.
---
 libavcodec/avcodec.h        |  2 +-
 libavcodec/decode.c         |  2 +-
 libavcodec/dxva2_h264.c     |  6 +--
 libavcodec/dxva2_hevc.c     |  6 +--
 libavcodec/dxva2_mpeg2.c    |  6 +--
 libavcodec/dxva2_vc1.c      | 12 +++---
 libavcodec/dxva2_vp9.c      |  6 +--
 libavcodec/hwaccels.h       | 98 ++++++++++++++++++++++-----------------------
 libavcodec/mpegvideo_xvmc.c |  4 +-
 libavcodec/nvdec_h264.c     |  2 +-
 libavcodec/nvdec_hevc.c     |  2 +-
 libavcodec/nvdec_mpeg12.c   |  2 +-
 libavcodec/nvdec_vc1.c      |  4 +-
 libavcodec/nvdec_vp9.c      |  2 +-
 libavcodec/vaapi_h264.c     |  2 +-
 libavcodec/vaapi_hevc.c     |  2 +-
 libavcodec/vaapi_mpeg2.c    |  2 +-
 libavcodec/vaapi_mpeg4.c    |  4 +-
 libavcodec/vaapi_vc1.c      |  4 +-
 libavcodec/vaapi_vp9.c      |  2 +-
 libavcodec/vdpau_h264.c     |  2 +-
 libavcodec/vdpau_hevc.c     |  2 +-
 libavcodec/vdpau_mpeg12.c   |  4 +-
 libavcodec/vdpau_mpeg4.c    |  2 +-
 libavcodec/vdpau_vc1.c      |  4 +-
 libavcodec/videotoolbox.c   | 12 +++---
 26 files changed, 98 insertions(+), 98 deletions(-)

Comments

Carl Eugen Hoyos Nov. 24, 2017, 11:29 a.m.
2017-11-24 1:51 GMT+01:00 Mark Thompson <sw@jkqxz.net>:

> diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
> index 1ae0344bb2..0972df0bde 100644
> --- a/libavcodec/avcodec.h
> +++ b/libavcodec/avcodec.h
> @@ -2635,7 +2635,7 @@ typedef struct AVCodecContext {
>       * - encoding: unused.
>       * - decoding: Set by libavcodec
>       */
> -    struct AVHWAccel *hwaccel;
> +    const struct AVHWAccel *hwaccel;

Please bump minor (and perhaps add a note for api), iirc
this has an impact for some toolchains, no?

Carl Eugen
Mark Thompson Nov. 24, 2017, 11:42 a.m.
On 24/11/17 11:29, Carl Eugen Hoyos wrote:
> 2017-11-24 1:51 GMT+01:00 Mark Thompson <sw@jkqxz.net>:
> 
>> diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
>> index 1ae0344bb2..0972df0bde 100644
>> --- a/libavcodec/avcodec.h
>> +++ b/libavcodec/avcodec.h
>> @@ -2635,7 +2635,7 @@ typedef struct AVCodecContext {
>>       * - encoding: unused.
>>       * - decoding: Set by libavcodec
>>       */
>> -    struct AVHWAccel *hwaccel;
>> +    const struct AVHWAccel *hwaccel;
> 
> Please bump minor (and perhaps add a note for api),

Sure.

"""
2017-xx-xx - xxxxxxx - lavc 58.x+1.100 - avcodec.h
  Add const to AVCodecContext.hwaccel.
"""

> iirc this has an impact for some toolchains, no?

I don't think so?  C requires that const-qualified and unqualified versions of a type have the same representation.  Adding const could affect C++ name mangling, but we don't support building directly with C++ ("extern \"C\"" is needed).

- Mark
Carl Eugen Hoyos Nov. 24, 2017, 12:06 p.m.
2017-11-24 12:42 GMT+01:00 Mark Thompson <sw@jkqxz.net>:
> On 24/11/17 11:29, Carl Eugen Hoyos wrote:
>> 2017-11-24 1:51 GMT+01:00 Mark Thompson <sw@jkqxz.net>:
>>
>>> diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
>>> index 1ae0344bb2..0972df0bde 100644
>>> --- a/libavcodec/avcodec.h
>>> +++ b/libavcodec/avcodec.h
>>> @@ -2635,7 +2635,7 @@ typedef struct AVCodecContext {
>>>       * - encoding: unused.
>>>       * - decoding: Set by libavcodec
>>>       */
>>> -    struct AVHWAccel *hwaccel;
>>> +    const struct AVHWAccel *hwaccel;
>>
>> Please bump minor (and perhaps add a note for api),
>
> Sure.
>
> """
> 2017-xx-xx - xxxxxxx - lavc 58.x+1.100 - avcodec.h
>   Add const to AVCodecContext.hwaccel.
> """
>
>> iirc this has an impact for some toolchains, no?
>
> I don't think so?  C requires that const-qualified and
> unqualified versions of a type have the same representation.

> Adding const could affect C++ name mangling, but we don't
> support building directly with C++ ("extern \"C\"" is needed).

I thought that this is an issue, but I may misremember.

Carl Eugen
Philip Langdale Nov. 24, 2017, 5:15 p.m.
On Fri, 24 Nov 2017 00:51:24 +0000
Mark Thompson <sw@jkqxz.net> wrote:

> ---
>  libavcodec/avcodec.h        |  2 +-
>  libavcodec/decode.c         |  2 +-
>  libavcodec/dxva2_h264.c     |  6 +--
>  libavcodec/dxva2_hevc.c     |  6 +--
>  libavcodec/dxva2_mpeg2.c    |  6 +--
>  libavcodec/dxva2_vc1.c      | 12 +++---
>  libavcodec/dxva2_vp9.c      |  6 +--
>  libavcodec/hwaccels.h       | 98
> ++++++++++++++++++++++-----------------------
> libavcodec/mpegvideo_xvmc.c |  4 +- libavcodec/nvdec_h264.c     |  2
> +- libavcodec/nvdec_hevc.c     |  2 +-
>  libavcodec/nvdec_mpeg12.c   |  2 +-
>  libavcodec/nvdec_vc1.c      |  4 +-
>  libavcodec/nvdec_vp9.c      |  2 +-
>  libavcodec/vaapi_h264.c     |  2 +-
>  libavcodec/vaapi_hevc.c     |  2 +-
>  libavcodec/vaapi_mpeg2.c    |  2 +-
>  libavcodec/vaapi_mpeg4.c    |  4 +-
>  libavcodec/vaapi_vc1.c      |  4 +-
>  libavcodec/vaapi_vp9.c      |  2 +-
>  libavcodec/vdpau_h264.c     |  2 +-
>  libavcodec/vdpau_hevc.c     |  2 +-
>  libavcodec/vdpau_mpeg12.c   |  4 +-
>  libavcodec/vdpau_mpeg4.c    |  2 +-
>  libavcodec/vdpau_vc1.c      |  4 +-
>  libavcodec/videotoolbox.c   | 12 +++---
>  26 files changed, 98 insertions(+), 98 deletions(-)

You're missing nvdec_mpeg4.

> diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
> index 1ae0344bb2..0972df0bde 100644
> --- a/libavcodec/avcodec.h
> +++ b/libavcodec/avcodec.h
> @@ -2635,7 +2635,7 @@ typedef struct AVCodecContext {
>       * - encoding: unused.
>       * - decoding: Set by libavcodec
>       */
> -    struct AVHWAccel *hwaccel;
> +    const struct AVHWAccel *hwaccel;
>  
>      /**
>       * Hardware accelerator context.
> diff --git a/libavcodec/decode.c b/libavcodec/decode.c
> index dd6fce86eb..3feaa6c426 100644
> --- a/libavcodec/decode.c
> +++ b/libavcodec/decode.c
> @@ -1252,7 +1252,7 @@ static int hwaccel_init(AVCodecContext *avctx,
>              return AVERROR(ENOMEM);
>      }
>  
> -    avctx->hwaccel = (AVHWAccel*)hwaccel;
> +    avctx->hwaccel = hwaccel;
>      err = hwaccel->init(avctx);
>      if (err < 0) {
>          av_log(avctx, AV_LOG_ERROR, "Failed setup for format %s: "
> diff --git a/libavcodec/dxva2_h264.c b/libavcodec/dxva2_h264.c
> index ee35b20e82..a4278c80b5 100644
> --- a/libavcodec/dxva2_h264.c
> +++ b/libavcodec/dxva2_h264.c
> @@ -518,7 +518,7 @@ static int dxva2_h264_end_frame(AVCodecContext
> *avctx) }
>  
>  #if CONFIG_H264_DXVA2_HWACCEL
> -AVHWAccel ff_h264_dxva2_hwaccel = {
> +const AVHWAccel ff_h264_dxva2_hwaccel = {
>      .name           = "h264_dxva2",
>      .type           = AVMEDIA_TYPE_VIDEO,
>      .id             = AV_CODEC_ID_H264,
> @@ -535,7 +535,7 @@ AVHWAccel ff_h264_dxva2_hwaccel = {
>  #endif
>  
>  #if CONFIG_H264_D3D11VA_HWACCEL
> -AVHWAccel ff_h264_d3d11va_hwaccel = {
> +const AVHWAccel ff_h264_d3d11va_hwaccel = {
>      .name           = "h264_d3d11va",
>      .type           = AVMEDIA_TYPE_VIDEO,
>      .id             = AV_CODEC_ID_H264,
> @@ -552,7 +552,7 @@ AVHWAccel ff_h264_d3d11va_hwaccel = {
>  #endif
>  
>  #if CONFIG_H264_D3D11VA2_HWACCEL
> -AVHWAccel ff_h264_d3d11va2_hwaccel = {
> +const AVHWAccel ff_h264_d3d11va2_hwaccel = {
>      .name           = "h264_d3d11va2",
>      .type           = AVMEDIA_TYPE_VIDEO,
>      .id             = AV_CODEC_ID_H264,
> diff --git a/libavcodec/dxva2_hevc.c b/libavcodec/dxva2_hevc.c
> index 542afc383a..0ae07d304f 100644
> --- a/libavcodec/dxva2_hevc.c
> +++ b/libavcodec/dxva2_hevc.c
> @@ -422,7 +422,7 @@ static int dxva2_hevc_end_frame(AVCodecContext
> *avctx) }
>  
>  #if CONFIG_HEVC_DXVA2_HWACCEL
> -AVHWAccel ff_hevc_dxva2_hwaccel = {
> +const AVHWAccel ff_hevc_dxva2_hwaccel = {
>      .name           = "hevc_dxva2",
>      .type           = AVMEDIA_TYPE_VIDEO,
>      .id             = AV_CODEC_ID_HEVC,
> @@ -439,7 +439,7 @@ AVHWAccel ff_hevc_dxva2_hwaccel = {
>  #endif
>  
>  #if CONFIG_HEVC_D3D11VA_HWACCEL
> -AVHWAccel ff_hevc_d3d11va_hwaccel = {
> +const AVHWAccel ff_hevc_d3d11va_hwaccel = {
>      .name           = "hevc_d3d11va",
>      .type           = AVMEDIA_TYPE_VIDEO,
>      .id             = AV_CODEC_ID_HEVC,
> @@ -456,7 +456,7 @@ AVHWAccel ff_hevc_d3d11va_hwaccel = {
>  #endif
>  
>  #if CONFIG_HEVC_D3D11VA2_HWACCEL
> -AVHWAccel ff_hevc_d3d11va2_hwaccel = {
> +const AVHWAccel ff_hevc_d3d11va2_hwaccel = {
>      .name           = "hevc_d3d11va2",
>      .type           = AVMEDIA_TYPE_VIDEO,
>      .id             = AV_CODEC_ID_HEVC,
> diff --git a/libavcodec/dxva2_mpeg2.c b/libavcodec/dxva2_mpeg2.c
> index df5fe59a7d..a57778b427 100644
> --- a/libavcodec/dxva2_mpeg2.c
> +++ b/libavcodec/dxva2_mpeg2.c
> @@ -317,7 +317,7 @@ static int dxva2_mpeg2_end_frame(AVCodecContext
> *avctx) }
>  
>  #if CONFIG_MPEG2_DXVA2_HWACCEL
> -AVHWAccel ff_mpeg2_dxva2_hwaccel = {
> +const AVHWAccel ff_mpeg2_dxva2_hwaccel = {
>      .name           = "mpeg2_dxva2",
>      .type           = AVMEDIA_TYPE_VIDEO,
>      .id             = AV_CODEC_ID_MPEG2VIDEO,
> @@ -334,7 +334,7 @@ AVHWAccel ff_mpeg2_dxva2_hwaccel = {
>  #endif
>  
>  #if CONFIG_MPEG2_D3D11VA_HWACCEL
> -AVHWAccel ff_mpeg2_d3d11va_hwaccel = {
> +const AVHWAccel ff_mpeg2_d3d11va_hwaccel = {
>      .name           = "mpeg2_d3d11va",
>      .type           = AVMEDIA_TYPE_VIDEO,
>      .id             = AV_CODEC_ID_MPEG2VIDEO,
> @@ -351,7 +351,7 @@ AVHWAccel ff_mpeg2_d3d11va_hwaccel = {
>  #endif
>  
>  #if CONFIG_MPEG2_D3D11VA2_HWACCEL
> -AVHWAccel ff_mpeg2_d3d11va2_hwaccel = {
> +const AVHWAccel ff_mpeg2_d3d11va2_hwaccel = {
>      .name           = "mpeg2_d3d11va2",
>      .type           = AVMEDIA_TYPE_VIDEO,
>      .id             = AV_CODEC_ID_MPEG2VIDEO,
> diff --git a/libavcodec/dxva2_vc1.c b/libavcodec/dxva2_vc1.c
> index f21c5d5544..f22c73cd1e 100644
> --- a/libavcodec/dxva2_vc1.c
> +++ b/libavcodec/dxva2_vc1.c
> @@ -378,7 +378,7 @@ static int dxva2_vc1_end_frame(AVCodecContext
> *avctx) }
>  
>  #if CONFIG_WMV3_DXVA2_HWACCEL
> -AVHWAccel ff_wmv3_dxva2_hwaccel = {
> +const AVHWAccel ff_wmv3_dxva2_hwaccel = {
>      .name           = "wmv3_dxva2",
>      .type           = AVMEDIA_TYPE_VIDEO,
>      .id             = AV_CODEC_ID_WMV3,
> @@ -395,7 +395,7 @@ AVHWAccel ff_wmv3_dxva2_hwaccel = {
>  #endif
>  
>  #if CONFIG_VC1_DXVA2_HWACCEL
> -AVHWAccel ff_vc1_dxva2_hwaccel = {
> +const AVHWAccel ff_vc1_dxva2_hwaccel = {
>      .name           = "vc1_dxva2",
>      .type           = AVMEDIA_TYPE_VIDEO,
>      .id             = AV_CODEC_ID_VC1,
> @@ -412,7 +412,7 @@ AVHWAccel ff_vc1_dxva2_hwaccel = {
>  #endif
>  
>  #if CONFIG_WMV3_D3D11VA_HWACCEL
> -AVHWAccel ff_wmv3_d3d11va_hwaccel = {
> +const AVHWAccel ff_wmv3_d3d11va_hwaccel = {
>      .name           = "wmv3_d3d11va",
>      .type           = AVMEDIA_TYPE_VIDEO,
>      .id             = AV_CODEC_ID_WMV3,
> @@ -429,7 +429,7 @@ AVHWAccel ff_wmv3_d3d11va_hwaccel = {
>  #endif
>  
>  #if CONFIG_WMV3_D3D11VA2_HWACCEL
> -AVHWAccel ff_wmv3_d3d11va2_hwaccel = {
> +const AVHWAccel ff_wmv3_d3d11va2_hwaccel = {
>      .name           = "wmv3_d3d11va2",
>      .type           = AVMEDIA_TYPE_VIDEO,
>      .id             = AV_CODEC_ID_WMV3,
> @@ -446,7 +446,7 @@ AVHWAccel ff_wmv3_d3d11va2_hwaccel = {
>  #endif
>  
>  #if CONFIG_VC1_D3D11VA_HWACCEL
> -AVHWAccel ff_vc1_d3d11va_hwaccel = {
> +const AVHWAccel ff_vc1_d3d11va_hwaccel = {
>      .name           = "vc1_d3d11va",
>      .type           = AVMEDIA_TYPE_VIDEO,
>      .id             = AV_CODEC_ID_VC1,
> @@ -463,7 +463,7 @@ AVHWAccel ff_vc1_d3d11va_hwaccel = {
>  #endif
>  
>  #if CONFIG_VC1_D3D11VA2_HWACCEL
> -AVHWAccel ff_vc1_d3d11va2_hwaccel = {
> +const AVHWAccel ff_vc1_d3d11va2_hwaccel = {
>      .name           = "vc1_d3d11va2",
>      .type           = AVMEDIA_TYPE_VIDEO,
>      .id             = AV_CODEC_ID_VC1,
> diff --git a/libavcodec/dxva2_vp9.c b/libavcodec/dxva2_vp9.c
> index a2e55f5736..5a5b226422 100644
> --- a/libavcodec/dxva2_vp9.c
> +++ b/libavcodec/dxva2_vp9.c
> @@ -309,7 +309,7 @@ static int dxva2_vp9_end_frame(AVCodecContext
> *avctx) }
>  
>  #if CONFIG_VP9_DXVA2_HWACCEL
> -AVHWAccel ff_vp9_dxva2_hwaccel = {
> +const AVHWAccel ff_vp9_dxva2_hwaccel = {
>      .name           = "vp9_dxva2",
>      .type           = AVMEDIA_TYPE_VIDEO,
>      .id             = AV_CODEC_ID_VP9,
> @@ -326,7 +326,7 @@ AVHWAccel ff_vp9_dxva2_hwaccel = {
>  #endif
>  
>  #if CONFIG_VP9_D3D11VA_HWACCEL
> -AVHWAccel ff_vp9_d3d11va_hwaccel = {
> +const AVHWAccel ff_vp9_d3d11va_hwaccel = {
>      .name           = "vp9_d3d11va",
>      .type           = AVMEDIA_TYPE_VIDEO,
>      .id             = AV_CODEC_ID_VP9,
> @@ -343,7 +343,7 @@ AVHWAccel ff_vp9_d3d11va_hwaccel = {
>  #endif
>  
>  #if CONFIG_VP9_D3D11VA2_HWACCEL
> -AVHWAccel ff_vp9_d3d11va2_hwaccel = {
> +const AVHWAccel ff_vp9_d3d11va2_hwaccel = {
>      .name           = "vp9_d3d11va2",
>      .type           = AVMEDIA_TYPE_VIDEO,
>      .id             = AV_CODEC_ID_VP9,
> diff --git a/libavcodec/hwaccels.h b/libavcodec/hwaccels.h
> index 9a3008a92c..8a3c29e435 100644
> --- a/libavcodec/hwaccels.h
> +++ b/libavcodec/hwaccels.h
> @@ -21,54 +21,54 @@
>  
>  #include "avcodec.h"
>  
> -extern AVHWAccel ff_h263_vaapi_hwaccel;
> -extern AVHWAccel ff_h263_videotoolbox_hwaccel;
> -extern AVHWAccel ff_h264_d3d11va_hwaccel;
> -extern AVHWAccel ff_h264_d3d11va2_hwaccel;
> -extern AVHWAccel ff_h264_dxva2_hwaccel;
> -extern AVHWAccel ff_h264_nvdec_hwaccel;
> -extern AVHWAccel ff_h264_vaapi_hwaccel;
> -extern AVHWAccel ff_h264_vdpau_hwaccel;
> -extern AVHWAccel ff_h264_videotoolbox_hwaccel;
> -extern AVHWAccel ff_hevc_d3d11va_hwaccel;
> -extern AVHWAccel ff_hevc_d3d11va2_hwaccel;
> -extern AVHWAccel ff_hevc_dxva2_hwaccel;
> -extern AVHWAccel ff_hevc_nvdec_hwaccel;
> -extern AVHWAccel ff_hevc_vaapi_hwaccel;
> -extern AVHWAccel ff_hevc_vdpau_hwaccel;
> -extern AVHWAccel ff_hevc_videotoolbox_hwaccel;
> -extern AVHWAccel ff_mpeg1_nvdec_hwaccel;
> -extern AVHWAccel ff_mpeg1_vdpau_hwaccel;
> -extern AVHWAccel ff_mpeg1_videotoolbox_hwaccel;
> -extern AVHWAccel ff_mpeg1_xvmc_hwaccel;
> -extern AVHWAccel ff_mpeg2_d3d11va_hwaccel;
> -extern AVHWAccel ff_mpeg2_d3d11va2_hwaccel;
> -extern AVHWAccel ff_mpeg2_nvdec_hwaccel;
> -extern AVHWAccel ff_mpeg2_dxva2_hwaccel;
> -extern AVHWAccel ff_mpeg2_vaapi_hwaccel;
> -extern AVHWAccel ff_mpeg2_vdpau_hwaccel;
> -extern AVHWAccel ff_mpeg2_videotoolbox_hwaccel;
> -extern AVHWAccel ff_mpeg2_xvmc_hwaccel;
> -extern AVHWAccel ff_mpeg4_nvdec_hwaccel;
> -extern AVHWAccel ff_mpeg4_vaapi_hwaccel;
> -extern AVHWAccel ff_mpeg4_vdpau_hwaccel;
> -extern AVHWAccel ff_mpeg4_videotoolbox_hwaccel;
> -extern AVHWAccel ff_vc1_d3d11va_hwaccel;
> -extern AVHWAccel ff_vc1_d3d11va2_hwaccel;
> -extern AVHWAccel ff_vc1_dxva2_hwaccel;
> -extern AVHWAccel ff_vc1_nvdec_hwaccel;
> -extern AVHWAccel ff_vc1_vaapi_hwaccel;
> -extern AVHWAccel ff_vc1_vdpau_hwaccel;
> -extern AVHWAccel ff_vp9_d3d11va_hwaccel;
> -extern AVHWAccel ff_vp9_d3d11va2_hwaccel;
> -extern AVHWAccel ff_vp9_dxva2_hwaccel;
> -extern AVHWAccel ff_vp9_nvdec_hwaccel;
> -extern AVHWAccel ff_vp9_vaapi_hwaccel;
> -extern AVHWAccel ff_wmv3_d3d11va_hwaccel;
> -extern AVHWAccel ff_wmv3_d3d11va2_hwaccel;
> -extern AVHWAccel ff_wmv3_dxva2_hwaccel;
> -extern AVHWAccel ff_wmv3_nvdec_hwaccel;
> -extern AVHWAccel ff_wmv3_vaapi_hwaccel;
> -extern AVHWAccel ff_wmv3_vdpau_hwaccel;
> +extern const AVHWAccel ff_h263_vaapi_hwaccel;
> +extern const AVHWAccel ff_h263_videotoolbox_hwaccel;
> +extern const AVHWAccel ff_h264_d3d11va_hwaccel;
> +extern const AVHWAccel ff_h264_d3d11va2_hwaccel;
> +extern const AVHWAccel ff_h264_dxva2_hwaccel;
> +extern const AVHWAccel ff_h264_nvdec_hwaccel;
> +extern const AVHWAccel ff_h264_vaapi_hwaccel;
> +extern const AVHWAccel ff_h264_vdpau_hwaccel;
> +extern const AVHWAccel ff_h264_videotoolbox_hwaccel;
> +extern const AVHWAccel ff_hevc_d3d11va_hwaccel;
> +extern const AVHWAccel ff_hevc_d3d11va2_hwaccel;
> +extern const AVHWAccel ff_hevc_dxva2_hwaccel;
> +extern const AVHWAccel ff_hevc_nvdec_hwaccel;
> +extern const AVHWAccel ff_hevc_vaapi_hwaccel;
> +extern const AVHWAccel ff_hevc_vdpau_hwaccel;
> +extern const AVHWAccel ff_hevc_videotoolbox_hwaccel;
> +extern const AVHWAccel ff_mpeg1_nvdec_hwaccel;
> +extern const AVHWAccel ff_mpeg1_vdpau_hwaccel;
> +extern const AVHWAccel ff_mpeg1_videotoolbox_hwaccel;
> +extern const AVHWAccel ff_mpeg1_xvmc_hwaccel;
> +extern const AVHWAccel ff_mpeg2_d3d11va_hwaccel;
> +extern const AVHWAccel ff_mpeg2_d3d11va2_hwaccel;
> +extern const AVHWAccel ff_mpeg2_nvdec_hwaccel;
> +extern const AVHWAccel ff_mpeg2_dxva2_hwaccel;
> +extern const AVHWAccel ff_mpeg2_vaapi_hwaccel;
> +extern const AVHWAccel ff_mpeg2_vdpau_hwaccel;
> +extern const AVHWAccel ff_mpeg2_videotoolbox_hwaccel;
> +extern const AVHWAccel ff_mpeg2_xvmc_hwaccel;
> +extern const AVHWAccel ff_mpeg4_nvdec_hwaccel;
> +extern const AVHWAccel ff_mpeg4_vaapi_hwaccel;
> +extern const AVHWAccel ff_mpeg4_vdpau_hwaccel;
> +extern const AVHWAccel ff_mpeg4_videotoolbox_hwaccel;
> +extern const AVHWAccel ff_vc1_d3d11va_hwaccel;
> +extern const AVHWAccel ff_vc1_d3d11va2_hwaccel;
> +extern const AVHWAccel ff_vc1_dxva2_hwaccel;
> +extern const AVHWAccel ff_vc1_nvdec_hwaccel;
> +extern const AVHWAccel ff_vc1_vaapi_hwaccel;
> +extern const AVHWAccel ff_vc1_vdpau_hwaccel;
> +extern const AVHWAccel ff_vp9_d3d11va_hwaccel;
> +extern const AVHWAccel ff_vp9_d3d11va2_hwaccel;
> +extern const AVHWAccel ff_vp9_dxva2_hwaccel;
> +extern const AVHWAccel ff_vp9_nvdec_hwaccel;
> +extern const AVHWAccel ff_vp9_vaapi_hwaccel;
> +extern const AVHWAccel ff_wmv3_d3d11va_hwaccel;
> +extern const AVHWAccel ff_wmv3_d3d11va2_hwaccel;
> +extern const AVHWAccel ff_wmv3_dxva2_hwaccel;
> +extern const AVHWAccel ff_wmv3_nvdec_hwaccel;
> +extern const AVHWAccel ff_wmv3_vaapi_hwaccel;
> +extern const AVHWAccel ff_wmv3_vdpau_hwaccel;
>  
>  #endif /* AVCODEC_HWACCELS_H */
> diff --git a/libavcodec/mpegvideo_xvmc.c b/libavcodec/mpegvideo_xvmc.c
> index 519a448161..f06583768c 100644
> --- a/libavcodec/mpegvideo_xvmc.c
> +++ b/libavcodec/mpegvideo_xvmc.c
> @@ -348,7 +348,7 @@ static void ff_xvmc_decode_mb(struct
> MpegEncContext *s) }
>  
>  #if CONFIG_MPEG1_XVMC_HWACCEL
> -AVHWAccel ff_mpeg1_xvmc_hwaccel = {
> +const AVHWAccel ff_mpeg1_xvmc_hwaccel = {
>      .name           = "mpeg1_xvmc",
>      .type           = AVMEDIA_TYPE_VIDEO,
>      .id             = AV_CODEC_ID_MPEG1VIDEO,
> @@ -362,7 +362,7 @@ AVHWAccel ff_mpeg1_xvmc_hwaccel = {
>  #endif
>  
>  #if CONFIG_MPEG2_XVMC_HWACCEL
> -AVHWAccel ff_mpeg2_xvmc_hwaccel = {
> +const AVHWAccel ff_mpeg2_xvmc_hwaccel = {
>      .name           = "mpeg2_xvmc",
>      .type           = AVMEDIA_TYPE_VIDEO,
>      .id             = AV_CODEC_ID_MPEG2VIDEO,
> diff --git a/libavcodec/nvdec_h264.c b/libavcodec/nvdec_h264.c
> index b0e756c734..35f54f2ed5 100644
> --- a/libavcodec/nvdec_h264.c
> +++ b/libavcodec/nvdec_h264.c
> @@ -163,7 +163,7 @@ static int nvdec_h264_frame_params(AVCodecContext
> *avctx, return ff_nvdec_frame_params(avctx, hw_frames_ctx,
> sps->ref_frame_count + sps->num_reorder_frames); }
>  
> -AVHWAccel ff_h264_nvdec_hwaccel = {
> +const AVHWAccel ff_h264_nvdec_hwaccel = {
>      .name                 = "h264_nvdec",
>      .type                 = AVMEDIA_TYPE_VIDEO,
>      .id                   = AV_CODEC_ID_H264,
> diff --git a/libavcodec/nvdec_hevc.c b/libavcodec/nvdec_hevc.c
> index f02a7a15fe..58f3fa9b45 100644
> --- a/libavcodec/nvdec_hevc.c
> +++ b/libavcodec/nvdec_hevc.c
> @@ -266,7 +266,7 @@ static int nvdec_hevc_frame_params(AVCodecContext
> *avctx, return ff_nvdec_frame_params(avctx, hw_frames_ctx,
> sps->temporal_layer[sps->max_sub_layers - 1].max_dec_pic_buffering +
> 1); } 
> -AVHWAccel ff_hevc_nvdec_hwaccel = {
> +const AVHWAccel ff_hevc_nvdec_hwaccel = {
>      .name                 = "hevc_nvdec",
>      .type                 = AVMEDIA_TYPE_VIDEO,
>      .id                   = AV_CODEC_ID_HEVC,
> diff --git a/libavcodec/nvdec_mpeg12.c b/libavcodec/nvdec_mpeg12.c
> index e29d085a79..249893a168 100644
> --- a/libavcodec/nvdec_mpeg12.c
> +++ b/libavcodec/nvdec_mpeg12.c
> @@ -91,7 +91,7 @@ static int nvdec_mpeg12_frame_params(AVCodecContext
> *avctx, }
>  
>  #if CONFIG_MPEG2_NVDEC_HWACCEL
> -AVHWAccel ff_mpeg2_nvdec_hwaccel = {
> +const AVHWAccel ff_mpeg2_nvdec_hwaccel = {
>      .name                 = "mpeg2_nvdec",
>      .type                 = AVMEDIA_TYPE_VIDEO,
>      .id                   = AV_CODEC_ID_MPEG2VIDEO,
> diff --git a/libavcodec/nvdec_vc1.c b/libavcodec/nvdec_vc1.c
> index c04b153a86..7257692d66 100644
> --- a/libavcodec/nvdec_vc1.c
> +++ b/libavcodec/nvdec_vc1.c
> @@ -110,7 +110,7 @@ static int nvdec_vc1_frame_params(AVCodecContext
> *avctx, return ff_nvdec_frame_params(avctx, hw_frames_ctx, 2);
>  }
>  
> -AVHWAccel ff_vc1_nvdec_hwaccel = {
> +const AVHWAccel ff_vc1_nvdec_hwaccel = {
>      .name                 = "vc1_nvdec",
>      .type                 = AVMEDIA_TYPE_VIDEO,
>      .id                   = AV_CODEC_ID_VC1,
> @@ -125,7 +125,7 @@ AVHWAccel ff_vc1_nvdec_hwaccel = {
>  };
>  
>  #if CONFIG_WMV3_NVDEC_HWACCEL
> -AVHWAccel ff_wmv3_nvdec_hwaccel = {
> +const AVHWAccel ff_wmv3_nvdec_hwaccel = {
>      .name                 = "wmv3_nvdec",
>      .type                 = AVMEDIA_TYPE_VIDEO,
>      .id                   = AV_CODEC_ID_WMV3,
> diff --git a/libavcodec/nvdec_vp9.c b/libavcodec/nvdec_vp9.c
> index ed06d91416..3b665a9bc7 100644
> --- a/libavcodec/nvdec_vp9.c
> +++ b/libavcodec/nvdec_vp9.c
> @@ -169,7 +169,7 @@ static int nvdec_vp9_frame_params(AVCodecContext
> *avctx, return ff_nvdec_frame_params(avctx, hw_frames_ctx, 8);
>  }
>  
> -AVHWAccel ff_vp9_nvdec_hwaccel = {
> +const AVHWAccel ff_vp9_nvdec_hwaccel = {
>      .name                 = "vp9_nvdec",
>      .type                 = AVMEDIA_TYPE_VIDEO,
>      .id                   = AV_CODEC_ID_VP9,
> diff --git a/libavcodec/vaapi_h264.c b/libavcodec/vaapi_h264.c
> index c7f9d7bcb4..5854587a25 100644
> --- a/libavcodec/vaapi_h264.c
> +++ b/libavcodec/vaapi_h264.c
> @@ -388,7 +388,7 @@ static int vaapi_h264_decode_slice(AVCodecContext
> *avctx, return 0;
>  }
>  
> -AVHWAccel ff_h264_vaapi_hwaccel = {
> +const AVHWAccel ff_h264_vaapi_hwaccel = {
>      .name                 = "h264_vaapi",
>      .type                 = AVMEDIA_TYPE_VIDEO,
>      .id                   = AV_CODEC_ID_H264,
> diff --git a/libavcodec/vaapi_hevc.c b/libavcodec/vaapi_hevc.c
> index 718ccc92a2..19aabcdb52 100644
> --- a/libavcodec/vaapi_hevc.c
> +++ b/libavcodec/vaapi_hevc.c
> @@ -423,7 +423,7 @@ static int vaapi_hevc_decode_slice(AVCodecContext
> *avctx, return 0;
>  }
>  
> -AVHWAccel ff_hevc_vaapi_hwaccel = {
> +const AVHWAccel ff_hevc_vaapi_hwaccel = {
>      .name                 = "hevc_vaapi",
>      .type                 = AVMEDIA_TYPE_VIDEO,
>      .id                   = AV_CODEC_ID_HEVC,
> diff --git a/libavcodec/vaapi_mpeg2.c b/libavcodec/vaapi_mpeg2.c
> index fd5be8d8ae..aaed434c88 100644
> --- a/libavcodec/vaapi_mpeg2.c
> +++ b/libavcodec/vaapi_mpeg2.c
> @@ -172,7 +172,7 @@ static int
> vaapi_mpeg2_decode_slice(AVCodecContext *avctx, const uint8_t *buffer
> return 0; }
>  
> -AVHWAccel ff_mpeg2_vaapi_hwaccel = {
> +const AVHWAccel ff_mpeg2_vaapi_hwaccel = {
>      .name                 = "mpeg2_vaapi",
>      .type                 = AVMEDIA_TYPE_VIDEO,
>      .id                   = AV_CODEC_ID_MPEG2VIDEO,
> diff --git a/libavcodec/vaapi_mpeg4.c b/libavcodec/vaapi_mpeg4.c
> index 3fe029186e..11860ff747 100644
> --- a/libavcodec/vaapi_mpeg4.c
> +++ b/libavcodec/vaapi_mpeg4.c
> @@ -178,7 +178,7 @@ static int
> vaapi_mpeg4_decode_slice(AVCodecContext *avctx, const uint8_t
> *buffer } 
>  #if CONFIG_MPEG4_VAAPI_HWACCEL
> -AVHWAccel ff_mpeg4_vaapi_hwaccel = {
> +const AVHWAccel ff_mpeg4_vaapi_hwaccel = {
>      .name                 = "mpeg4_vaapi",
>      .type                 = AVMEDIA_TYPE_VIDEO,
>      .id                   = AV_CODEC_ID_MPEG4,
> @@ -196,7 +196,7 @@ AVHWAccel ff_mpeg4_vaapi_hwaccel = {
>  #endif
>  
>  #if CONFIG_H263_VAAPI_HWACCEL
> -AVHWAccel ff_h263_vaapi_hwaccel = {
> +const AVHWAccel ff_h263_vaapi_hwaccel = {
>      .name                 = "h263_vaapi",
>      .type                 = AVMEDIA_TYPE_VIDEO,
>      .id                   = AV_CODEC_ID_H263,
> diff --git a/libavcodec/vaapi_vc1.c b/libavcodec/vaapi_vc1.c
> index 49675744cd..525376790e 100644
> --- a/libavcodec/vaapi_vc1.c
> +++ b/libavcodec/vaapi_vc1.c
> @@ -388,7 +388,7 @@ static int vaapi_vc1_decode_slice(AVCodecContext
> *avctx, const uint8_t *buffer, }
>  
>  #if CONFIG_WMV3_VAAPI_HWACCEL
> -AVHWAccel ff_wmv3_vaapi_hwaccel = {
> +const AVHWAccel ff_wmv3_vaapi_hwaccel = {
>      .name                 = "wmv3_vaapi",
>      .type                 = AVMEDIA_TYPE_VIDEO,
>      .id                   = AV_CODEC_ID_WMV3,
> @@ -405,7 +405,7 @@ AVHWAccel ff_wmv3_vaapi_hwaccel = {
>  };
>  #endif
>  
> -AVHWAccel ff_vc1_vaapi_hwaccel = {
> +const AVHWAccel ff_vc1_vaapi_hwaccel = {
>      .name                 = "vc1_vaapi",
>      .type                 = AVMEDIA_TYPE_VIDEO,
>      .id                   = AV_CODEC_ID_VC1,
> diff --git a/libavcodec/vaapi_vp9.c b/libavcodec/vaapi_vp9.c
> index f295dc9ebb..f384ba7873 100644
> --- a/libavcodec/vaapi_vp9.c
> +++ b/libavcodec/vaapi_vp9.c
> @@ -168,7 +168,7 @@ static int vaapi_vp9_decode_slice(AVCodecContext
> *avctx, return 0;
>  }
>  
> -AVHWAccel ff_vp9_vaapi_hwaccel = {
> +const AVHWAccel ff_vp9_vaapi_hwaccel = {
>      .name                 = "vp9_vaapi",
>      .type                 = AVMEDIA_TYPE_VIDEO,
>      .id                   = AV_CODEC_ID_VP9,
> diff --git a/libavcodec/vdpau_h264.c b/libavcodec/vdpau_h264.c
> index 70f83d76f5..2a260f76ab 100644
> --- a/libavcodec/vdpau_h264.c
> +++ b/libavcodec/vdpau_h264.c
> @@ -262,7 +262,7 @@ static int vdpau_h264_init(AVCodecContext *avctx)
>      return ff_vdpau_common_init(avctx, profile, level);
>  }
>  
> -AVHWAccel ff_h264_vdpau_hwaccel = {
> +const AVHWAccel ff_h264_vdpau_hwaccel = {
>      .name           = "h264_vdpau",
>      .type           = AVMEDIA_TYPE_VIDEO,
>      .id             = AV_CODEC_ID_H264,
> diff --git a/libavcodec/vdpau_hevc.c b/libavcodec/vdpau_hevc.c
> index 70e76cfcaa..421135bce2 100644
> --- a/libavcodec/vdpau_hevc.c
> +++ b/libavcodec/vdpau_hevc.c
> @@ -413,7 +413,7 @@ static int vdpau_hevc_init(AVCodecContext *avctx)
>      return ff_vdpau_common_init(avctx, profile, level);
>  }
>  
> -AVHWAccel ff_hevc_vdpau_hwaccel = {
> +const AVHWAccel ff_hevc_vdpau_hwaccel = {
>      .name           = "hevc_vdpau",
>      .type           = AVMEDIA_TYPE_VIDEO,
>      .id             = AV_CODEC_ID_HEVC,
> diff --git a/libavcodec/vdpau_mpeg12.c b/libavcodec/vdpau_mpeg12.c
> index 71fe889abf..d286e7e57d 100644
> --- a/libavcodec/vdpau_mpeg12.c
> +++ b/libavcodec/vdpau_mpeg12.c
> @@ -103,7 +103,7 @@ static int vdpau_mpeg1_init(AVCodecContext *avctx)
>                                  VDP_DECODER_LEVEL_MPEG1_NA);
>  }
>  
> -AVHWAccel ff_mpeg1_vdpau_hwaccel = {
> +const AVHWAccel ff_mpeg1_vdpau_hwaccel = {
>      .name           = "mpeg1_vdpau",
>      .type           = AVMEDIA_TYPE_VIDEO,
>      .id             = AV_CODEC_ID_MPEG1VIDEO,
> @@ -138,7 +138,7 @@ static int vdpau_mpeg2_init(AVCodecContext *avctx)
>      return ff_vdpau_common_init(avctx, profile,
> VDP_DECODER_LEVEL_MPEG2_HL); }
>  
> -AVHWAccel ff_mpeg2_vdpau_hwaccel = {
> +const AVHWAccel ff_mpeg2_vdpau_hwaccel = {
>      .name           = "mpeg2_vdpau",
>      .type           = AVMEDIA_TYPE_VIDEO,
>      .id             = AV_CODEC_ID_MPEG2VIDEO,
> diff --git a/libavcodec/vdpau_mpeg4.c b/libavcodec/vdpau_mpeg4.c
> index 653ef7e7e7..96f83026a8 100644
> --- a/libavcodec/vdpau_mpeg4.c
> +++ b/libavcodec/vdpau_mpeg4.c
> @@ -110,7 +110,7 @@ static int vdpau_mpeg4_init(AVCodecContext *avctx)
>      return ff_vdpau_common_init(avctx, profile, avctx->level);
>  }
>  
> -AVHWAccel ff_mpeg4_vdpau_hwaccel = {
> +const AVHWAccel ff_mpeg4_vdpau_hwaccel = {
>      .name           = "mpeg4_vdpau",
>      .type           = AVMEDIA_TYPE_VIDEO,
>      .id             = AV_CODEC_ID_MPEG4,
> diff --git a/libavcodec/vdpau_vc1.c b/libavcodec/vdpau_vc1.c
> index 73d83f6577..671baf96b4 100644
> --- a/libavcodec/vdpau_vc1.c
> +++ b/libavcodec/vdpau_vc1.c
> @@ -136,7 +136,7 @@ static int vdpau_vc1_init(AVCodecContext *avctx)
>  }
>  
>  #if CONFIG_WMV3_VDPAU_HWACCEL
> -AVHWAccel ff_wmv3_vdpau_hwaccel = {
> +const AVHWAccel ff_wmv3_vdpau_hwaccel = {
>      .name           = "wm3_vdpau",
>      .type           = AVMEDIA_TYPE_VIDEO,
>      .id             = AV_CODEC_ID_WMV3,
> @@ -153,7 +153,7 @@ AVHWAccel ff_wmv3_vdpau_hwaccel = {
>  };
>  #endif
>  
> -AVHWAccel ff_vc1_vdpau_hwaccel = {
> +const AVHWAccel ff_vc1_vdpau_hwaccel = {
>      .name           = "vc1_vdpau",
>      .type           = AVMEDIA_TYPE_VIDEO,
>      .id             = AV_CODEC_ID_VC1,
> diff --git a/libavcodec/videotoolbox.c b/libavcodec/videotoolbox.c
> index d29607363c..c275e0111e 100644
> --- a/libavcodec/videotoolbox.c
> +++ b/libavcodec/videotoolbox.c
> @@ -1028,7 +1028,7 @@ static int
> videotoolbox_frame_params(AVCodecContext *avctx, return 0;
>  }
>  
> -AVHWAccel ff_h263_videotoolbox_hwaccel = {
> +const AVHWAccel ff_h263_videotoolbox_hwaccel = {
>      .name           = "h263_videotoolbox",
>      .type           = AVMEDIA_TYPE_VIDEO,
>      .id             = AV_CODEC_ID_H263,
> @@ -1043,7 +1043,7 @@ AVHWAccel ff_h263_videotoolbox_hwaccel = {
>      .priv_data_size = sizeof(VTContext),
>  };
>  
> -AVHWAccel ff_hevc_videotoolbox_hwaccel = {
> +const AVHWAccel ff_hevc_videotoolbox_hwaccel = {
>      .name           = "hevc_videotoolbox",
>      .type           = AVMEDIA_TYPE_VIDEO,
>      .id             = AV_CODEC_ID_HEVC,
> @@ -1059,7 +1059,7 @@ AVHWAccel ff_hevc_videotoolbox_hwaccel = {
>      .priv_data_size = sizeof(VTContext),
>  };
>  
> -AVHWAccel ff_h264_videotoolbox_hwaccel = {
> +const AVHWAccel ff_h264_videotoolbox_hwaccel = {
>      .name           = "h264_videotoolbox",
>      .type           = AVMEDIA_TYPE_VIDEO,
>      .id             = AV_CODEC_ID_H264,
> @@ -1075,7 +1075,7 @@ AVHWAccel ff_h264_videotoolbox_hwaccel = {
>      .priv_data_size = sizeof(VTContext),
>  };
>  
> -AVHWAccel ff_mpeg1_videotoolbox_hwaccel = {
> +const AVHWAccel ff_mpeg1_videotoolbox_hwaccel = {
>      .name           = "mpeg1_videotoolbox",
>      .type           = AVMEDIA_TYPE_VIDEO,
>      .id             = AV_CODEC_ID_MPEG1VIDEO,
> @@ -1090,7 +1090,7 @@ AVHWAccel ff_mpeg1_videotoolbox_hwaccel = {
>      .priv_data_size = sizeof(VTContext),
>  };
>  
> -AVHWAccel ff_mpeg2_videotoolbox_hwaccel = {
> +const AVHWAccel ff_mpeg2_videotoolbox_hwaccel = {
>      .name           = "mpeg2_videotoolbox",
>      .type           = AVMEDIA_TYPE_VIDEO,
>      .id             = AV_CODEC_ID_MPEG2VIDEO,
> @@ -1105,7 +1105,7 @@ AVHWAccel ff_mpeg2_videotoolbox_hwaccel = {
>      .priv_data_size = sizeof(VTContext),
>  };
>  
> -AVHWAccel ff_mpeg4_videotoolbox_hwaccel = {
> +const AVHWAccel ff_mpeg4_videotoolbox_hwaccel = {
>      .name           = "mpeg4_videotoolbox",
>      .type           = AVMEDIA_TYPE_VIDEO,
>      .id             = AV_CODEC_ID_MPEG4,




--phil

Patch hide | download patch | download mbox

diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
index 1ae0344bb2..0972df0bde 100644
--- a/libavcodec/avcodec.h
+++ b/libavcodec/avcodec.h
@@ -2635,7 +2635,7 @@  typedef struct AVCodecContext {
      * - encoding: unused.
      * - decoding: Set by libavcodec
      */
-    struct AVHWAccel *hwaccel;
+    const struct AVHWAccel *hwaccel;
 
     /**
      * Hardware accelerator context.
diff --git a/libavcodec/decode.c b/libavcodec/decode.c
index dd6fce86eb..3feaa6c426 100644
--- a/libavcodec/decode.c
+++ b/libavcodec/decode.c
@@ -1252,7 +1252,7 @@  static int hwaccel_init(AVCodecContext *avctx,
             return AVERROR(ENOMEM);
     }
 
-    avctx->hwaccel = (AVHWAccel*)hwaccel;
+    avctx->hwaccel = hwaccel;
     err = hwaccel->init(avctx);
     if (err < 0) {
         av_log(avctx, AV_LOG_ERROR, "Failed setup for format %s: "
diff --git a/libavcodec/dxva2_h264.c b/libavcodec/dxva2_h264.c
index ee35b20e82..a4278c80b5 100644
--- a/libavcodec/dxva2_h264.c
+++ b/libavcodec/dxva2_h264.c
@@ -518,7 +518,7 @@  static int dxva2_h264_end_frame(AVCodecContext *avctx)
 }
 
 #if CONFIG_H264_DXVA2_HWACCEL
-AVHWAccel ff_h264_dxva2_hwaccel = {
+const AVHWAccel ff_h264_dxva2_hwaccel = {
     .name           = "h264_dxva2",
     .type           = AVMEDIA_TYPE_VIDEO,
     .id             = AV_CODEC_ID_H264,
@@ -535,7 +535,7 @@  AVHWAccel ff_h264_dxva2_hwaccel = {
 #endif
 
 #if CONFIG_H264_D3D11VA_HWACCEL
-AVHWAccel ff_h264_d3d11va_hwaccel = {
+const AVHWAccel ff_h264_d3d11va_hwaccel = {
     .name           = "h264_d3d11va",
     .type           = AVMEDIA_TYPE_VIDEO,
     .id             = AV_CODEC_ID_H264,
@@ -552,7 +552,7 @@  AVHWAccel ff_h264_d3d11va_hwaccel = {
 #endif
 
 #if CONFIG_H264_D3D11VA2_HWACCEL
-AVHWAccel ff_h264_d3d11va2_hwaccel = {
+const AVHWAccel ff_h264_d3d11va2_hwaccel = {
     .name           = "h264_d3d11va2",
     .type           = AVMEDIA_TYPE_VIDEO,
     .id             = AV_CODEC_ID_H264,
diff --git a/libavcodec/dxva2_hevc.c b/libavcodec/dxva2_hevc.c
index 542afc383a..0ae07d304f 100644
--- a/libavcodec/dxva2_hevc.c
+++ b/libavcodec/dxva2_hevc.c
@@ -422,7 +422,7 @@  static int dxva2_hevc_end_frame(AVCodecContext *avctx)
 }
 
 #if CONFIG_HEVC_DXVA2_HWACCEL
-AVHWAccel ff_hevc_dxva2_hwaccel = {
+const AVHWAccel ff_hevc_dxva2_hwaccel = {
     .name           = "hevc_dxva2",
     .type           = AVMEDIA_TYPE_VIDEO,
     .id             = AV_CODEC_ID_HEVC,
@@ -439,7 +439,7 @@  AVHWAccel ff_hevc_dxva2_hwaccel = {
 #endif
 
 #if CONFIG_HEVC_D3D11VA_HWACCEL
-AVHWAccel ff_hevc_d3d11va_hwaccel = {
+const AVHWAccel ff_hevc_d3d11va_hwaccel = {
     .name           = "hevc_d3d11va",
     .type           = AVMEDIA_TYPE_VIDEO,
     .id             = AV_CODEC_ID_HEVC,
@@ -456,7 +456,7 @@  AVHWAccel ff_hevc_d3d11va_hwaccel = {
 #endif
 
 #if CONFIG_HEVC_D3D11VA2_HWACCEL
-AVHWAccel ff_hevc_d3d11va2_hwaccel = {
+const AVHWAccel ff_hevc_d3d11va2_hwaccel = {
     .name           = "hevc_d3d11va2",
     .type           = AVMEDIA_TYPE_VIDEO,
     .id             = AV_CODEC_ID_HEVC,
diff --git a/libavcodec/dxva2_mpeg2.c b/libavcodec/dxva2_mpeg2.c
index df5fe59a7d..a57778b427 100644
--- a/libavcodec/dxva2_mpeg2.c
+++ b/libavcodec/dxva2_mpeg2.c
@@ -317,7 +317,7 @@  static int dxva2_mpeg2_end_frame(AVCodecContext *avctx)
 }
 
 #if CONFIG_MPEG2_DXVA2_HWACCEL
-AVHWAccel ff_mpeg2_dxva2_hwaccel = {
+const AVHWAccel ff_mpeg2_dxva2_hwaccel = {
     .name           = "mpeg2_dxva2",
     .type           = AVMEDIA_TYPE_VIDEO,
     .id             = AV_CODEC_ID_MPEG2VIDEO,
@@ -334,7 +334,7 @@  AVHWAccel ff_mpeg2_dxva2_hwaccel = {
 #endif
 
 #if CONFIG_MPEG2_D3D11VA_HWACCEL
-AVHWAccel ff_mpeg2_d3d11va_hwaccel = {
+const AVHWAccel ff_mpeg2_d3d11va_hwaccel = {
     .name           = "mpeg2_d3d11va",
     .type           = AVMEDIA_TYPE_VIDEO,
     .id             = AV_CODEC_ID_MPEG2VIDEO,
@@ -351,7 +351,7 @@  AVHWAccel ff_mpeg2_d3d11va_hwaccel = {
 #endif
 
 #if CONFIG_MPEG2_D3D11VA2_HWACCEL
-AVHWAccel ff_mpeg2_d3d11va2_hwaccel = {
+const AVHWAccel ff_mpeg2_d3d11va2_hwaccel = {
     .name           = "mpeg2_d3d11va2",
     .type           = AVMEDIA_TYPE_VIDEO,
     .id             = AV_CODEC_ID_MPEG2VIDEO,
diff --git a/libavcodec/dxva2_vc1.c b/libavcodec/dxva2_vc1.c
index f21c5d5544..f22c73cd1e 100644
--- a/libavcodec/dxva2_vc1.c
+++ b/libavcodec/dxva2_vc1.c
@@ -378,7 +378,7 @@  static int dxva2_vc1_end_frame(AVCodecContext *avctx)
 }
 
 #if CONFIG_WMV3_DXVA2_HWACCEL
-AVHWAccel ff_wmv3_dxva2_hwaccel = {
+const AVHWAccel ff_wmv3_dxva2_hwaccel = {
     .name           = "wmv3_dxva2",
     .type           = AVMEDIA_TYPE_VIDEO,
     .id             = AV_CODEC_ID_WMV3,
@@ -395,7 +395,7 @@  AVHWAccel ff_wmv3_dxva2_hwaccel = {
 #endif
 
 #if CONFIG_VC1_DXVA2_HWACCEL
-AVHWAccel ff_vc1_dxva2_hwaccel = {
+const AVHWAccel ff_vc1_dxva2_hwaccel = {
     .name           = "vc1_dxva2",
     .type           = AVMEDIA_TYPE_VIDEO,
     .id             = AV_CODEC_ID_VC1,
@@ -412,7 +412,7 @@  AVHWAccel ff_vc1_dxva2_hwaccel = {
 #endif
 
 #if CONFIG_WMV3_D3D11VA_HWACCEL
-AVHWAccel ff_wmv3_d3d11va_hwaccel = {
+const AVHWAccel ff_wmv3_d3d11va_hwaccel = {
     .name           = "wmv3_d3d11va",
     .type           = AVMEDIA_TYPE_VIDEO,
     .id             = AV_CODEC_ID_WMV3,
@@ -429,7 +429,7 @@  AVHWAccel ff_wmv3_d3d11va_hwaccel = {
 #endif
 
 #if CONFIG_WMV3_D3D11VA2_HWACCEL
-AVHWAccel ff_wmv3_d3d11va2_hwaccel = {
+const AVHWAccel ff_wmv3_d3d11va2_hwaccel = {
     .name           = "wmv3_d3d11va2",
     .type           = AVMEDIA_TYPE_VIDEO,
     .id             = AV_CODEC_ID_WMV3,
@@ -446,7 +446,7 @@  AVHWAccel ff_wmv3_d3d11va2_hwaccel = {
 #endif
 
 #if CONFIG_VC1_D3D11VA_HWACCEL
-AVHWAccel ff_vc1_d3d11va_hwaccel = {
+const AVHWAccel ff_vc1_d3d11va_hwaccel = {
     .name           = "vc1_d3d11va",
     .type           = AVMEDIA_TYPE_VIDEO,
     .id             = AV_CODEC_ID_VC1,
@@ -463,7 +463,7 @@  AVHWAccel ff_vc1_d3d11va_hwaccel = {
 #endif
 
 #if CONFIG_VC1_D3D11VA2_HWACCEL
-AVHWAccel ff_vc1_d3d11va2_hwaccel = {
+const AVHWAccel ff_vc1_d3d11va2_hwaccel = {
     .name           = "vc1_d3d11va2",
     .type           = AVMEDIA_TYPE_VIDEO,
     .id             = AV_CODEC_ID_VC1,
diff --git a/libavcodec/dxva2_vp9.c b/libavcodec/dxva2_vp9.c
index a2e55f5736..5a5b226422 100644
--- a/libavcodec/dxva2_vp9.c
+++ b/libavcodec/dxva2_vp9.c
@@ -309,7 +309,7 @@  static int dxva2_vp9_end_frame(AVCodecContext *avctx)
 }
 
 #if CONFIG_VP9_DXVA2_HWACCEL
-AVHWAccel ff_vp9_dxva2_hwaccel = {
+const AVHWAccel ff_vp9_dxva2_hwaccel = {
     .name           = "vp9_dxva2",
     .type           = AVMEDIA_TYPE_VIDEO,
     .id             = AV_CODEC_ID_VP9,
@@ -326,7 +326,7 @@  AVHWAccel ff_vp9_dxva2_hwaccel = {
 #endif
 
 #if CONFIG_VP9_D3D11VA_HWACCEL
-AVHWAccel ff_vp9_d3d11va_hwaccel = {
+const AVHWAccel ff_vp9_d3d11va_hwaccel = {
     .name           = "vp9_d3d11va",
     .type           = AVMEDIA_TYPE_VIDEO,
     .id             = AV_CODEC_ID_VP9,
@@ -343,7 +343,7 @@  AVHWAccel ff_vp9_d3d11va_hwaccel = {
 #endif
 
 #if CONFIG_VP9_D3D11VA2_HWACCEL
-AVHWAccel ff_vp9_d3d11va2_hwaccel = {
+const AVHWAccel ff_vp9_d3d11va2_hwaccel = {
     .name           = "vp9_d3d11va2",
     .type           = AVMEDIA_TYPE_VIDEO,
     .id             = AV_CODEC_ID_VP9,
diff --git a/libavcodec/hwaccels.h b/libavcodec/hwaccels.h
index 9a3008a92c..8a3c29e435 100644
--- a/libavcodec/hwaccels.h
+++ b/libavcodec/hwaccels.h
@@ -21,54 +21,54 @@ 
 
 #include "avcodec.h"
 
-extern AVHWAccel ff_h263_vaapi_hwaccel;
-extern AVHWAccel ff_h263_videotoolbox_hwaccel;
-extern AVHWAccel ff_h264_d3d11va_hwaccel;
-extern AVHWAccel ff_h264_d3d11va2_hwaccel;
-extern AVHWAccel ff_h264_dxva2_hwaccel;
-extern AVHWAccel ff_h264_nvdec_hwaccel;
-extern AVHWAccel ff_h264_vaapi_hwaccel;
-extern AVHWAccel ff_h264_vdpau_hwaccel;
-extern AVHWAccel ff_h264_videotoolbox_hwaccel;
-extern AVHWAccel ff_hevc_d3d11va_hwaccel;
-extern AVHWAccel ff_hevc_d3d11va2_hwaccel;
-extern AVHWAccel ff_hevc_dxva2_hwaccel;
-extern AVHWAccel ff_hevc_nvdec_hwaccel;
-extern AVHWAccel ff_hevc_vaapi_hwaccel;
-extern AVHWAccel ff_hevc_vdpau_hwaccel;
-extern AVHWAccel ff_hevc_videotoolbox_hwaccel;
-extern AVHWAccel ff_mpeg1_nvdec_hwaccel;
-extern AVHWAccel ff_mpeg1_vdpau_hwaccel;
-extern AVHWAccel ff_mpeg1_videotoolbox_hwaccel;
-extern AVHWAccel ff_mpeg1_xvmc_hwaccel;
-extern AVHWAccel ff_mpeg2_d3d11va_hwaccel;
-extern AVHWAccel ff_mpeg2_d3d11va2_hwaccel;
-extern AVHWAccel ff_mpeg2_nvdec_hwaccel;
-extern AVHWAccel ff_mpeg2_dxva2_hwaccel;
-extern AVHWAccel ff_mpeg2_vaapi_hwaccel;
-extern AVHWAccel ff_mpeg2_vdpau_hwaccel;
-extern AVHWAccel ff_mpeg2_videotoolbox_hwaccel;
-extern AVHWAccel ff_mpeg2_xvmc_hwaccel;
-extern AVHWAccel ff_mpeg4_nvdec_hwaccel;
-extern AVHWAccel ff_mpeg4_vaapi_hwaccel;
-extern AVHWAccel ff_mpeg4_vdpau_hwaccel;
-extern AVHWAccel ff_mpeg4_videotoolbox_hwaccel;
-extern AVHWAccel ff_vc1_d3d11va_hwaccel;
-extern AVHWAccel ff_vc1_d3d11va2_hwaccel;
-extern AVHWAccel ff_vc1_dxva2_hwaccel;
-extern AVHWAccel ff_vc1_nvdec_hwaccel;
-extern AVHWAccel ff_vc1_vaapi_hwaccel;
-extern AVHWAccel ff_vc1_vdpau_hwaccel;
-extern AVHWAccel ff_vp9_d3d11va_hwaccel;
-extern AVHWAccel ff_vp9_d3d11va2_hwaccel;
-extern AVHWAccel ff_vp9_dxva2_hwaccel;
-extern AVHWAccel ff_vp9_nvdec_hwaccel;
-extern AVHWAccel ff_vp9_vaapi_hwaccel;
-extern AVHWAccel ff_wmv3_d3d11va_hwaccel;
-extern AVHWAccel ff_wmv3_d3d11va2_hwaccel;
-extern AVHWAccel ff_wmv3_dxva2_hwaccel;
-extern AVHWAccel ff_wmv3_nvdec_hwaccel;
-extern AVHWAccel ff_wmv3_vaapi_hwaccel;
-extern AVHWAccel ff_wmv3_vdpau_hwaccel;
+extern const AVHWAccel ff_h263_vaapi_hwaccel;
+extern const AVHWAccel ff_h263_videotoolbox_hwaccel;
+extern const AVHWAccel ff_h264_d3d11va_hwaccel;
+extern const AVHWAccel ff_h264_d3d11va2_hwaccel;
+extern const AVHWAccel ff_h264_dxva2_hwaccel;
+extern const AVHWAccel ff_h264_nvdec_hwaccel;
+extern const AVHWAccel ff_h264_vaapi_hwaccel;
+extern const AVHWAccel ff_h264_vdpau_hwaccel;
+extern const AVHWAccel ff_h264_videotoolbox_hwaccel;
+extern const AVHWAccel ff_hevc_d3d11va_hwaccel;
+extern const AVHWAccel ff_hevc_d3d11va2_hwaccel;
+extern const AVHWAccel ff_hevc_dxva2_hwaccel;
+extern const AVHWAccel ff_hevc_nvdec_hwaccel;
+extern const AVHWAccel ff_hevc_vaapi_hwaccel;
+extern const AVHWAccel ff_hevc_vdpau_hwaccel;
+extern const AVHWAccel ff_hevc_videotoolbox_hwaccel;
+extern const AVHWAccel ff_mpeg1_nvdec_hwaccel;
+extern const AVHWAccel ff_mpeg1_vdpau_hwaccel;
+extern const AVHWAccel ff_mpeg1_videotoolbox_hwaccel;
+extern const AVHWAccel ff_mpeg1_xvmc_hwaccel;
+extern const AVHWAccel ff_mpeg2_d3d11va_hwaccel;
+extern const AVHWAccel ff_mpeg2_d3d11va2_hwaccel;
+extern const AVHWAccel ff_mpeg2_nvdec_hwaccel;
+extern const AVHWAccel ff_mpeg2_dxva2_hwaccel;
+extern const AVHWAccel ff_mpeg2_vaapi_hwaccel;
+extern const AVHWAccel ff_mpeg2_vdpau_hwaccel;
+extern const AVHWAccel ff_mpeg2_videotoolbox_hwaccel;
+extern const AVHWAccel ff_mpeg2_xvmc_hwaccel;
+extern const AVHWAccel ff_mpeg4_nvdec_hwaccel;
+extern const AVHWAccel ff_mpeg4_vaapi_hwaccel;
+extern const AVHWAccel ff_mpeg4_vdpau_hwaccel;
+extern const AVHWAccel ff_mpeg4_videotoolbox_hwaccel;
+extern const AVHWAccel ff_vc1_d3d11va_hwaccel;
+extern const AVHWAccel ff_vc1_d3d11va2_hwaccel;
+extern const AVHWAccel ff_vc1_dxva2_hwaccel;
+extern const AVHWAccel ff_vc1_nvdec_hwaccel;
+extern const AVHWAccel ff_vc1_vaapi_hwaccel;
+extern const AVHWAccel ff_vc1_vdpau_hwaccel;
+extern const AVHWAccel ff_vp9_d3d11va_hwaccel;
+extern const AVHWAccel ff_vp9_d3d11va2_hwaccel;
+extern const AVHWAccel ff_vp9_dxva2_hwaccel;
+extern const AVHWAccel ff_vp9_nvdec_hwaccel;
+extern const AVHWAccel ff_vp9_vaapi_hwaccel;
+extern const AVHWAccel ff_wmv3_d3d11va_hwaccel;
+extern const AVHWAccel ff_wmv3_d3d11va2_hwaccel;
+extern const AVHWAccel ff_wmv3_dxva2_hwaccel;
+extern const AVHWAccel ff_wmv3_nvdec_hwaccel;
+extern const AVHWAccel ff_wmv3_vaapi_hwaccel;
+extern const AVHWAccel ff_wmv3_vdpau_hwaccel;
 
 #endif /* AVCODEC_HWACCELS_H */
diff --git a/libavcodec/mpegvideo_xvmc.c b/libavcodec/mpegvideo_xvmc.c
index 519a448161..f06583768c 100644
--- a/libavcodec/mpegvideo_xvmc.c
+++ b/libavcodec/mpegvideo_xvmc.c
@@ -348,7 +348,7 @@  static void ff_xvmc_decode_mb(struct MpegEncContext *s)
 }
 
 #if CONFIG_MPEG1_XVMC_HWACCEL
-AVHWAccel ff_mpeg1_xvmc_hwaccel = {
+const AVHWAccel ff_mpeg1_xvmc_hwaccel = {
     .name           = "mpeg1_xvmc",
     .type           = AVMEDIA_TYPE_VIDEO,
     .id             = AV_CODEC_ID_MPEG1VIDEO,
@@ -362,7 +362,7 @@  AVHWAccel ff_mpeg1_xvmc_hwaccel = {
 #endif
 
 #if CONFIG_MPEG2_XVMC_HWACCEL
-AVHWAccel ff_mpeg2_xvmc_hwaccel = {
+const AVHWAccel ff_mpeg2_xvmc_hwaccel = {
     .name           = "mpeg2_xvmc",
     .type           = AVMEDIA_TYPE_VIDEO,
     .id             = AV_CODEC_ID_MPEG2VIDEO,
diff --git a/libavcodec/nvdec_h264.c b/libavcodec/nvdec_h264.c
index b0e756c734..35f54f2ed5 100644
--- a/libavcodec/nvdec_h264.c
+++ b/libavcodec/nvdec_h264.c
@@ -163,7 +163,7 @@  static int nvdec_h264_frame_params(AVCodecContext *avctx,
     return ff_nvdec_frame_params(avctx, hw_frames_ctx, sps->ref_frame_count + sps->num_reorder_frames);
 }
 
-AVHWAccel ff_h264_nvdec_hwaccel = {
+const AVHWAccel ff_h264_nvdec_hwaccel = {
     .name                 = "h264_nvdec",
     .type                 = AVMEDIA_TYPE_VIDEO,
     .id                   = AV_CODEC_ID_H264,
diff --git a/libavcodec/nvdec_hevc.c b/libavcodec/nvdec_hevc.c
index f02a7a15fe..58f3fa9b45 100644
--- a/libavcodec/nvdec_hevc.c
+++ b/libavcodec/nvdec_hevc.c
@@ -266,7 +266,7 @@  static int nvdec_hevc_frame_params(AVCodecContext *avctx,
     return ff_nvdec_frame_params(avctx, hw_frames_ctx, sps->temporal_layer[sps->max_sub_layers - 1].max_dec_pic_buffering + 1);
 }
 
-AVHWAccel ff_hevc_nvdec_hwaccel = {
+const AVHWAccel ff_hevc_nvdec_hwaccel = {
     .name                 = "hevc_nvdec",
     .type                 = AVMEDIA_TYPE_VIDEO,
     .id                   = AV_CODEC_ID_HEVC,
diff --git a/libavcodec/nvdec_mpeg12.c b/libavcodec/nvdec_mpeg12.c
index e29d085a79..249893a168 100644
--- a/libavcodec/nvdec_mpeg12.c
+++ b/libavcodec/nvdec_mpeg12.c
@@ -91,7 +91,7 @@  static int nvdec_mpeg12_frame_params(AVCodecContext *avctx,
 }
 
 #if CONFIG_MPEG2_NVDEC_HWACCEL
-AVHWAccel ff_mpeg2_nvdec_hwaccel = {
+const AVHWAccel ff_mpeg2_nvdec_hwaccel = {
     .name                 = "mpeg2_nvdec",
     .type                 = AVMEDIA_TYPE_VIDEO,
     .id                   = AV_CODEC_ID_MPEG2VIDEO,
diff --git a/libavcodec/nvdec_vc1.c b/libavcodec/nvdec_vc1.c
index c04b153a86..7257692d66 100644
--- a/libavcodec/nvdec_vc1.c
+++ b/libavcodec/nvdec_vc1.c
@@ -110,7 +110,7 @@  static int nvdec_vc1_frame_params(AVCodecContext *avctx,
     return ff_nvdec_frame_params(avctx, hw_frames_ctx, 2);
 }
 
-AVHWAccel ff_vc1_nvdec_hwaccel = {
+const AVHWAccel ff_vc1_nvdec_hwaccel = {
     .name                 = "vc1_nvdec",
     .type                 = AVMEDIA_TYPE_VIDEO,
     .id                   = AV_CODEC_ID_VC1,
@@ -125,7 +125,7 @@  AVHWAccel ff_vc1_nvdec_hwaccel = {
 };
 
 #if CONFIG_WMV3_NVDEC_HWACCEL
-AVHWAccel ff_wmv3_nvdec_hwaccel = {
+const AVHWAccel ff_wmv3_nvdec_hwaccel = {
     .name                 = "wmv3_nvdec",
     .type                 = AVMEDIA_TYPE_VIDEO,
     .id                   = AV_CODEC_ID_WMV3,
diff --git a/libavcodec/nvdec_vp9.c b/libavcodec/nvdec_vp9.c
index ed06d91416..3b665a9bc7 100644
--- a/libavcodec/nvdec_vp9.c
+++ b/libavcodec/nvdec_vp9.c
@@ -169,7 +169,7 @@  static int nvdec_vp9_frame_params(AVCodecContext *avctx,
     return ff_nvdec_frame_params(avctx, hw_frames_ctx, 8);
 }
 
-AVHWAccel ff_vp9_nvdec_hwaccel = {
+const AVHWAccel ff_vp9_nvdec_hwaccel = {
     .name                 = "vp9_nvdec",
     .type                 = AVMEDIA_TYPE_VIDEO,
     .id                   = AV_CODEC_ID_VP9,
diff --git a/libavcodec/vaapi_h264.c b/libavcodec/vaapi_h264.c
index c7f9d7bcb4..5854587a25 100644
--- a/libavcodec/vaapi_h264.c
+++ b/libavcodec/vaapi_h264.c
@@ -388,7 +388,7 @@  static int vaapi_h264_decode_slice(AVCodecContext *avctx,
     return 0;
 }
 
-AVHWAccel ff_h264_vaapi_hwaccel = {
+const AVHWAccel ff_h264_vaapi_hwaccel = {
     .name                 = "h264_vaapi",
     .type                 = AVMEDIA_TYPE_VIDEO,
     .id                   = AV_CODEC_ID_H264,
diff --git a/libavcodec/vaapi_hevc.c b/libavcodec/vaapi_hevc.c
index 718ccc92a2..19aabcdb52 100644
--- a/libavcodec/vaapi_hevc.c
+++ b/libavcodec/vaapi_hevc.c
@@ -423,7 +423,7 @@  static int vaapi_hevc_decode_slice(AVCodecContext *avctx,
     return 0;
 }
 
-AVHWAccel ff_hevc_vaapi_hwaccel = {
+const AVHWAccel ff_hevc_vaapi_hwaccel = {
     .name                 = "hevc_vaapi",
     .type                 = AVMEDIA_TYPE_VIDEO,
     .id                   = AV_CODEC_ID_HEVC,
diff --git a/libavcodec/vaapi_mpeg2.c b/libavcodec/vaapi_mpeg2.c
index fd5be8d8ae..aaed434c88 100644
--- a/libavcodec/vaapi_mpeg2.c
+++ b/libavcodec/vaapi_mpeg2.c
@@ -172,7 +172,7 @@  static int vaapi_mpeg2_decode_slice(AVCodecContext *avctx, const uint8_t *buffer
     return 0;
 }
 
-AVHWAccel ff_mpeg2_vaapi_hwaccel = {
+const AVHWAccel ff_mpeg2_vaapi_hwaccel = {
     .name                 = "mpeg2_vaapi",
     .type                 = AVMEDIA_TYPE_VIDEO,
     .id                   = AV_CODEC_ID_MPEG2VIDEO,
diff --git a/libavcodec/vaapi_mpeg4.c b/libavcodec/vaapi_mpeg4.c
index 3fe029186e..11860ff747 100644
--- a/libavcodec/vaapi_mpeg4.c
+++ b/libavcodec/vaapi_mpeg4.c
@@ -178,7 +178,7 @@  static int vaapi_mpeg4_decode_slice(AVCodecContext *avctx, const uint8_t *buffer
 }
 
 #if CONFIG_MPEG4_VAAPI_HWACCEL
-AVHWAccel ff_mpeg4_vaapi_hwaccel = {
+const AVHWAccel ff_mpeg4_vaapi_hwaccel = {
     .name                 = "mpeg4_vaapi",
     .type                 = AVMEDIA_TYPE_VIDEO,
     .id                   = AV_CODEC_ID_MPEG4,
@@ -196,7 +196,7 @@  AVHWAccel ff_mpeg4_vaapi_hwaccel = {
 #endif
 
 #if CONFIG_H263_VAAPI_HWACCEL
-AVHWAccel ff_h263_vaapi_hwaccel = {
+const AVHWAccel ff_h263_vaapi_hwaccel = {
     .name                 = "h263_vaapi",
     .type                 = AVMEDIA_TYPE_VIDEO,
     .id                   = AV_CODEC_ID_H263,
diff --git a/libavcodec/vaapi_vc1.c b/libavcodec/vaapi_vc1.c
index 49675744cd..525376790e 100644
--- a/libavcodec/vaapi_vc1.c
+++ b/libavcodec/vaapi_vc1.c
@@ -388,7 +388,7 @@  static int vaapi_vc1_decode_slice(AVCodecContext *avctx, const uint8_t *buffer,
 }
 
 #if CONFIG_WMV3_VAAPI_HWACCEL
-AVHWAccel ff_wmv3_vaapi_hwaccel = {
+const AVHWAccel ff_wmv3_vaapi_hwaccel = {
     .name                 = "wmv3_vaapi",
     .type                 = AVMEDIA_TYPE_VIDEO,
     .id                   = AV_CODEC_ID_WMV3,
@@ -405,7 +405,7 @@  AVHWAccel ff_wmv3_vaapi_hwaccel = {
 };
 #endif
 
-AVHWAccel ff_vc1_vaapi_hwaccel = {
+const AVHWAccel ff_vc1_vaapi_hwaccel = {
     .name                 = "vc1_vaapi",
     .type                 = AVMEDIA_TYPE_VIDEO,
     .id                   = AV_CODEC_ID_VC1,
diff --git a/libavcodec/vaapi_vp9.c b/libavcodec/vaapi_vp9.c
index f295dc9ebb..f384ba7873 100644
--- a/libavcodec/vaapi_vp9.c
+++ b/libavcodec/vaapi_vp9.c
@@ -168,7 +168,7 @@  static int vaapi_vp9_decode_slice(AVCodecContext *avctx,
     return 0;
 }
 
-AVHWAccel ff_vp9_vaapi_hwaccel = {
+const AVHWAccel ff_vp9_vaapi_hwaccel = {
     .name                 = "vp9_vaapi",
     .type                 = AVMEDIA_TYPE_VIDEO,
     .id                   = AV_CODEC_ID_VP9,
diff --git a/libavcodec/vdpau_h264.c b/libavcodec/vdpau_h264.c
index 70f83d76f5..2a260f76ab 100644
--- a/libavcodec/vdpau_h264.c
+++ b/libavcodec/vdpau_h264.c
@@ -262,7 +262,7 @@  static int vdpau_h264_init(AVCodecContext *avctx)
     return ff_vdpau_common_init(avctx, profile, level);
 }
 
-AVHWAccel ff_h264_vdpau_hwaccel = {
+const AVHWAccel ff_h264_vdpau_hwaccel = {
     .name           = "h264_vdpau",
     .type           = AVMEDIA_TYPE_VIDEO,
     .id             = AV_CODEC_ID_H264,
diff --git a/libavcodec/vdpau_hevc.c b/libavcodec/vdpau_hevc.c
index 70e76cfcaa..421135bce2 100644
--- a/libavcodec/vdpau_hevc.c
+++ b/libavcodec/vdpau_hevc.c
@@ -413,7 +413,7 @@  static int vdpau_hevc_init(AVCodecContext *avctx)
     return ff_vdpau_common_init(avctx, profile, level);
 }
 
-AVHWAccel ff_hevc_vdpau_hwaccel = {
+const AVHWAccel ff_hevc_vdpau_hwaccel = {
     .name           = "hevc_vdpau",
     .type           = AVMEDIA_TYPE_VIDEO,
     .id             = AV_CODEC_ID_HEVC,
diff --git a/libavcodec/vdpau_mpeg12.c b/libavcodec/vdpau_mpeg12.c
index 71fe889abf..d286e7e57d 100644
--- a/libavcodec/vdpau_mpeg12.c
+++ b/libavcodec/vdpau_mpeg12.c
@@ -103,7 +103,7 @@  static int vdpau_mpeg1_init(AVCodecContext *avctx)
                                 VDP_DECODER_LEVEL_MPEG1_NA);
 }
 
-AVHWAccel ff_mpeg1_vdpau_hwaccel = {
+const AVHWAccel ff_mpeg1_vdpau_hwaccel = {
     .name           = "mpeg1_vdpau",
     .type           = AVMEDIA_TYPE_VIDEO,
     .id             = AV_CODEC_ID_MPEG1VIDEO,
@@ -138,7 +138,7 @@  static int vdpau_mpeg2_init(AVCodecContext *avctx)
     return ff_vdpau_common_init(avctx, profile, VDP_DECODER_LEVEL_MPEG2_HL);
 }
 
-AVHWAccel ff_mpeg2_vdpau_hwaccel = {
+const AVHWAccel ff_mpeg2_vdpau_hwaccel = {
     .name           = "mpeg2_vdpau",
     .type           = AVMEDIA_TYPE_VIDEO,
     .id             = AV_CODEC_ID_MPEG2VIDEO,
diff --git a/libavcodec/vdpau_mpeg4.c b/libavcodec/vdpau_mpeg4.c
index 653ef7e7e7..96f83026a8 100644
--- a/libavcodec/vdpau_mpeg4.c
+++ b/libavcodec/vdpau_mpeg4.c
@@ -110,7 +110,7 @@  static int vdpau_mpeg4_init(AVCodecContext *avctx)
     return ff_vdpau_common_init(avctx, profile, avctx->level);
 }
 
-AVHWAccel ff_mpeg4_vdpau_hwaccel = {
+const AVHWAccel ff_mpeg4_vdpau_hwaccel = {
     .name           = "mpeg4_vdpau",
     .type           = AVMEDIA_TYPE_VIDEO,
     .id             = AV_CODEC_ID_MPEG4,
diff --git a/libavcodec/vdpau_vc1.c b/libavcodec/vdpau_vc1.c
index 73d83f6577..671baf96b4 100644
--- a/libavcodec/vdpau_vc1.c
+++ b/libavcodec/vdpau_vc1.c
@@ -136,7 +136,7 @@  static int vdpau_vc1_init(AVCodecContext *avctx)
 }
 
 #if CONFIG_WMV3_VDPAU_HWACCEL
-AVHWAccel ff_wmv3_vdpau_hwaccel = {
+const AVHWAccel ff_wmv3_vdpau_hwaccel = {
     .name           = "wm3_vdpau",
     .type           = AVMEDIA_TYPE_VIDEO,
     .id             = AV_CODEC_ID_WMV3,
@@ -153,7 +153,7 @@  AVHWAccel ff_wmv3_vdpau_hwaccel = {
 };
 #endif
 
-AVHWAccel ff_vc1_vdpau_hwaccel = {
+const AVHWAccel ff_vc1_vdpau_hwaccel = {
     .name           = "vc1_vdpau",
     .type           = AVMEDIA_TYPE_VIDEO,
     .id             = AV_CODEC_ID_VC1,
diff --git a/libavcodec/videotoolbox.c b/libavcodec/videotoolbox.c
index d29607363c..c275e0111e 100644
--- a/libavcodec/videotoolbox.c
+++ b/libavcodec/videotoolbox.c
@@ -1028,7 +1028,7 @@  static int videotoolbox_frame_params(AVCodecContext *avctx,
     return 0;
 }
 
-AVHWAccel ff_h263_videotoolbox_hwaccel = {
+const AVHWAccel ff_h263_videotoolbox_hwaccel = {
     .name           = "h263_videotoolbox",
     .type           = AVMEDIA_TYPE_VIDEO,
     .id             = AV_CODEC_ID_H263,
@@ -1043,7 +1043,7 @@  AVHWAccel ff_h263_videotoolbox_hwaccel = {
     .priv_data_size = sizeof(VTContext),
 };
 
-AVHWAccel ff_hevc_videotoolbox_hwaccel = {
+const AVHWAccel ff_hevc_videotoolbox_hwaccel = {
     .name           = "hevc_videotoolbox",
     .type           = AVMEDIA_TYPE_VIDEO,
     .id             = AV_CODEC_ID_HEVC,
@@ -1059,7 +1059,7 @@  AVHWAccel ff_hevc_videotoolbox_hwaccel = {
     .priv_data_size = sizeof(VTContext),
 };
 
-AVHWAccel ff_h264_videotoolbox_hwaccel = {
+const AVHWAccel ff_h264_videotoolbox_hwaccel = {
     .name           = "h264_videotoolbox",
     .type           = AVMEDIA_TYPE_VIDEO,
     .id             = AV_CODEC_ID_H264,
@@ -1075,7 +1075,7 @@  AVHWAccel ff_h264_videotoolbox_hwaccel = {
     .priv_data_size = sizeof(VTContext),
 };
 
-AVHWAccel ff_mpeg1_videotoolbox_hwaccel = {
+const AVHWAccel ff_mpeg1_videotoolbox_hwaccel = {
     .name           = "mpeg1_videotoolbox",
     .type           = AVMEDIA_TYPE_VIDEO,
     .id             = AV_CODEC_ID_MPEG1VIDEO,
@@ -1090,7 +1090,7 @@  AVHWAccel ff_mpeg1_videotoolbox_hwaccel = {
     .priv_data_size = sizeof(VTContext),
 };
 
-AVHWAccel ff_mpeg2_videotoolbox_hwaccel = {
+const AVHWAccel ff_mpeg2_videotoolbox_hwaccel = {
     .name           = "mpeg2_videotoolbox",
     .type           = AVMEDIA_TYPE_VIDEO,
     .id             = AV_CODEC_ID_MPEG2VIDEO,
@@ -1105,7 +1105,7 @@  AVHWAccel ff_mpeg2_videotoolbox_hwaccel = {
     .priv_data_size = sizeof(VTContext),
 };
 
-AVHWAccel ff_mpeg4_videotoolbox_hwaccel = {
+const AVHWAccel ff_mpeg4_videotoolbox_hwaccel = {
     .name           = "mpeg4_videotoolbox",
     .type           = AVMEDIA_TYPE_VIDEO,
     .id             = AV_CODEC_ID_MPEG4,