* filename -- original name of the file.
* genre -- <self-evident>.
* language -- main language in which the work is performed, preferably
- * in ISO 639-2 format.
+ * in ISO 639-2 format. Multiple languages can be specified by
+ * separating them with commas.
* performer -- artist who performed the work, if different from artist.
* E.g for "Also sprach Zarathustra", artist would be "Richard
* Strauss" and performer "London Philharmonic Orchestra".
* service_provider -- name of the service provider in broadcasting.
* title -- name of the work.
* track -- number of this work in the set, can be in form current/total.
+ * variant_bitrate -- the total bitrate of the bitrate variant that the current stream is part of
*/
#define AV_METADATA_MATCH_CASE 1
}AVMetadataTag;
typedef struct AVMetadata AVMetadata;
-#if FF_API_OLD_METADATA
+#if FF_API_OLD_METADATA2
typedef struct AVMetadataConv AVMetadataConv;
#endif
AVMetadataTag *
av_metadata_get(AVMetadata *m, const char *key, const AVMetadataTag *prev, int flags);
-#if FF_API_OLD_METADATA
-/**
- * Set the given tag in *pm, overwriting an existing tag.
- *
- * @param pm pointer to a pointer to a metadata struct. If *pm is NULL
- * a metadata struct is allocated and put in *pm.
- * @param key tag key to add to *pm (will be av_strduped)
- * @param value tag value to add to *pm (will be av_strduped)
- * @return >= 0 on success otherwise an error code <0
- * @deprecated Use av_metadata_set2() instead.
- */
-attribute_deprecated int av_metadata_set(AVMetadata **pm, const char *key, const char *value);
-#endif
-
/**
* Set the given tag in *pm, overwriting an existing tag.
*
*/
int av_metadata_set2(AVMetadata **pm, const char *key, const char *value, int flags);
-#if FF_API_OLD_METADATA
+#if FF_API_OLD_METADATA2
/**
* This function is provided for compatibility reason and currently does nothing.
*/
unsigned int initial_pause:1; /**< Do not begin to play the stream
immediately (RTSP only). */
unsigned int prealloced_context:1;
-#if FF_API_PARAMETERS_CODEC_ID
- attribute_deprecated enum CodecID video_codec_id;
- attribute_deprecated enum CodecID audio_codec_id;
-#endif
} AVFormatParameters;
//! Demuxer will use avio_open, no opened file should be provided by the caller.
int (*write_packet)(struct AVFormatContext *, AVPacket *pkt);
int (*write_trailer)(struct AVFormatContext *);
/**
- * can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, AVFMT_GLOBALHEADER
+ * can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, AVFMT_RAWPICTURE,
+ * AVFMT_GLOBALHEADER, AVFMT_NOTIMESTAMPS, AVFMT_VARIABLE_FPS,
+ * AVFMT_NODIMENSIONS, AVFMT_NOSTREAMS
*/
int flags;
/**
enum CodecID subtitle_codec; /**< default subtitle codec */
-#if FF_API_OLD_METADATA
+#if FF_API_OLD_METADATA2
const AVMetadataConv *metadata_conv;
#endif
*/
int (*read_seek2)(struct AVFormatContext *s, int stream_index, int64_t min_ts, int64_t ts, int64_t max_ts, int flags);
-#if FF_API_OLD_METADATA
+#if FF_API_OLD_METADATA2
const AVMetadataConv *metadata_conv;
#endif
*/
int64_t duration;
-#if FF_API_OLD_METADATA
- attribute_deprecated char language[4]; /**< ISO 639-2/B 3-letter language code (empty string if undefined) */
-#endif
-
/* av_read_frame() support */
enum AVStreamParseType need_parsing;
struct AVCodecParserContext *parser;
int64_t nb_frames; ///< number of frames in this stream if known or 0
-#if FF_API_LAVF_UNUSED
- attribute_deprecated int64_t unused[4+1];
-#endif
-
-#if FF_API_OLD_METADATA
- attribute_deprecated char *filename; /**< source filename of the stream */
-#endif
-
int disposition; /**< AV_DISPOSITION_* bit field */
AVProbeData probe_data;
double duration_error[MAX_STD_TIMEBASES];
int64_t codec_info_duration;
} *info;
+
+ /**
+ * flag to indicate that probing is requested
+ * NOT PART OF PUBLIC API
+ */
+ int request_probe;
} AVStream;
#define AV_PROGRAM_RUNNING 1
*/
typedef struct AVProgram {
int id;
-#if FF_API_OLD_METADATA
- attribute_deprecated char *provider_name; ///< network name for DVB streams
- attribute_deprecated char *name; ///< service name for DVB streams
-#endif
int flags;
enum AVDiscard discard; ///< selects which program to discard and which to feed to the caller
unsigned int *stream_index;
int id; ///< unique ID to identify the chapter
AVRational time_base; ///< time base in which the start/end timestamps are specified
int64_t start, end; ///< chapter start/end time in time_base units
-#if FF_API_OLD_METADATA
- attribute_deprecated char *title; ///< chapter title
-#endif
AVMetadata *metadata;
} AVChapter;
-#if FF_API_MAX_STREAMS
-#define MAX_STREAMS 20
-#endif
-
/**
* Format I/O context.
* New fields can be added to the end with minor version bumps.
void *priv_data;
AVIOContext *pb;
unsigned int nb_streams;
-#if FF_API_MAX_STREAMS
- AVStream *streams[MAX_STREAMS];
-#else
AVStream **streams;
-#endif
char filename[1024]; /**< input or output filename */
/* stream info */
int64_t timestamp;
-#if FF_API_OLD_METADATA
- attribute_deprecated char title[512];
- attribute_deprecated char author[512];
- attribute_deprecated char copyright[512];
- attribute_deprecated char comment[512];
- attribute_deprecated char album[512];
- attribute_deprecated int year; /**< ID3 year, 0 if none */
- attribute_deprecated int track; /**< track number, 0 if none */
- attribute_deprecated char genre[32]; /**< ID3 genre */
-#endif
int ctx_flags; /**< Format-specific flags, see AVFMTCTX_xx */
/* private data for pts handling (do not modify directly). */
/* av_read_frame() support */
AVStream *cur_st;
-#if FF_API_LAVF_UNUSED
- const uint8_t *cur_ptr_deprecated;
- int cur_len_deprecated;
- AVPacket cur_pkt_deprecated;
-#endif
/* av_seek_frame() support */
int64_t data_offset; /**< offset of the first packet */
-#if FF_API_INDEX_BUILT
- attribute_deprecated int index_built;
-#endif
int mux_rate;
unsigned int packet_size;
#define AVFMT_FLAG_NOFILLIN 0x0010 ///< Do not infer any values from other values, just return what is stored in the container
#define AVFMT_FLAG_NOPARSE 0x0020 ///< Do not use AVParsers, you also must set AVFMT_FLAG_NOFILLIN as the fillin code works on frames and no parsing -> no frames. Also seeking to frames can not work if parsing to find frame boundaries has been disabled
#define AVFMT_FLAG_RTP_HINT 0x0040 ///< Add RTP hinting to the output file
+#define AVFMT_FLAG_SORT_DTS 0x10000 ///< try to interleave outputted packets by dts (using this flag can slow demuxing down)
int loop_input;
struct AVPacketList *next;
} AVPacketList;
-#if FF_API_FIRST_FORMAT
-attribute_deprecated extern AVInputFormat *first_iformat;
-attribute_deprecated extern AVOutputFormat *first_oformat;
-#endif
-
/**
* If f is NULL, returns the first registered input format,
* if f is non-NULL, returns the next registered input format after f
*/
AVOutputFormat *av_oformat_next(AVOutputFormat *f);
-enum CodecID av_guess_image2_codec(const char *filename);
+#if FF_API_GUESS_IMG2_CODEC
+attribute_deprecated enum CodecID av_guess_image2_codec(const char *filename);
+#endif
/* XXX: Use automatic init with either ELF sections or C file parser */
/* modules. */
/* utils.c */
void av_register_input_format(AVInputFormat *format);
void av_register_output_format(AVOutputFormat *format);
-#if FF_API_GUESS_FORMAT
-attribute_deprecated AVOutputFormat *guess_stream_format(const char *short_name,
- const char *filename,
- const char *mime_type);
-
-/**
- * @deprecated Use av_guess_format() instead.
- */
-attribute_deprecated AVOutputFormat *guess_format(const char *short_name,
- const char *filename,
- const char *mime_type);
-#endif
/**
* Return the output format in the list of registered output formats
* @param buf buffer
* @param size buffer size
*
- * @see av_hex_dump_log, av_pkt_dump, av_pkt_dump_log
+ * @see av_hex_dump_log, av_pkt_dump2, av_pkt_dump_log2
*/
void av_hex_dump(FILE *f, uint8_t *buf, int size);
* @param buf buffer
* @param size buffer size
*
- * @see av_hex_dump, av_pkt_dump, av_pkt_dump_log
+ * @see av_hex_dump, av_pkt_dump2, av_pkt_dump_log2
*/
void av_hex_dump_log(void *avcl, int level, uint8_t *buf, int size);
* @param f The file stream pointer where the dump should be sent to.
* @param pkt packet to dump
* @param dump_payload True if the payload must be displayed, too.
+ * @param st AVStream that the packet belongs to
*/
-void av_pkt_dump(FILE *f, AVPacket *pkt, int dump_payload);
+void av_pkt_dump2(FILE *f, AVPacket *pkt, int dump_payload, AVStream *st);
+
/**
* Send a nice dump of a packet to the log.
* higher importance.
* @param pkt packet to dump
* @param dump_payload True if the payload must be displayed, too.
+ * @param st AVStream that the packet belongs to
*/
-void av_pkt_dump_log(void *avcl, int level, AVPacket *pkt, int dump_payload);
+void av_pkt_dump_log2(void *avcl, int level, AVPacket *pkt, int dump_payload,
+ AVStream *st);
+
+#if FF_API_PKT_DUMP
+attribute_deprecated void av_pkt_dump(FILE *f, AVPacket *pkt, int dump_payload);
+attribute_deprecated void av_pkt_dump_log(void *avcl, int level, AVPacket *pkt,
+ int dump_payload);
+#endif
/**
* Initialize libavformat and register all the muxers, demuxers and
*/
AVInputFormat *av_probe_input_format2(AVProbeData *pd, int is_opened, int *score_max);
+/**
+ * Guess the file format.
+ *
+ * @param is_opened Whether the file is already opened; determines whether
+ * demuxers with or without AVFMT_NOFILE are probed.
+ * @param score_ret The score of the best detection.
+ */
+AVInputFormat *av_probe_input_format3(AVProbeData *pd, int is_opened, int *score_ret);
+
/**
* Probe a bytestream to determine the input format. Each time a probe returns
* with a score that is too low, the probe buffer size is increased and another
int buf_size,
AVFormatParameters *ap);
-#if FF_API_ALLOC_FORMAT_CONTEXT
-/**
- * @deprecated Use avformat_alloc_context() instead.
- */
-attribute_deprecated AVFormatContext *av_alloc_format_context(void);
-#endif
-
/**
* Allocate an AVFormatContext.
* avformat_free_context() can be used to free the context and everything
const char *url,
int is_output);
-#if FF_API_PARSE_FRAME_PARAM
-/**
- * Parse width and height out of string str.
- * @deprecated Use av_parse_video_frame_size instead.
- */
-attribute_deprecated int parse_image_size(int *width_ptr, int *height_ptr,
- const char *str);
-
-/**
- * Convert framerate from a string to a fraction.
- * @deprecated Use av_parse_video_frame_rate instead.
- */
-attribute_deprecated int parse_frame_rate(int *frame_rate, int *frame_rate_base,
- const char *arg);
-#endif
-
#if FF_API_PARSE_DATE
/**
* Parse datestr and return a corresponding number of microseconds.
*/
int64_t av_gettime(void);
-/* ffm-specific for ffserver */
-#define FFM_PACKET_SIZE 4096
-int64_t ffm_read_write_index(int fd);
-int ffm_write_write_index(int fd, int64_t pos);
-void ffm_set_write_index(AVFormatContext *s, int64_t pos, int64_t file_size);
-
#if FF_API_FIND_INFO_TAG
/**
* @deprecated use av_find_info_tag in libavutil instead.
* all the contexts in the array (an AVCodecContext per RTP stream)
* must contain only one AVStream.
* @param n_files number of AVCodecContexts contained in ac
- * @param buff buffer where the SDP will be stored (must be allocated by
- * the caller)
+ * @param buf buffer where the SDP will be stored (must be allocated by
+ * the caller)
* @param size the size of the buffer
* @return 0 if OK, AVERROR_xxx on error
*/
-int avf_sdp_create(AVFormatContext *ac[], int n_files, char *buff, int size);
+int av_sdp_create(AVFormatContext *ac[], int n_files, char *buf, int size);
+
+#if FF_API_SDP_CREATE
+attribute_deprecated int avf_sdp_create(AVFormatContext *ac[], int n_files, char *buff, int size);
+#endif
/**
* Return a positive value if the given filename has one of the given