FFmpeg
1.2.12
|
Functions for querying libavformat capabilities, allocating core structures, etc. More...
Modules | |
Demuxing | |
Demuxers read a media file and split it into chunks of data (packets). |
Functions | |
unsigned | avformat_version (void) |
Return the LIBAVFORMAT_VERSION_INT constant. | |
const char * | avformat_configuration (void) |
Return the libavformat build-time configuration. | |
const char * | avformat_license (void) |
Return the libavformat license. | |
void | av_register_all (void) |
Initialize libavformat and register all the muxers, demuxers and protocols. | |
void | av_register_input_format (AVInputFormat *format) |
void | av_register_output_format (AVOutputFormat *format) |
int | avformat_network_init (void) |
Do global initialization of network components. | |
int | avformat_network_deinit (void) |
Undo the initialization done by avformat_network_init. | |
AVInputFormat * | av_iformat_next (AVInputFormat *f) |
If f is NULL, returns the first registered input format, if f is non-NULL, returns the next registered input format after f or NULL if f is the last one. | |
AVOutputFormat * | av_oformat_next (AVOutputFormat *f) |
If f is NULL, returns the first registered output format, if f is non-NULL, returns the next registered output format after f or NULL if f is the last one. | |
AVFormatContext * | avformat_alloc_context (void) |
Allocate an AVFormatContext. | |
void | avformat_free_context (AVFormatContext *s) |
Free an AVFormatContext and all its streams. | |
const AVClass * | avformat_get_class (void) |
Get the AVClass for AVFormatContext. | |
AVStream * | avformat_new_stream (AVFormatContext *s, const AVCodec *c) |
Add a new stream to a media file. | |
AVProgram * | av_new_program (AVFormatContext *s, int id) |
Functions for querying libavformat capabilities, allocating core structures, etc.
< full parsing and repack
< Only parse headers, do not repack.
< full parsing and interpolation of timestamps for frames not starting on a packet boundary
< full parsing and repack of the first frame only, only implemented for H.264 currently
< full parsing and repack with timestamp and position generation by parser for raw this assumes that each packet in the file contains no demuxer level headers and just codec level data, otherwise position generation would fail
< Timestamp in AVStream.time_base units, preferably the time from which on correctly decoded frames are available when seeking to this entry. That means preferable PTS on keyframe based formats. But demuxers can choose to store a different timestamp, if it is more convenient for the implementation or nothing better is known
< Minimum distance between this and the previous keyframe, used to avoid unneeded searching.
Track should be used during playback by default. Useful for subtitle track that should be displayed even when user did not explicitly ask for subtitles.
The stream is stored in the file as an attached picture/"cover art" (e.g. APIC frame in ID3v2). The single packet associated with it will be returned among the first few packets read from the file unless seeking takes place. It can also be accessed at any time in AVStream.attached_pic.
Options for behavior on timestamp wrap detection.
Stream structure. New fields can be added to the end with minor version bumps. Removal, reordering and changes to existing fields require a major version bump. sizeof(AVStream) must not be used outside libav*.
< stream index in AVFormatContext
Format-specific stream ID. decoding: set by libavformat encoding: set by the user, replaced by libavformat if left unset
Codec context associated with this stream. Allocated and freed by libavformat.
Real base framerate of the stream. This is the lowest framerate with which all timestamps can be represented accurately (it is the least common multiple of all framerates in the stream). Note, this value is just a guess! For example, if the time base is 1/90000 and all frames have either approximately 3600 or 1800 timer ticks, then r_frame_rate will be 50/1.
encoding: pts generation when outputting stream
This is the fundamental unit of time (in seconds) in terms of which frame timestamps are represented.
decoding: set by libavformat encoding: set by libavformat in avformat_write_header. The muxer may use the user-provided value of codec->time_base as a hint.
Decoding: pts of the first frame of the stream in presentation order, in stream time base. Only set this if you are absolutely 100% sure that the value you set it to really is the pts of the first frame. This may be undefined (AV_NOPTS_VALUE).
Decoding: duration of the stream, in stream time base. If a source file does not specify a duration, but does specify a bitrate, this value will be estimated from bitrate and file size.
< number of frames in this stream if known or 0
< AV_DISPOSITION_* bit field
< Selects which packets can be discarded at will and do not need to be demuxed.
sample aspect ratio (0 if unknown)
Average framerate
For streams with AV_DISPOSITION_ATTACHED_PIC disposition, this packet will contain the attached picture.
decoding: set by libavformat, must not be modified by the caller. encoding: unused
Stream information used internally by av_find_stream_info()
Those are used for average framerate estimation.
< number of bits in pts (used for wrapping control)
Timestamp corresponding to the last dts sync point.
Initialized when AVCodecParserContext.dts_sync_point >= 0 and a DTS is received from the underlying container. Otherwise set to AV_NOPTS_VALUE by default.
Number of packets to buffer for codec probing
Number of frames that have been demuxed during av_find_stream_info()
Stream Identifier This is the MPEG-TS stream identifier +1 0 means unknown
last packet in packet_buffer for this stream when muxing.
< Only used if the format does not support seeking natively.
stream probing state -1 -> probing finished 0 -> no probing requested rest -> perform probing with request_probe being the minimum score to accept. NOT PART OF PUBLIC API
Indicates that everything up to the next keyframe should be discarded.
Number of samples to skip at the start of the frame decoded from the next packet.
Number of internally decoded frames, used internally in libavformat, do not access its lifetime differs from info which is why it is not in that structure.
Timestamp offset added to timestamps before muxing NOT PART OF PUBLIC API
Internal data to check for wrapping of the time stamp
Options for behavior, when a wrap is detected.
Defined by AV_PTS_WRAP_ values.
If correction is enabled, there are two possibilities: If the first time stamp is near the wrap point, the wrap offset will be subtracted, which will create negative time stamps. Otherwise the offset will be added.
New fields can be added to the end with minor version bumps. Removal, reordering and changes to existing fields require a major version bump. sizeof(AVProgram) must not be used outside libav*.
< selects which program to discard and which to feed to the caller
< reference dts for wrap detection
< behavior on wrap detection
< unique ID to identify the chapter
< time base in which the start/end timestamps are specified
< chapter start/end time in time_base units
The duration of a video can be estimated through various ways, and this enum can be used to know how the duration was estimated.
< Duration accurately estimated from PTSes
< Duration estimated from a stream with a known duration
< Duration estimated from bitrate (less accurate)
Format I/O context. New fields can be added to the end with minor version bumps. Removal, reordering and changes to existing fields require a major version bump. sizeof(AVFormatContext) must not be used outside libav*, use avformat_alloc_context() to create an AVFormatContext.
A class for logging and AVOptions. Set by avformat_alloc_context(). Exports (de)muxer private options if they exist.
Can only be iformat or oformat, not both at the same time.
decoding: set by avformat_open_input(). encoding: set by the user.
Format private data. This is an AVOptions-enabled struct if and only if iformat/oformat.priv_class is not NULL.
I/O context.
decoding: either set by the user before avformat_open_input() (then the user must close it manually) or set by avformat_open_input(). encoding: set by the user.
Do NOT set this field if AVFMT_NOFILE flag is set in iformat/oformat.flags. In such a case, the (de)muxer will handle I/O in some other way and this field will be NULL.
< Format-specific flags, see AVFMTCTX_xx
A list of all streams in the file. New streams are created with avformat_new_stream().
decoding: streams are created by libavformat in avformat_open_input(). If AVFMTCTX_NOHEADER is set in ctx_flags, then new streams may also appear in av_read_frame(). encoding: streams are created by the user before avformat_write_header().
< input or output filename
Decoding: position of the first frame of the component, in AV_TIME_BASE fractional seconds. NEVER set this value directly: It is deduced from the AVStream values.
Decoding: duration of the stream, in AV_TIME_BASE fractional seconds. Only set this value if you know none of the individual stream durations and also do not set any of them. This is deduced from the AVStream values if not set.
Decoding: total stream bitrate in bit/s, 0 if not available. Never set it directly if the file_size and the duration are known as FFmpeg can compute it automatically.
decoding: size of data to probe; encoding: unused.
decoding: maximum time (in AV_TIME_BASE units) during which the input should be analyzed in avformat_find_stream_info().
Forced video codec_id. Demuxing: Set by user.
Forced audio codec_id. Demuxing: Set by user.
Forced subtitle codec_id. Demuxing: Set by user.
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
Maximum amount of memory in bytes to use for buffering frames obtained from realtime capture devices.
Start time of the stream in real world time, in microseconds since the unix epoch (00:00 1st January 1970). That is, pts=0 in the stream was captured at this real world time.
decoding: number of frames used to probe fps
Error recognition; higher values will detect more errors but may misdetect some more or less valid parts as errors.
Custom interrupt callbacks for the I/O layer.
decoding: set by the user before avformat_open_input(). encoding: set by the user before avformat_write_header() (mainly useful for AVFMT_NOFILE formats). The callback should also be passed to avio_open2() if it's used to open the file.
Flags to enable debugging.
Transport stream id. This will be moved into demuxer private options. Thus no API/ABI compatibility
Audio preload in microseconds. Note, not all formats support this and unpredictable things may happen if it is used when not supported.
Max chunk time in microseconds. Note, not all formats support this and unpredictable things may happen if it is used when not supported.
Max chunk size in bytes Note, not all formats support this and unpredictable things may happen if it is used when not supported.
forces the use of wallclock timestamps as pts/dts of packets This has undefined results in the presence of B frames.
Avoids negative timestamps during muxing 0 -> allow negative timestamps 1 -> avoid negative timestamps -1 -> choose automatically (default) Note, this is only works when interleave_packet_per_dts is in use
avio flags, used to force AVIO_FLAG_DIRECT.
The duration field can be estimated through various ways, and this field can be used to know how the duration was estimated.
Skip initial bytes when opening stream
Correct single timestamp overflows
Force seeking to any (also non key) frames.
This buffer is only needed when packets were already buffered but not decoded, for example to get the codec parameters in MPEG streams.
< offset of the first packet
Raw packets from the demuxer, prior to parsing and decoding. This buffer is used for buffering packets until the codec can be identified, as parsing cannot be done without knowing the codec.
Packets split by the parser get queued here.
Remaining size available for raw_packet_buffer, in bytes.
Returns the method used to set ctx->duration.
Functions for querying libavformat capabilities, allocating core structures, etc.
AVInputFormat * av_iformat_next | ( | AVInputFormat * | f | ) |
If f is NULL, returns the first registered input format, if f is non-NULL, returns the next registered input format after f or NULL if f is the last one.
Definition at line 107 of file utils.c.
Referenced by av_find_input_format(), av_probe_input_format3(), format_child_class_next(), probe(), show_format_opts(), and show_formats().
AVProgram * av_new_program | ( | AVFormatContext * | s, |
int | id | ||
) |
Definition at line 3370 of file utils.c.
Referenced by hls_read_header(), pat_cb(), and sdt_cb().
AVOutputFormat * av_oformat_next | ( | AVOutputFormat * | f | ) |
If f is NULL, returns the first registered output format, if f is non-NULL, returns the next registered output format after f or NULL if f is the last one.
Definition at line 113 of file utils.c.
Referenced by av_guess_format(), format_child_class_next(), show_format_opts(), and show_formats().
Initialize libavformat and register all the muxers, demuxers and protocols.
If you do not call this function, then you can select exactly which formats you want to support.
Definition at line 52 of file allformats.c.
Referenced by ff_load_image(), main(), and movie_common_init().
void av_register_input_format | ( | AVInputFormat * | format | ) |
void av_register_output_format | ( | AVOutputFormat * | format | ) |
AVFormatContext * avformat_alloc_context | ( | void | ) |
Allocate an AVFormatContext.
avformat_free_context() can be used to free the context and everything allocated by the framework within it.
Definition at line 106 of file options.c.
Referenced by avformat_alloc_output_context2(), avformat_open_input(), ff_mov_read_stsd_entries(), ff_rtp_chain_mux_open(), ff_wms_parse_sdp_a_line(), hls_mux_init(), hls_read_header(), http_receive_data(), ism_write_header(), mpegts_write_header(), open_input_file(), prepare_sdp_description(), read_ffserver_streams(), read_gab2_sub(), read_thread(), rtp_new_av_stream(), sap_read_header(), and segment_mux_init().
const char * avformat_configuration | ( | void | ) |
void avformat_free_context | ( | AVFormatContext * | s | ) |
Free an AVFormatContext and all its streams.
s | context to free |
Definition at line 3240 of file utils.c.
Referenced by avformat_alloc_output_context2(), avformat_close_input(), avformat_open_input(), close_slaves(), exit_program(), ff_mov_close_hinting(), ff_rtp_chain_mux_open(), ff_rtsp_undo_setup(), hls_read_header(), hls_write_header(), hls_write_trailer(), ism_free(), main(), mpegts_write_end(), mpegts_write_header(), sap_write_close(), seg_write_header(), seg_write_trailer(), and segment_start().
Get the AVClass for AVFormatContext.
It can be used in combination with AV_OPT_SEARCH_FAKE_OBJ for examining options.
Definition at line 120 of file options.c.
Referenced by opt_default(), show_format_opts(), and show_help_default().
const char * avformat_license | ( | void | ) |
int avformat_network_deinit | ( | void | ) |
Undo the initialization done by avformat_network_init.
Definition at line 4164 of file utils.c.
Referenced by do_exit(), exit_program(), main(), and term_init().
int avformat_network_init | ( | void | ) |
Do global initialization of network components.
This is optional, but recommended, since it avoids the overhead of implicitly doing the setup for each session.
Calling this function will become mandatory if using network protocols at some major version bump.
Definition at line 4152 of file utils.c.
Referenced by main().
AVStream * avformat_new_stream | ( | AVFormatContext * | s, |
const AVCodec * | c | ||
) |
Add a new stream to a media file.
When demuxing, it is called by the demuxer in read_header(). If the flag AVFMTCTX_NOHEADER is set in s.ctx_flags, then it may also be called in read_packet().
When muxing, should be called by the user before avformat_write_header().
c | If non-NULL, the AVCodecContext corresponding to the new stream will be initialized to use this codec. This is needed for e.g. codec-specific defaults to be set, so codec should be provided if it is known. |
Definition at line 3311 of file utils.c.
Referenced by add_dstream(), add_stream(), adts_aac_read_header(), adx_read_header(), aea_read_header(), afc_read_header(), aiff_read_header(), amr_read_header(), apc_read_header(), ape_read_header(), ape_tag_read_field(), aqt_read_header(), asf_read_picture(), asf_read_stream_properties(), ass_read_header(), ast_read_header(), audio_read_header(), avi_read_header(), avisynth_read_header(), avpriv_dv_init_demux(), avr_read_header(), avs_read_packet(), bfi_read_header(), bmv_read_header(), cdata_read_header(), cdxl_read_packet(), cin_read_header(), concat_read_header(), create_audio_stream(), create_new_audio_stream(), create_stream(), daud_header(), dc1394_read_common(), decode_main_header(), dfa_read_header(), dshow_add_device(), dtshd_read_header(), dv_extract_audio_info(), dxa_read_header(), ea_read_header(), epaf_read_header(), fbdev_read_header(), ff_id3v2_parse_apic(), ff_raw_audio_read_header(), ff_raw_video_read_header(), ff_rtp_chain_mux_open(), ff_spdif_read_packet(), ffm2_read_header(), ffm_read_header(), film_read_header(), flac_read_header(), fourxm_read_header(), frm_read_header(), g722_read_header(), g723_1_init(), g729_read_header(), get_attachment(), get_sindex(), gif_read_header(), grab_read_header(), gsm_read_header(), hls_mux_init(), hls_read_header(), idcin_read_header(), iec61883_read_header(), iff_read_header(), ilbc_read_header(), img_read_header(), init_stream(), ipmovie_read_header(), ircam_read_header(), ism_write_header(), iss_read_header(), jacosub_read_header(), lavfi_read_header(), lmlm4_read_header(), loas_read_header(), lvf_read_header(), lxf_read_header(), matroska_read_header(), microdvd_read_header(), mmf_read_header(), modplug_read_header(), mov_read_covr(), mov_read_trak(), mp3_read_header(), mpc8_read_header(), mpc_read_header(), mpegps_read_packet(), mpegts_push_data(), mpegts_read_header(), mpegts_set_stream_info(), mpegts_write_header(), mpl2_read_header(), mpsub_read_header(), msnwc_tcp_read_header(), mtv_read_header(), mv_read_header(), mxf_parse_structural_metadata(), mxg_read_header(), nc_read_header(), new_output_stream(), new_stream(), nist_read_header(), nsv_parse_NSVs_header(), nut_read_header(), nuv_header(), ogg_new_stream(), oma_read_header(), open_slave(), parse_picture(), pcm_read_header(), pjs_read_header(), pmp_header(), pmt_cb(), pulse_read_header(), pva_read_header(), pvf_read_header(), qcp_read_header(), r3d_read_red1(), rawvideo_read_header(), read_desc_chunk(), read_frame(), read_header(), read_packet(), realtext_read_header(), rl2_read_header(), rm_read_header(), rm_read_header_old(), roq_read_packet(), rpl_read_header(), rso_read_header(), sami_read_header(), sap_fetch_packet(), sap_read_header(), sbg_read_header(), segment_mux_init(), seq_read_header(), siff_parse_vbv1(), smacker_read_header(), smjpeg_read_header(), smush_read_header(), sol_read_header(), sox_read_header(), srt_read_header(), str_read_packet(), subviewer1_read_header(), subviewer_read_header(), swf_read_packet(), tak_read_header(), tedcaptions_read_header(), thp_read_header(), tmv_read_header(), tta_read_header(), txd_read_header(), v4l2_read_header(), vc1t_read_header(), vfw_read_header(), vid_read_packet(), vivo_read_header(), vmd_read_header(), voc_read_header(), vplayer_read_header(), vqf_read_header(), wc3_read_header(), webvtt_read_header(), wsaud_read_header(), wsvqa_read_header(), wsvqa_read_packet(), wv_read_header(), x11grab_read_header(), xa_read_header(), xmv_read_header(), xwma_read_header(), yop_read_header(), and yuv4_read_header().