From: James Almer <jamrial@gmail.com> To: ffmpeg-devel@ffmpeg.org Subject: [FFmpeg-devel] [PATCH 2/2] avformat/avformat: Reorder AVFormatContext fields Date: Mon, 4 Mar 2024 15:06:12 -0300 Message-ID: <20240304180613.7280-3-jamrial@gmail.com> (raw) In-Reply-To: <20240125134425.374-1-jamrial@gmail.com> Move related fields closer together. Signed-off-by: James Almer <jamrial@gmail.com> --- libavformat/avformat.h | 222 ++++++++++++++++++++--------------------- 1 file changed, 111 insertions(+), 111 deletions(-) diff --git a/libavformat/avformat.h b/libavformat/avformat.h index d74db17df1..f28db099d4 100644 --- a/libavformat/avformat.h +++ b/libavformat/avformat.h @@ -1324,6 +1324,39 @@ typedef struct AVFormatContext { */ AVStream **streams; + /** + * Number of elements in AVFormatContext.stream_groups. + * + * Set by avformat_stream_group_create(), must not be modified by any other code. + */ + unsigned int nb_stream_groups; + /** + * A list of all stream groups in the file. New groups are created with + * avformat_stream_group_create(), and filled with avformat_stream_group_add_stream(). + * + * - demuxing: groups may be created by libavformat in avformat_open_input(). + * If AVFMTCTX_NOHEADER is set in ctx_flags, then new groups may also + * appear in av_read_frame(). + * - muxing: groups may be created by the user before avformat_write_header(). + * + * Freed by libavformat in avformat_free_context(). + */ + AVStreamGroup **stream_groups; + + /** + * Number of chapters in AVChapter array. + * When muxing, chapters are normally written in the file header, + * so nb_chapters should normally be initialized before write_header + * is called. Some muxers (e.g. mov and mkv) can also write chapters + * in the trailer. To write chapters in the trailer, nb_chapters + * must be zero when write_header is called and non-zero when + * write_trailer is called. + * - muxing: set by user + * - demuxing: set by libavformat + */ + unsigned int nb_chapters; + AVChapter **chapters; + /** * input or output URL. Unlike the old filename field, this field has no * length restriction. @@ -1443,36 +1476,10 @@ typedef struct AVFormatContext { enum AVCodecID subtitle_codec_id; /** - * Maximum amount of memory in bytes to use for the index of each stream. - * If the index exceeds this size, entries will be discarded as - * needed to maintain a smaller size. This can lead to slower or less - * accurate seeking (depends on demuxer). - * Demuxers for which a full in-memory index is mandatory will ignore - * this. - * - muxing: unused - * - demuxing: set by user - */ - unsigned int max_index_size; - - /** - * Maximum amount of memory in bytes to use for buffering frames - * obtained from realtime capture devices. - */ - unsigned int max_picture_buffer; - - /** - * Number of chapters in AVChapter array. - * When muxing, chapters are normally written in the file header, - * so nb_chapters should normally be initialized before write_header - * is called. Some muxers (e.g. mov and mkv) can also write chapters - * in the trailer. To write chapters in the trailer, nb_chapters - * must be zero when write_header is called and non-zero when - * write_trailer is called. - * - muxing: set by user - * - demuxing: set by libavformat + * Forced Data codec_id. + * Demuxing: Set by user. */ - unsigned int nb_chapters; - AVChapter **chapters; + enum AVCodecID data_codec_id; /** * Metadata that applies to the whole file. @@ -1528,6 +1535,31 @@ typedef struct AVFormatContext { int debug; #define FF_FDEBUG_TS 0x0001 + /** + * The maximum number of streams. + * - encoding: unused + * - decoding: set by user + */ + int max_streams; + + /** + * Maximum amount of memory in bytes to use for the index of each stream. + * If the index exceeds this size, entries will be discarded as + * needed to maintain a smaller size. This can lead to slower or less + * accurate seeking (depends on demuxer). + * Demuxers for which a full in-memory index is mandatory will ignore + * this. + * - muxing: unused + * - demuxing: set by user + */ + unsigned int max_index_size; + + /** + * Maximum amount of memory in bytes to use for buffering frames + * obtained from realtime capture devices. + */ + unsigned int max_picture_buffer; + /** * Maximum buffering duration for interleaving. * @@ -1546,6 +1578,35 @@ typedef struct AVFormatContext { */ int64_t max_interleave_delta; + /** + * Maximum number of packets to read while waiting for the first timestamp. + * Decoding only. + */ + int max_ts_probe; + + /** + * Max chunk time in microseconds. + * Note, not all formats support this and unpredictable things may happen if it is used when not supported. + * - encoding: Set by user + * - decoding: unused + */ + int max_chunk_duration; + + /** + * Max chunk size in bytes + * Note, not all formats support this and unpredictable things may happen if it is used when not supported. + * - encoding: Set by user + * - decoding: unused + */ + int max_chunk_size; + + /** + * Maximum number of packets that can be probed + * - encoding: unused + * - decoding: set by user + */ + int max_probe_packets; + /** * Allow non-standard and experimental extension * @see AVCodecContext.strict_std_compliance @@ -1572,11 +1633,6 @@ typedef struct AVFormatContext { */ #define AVFMT_EVENT_FLAG_METADATA_UPDATED 0x0001 - /** - * Maximum number of packets to read while waiting for the first timestamp. - * Decoding only. - */ - int max_ts_probe; /** * Avoid negative timestamps during muxing. @@ -1599,22 +1655,6 @@ typedef struct AVFormatContext { */ int audio_preload; - /** - * Max chunk time in microseconds. - * Note, not all formats support this and unpredictable things may happen if it is used when not supported. - * - encoding: Set by user - * - decoding: unused - */ - int max_chunk_duration; - - /** - * Max chunk size in bytes - * Note, not all formats support this and unpredictable things may happen if it is used when not supported. - * - encoding: Set by user - * - decoding: unused - */ - int max_chunk_size; - /** * forces the use of wallclock timestamps as pts/dts of packets * This has undefined results in the presence of B frames. @@ -1623,6 +1663,13 @@ typedef struct AVFormatContext { */ int use_wallclock_as_timestamps; + /** + * Skip duration calcuation in estimate_timings_from_pts. + * - encoding: unused + * - decoding: set by user + */ + int skip_estimate_duration_from_pts; + /** * avio flags, used to force AVIO_FLAG_DIRECT. * - encoding: unused @@ -1702,6 +1749,20 @@ typedef struct AVFormatContext { */ char *format_whitelist; + /** + * ',' separated list of allowed protocols. + * - encoding: unused + * - decoding: set by user + */ + char *protocol_whitelist; + + /** + * ',' separated list of disallowed protocols. + * - encoding: unused + * - decoding: set by user + */ + char *protocol_blacklist; + /** * IO repositioned flag. * This is set by avformat when the underlaying IO context read pointer @@ -1774,19 +1835,6 @@ typedef struct AVFormatContext { */ uint8_t *dump_separator; - /** - * Forced Data codec_id. - * Demuxing: Set by user. - */ - enum AVCodecID data_codec_id; - - /** - * ',' separated list of allowed protocols. - * - encoding: unused - * - decoding: set by user - */ - char *protocol_whitelist; - /** * A callback for opening new IO streams. * @@ -1810,34 +1858,6 @@ typedef struct AVFormatContext { int (*io_open)(struct AVFormatContext *s, AVIOContext **pb, const char *url, int flags, AVDictionary **options); - /** - * ',' separated list of disallowed protocols. - * - encoding: unused - * - decoding: set by user - */ - char *protocol_blacklist; - - /** - * The maximum number of streams. - * - encoding: unused - * - decoding: set by user - */ - int max_streams; - - /** - * Skip duration calcuation in estimate_timings_from_pts. - * - encoding: unused - * - decoding: set by user - */ - int skip_estimate_duration_from_pts; - - /** - * Maximum number of packets that can be probed - * - encoding: unused - * - decoding: set by user - */ - int max_probe_packets; - /** * A callback for closing the streams opened with AVFormatContext.io_open(). * @@ -1850,26 +1870,6 @@ typedef struct AVFormatContext { * @return 0 on success, a negative AVERROR code on failure */ int (*io_close2)(struct AVFormatContext *s, AVIOContext *pb); - - /** - * Number of elements in AVFormatContext.stream_groups. - * - * Set by avformat_stream_group_create(), must not be modified by any other code. - */ - unsigned int nb_stream_groups; - - /** - * A list of all stream groups in the file. New groups are created with - * avformat_stream_group_create(), and filled with avformat_stream_group_add_stream(). - * - * - demuxing: groups may be created by libavformat in avformat_open_input(). - * If AVFMTCTX_NOHEADER is set in ctx_flags, then new groups may also - * appear in av_read_frame(). - * - muxing: groups may be created by the user before avformat_write_header(). - * - * Freed by libavformat in avformat_free_context(). - */ - AVStreamGroup **stream_groups; } AVFormatContext; /** -- 2.44.0 _______________________________________________ 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".
next prev parent reply other threads:[~2024-03-04 18:07 UTC|newest] Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top 2024-01-25 13:43 [FFmpeg-devel] [PATCH 00/24] Major library version bump James Almer 2024-01-25 13:43 ` [FFmpeg-devel] [PATCH 01/24] avcodec: remove deprecated FF_API_IDCT_NONE James Almer 2024-01-25 13:43 ` [FFmpeg-devel] [PATCH 02/24] avcodec: remove deprecated FF_API_SVTAV1_OPTS James Almer 2024-01-25 13:43 ` [FFmpeg-devel] [PATCH 03/24] avcodec: remove deprecated FF_API_AYUV_CODECID James Almer 2024-01-25 13:43 ` [FFmpeg-devel] [PATCH 04/24] avcodec: remove deprecated FF_API_VT_OUTPUT_CALLBACK James Almer 2024-01-25 13:43 ` [FFmpeg-devel] [PATCH 05/24] avcodec: remove deprecated FF_API_AVCODEC_CHROMA_POS James Almer 2024-01-25 13:43 ` [FFmpeg-devel] [PATCH 06/24] avcodec: remove deprecated FF_API_VT_HWACCEL_CONTEXT James Almer 2024-01-25 13:43 ` [FFmpeg-devel] [PATCH 07/24] avcodec: remove deprecated FF_API_AVCTX_FRAME_NUMBER James Almer 2024-01-25 13:43 ` [FFmpeg-devel] [PATCH 08/24] avcodec: remove deprecated FF_CODEC_CRYSTAL_HD James Almer 2024-01-25 14:12 ` Andreas Rheinhardt 2024-01-25 14:23 ` James Almer 2024-01-25 13:43 ` [FFmpeg-devel] [PATCH 09/24] avformat: remove deprecated FF_API_GET_END_PTS James Almer 2024-01-25 13:43 ` [FFmpeg-devel] [PATCH 10/24] avformat: remove deprecated FF_API_AVIODIRCONTEXT James Almer 2024-01-25 13:43 ` [FFmpeg-devel] [PATCH 11/24] avformat: remove deprecated FF_API_AVFORMAT_IO_CLOSE James Almer 2024-01-25 13:43 ` [FFmpeg-devel] [PATCH 12/24] avfilter: remove deprecated FF_API_LIBPLACEBO_OPTS James Almer 2024-01-25 13:43 ` [FFmpeg-devel] [PATCH 13/24] avutil: remove deprecated FF_API_FIFO_PEEK2 James Almer 2024-01-25 13:43 ` [FFmpeg-devel] [PATCH 14/24] avutil: remove deprecated FF_API_FIFO_OLD_API James Almer 2024-01-25 13:43 ` [FFmpeg-devel] [PATCH 15/24] avutil: remove deprecated FF_API_XVMC James Almer 2024-01-25 13:43 ` [FFmpeg-devel] [PATCH 16/24] avutil: remove deprecated FF_API_OLD_CHANNEL_LAYOUT James Almer 2024-02-04 20:02 ` Andreas Rheinhardt 2024-01-25 13:43 ` [FFmpeg-devel] [PATCH 17/24] avutil: remove deprecated FF_API_AV_FOPEN_UTF8 James Almer 2024-01-25 13:43 ` [FFmpeg-devel] [PATCH 18/24] avutil: remove deprecated FF_API_PKT_DURATION James Almer 2024-02-04 20:04 ` Andreas Rheinhardt 2024-01-25 13:43 ` [FFmpeg-devel] [PATCH 19/24] avutil: remove deprecated FF_API_REORDERED_OPAQUE James Almer 2024-01-25 13:43 ` [FFmpeg-devel] [PATCH 20/24] avutil: remove deprecated FF_API_FRAME_PICTURE_NUMBER James Almer 2024-01-25 13:43 ` [FFmpeg-devel] [PATCH 21/24] avcodec/version_major: postpone some deprecations until the next bump James Almer 2024-01-25 13:43 ` [FFmpeg-devel] [PATCH 22/24] avformat/version_major: " James Almer 2024-01-25 14:34 ` Andreas Rheinhardt 2024-01-25 14:35 ` James Almer 2024-01-25 13:43 ` [FFmpeg-devel] [PATCH 23/24] avutil/version_major: " James Almer 2024-01-25 13:43 ` [FFmpeg-devel] [PATCH 24/24] libs: bump major version for all libraries James Almer 2024-01-26 16:44 ` Vittorio Giovara 2024-01-26 16:48 ` James Almer 2024-01-26 16:52 ` Martin Storsjö 2024-01-26 17:02 ` James Almer 2024-01-26 17:09 ` Martin Storsjö 2024-01-26 18:18 ` Michael Niedermayer 2024-01-26 18:21 ` James Almer 2024-01-26 18:22 ` Michael Niedermayer 2024-01-25 16:23 ` [FFmpeg-devel] [PATCH 00/24] Major library version bump James Almer 2024-02-07 13:11 ` James Almer 2024-01-28 12:31 ` Anton Khirnov 2024-02-04 13:02 ` James Almer 2024-02-10 14:50 ` [FFmpeg-devel] [PATCH 25/27] avformat/avformat: Add FFInputFormat, hide internals of AVInputFormat Andreas Rheinhardt 2024-02-10 14:50 ` [FFmpeg-devel] [PATCH 26/27] avutil/opt: Don't use AV_OPT_TYPE_FLAGS for sentinels Andreas Rheinhardt 2024-02-10 14:50 ` [FFmpeg-devel] [PATCH 27/27] avformat/demux: Use enum AVCodecID for raw_codec_id Andreas Rheinhardt 2024-02-10 23:04 ` [FFmpeg-devel] [PATCH 28/35] avfilter/avfilter: Avoid allocation for AVFilterInternal Andreas Rheinhardt 2024-02-10 23:04 ` [FFmpeg-devel] [PATCH 29/35] avfilter: Add a header for internal generic-layer APIs Andreas Rheinhardt 2024-02-10 23:04 ` [FFmpeg-devel] [PATCH 30/35] avfilter/avfiltergraph: Avoid indirection when freeing filtergraph Andreas Rheinhardt 2024-02-10 23:04 ` [FFmpeg-devel] [PATCH 31/35] avfilter/avfiltergraph: Avoid allocation for AVFilterGraphInternal Andreas Rheinhardt 2024-02-10 23:04 ` [FFmpeg-devel] [PATCH 32/35] avfilter/af_hdcd: Drop a redundant log Andreas Rheinhardt 2024-02-13 17:31 ` Andreas Rheinhardt 2024-02-10 23:04 ` [FFmpeg-devel] [PATCH 33/35] avfilter/avfilter: Move AVFilterGraph private fields to FFFilterGraph Andreas Rheinhardt 2024-02-10 23:04 ` [FFmpeg-devel] [PATCH 34/35] avcodec/avcodec: Reorder AVCodecContext and AVSubtitleRect fields Andreas Rheinhardt 2024-02-10 23:04 ` [FFmpeg-devel] [PATCH 35/35] avfilter/avfilter: Reorder structure fields Andreas Rheinhardt 2024-03-04 15:11 ` [FFmpeg-devel] [PATCH] lavc: move AVCodecContext.pts_correction* to DecodeContext Anton Khirnov 2024-03-04 18:06 ` [FFmpeg-devel] [PATCH5] avcodec/codec_par: Reorder AVCodecParameters fields James Almer 2024-03-04 18:06 ` [FFmpeg-devel] [PATCH 1/2] avformat/avformat: remove AVFormatContext.ts_id James Almer 2024-03-04 18:06 ` James Almer [this message] 2024-03-04 18:06 ` [FFmpeg-devel] [PATCH] lavc: move AVCodecContext.pts_correction* to DecodeContext James Almer
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=20240304180613.7280-3-jamrial@gmail.com \ --to=jamrial@gmail.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