From: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
To: ffmpeg-devel@ffmpeg.org
Subject: Re: [FFmpeg-devel] [PATCH] avformat/avformat: Avoid including codec.h, frame.h
Date: Wed, 6 Sep 2023 11:36:19 +0200
Message-ID: <DU0P250MB0747D696B45EC8A31B18457A8FEFA@DU0P250MB0747.EURP250.PROD.OUTLOOK.COM> (raw)
In-Reply-To: <AS8P250MB074451A1439E6A39CC721E838FEBA@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM>
Andreas Rheinhardt:
> AVCodec is only ever used as an incomplete type (i.e. via a pointer
> to an AVCodec) in avformat.h and it is not really part of the core
> of avformat.h or libavformat; almost none of our internal users
> make use of it (and none make use of hwcontext.h, which is implicitly
> included). So switch to use struct AVCodec, but continue to include
> codec.h for external users for compatibility.
>
> Also, do the same for AVFrame and frame.h, which is implicitly included
> by codec.h (via lavu/hwcontext.h).
>
> Also, remove an unnecessary inclusion of <time.h>.
>
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
> ---
> libavdevice/alsa_enc.c | 1 +
> libavdevice/opengl_enc.c | 1 +
> libavdevice/pulse_audio_enc.c | 1 +
> libavdevice/xv.c | 1 +
> libavformat/asfdec_o.c | 2 ++
> libavformat/avformat.c | 2 ++
> libavformat/avformat.h | 29 ++++++++++++++++-------------
> libavformat/dashdec.c | 1 +
> libavformat/dashenc.c | 1 +
> libavformat/dhav.c | 2 ++
> libavformat/ftp.c | 1 +
> libavformat/hlsenc.c | 1 +
> libavformat/hlsplaylist.c | 1 +
> libavformat/http.c | 1 +
> libavformat/img2enc.c | 2 ++
> libavformat/internal.h | 4 ++--
> libavformat/mlvdec.c | 2 ++
> libavformat/mux.c | 2 ++
> libavformat/mux.h | 2 +-
> libavformat/mxfdec.c | 1 +
> libavformat/uncodedframecrcenc.c | 1 +
> libavformat/wavenc.c | 1 +
> libavformat/webmdashenc.c | 1 +
> libavformat/wtvdec.c | 1 +
> libavformat/yuv4mpegenc.c | 1 +
> 25 files changed, 47 insertions(+), 16 deletions(-)
>
> diff --git a/libavdevice/alsa_enc.c b/libavdevice/alsa_enc.c
> index 62a20c7ba4..4c7805065e 100644
> --- a/libavdevice/alsa_enc.c
> +++ b/libavdevice/alsa_enc.c
> @@ -39,6 +39,7 @@
>
> #include <alsa/asoundlib.h>
>
> +#include "libavutil/frame.h"
> #include "libavutil/internal.h"
> #include "libavutil/time.h"
>
> diff --git a/libavdevice/opengl_enc.c b/libavdevice/opengl_enc.c
> index 1b0cf5aa8f..80feda7072 100644
> --- a/libavdevice/opengl_enc.c
> +++ b/libavdevice/opengl_enc.c
> @@ -49,6 +49,7 @@
> #endif
>
> #include "libavutil/common.h"
> +#include "libavutil/frame.h"
> #include "libavutil/pixdesc.h"
> #include "libavutil/log.h"
> #include "libavutil/opt.h"
> diff --git a/libavdevice/pulse_audio_enc.c b/libavdevice/pulse_audio_enc.c
> index 3d8323233f..9e594c6424 100644
> --- a/libavdevice/pulse_audio_enc.c
> +++ b/libavdevice/pulse_audio_enc.c
> @@ -26,6 +26,7 @@
> #include "libavformat/mux.h"
> #include "libavformat/version.h"
> #include "libavutil/channel_layout.h"
> +#include "libavutil/frame.h"
> #include "libavutil/internal.h"
> #include "libavutil/opt.h"
> #include "libavutil/time.h"
> diff --git a/libavdevice/xv.c b/libavdevice/xv.c
> index 441f854121..b3d79d57a8 100644
> --- a/libavdevice/xv.c
> +++ b/libavdevice/xv.c
> @@ -32,6 +32,7 @@
> #include <X11/extensions/Xvlib.h>
> #include <sys/shm.h>
>
> +#include "libavutil/frame.h"
> #include "libavutil/opt.h"
> #include "libavutil/pixdesc.h"
> #include "libavutil/imgutils.h"
> diff --git a/libavformat/asfdec_o.c b/libavformat/asfdec_o.c
> index 2b407c016f..10942ecfa0 100644
> --- a/libavformat/asfdec_o.c
> +++ b/libavformat/asfdec_o.c
> @@ -19,6 +19,8 @@
> * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> */
>
> +#include <time.h>
> +
> #include "libavutil/attributes.h"
> #include "libavutil/common.h"
> #include "libavutil/dict.h"
> diff --git a/libavformat/avformat.c b/libavformat/avformat.c
> index 356b4de931..7ff0cf3429 100644
> --- a/libavformat/avformat.c
> +++ b/libavformat/avformat.c
> @@ -23,12 +23,14 @@
> #include "libavutil/avassert.h"
> #include "libavutil/avstring.h"
> #include "libavutil/channel_layout.h"
> +#include "libavutil/frame.h"
> #include "libavutil/intreadwrite.h"
> #include "libavutil/mem.h"
> #include "libavutil/opt.h"
> #include "libavutil/pixfmt.h"
> #include "libavutil/samplefmt.h"
> #include "libavcodec/avcodec.h"
> +#include "libavcodec/codec.h"
> #include "libavcodec/bsf.h"
> #include "libavcodec/codec_desc.h"
> #include "libavcodec/packet_internal.h"
> diff --git a/libavformat/avformat.h b/libavformat/avformat.h
> index 1916aa2dc5..10ee3c87c6 100644
> --- a/libavformat/avformat.h
> +++ b/libavformat/avformat.h
> @@ -307,10 +307,8 @@
> * @}
> */
>
> -#include <time.h>
> #include <stdio.h> /* FILE */
>
> -#include "libavcodec/codec.h"
> #include "libavcodec/codec_par.h"
> #include "libavcodec/defs.h"
> #include "libavcodec/packet.h"
> @@ -325,10 +323,13 @@
> * to avoid unnecessary rebuilds. When included externally, keep including
> * the full version information. */
> #include "libavformat/version.h"
> +
> +#include "libavutil/frame.h"
> +#include "libavcodec/codec.h"
> #endif
>
> struct AVFormatContext;
> -
> +struct AVFrame;
> struct AVDeviceInfoList;
>
> /**
> @@ -1569,7 +1570,7 @@ typedef struct AVFormatContext {
> * the same codec_id.
> * Demuxing: Set by user
> */
> - const AVCodec *video_codec;
> + const struct AVCodec *video_codec;
>
> /**
> * Forced audio codec.
> @@ -1577,7 +1578,7 @@ typedef struct AVFormatContext {
> * the same codec_id.
> * Demuxing: Set by user
> */
> - const AVCodec *audio_codec;
> + const struct AVCodec *audio_codec;
>
> /**
> * Forced subtitle codec.
> @@ -1585,7 +1586,7 @@ typedef struct AVFormatContext {
> * the same codec_id.
> * Demuxing: Set by user
> */
> - const AVCodec *subtitle_codec;
> + const struct AVCodec *subtitle_codec;
>
> /**
> * Forced data codec.
> @@ -1593,7 +1594,7 @@ typedef struct AVFormatContext {
> * the same codec_id.
> * Demuxing: Set by user
> */
> - const AVCodec *data_codec;
> + const struct AVCodec *data_codec;
>
> /**
> * Number of bytes to be written as padding in a metadata header.
> @@ -1842,7 +1843,7 @@ const AVClass *av_stream_get_class(void);
> *
> * @return newly created stream or NULL on error.
> */
> -AVStream *avformat_new_stream(AVFormatContext *s, const AVCodec *c);
> +AVStream *avformat_new_stream(AVFormatContext *s, const struct AVCodec *c);
>
> /**
> * Wrap an existing array as stream side data.
> @@ -2076,7 +2077,7 @@ int av_find_best_stream(AVFormatContext *ic,
> enum AVMediaType type,
> int wanted_stream_nb,
> int related_stream,
> - const AVCodec **decoder_ret,
> + const struct AVCodec **decoder_ret,
> int flags);
>
> /**
> @@ -2352,7 +2353,7 @@ int av_interleaved_write_frame(AVFormatContext *s, AVPacket *pkt);
> * See av_interleaved_write_uncoded_frame() for details.
> */
> int av_write_uncoded_frame(AVFormatContext *s, int stream_index,
> - AVFrame *frame);
> + struct AVFrame *frame);
>
> /**
> * Write an uncoded frame to an output media file.
> @@ -2371,7 +2372,7 @@ int av_write_uncoded_frame(AVFormatContext *s, int stream_index,
> * @return >=0 for success, a negative code on error
> */
> int av_interleaved_write_uncoded_frame(AVFormatContext *s, int stream_index,
> - AVFrame *frame);
> + struct AVFrame *frame);
>
> /**
> * Test whether a muxer supports uncoded frame.
> @@ -2759,7 +2760,8 @@ const struct AVCodecTag *avformat_get_mov_audio_tags(void);
> * @param frame the frame with the aspect ratio to be determined
> * @return the guessed (valid) sample_aspect_ratio, 0/1 if no idea
> */
> -AVRational av_guess_sample_aspect_ratio(AVFormatContext *format, AVStream *stream, AVFrame *frame);
> +AVRational av_guess_sample_aspect_ratio(AVFormatContext *format, AVStream *stream,
> + struct AVFrame *frame);
>
> /**
> * Guess the frame rate, based on both the container and codec information.
> @@ -2769,7 +2771,8 @@ AVRational av_guess_sample_aspect_ratio(AVFormatContext *format, AVStream *strea
> * @param frame the frame for which the frame rate should be determined, may be NULL
> * @return the guessed (valid) frame rate, 0/1 if no idea
> */
> -AVRational av_guess_frame_rate(AVFormatContext *ctx, AVStream *stream, AVFrame *frame);
> +AVRational av_guess_frame_rate(AVFormatContext *ctx, AVStream *stream,
> + struct AVFrame *frame);
>
> /**
> * Check if the stream st contained in s is matched by the stream specifier
> diff --git a/libavformat/dashdec.c b/libavformat/dashdec.c
> index 29d4680c68..f4af625814 100644
> --- a/libavformat/dashdec.c
> +++ b/libavformat/dashdec.c
> @@ -20,6 +20,7 @@
> * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> */
> #include <libxml/parser.h>
> +#include <time.h>
> #include "libavutil/bprint.h"
> #include "libavutil/opt.h"
> #include "libavutil/time.h"
> diff --git a/libavformat/dashenc.c b/libavformat/dashenc.c
> index 17fe5f430c..69ceae2cbf 100644
> --- a/libavformat/dashenc.c
> +++ b/libavformat/dashenc.c
> @@ -22,6 +22,7 @@
>
> #include "config.h"
> #include "config_components.h"
> +#include <time.h>
> #if HAVE_UNISTD_H
> #include <unistd.h>
> #endif
> diff --git a/libavformat/dhav.c b/libavformat/dhav.c
> index 4e720f2a26..2ec4857f29 100644
> --- a/libavformat/dhav.c
> +++ b/libavformat/dhav.c
> @@ -20,6 +20,8 @@
> * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> */
>
> +#include <time.h>
> +
> #include "libavutil/parseutils.h"
> #include "avio_internal.h"
> #include "avformat.h"
> diff --git a/libavformat/ftp.c b/libavformat/ftp.c
> index 883668b37b..f9b069a59e 100644
> --- a/libavformat/ftp.c
> +++ b/libavformat/ftp.c
> @@ -19,6 +19,7 @@
> */
>
> #include <string.h>
> +#include <time.h>
>
> #include "libavutil/avstring.h"
> #include "libavutil/internal.h"
> diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c
> index 27d97f5f72..004bd25359 100644
> --- a/libavformat/hlsenc.c
> +++ b/libavformat/hlsenc.c
> @@ -23,6 +23,7 @@
> #include "config.h"
> #include "config_components.h"
> #include <stdint.h>
> +#include <time.h>
> #if HAVE_UNISTD_H
> #include <unistd.h>
> #endif
> diff --git a/libavformat/hlsplaylist.c b/libavformat/hlsplaylist.c
> index 0e1dcc087f..2bf05f3c7c 100644
> --- a/libavformat/hlsplaylist.c
> +++ b/libavformat/hlsplaylist.c
> @@ -22,6 +22,7 @@
>
> #include "config.h"
> #include <stdint.h>
> +#include <time.h>
>
> #include "libavutil/time_internal.h"
>
> diff --git a/libavformat/http.c b/libavformat/http.c
> index fd931c2d8e..c0fe7c36d9 100644
> --- a/libavformat/http.c
> +++ b/libavformat/http.c
> @@ -22,6 +22,7 @@
> #include "config.h"
> #include "config_components.h"
>
> +#include <time.h>
> #if CONFIG_ZLIB
> #include <zlib.h>
> #endif /* CONFIG_ZLIB */
> diff --git a/libavformat/img2enc.c b/libavformat/img2enc.c
> index 9b8ec06cea..526a11e5ee 100644
> --- a/libavformat/img2enc.c
> +++ b/libavformat/img2enc.c
> @@ -20,6 +20,8 @@
> * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> */
>
> +#include <time.h>
> +
> #include "config_components.h"
>
> #include "libavutil/intreadwrite.h"
> diff --git a/libavformat/internal.h b/libavformat/internal.h
> index 53e70ccb53..051e8e2893 100644
> --- a/libavformat/internal.h
> +++ b/libavformat/internal.h
> @@ -566,8 +566,8 @@ void ff_parse_key_value(const char *str, ff_parse_key_val_cb callback_get_buf,
>
> enum AVCodecID ff_guess_image2_codec(const char *filename);
>
> -const AVCodec *ff_find_decoder(AVFormatContext *s, const AVStream *st,
> - enum AVCodecID codec_id);
> +const struct AVCodec *ff_find_decoder(AVFormatContext *s, const AVStream *st,
> + enum AVCodecID codec_id);
>
> /**
> * Set the time base and wrapping info for a given stream. This will be used
> diff --git a/libavformat/mlvdec.c b/libavformat/mlvdec.c
> index db3b77bb9b..b706898cb3 100644
> --- a/libavformat/mlvdec.c
> +++ b/libavformat/mlvdec.c
> @@ -24,6 +24,8 @@
> * Magic Lantern Video (MLV) demuxer
> */
>
> +#include <time.h>
> +
> #include "libavutil/imgutils.h"
> #include "libavutil/intreadwrite.h"
> #include "libavutil/rational.h"
> diff --git a/libavformat/mux.c b/libavformat/mux.c
> index 415bd3948f..fff8094341 100644
> --- a/libavformat/mux.c
> +++ b/libavformat/mux.c
> @@ -24,12 +24,14 @@
> #include "mux.h"
> #include "version.h"
> #include "libavcodec/bsf.h"
> +#include "libavcodec/codec_desc.h"
> #include "libavcodec/internal.h"
> #include "libavcodec/packet_internal.h"
> #include "libavutil/opt.h"
> #include "libavutil/dict.h"
> #include "libavutil/timestamp.h"
> #include "libavutil/avassert.h"
> +#include "libavutil/frame.h"
> #include "libavutil/internal.h"
> #include "libavutil/mathematics.h"
>
> diff --git a/libavformat/mux.h b/libavformat/mux.h
> index c2de45400c..9de5c2852a 100644
> --- a/libavformat/mux.h
> +++ b/libavformat/mux.h
> @@ -96,7 +96,7 @@ typedef struct FFOutputFormat {
> * by setting the pointer to NULL.
> */
> int (*write_uncoded_frame)(AVFormatContext *, int stream_index,
> - AVFrame **frame, unsigned flags);
> + struct AVFrame **frame, unsigned flags);
> /**
> * Returns device list with it properties.
> * @see avdevice_list_devices() for more details.
> diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c
> index 34230ece98..110b69b7c1 100644
> --- a/libavformat/mxfdec.c
> +++ b/libavformat/mxfdec.c
> @@ -45,6 +45,7 @@
> */
>
> #include <inttypes.h>
> +#include <time.h>
>
> #include "libavutil/aes.h"
> #include "libavutil/avstring.h"
> diff --git a/libavformat/uncodedframecrcenc.c b/libavformat/uncodedframecrcenc.c
> index 4c37ef6e5b..529b2f36cb 100644
> --- a/libavformat/uncodedframecrcenc.c
> +++ b/libavformat/uncodedframecrcenc.c
> @@ -21,6 +21,7 @@
> #include "libavutil/adler32.h"
> #include "libavutil/avassert.h"
> #include "libavutil/bprint.h"
> +#include "libavutil/frame.h"
> #include "libavutil/imgutils.h"
> #include "libavutil/pixdesc.h"
> #include "libavformat/mux.h"
> diff --git a/libavformat/wavenc.c b/libavformat/wavenc.c
> index c12c090934..82acb9ef0f 100644
> --- a/libavformat/wavenc.c
> +++ b/libavformat/wavenc.c
> @@ -32,6 +32,7 @@
>
> #include <stdint.h>
> #include <string.h>
> +#include <time.h>
>
> #include "libavutil/avstring.h"
> #include "libavutil/dict.h"
> diff --git a/libavformat/webmdashenc.c b/libavformat/webmdashenc.c
> index 0d6c4a2072..31ea3c6e8c 100644
> --- a/libavformat/webmdashenc.c
> +++ b/libavformat/webmdashenc.c
> @@ -29,6 +29,7 @@
> #include <float.h>
> #include <stdint.h>
> #include <string.h>
> +#include <time.h>
>
> #include "avformat.h"
> #include "matroska.h"
> diff --git a/libavformat/wtvdec.c b/libavformat/wtvdec.c
> index 98128b7201..b29ea7a923 100644
> --- a/libavformat/wtvdec.c
> +++ b/libavformat/wtvdec.c
> @@ -26,6 +26,7 @@
> */
>
> #include <inttypes.h>
> +#include <time.h>
>
> #include "libavutil/channel_layout.h"
> #include "libavutil/intreadwrite.h"
> diff --git a/libavformat/yuv4mpegenc.c b/libavformat/yuv4mpegenc.c
> index 968ba2fa13..1d641eb9e4 100644
> --- a/libavformat/yuv4mpegenc.c
> +++ b/libavformat/yuv4mpegenc.c
> @@ -19,6 +19,7 @@
> * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> */
>
> +#include "libavutil/frame.h"
> #include "libavutil/pixdesc.h"
> #include "avformat.h"
> #include "internal.h"
Will apply this patchset tomorrow unless there are objections.
- Andreas
_______________________________________________
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".
prev parent reply other threads:[~2023-09-06 9:35 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-02 11:31 Andreas Rheinhardt
2023-09-02 16:21 ` [FFmpeg-devel] [PATCH 2/7] avcodec/defs: Add AV_PROFILE_* defines, deprecate FF_PROFILE_* defines Andreas Rheinhardt
2023-09-02 16:21 ` [FFmpeg-devel] [PATCH 3/7] avformat/mux: Only write HEADER marker if format has .write_header Andreas Rheinhardt
2023-09-02 16:21 ` [FFmpeg-devel] [PATCH 4/7] avformat/aviobuf: Add ffio_init_(read|write)_context() Andreas Rheinhardt
2023-09-02 16:21 ` [FFmpeg-devel] [PATCH 5/7] avutil: Move error.h from avutil.h to common.h Andreas Rheinhardt
2023-09-03 7:47 ` Paul B Mahol
2023-09-02 16:21 ` [FFmpeg-devel] [PATCH 6/7] avutil/mem: Don't include avutil.h Andreas Rheinhardt
2023-09-03 7:43 ` Paul B Mahol
2023-09-04 14:05 ` Michael Niedermayer
2023-09-04 14:20 ` Andreas Rheinhardt
2023-09-02 16:21 ` [FFmpeg-devel] [PATCH 7/7] avutil/avstring: Remove obsolete version.h inclusion Andreas Rheinhardt
2023-09-02 23:12 ` [FFmpeg-devel] [PATCH 8/8] all: Replace __FUNCTION__ by __func__ Andreas Rheinhardt
2023-09-02 23:40 ` James Almer
2023-09-03 9:05 ` Andreas Rheinhardt
2023-09-02 23:28 ` [FFmpeg-devel] [PATCH 9/9] avcodec/vp8data: Use <> for inclusion of stdint.h Andreas Rheinhardt
2023-09-03 7:47 ` Paul B Mahol
2023-09-03 14:22 ` [FFmpeg-devel] [PATCH 10/11] avfilter/af_volume: Also deprecate position enum value Andreas Rheinhardt
2023-09-03 14:22 ` [FFmpeg-devel] [PATCH 11/11] avfilter/f_select: Also deprecate "pos" variable name Andreas Rheinhardt
2023-09-04 14:17 ` [FFmpeg-devel] [PATCH v2 6/11] avutil/mem: Don't include avutil.h Andreas Rheinhardt
2023-09-06 9:36 ` Andreas Rheinhardt [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=DU0P250MB0747D696B45EC8A31B18457A8FEFA@DU0P250MB0747.EURP250.PROD.OUTLOOK.COM \
--to=andreas.rheinhardt@outlook.com \
--cc=ffmpeg-devel@ffmpeg.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
This inbox may be cloned and mirrored by anyone:
git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
ffmpegdev@gitmailbox.com
public-inbox-index ffmpegdev
Example config snippet for mirrors.
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git