* All fields below this line are not part of the public API. They
* may not be used outside of libavformat and can be changed and
* removed at will.
- * New public fields should be added right above.
+ * Internal note: be aware that physically removing these fields
+ * will break ABI. Replace removed fields with dummy fields, and
+ * add new fields to AVStreamInternal.
*****************************************************************
*/
*/
int inject_global_side_data;
+ /*****************************************************************
+ * All fields above this line are not part of the public API.
+ * Fields below are part of the public API and ABI again.
+ *****************************************************************
+ */
+
/**
* String containing paris of key and values describing recommended encoder configuration.
* Paris are separated by ','.
/**
* Audio preload in microseconds.
* Note, not all formats support this and unpredictable things may happen if it is used when not supported.
- * - encoding: Set by user via AVOptions (NO direct access)
+ * - encoding: Set by user
* - decoding: unused
*/
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 via AVOptions (NO direct access)
+ * - 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 via AVOptions (NO direct access)
+ * - 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.
* - encoding: unused
- * - decoding: Set by user via AVOptions (NO direct access)
+ * - decoding: Set by user
*/
int use_wallclock_as_timestamps;
/**
* avio flags, used to force AVIO_FLAG_DIRECT.
* - encoding: unused
- * - decoding: Set by user via AVOptions (NO direct access)
+ * - decoding: Set by user
*/
int avio_flags;
* The duration field can be estimated through various ways, and this field can be used
* to know how the duration was estimated.
* - encoding: unused
- * - decoding: Read by user via AVOptions (NO direct access)
+ * - decoding: Read by user
*/
enum AVDurationEstimationMethod duration_estimation_method;
/**
* Skip initial bytes when opening stream
* - encoding: unused
- * - decoding: Set by user via AVOptions (NO direct access)
+ * - decoding: Set by user
*/
int64_t skip_initial_bytes;
/**
* Correct single timestamp overflows
* - encoding: unused
- * - decoding: Set by user via AVOptions (NO direct access)
+ * - decoding: Set by user
*/
unsigned int correct_ts_overflow;
/**
* Force seeking to any (also non key) frames.
* - encoding: unused
- * - decoding: Set by user via AVOptions (NO direct access)
+ * - decoding: Set by user
*/
int seek2any;
/**
* Flush the I/O context after each packet.
- * - encoding: Set by user via AVOptions (NO direct access)
+ * - encoding: Set by user
* - decoding: unused
*/
int flush_packets;
* The maximal score is AVPROBE_SCORE_MAX, its set when the demuxer probes
* the format.
* - encoding: unused
- * - decoding: set by avformat, read by user via av_format_get_probe_score() (NO direct access)
+ * - decoding: set by avformat, read by user
*/
int probe_score;
/**
* number of bytes to read maximally to identify format.
* - encoding: unused
- * - decoding: set by user through AVOPtions (NO direct access)
+ * - decoding: set by user
*/
int format_probesize;
* ',' separated list of allowed decoders.
* If NULL then all are allowed
* - encoding: unused
- * - decoding: set by user through AVOptions (NO direct access)
+ * - decoding: set by user
*/
char *codec_whitelist;
* ',' separated list of allowed demuxers.
* If NULL then all are allowed
* - encoding: unused
- * - decoding: set by user through AVOptions (NO direct access)
+ * - decoding: set by user
*/
char *format_whitelist;
* Forced video codec.
* This allows forcing a specific decoder, even when there are multiple with
* the same codec_id.
- * Demuxing: Set by user via av_format_set_video_codec (NO direct access).
+ * Demuxing: Set by user
*/
AVCodec *video_codec;
* Forced audio codec.
* This allows forcing a specific decoder, even when there are multiple with
* the same codec_id.
- * Demuxing: Set by user via av_format_set_audio_codec (NO direct access).
+ * Demuxing: Set by user
*/
AVCodec *audio_codec;
* Forced subtitle codec.
* This allows forcing a specific decoder, even when there are multiple with
* the same codec_id.
- * Demuxing: Set by user via av_format_set_subtitle_codec (NO direct access).
+ * Demuxing: Set by user
*/
AVCodec *subtitle_codec;
* Forced data codec.
* This allows forcing a specific decoder, even when there are multiple with
* the same codec_id.
- * Demuxing: Set by user via av_format_set_data_codec (NO direct access).
+ * Demuxing: Set by user
*/
AVCodec *data_codec;
/**
* Output timestamp offset, in microseconds.
- * Muxing: set by user via AVOptions (NO direct access)
+ * Muxing: set by user
*/
int64_t output_ts_offset;
/**
* dump format separator.
* can be ", " or "\n " or anything else
- * Code outside libavformat should access this field using AVOptions
- * (NO direct access).
* - muxing: Set by user.
* - demuxing: Set by user.
*/
/**
* ',' separated list of allowed protocols.
* - encoding: unused
- * - decoding: set by user through AVOptions (NO direct access)
+ * - decoding: set by user
*/
char *protocol_whitelist;
/**
* ',' separated list of disallowed protocols.
* - encoding: unused
- * - decoding: set by user through AVOptions (NO direct access)
+ * - decoding: set by user
*/
char *protocol_blacklist;
/**
* The maximum number of streams.
* - encoding: unused
- * - decoding: set by user through AVOptions (NO direct access)
+ * - decoding: set by user
*/
int max_streams;
} AVFormatContext;
+/**
+ * Accessors for some AVFormatContext fields. These used to be provided for ABI
+ * compatibility, and do not need to be used anymore.
+ */
int av_format_get_probe_score(const AVFormatContext *s);
AVCodec * av_format_get_video_codec(const AVFormatContext *s);
void av_format_set_video_codec(AVFormatContext *s, AVCodec *c);