* av_read_frame() on it. Each call, if successful, will return an AVPacket
* containing encoded data for one AVStream, identified by
* AVPacket.stream_index. This packet may be passed straight into the libavcodec
- * decoding functions avcodec_decode_video2(), avcodec_decode_audio4() or
- * avcodec_decode_subtitle2() if the caller wishes to decode the data.
+ * decoding functions avcodec_send_packet() or avcodec_decode_subtitle2() if the
+ * caller wishes to decode the data.
*
* AVPacket.pts, AVPacket.dts and AVPacket.duration timing information will be
* set if known. They may also be unset (i.e. AV_NOPTS_VALUE for
* can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER,
* AVFMT_GLOBALHEADER, AVFMT_NOTIMESTAMPS, AVFMT_VARIABLE_FPS,
* AVFMT_NODIMENSIONS, AVFMT_NOSTREAMS, AVFMT_ALLOW_FLUSH,
- * AVFMT_TS_NONSTRICT
+ * AVFMT_TS_NONSTRICT, AVFMT_TS_NEGATIVE
*/
int flags;
* encoding: set by the user, replaced by libavformat if left unset
*/
int id;
+#if FF_API_LAVF_AVCTX
/**
- * Codec context associated with this stream. Allocated and freed by
- * libavformat.
- *
- * - decoding: The demuxer exports codec information stored in the headers
- * here.
- * - encoding: The user sets codec information, the muxer writes it to the
- * output. Mandatory fields as specified in AVCodecContext
- * documentation must be set even if this AVCodecContext is
- * not actually used for encoding.
+ * @deprecated use the codecpar struct instead
*/
+ attribute_deprecated
AVCodecContext *codec;
+#endif
void *priv_data;
#if FF_API_LAVF_FRAC
int event_flags;
#define AVSTREAM_EVENT_FLAG_METADATA_UPDATED 0x0001 ///< The call resulted in updated metadata.
+ /*
+ * Codec parameters associated with this stream. Allocated and freed by
+ * libavformat in avformat_new_stream() and avformat_free_context()
+ * respectively.
+ *
+ * - demuxing: filled by libavformat on stream creation or in
+ * avformat_find_stream_info()
+ * - muxing: filled by the caller before avformat_write_header()
+ */
+ AVCodecParameters *codecpar;
+
/*****************************************************************
* 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
/**
* A callback for opening new IO streams.
*
- * Certain muxers or demuxers (e.g. for various playlist-based formats) need
- * to open additional files during muxing or demuxing. This callback allows
- * the caller to provide custom IO in such cases.
+ * Whenever a muxer or a demuxer needs to open an IO stream (typically from
+ * avformat_open_input() for demuxers, but for certain formats can happen at
+ * other times as well), it will call this callback to obtain an IO context.
*
* @param s the format context
* @param pb on success, the newly opened IO context should be returned here
* A callback for closing the streams opened with AVFormatContext.io_open().
*/
void (*io_close)(struct AVFormatContext *s, AVIOContext *pb);
+
+ /**
+ * A comma-separated list of protocol names that will not be used internally
+ * by libavformat. If this field is a non-empty string, then protocols
+ * listed here will be forbidden.
+ *
+ * This field should be set using AVOptions.
+ */
+ char *protocol_blacklist;
+
+ /**
+ * A comma-separated list of protocol names that can be used internally by
+ * libavformat. If this field is a non-empty string, all protocols not
+ * listed here will be forbidden.
+ *
+ * This field should be set using AVOptions.
+ */
+ char *protocol_whitelist;
} AVFormatContext;
typedef struct AVPacketList {
* @param ic the context to analyze
* @param index the index to print, if you have multiple inputs or outputs
* @param url the URL to print, such as source or destination file
- * @param is_output whether the context is input or ouput
+ * @param is_output whether the context is input or output
*/
void av_dump_format(AVFormatContext *ic,
int index,