#include "avformat.h"
#include "opt.h"
#include "avstring.h"
#include "riff.h"
#include <sys/time.h>
#include <time.h>
#include <assert.h>
Go to the source code of this file.
Defines | |
#define | OFFSET(x) offsetof(AVFormatContext,x) |
#define | DEFAULT 0 |
#define | E AV_OPT_FLAG_ENCODING_PARAM |
#define | D AV_OPT_FLAG_DECODING_PARAM |
#define | PROBE_BUF_MIN 2048 |
size of probe buffer, for guessing file type from file contents | |
#define | PROBE_BUF_MAX (1<<20) |
#define | DEBUG_SEEK |
#define | DURATION_MAX_READ_SIZE 250000 |
#define | MAX_READ_SIZE 5000000 |
#define | MAX_STD_TIMEBASES (60*12+5) |
#define | PRINT(...) do { if (!f) av_log(avcl, level, __VA_ARGS__); else fprintf(f, __VA_ARGS__); } while(0) |
#define | PRINT(...) do { if (!f) av_log(avcl, level, __VA_ARGS__); else fprintf(f, __VA_ARGS__); } while(0) |
Functions | |
static void | av_frac_init (AVFrac *f, int64_t val, int64_t num, int64_t den) |
f = val + (num / den) + 0.5. | |
static void | av_frac_add (AVFrac *f, int64_t incr) |
Fractional addition to f: f = f + (incr / f->den). | |
AVInputFormat * | av_iformat_next (AVInputFormat *f) |
AVOutputFormat * | av_oformat_next (AVOutputFormat *f) |
void | av_register_input_format (AVInputFormat *format) |
void | av_register_output_format (AVOutputFormat *format) |
int | match_ext (const char *filename, const char *extensions) |
AVOutputFormat * | guess_format (const char *short_name, const char *filename, const char *mime_type) |
AVOutputFormat * | guess_stream_format (const char *short_name, const char *filename, const char *mime_type) |
enum CodecID | av_guess_codec (AVOutputFormat *fmt, const char *short_name, const char *filename, const char *mime_type, enum CodecType type) |
Guesses the codec id based upon muxer and filename. | |
AVInputFormat * | av_find_input_format (const char *short_name) |
finds AVInputFormat based on input format's short name. | |
void | av_destruct_packet (AVPacket *pkt) |
Default packet destructor. | |
void | av_init_packet (AVPacket *pkt) |
Initialize optional fields of a packet to default values. | |
int | av_new_packet (AVPacket *pkt, int size) |
Allocate the payload of a packet and initialize its fields to default values. | |
int | av_get_packet (ByteIOContext *s, AVPacket *pkt, int size) |
Allocate and read the payload of a packet and initialize its fields to default values. | |
int | av_dup_packet (AVPacket *pkt) |
int | av_filename_number_test (const char *filename) |
Check whether filename actually is a numbered sequence generator. | |
static AVInputFormat * | av_probe_input_format2 (AVProbeData *pd, int is_opened, int *score_max) |
AVInputFormat * | av_probe_input_format (AVProbeData *pd, int is_opened) |
Guess file format. | |
static const char * | format_to_name (void *ptr) |
Open a media file from an IO stream. | |
static void | avformat_get_context_defaults (AVFormatContext *s) |
AVFormatContext * | av_alloc_format_context (void) |
Allocate an AVFormatContext. | |
int | av_open_input_stream (AVFormatContext **ic_ptr, ByteIOContext *pb, const char *filename, AVInputFormat *fmt, AVFormatParameters *ap) |
Allocates all the structures needed to read an input stream. | |
int | av_open_input_file (AVFormatContext **ic_ptr, const char *filename, AVInputFormat *fmt, int buf_size, AVFormatParameters *ap) |
Open a media file as input. | |
int | av_read_packet (AVFormatContext *s, AVPacket *pkt) |
Read a transport packet from a media file. | |
static int | get_audio_frame_size (AVCodecContext *enc, int size) |
Get the number of samples of an audio frame. | |
static void | compute_frame_duration (int *pnum, int *pden, AVStream *st, AVCodecParserContext *pc, AVPacket *pkt) |
Return the frame duration in seconds. | |
static int | is_intra_only (AVCodecContext *enc) |
static void | update_initial_timestamps (AVFormatContext *s, int stream_index, int64_t dts, int64_t pts) |
static void | compute_pkt_fields (AVFormatContext *s, AVStream *st, AVCodecParserContext *pc, AVPacket *pkt) |
void | av_destruct_packet_nofree (AVPacket *pkt) |
static int | av_read_frame_internal (AVFormatContext *s, AVPacket *pkt) |
static AVPacket * | add_to_pktbuf (AVFormatContext *s, AVPacket *pkt) |
int | av_read_frame (AVFormatContext *s, AVPacket *pkt) |
Return the next frame of a stream. | |
static void | flush_packet_queue (AVFormatContext *s) |
int | av_find_default_stream_index (AVFormatContext *s) |
static void | av_read_frame_flush (AVFormatContext *s) |
Flush the frame reader. | |
void | av_update_cur_dts (AVFormatContext *s, AVStream *ref_st, int64_t timestamp) |
Updates cur_dts of all streams based on given timestamp and AVStream. | |
void | ff_reduce_index (AVFormatContext *s, int stream_index) |
Ensures the index uses less memory than the maximum specified in AVFormatContext.max_index_size, by discarding entries if it grows too large. | |
int | av_add_index_entry (AVStream *st, int64_t pos, int64_t timestamp, int size, int distance, int flags) |
Add a index entry into a sorted list updateing if it is already there. | |
int | av_index_search_timestamp (AVStream *st, int64_t wanted_timestamp, int flags) |
Gets the index for a specific timestamp. | |
int | av_seek_frame_binary (AVFormatContext *s, int stream_index, int64_t target_ts, int flags) |
Does a binary search using av_index_search_timestamp() and AVCodec.read_timestamp(). | |
int64_t | av_gen_search (AVFormatContext *s, int stream_index, int64_t target_ts, int64_t pos_min, int64_t pos_max, int64_t pos_limit, int64_t ts_min, int64_t ts_max, int flags, int64_t *ts_ret, int64_t(*read_timestamp)(struct AVFormatContext *, int, int64_t *, int64_t)) |
Does a binary search using read_timestamp(). | |
static int | av_seek_frame_byte (AVFormatContext *s, int stream_index, int64_t pos, int flags) |
static int | av_seek_frame_generic (AVFormatContext *s, int stream_index, int64_t timestamp, int flags) |
int | av_seek_frame (AVFormatContext *s, int stream_index, int64_t timestamp, int flags) |
Seek to the key frame at timestamp. | |
static int | av_has_duration (AVFormatContext *ic) |
Returns TRUE if the stream has accurate duration in any stream. | |
static void | av_update_stream_timings (AVFormatContext *ic) |
Estimate the stream timings from the one of each components. | |
static void | fill_all_stream_timings (AVFormatContext *ic) |
static void | av_estimate_timings_from_bit_rate (AVFormatContext *ic) |
static void | av_estimate_timings_from_pts (AVFormatContext *ic, offset_t old_offset) |
static void | av_estimate_timings (AVFormatContext *ic, offset_t old_offset) |
static int | has_codec_parameters (AVCodecContext *enc) |
static int | try_decode_frame (AVStream *st, const uint8_t *data, int size) |
static int | set_codec_from_probe_data (AVStream *st, AVProbeData *pd, int score) |
unsigned int | codec_get_tag (const AVCodecTag *tags, int id) |
enum CodecID | codec_get_id (const AVCodecTag *tags, unsigned int tag) |
unsigned int | av_codec_get_tag (const AVCodecTag *tags[4], enum CodecID id) |
enum CodecID | av_codec_get_id (const AVCodecTag *tags[4], unsigned int tag) |
static int | get_std_framerate (int i) |
static int | tb_unreliable (AVCodecContext *c) |
int | av_find_stream_info (AVFormatContext *ic) |
Read packets of a media file to get stream information. | |
int | av_read_play (AVFormatContext *s) |
start playing a network based stream (e.g. | |
int | av_read_pause (AVFormatContext *s) |
Pause a network based stream (e.g. | |
void | av_close_input_stream (AVFormatContext *s) |
Free a AVFormatContext allocated by av_open_input_stream. | |
void | av_close_input_file (AVFormatContext *s) |
Close a media file (but not its codecs). | |
AVStream * | av_new_stream (AVFormatContext *s, int id) |
Add a new stream to a media file. | |
AVProgram * | av_new_program (AVFormatContext *ac, int id) |
void | av_set_program_name (AVProgram *program, char *provider_name, char *name) |
int | av_set_parameters (AVFormatContext *s, AVFormatParameters *ap) |
media file output | |
int | av_write_header (AVFormatContext *s) |
Allocate the stream private data and write the stream header to an output media file. | |
static int | compute_pkt_fields2 (AVStream *st, AVPacket *pkt) |
static void | truncate_ts (AVStream *st, AVPacket *pkt) |
int | av_write_frame (AVFormatContext *s, AVPacket *pkt) |
Write a packet to an output media file. | |
int | av_interleave_packet_per_dts (AVFormatContext *s, AVPacket *out, AVPacket *pkt, int flush) |
Interleave a packet per DTS in an output media file. | |
static int | av_interleave_packet (AVFormatContext *s, AVPacket *out, AVPacket *in, int flush) |
Interleaves an AVPacket correctly so it can be muxed. | |
int | av_interleaved_write_frame (AVFormatContext *s, AVPacket *pkt) |
Writes a packet to an output media file ensuring correct interleaving. | |
int | av_write_trailer (AVFormatContext *s) |
Write the stream trailer to an output media file and free the file private data. | |
void | av_program_add_stream_index (AVFormatContext *ac, int progid, unsigned int idx) |
static void | dump_stream_format (AVFormatContext *ic, int i, int index, int is_output) |
void | dump_format (AVFormatContext *ic, int index, const char *url, int is_output) |
int | parse_image_size (int *width_ptr, int *height_ptr, const char *str) |
parses width and height out of string str. | |
int | parse_frame_rate (int *frame_rate_num, int *frame_rate_den, const char *arg) |
Converts frame rate from string to a fraction. | |
int64_t | av_gettime (void) |
Gets the current time in microseconds. | |
int64_t | parse_date (const char *datestr, int duration) |
Parses datestr and returns a corresponding number of microseconds. | |
int | find_info_tag (char *arg, int arg_size, const char *tag1, const char *info) |
Attempts to find a specific tag in a URL. | |
int | av_get_frame_filename (char *buf, int buf_size, const char *path, int number) |
Returns in 'buf' the path with 'd' replaced by number. | |
static void | hex_dump_internal (void *avcl, FILE *f, int level, uint8_t *buf, int size) |
void | av_hex_dump (FILE *f, uint8_t *buf, int size) |
Send a nice hexadecimal dump of a buffer to the specified file stream. | |
void | av_hex_dump_log (void *avcl, int level, uint8_t *buf, int size) |
Send a nice hexadecimal dump of a buffer to the log. | |
static void | pkt_dump_internal (void *avcl, FILE *f, int level, AVPacket *pkt, int dump_payload) |
void | av_pkt_dump (FILE *f, AVPacket *pkt, int dump_payload) |
Send a nice dump of a packet to the specified file stream. | |
void | av_pkt_dump_log (void *avcl, int level, AVPacket *pkt, int dump_payload) |
Send a nice dump of a packet to the log. | |
void | url_split (char *proto, int proto_size, char *authorization, int authorization_size, char *hostname, int hostname_size, int *port_ptr, char *path, int path_size, const char *url) |
void | av_set_pts_info (AVStream *s, int pts_wrap_bits, int pts_num, int pts_den) |
Set the pts for a given stream. | |
Variables | |
AVInputFormat * | first_iformat = NULL |
head of registered input format linked list | |
AVOutputFormat * | first_oformat = NULL |
head of registered output format linked list | |
static const AVOption | options [] |
static const AVClass | av_format_context_class = { "AVFormatContext", format_to_name, options } |
Definition in file utils.c.
#define DURATION_MAX_READ_SIZE 250000 |
#define MAX_STD_TIMEBASES (60*12+5) |
#define OFFSET | ( | x | ) | offsetof(AVFormatContext,x) |
#define PRINT | ( | ... | ) | do { if (!f) av_log(avcl, level, __VA_ARGS__); else fprintf(f, __VA_ARGS__); } while(0) |
#define PRINT | ( | ... | ) | do { if (!f) av_log(avcl, level, __VA_ARGS__); else fprintf(f, __VA_ARGS__); } while(0) |
#define PROBE_BUF_MAX (1<<20) |
#define PROBE_BUF_MIN 2048 |
size of probe buffer, for guessing file type from file contents
Definition at line 412 of file utils.c.
Referenced by av_open_input_file().
static AVPacket* add_to_pktbuf | ( | AVFormatContext * | s, | |
AVPacket * | pkt | |||
) | [static] |
int av_add_index_entry | ( | AVStream * | st, | |
int64_t | pos, | |||
int64_t | timestamp, | |||
int | size, | |||
int | distance, | |||
int | flags | |||
) |
Add a index entry into a sorted list updateing if it is already there.
timestamp | timestamp in the timebase of the given stream |
Definition at line 1026 of file utils.c.
Referenced by ape_read_header(), asf_build_simple_index(), asf_read_pts(), av_read_frame_internal(), avi_read_idx1(), avi_read_packet(), clean_index(), find_and_decode_index(), flv_read_packet(), gxf_read_index(), matroska_read_header(), mov_build_index(), mpc8_parse_seektable(), mpc_read_packet(), mpegps_read_pes_header(), pva_read_header(), read_braindead_odml_indx(), read_part_of_packet(), rm_read_dts(), rm_read_packet(), tta_read_header(), write_packet(), and wv_read_packet().
AVFormatContext* av_alloc_format_context | ( | void | ) |
Allocate an AVFormatContext.
Can be freed with av_free() but do not forget to free everything you explicitly allocated as well!
Definition at line 345 of file utils.c.
Referenced by av_open_input_stream(), main(), mov_read_stsd(), opt_input_file(), opt_output_file(), prepare_sdp_description(), and rtp_new_av_stream().
void av_close_input_file | ( | AVFormatContext * | s | ) |
Close a media file (but not its codecs).
s | media file handle |
Definition at line 2129 of file utils.c.
Referenced by av_exit(), build_feed_streams(), build_file_streams(), close_connection(), decode_thread(), get_watermark_picture(), http_prepare_data(), and read_ffserver_streams().
void av_close_input_stream | ( | AVFormatContext * | s | ) |
Free a AVFormatContext allocated by av_open_input_stream.
s | context to free |
Definition at line 2095 of file utils.c.
Referenced by av_close_input_file().
enum CodecID av_codec_get_id | ( | const AVCodecTag * | tags[4], | |
unsigned int | tag | |||
) |
unsigned int av_codec_get_tag | ( | const AVCodecTag * | tags[4], | |
enum CodecID | id | |||
) |
void av_destruct_packet | ( | AVPacket * | pkt | ) |
Default packet destructor.
Definition at line 188 of file utils.c.
Referenced by av_dup_packet(), av_interleave_packet_per_dts(), av_new_packet(), ogg_interleave_per_granule(), output_packet(), and write_frame().
void av_destruct_packet_nofree | ( | AVPacket * | pkt | ) |
Definition at line 750 of file utils.c.
Referenced by av_init_packet(), and av_read_frame_internal().
int av_dup_packet | ( | AVPacket * | pkt | ) |
Definition at line 240 of file utils.c.
Referenced by av_find_stream_info(), av_interleave_packet_per_dts(), av_read_frame(), ogg_interleave_per_granule(), and packet_queue_put().
static void av_estimate_timings | ( | AVFormatContext * | ic, | |
offset_t | old_offset | |||
) | [static] |
static void av_estimate_timings_from_bit_rate | ( | AVFormatContext * | ic | ) | [static] |
static void av_estimate_timings_from_pts | ( | AVFormatContext * | ic, | |
offset_t | old_offset | |||
) | [static] |
int av_filename_number_test | ( | const char * | filename | ) |
Check whether filename actually is a numbered sequence generator.
filename | possible numbered sequence string |
Definition at line 259 of file utils.c.
Referenced by av_open_input_file(), guess_format(), image_probe(), and opt_output_file().
int av_find_default_stream_index | ( | AVFormatContext * | s | ) |
AVInputFormat* av_find_input_format | ( | const char * | short_name | ) |
finds AVInputFormat based on input format's short name.
Definition at line 176 of file utils.c.
Referenced by get_watermark_picture(), http_receive_data(), opt_format(), and parse_ffconfig().
int av_find_stream_info | ( | AVFormatContext * | ic | ) |
Read packets of a media file to get stream information.
This is useful for file formats with no headers such as MPEG. This function also computes the real frame rate in case of mpeg2 repeat frame mode. The logical file position is not changed by this function; examined packets may be buffered for later processing.
ic | media file handle |
Definition at line 1799 of file utils.c.
Referenced by build_file_streams(), decode_thread(), get_watermark_picture(), main(), open_input_stream(), and opt_input_file().
static void av_frac_add | ( | AVFrac * | f, | |
int64_t | incr | |||
) | [static] |
Fractional addition to f: f = f + (incr / f->den).
f | fractional number | |
incr | increment, can be positive or negative |
Definition at line 3054 of file utils.c.
Referenced by compute_pkt_fields2().
static void av_frac_init | ( | AVFrac * | f, | |
int64_t | val, | |||
int64_t | num, | |||
int64_t | den | |||
) | [static] |
f = val + (num / den) + 0.5.
'num' is normalized so that it is such as 0 <= num < den.
f | fractional number | |
val | integer value | |
num | must be >= 0 | |
den | must be >= 1 |
Definition at line 3036 of file utils.c.
Referenced by av_write_header().
int64_t av_gen_search | ( | AVFormatContext * | s, | |
int | stream_index, | |||
int64_t | target_ts, | |||
int64_t | pos_min, | |||
int64_t | pos_max, | |||
int64_t | pos_limit, | |||
int64_t | ts_min, | |||
int64_t | ts_max, | |||
int | flags, | |||
int64_t * | ts_ret, | |||
int64_t(*)(struct AVFormatContext *, int, int64_t *, int64_t) | read_timestamp | |||
) |
Does a binary search using read_timestamp().
This is not supposed to be called directly by a user application, but by demuxers.
target_ts | target timestamp in the time base of the given stream | |
stream_index | stream number |
Definition at line 1168 of file utils.c.
Referenced by av_seek_frame_binary(), and read_seek().
int av_get_frame_filename | ( | char * | buf, | |
int | buf_size, | |||
const char * | path, | |||
int | number | |||
) |
Returns in 'buf' the path with 'd' replaced by number.
Also handles the '0nd' format where 'n' is the total number of digits and '%'.
buf | destination buffer | |
buf_size | destination buffer size | |
path | numbered sequence string | |
number | frame number |
Definition at line 2826 of file utils.c.
Referenced by av_filename_number_test(), find_image_range(), and img_read_packet().
int av_get_packet | ( | ByteIOContext * | s, | |
AVPacket * | pkt, | |||
int | size | |||
) |
Allocate and read the payload of a packet and initialize its fields to default values.
pkt | packet | |
size | wanted payload size |
Definition at line 222 of file utils.c.
Referenced by aiff_read_packet(), apc_read_packet(), au_read_packet(), avi_read_packet(), cdata_read_packet(), daud_packet(), decode_frame(), dxa_read_packet(), ea_read_packet(), ff_rm_parse_packet(), ff_rm_retrieve_cache(), film_read_packet(), flv_read_packet(), fourxm_read_packet(), gxf_packet(), idcin_read_packet(), lmlm4_read_packet(), load_ipmovie_packet(), mm_read_packet(), mov_read_packet(), mp3_read_packet(), mpc8_read_packet(), mtv_read_packet(), mxf_decrypt_triplet(), mxf_read_packet(), nsv_read_chunk(), nuv_packet(), PCMDEF(), pva_read_packet(), raw_read_packet(), rm_read_packet(), roq_read_packet(), seq_read_packet(), siff_read_packet(), sol_read_packet(), swf_read_packet(), thp_read_packet(), tta_read_packet(), txd_read_packet(), vc1t_read_packet(), vid_read_packet(), voc_get_packet(), wav_read_packet(), wc3_read_packet(), wsaud_read_packet(), and yuv4_read_packet().
int64_t av_gettime | ( | void | ) |
Gets the current time in microseconds.
Definition at line 2664 of file utils.c.
Referenced by audio_read_packet(), av_encode(), bktr_getframe(), get_external_clock(), get_video_clock(), getutime(), grab_read_header(), grab_read_packet(), http_server(), main(), open_input_stream(), output_packet(), print_report(), Process(), rtp_write_packet(), sdl_audio_callback(), stream_component_open(), stream_pause(), video_audio_display(), video_refresh_timer(), x11grab_read_header(), and x11grab_read_packet().
enum CodecID av_guess_codec | ( | AVOutputFormat * | fmt, | |
const char * | short_name, | |||
const char * | filename, | |||
const char * | mime_type, | |||
enum CodecType | type | |||
) |
Guesses the codec id based upon muxer and filename.
Definition at line 157 of file utils.c.
Referenced by new_audio_stream(), and new_video_stream().
static int av_has_duration | ( | AVFormatContext * | ic | ) | [static] |
Returns TRUE if the stream has accurate duration in any stream.
Definition at line 1399 of file utils.c.
Referenced by av_estimate_timings().
void av_hex_dump | ( | FILE * | f, | |
uint8_t * | buf, | |||
int | size | |||
) |
Send a nice hexadecimal dump of a buffer to the specified file stream.
f | The file stream pointer where the dump should be sent to. | |
buf | buffer | |
size | buffer size |
Definition at line 2909 of file utils.c.
Referenced by pkt_dump_internal().
void av_hex_dump_log | ( | void * | avcl, | |
int | level, | |||
uint8_t * | buf, | |||
int | size | |||
) |
Send a nice hexadecimal dump of a buffer to the log.
avcl | A pointer to an arbitrary struct of which the first field is a pointer to an AVClass struct. | |
level | The importance level of the message, lower values signifying higher importance. | |
buf | buffer | |
size | buffer size |
Definition at line 2914 of file utils.c.
Referenced by mpegts_push_data(), pat_cb(), pmt_cb(), and sdt_cb().
AVInputFormat* av_iformat_next | ( | AVInputFormat * | f | ) |
int av_index_search_timestamp | ( | AVStream * | st, | |
int64_t | timestamp, | |||
int | flags | |||
) |
Gets the index for a specific timestamp.
flags | if AVSEEK_FLAG_BACKWARD then the returned index will correspond to the timestamp which is <= the requested one, if backward is 0 then it will be >= if AVSEEK_FLAG_ANY seek to any frame, only keyframes otherwise |
Definition at line 1070 of file utils.c.
Referenced by ape_read_seek(), asf_read_seek(), av_add_index_entry(), av_seek_frame_binary(), av_seek_frame_generic(), avi_read_packet(), avi_read_seek(), flv_read_seek(), gxf_seek(), matroska_read_seek(), mov_seek_stream(), mpc8_read_seek(), mpc_read_seek(), read_seek(), tta_read_seek(), write_packet(), and wv_read_seek().
void av_init_packet | ( | AVPacket * | pkt | ) |
Initialize optional fields of a packet to default values.
pkt | packet |
Definition at line 194 of file utils.c.
Referenced by av_interleave_packet_per_dts(), av_new_packet(), av_read_frame_internal(), av_read_packet(), dc1394_read_common(), do_audio_out(), do_subtitle_out(), do_video_out(), dv_extract_audio_info(), dv_produce_packet(), main(), ogg_interleave_per_granule(), output_packet(), v4l2_read_packet(), write_audio_frame(), and write_video_frame().
static int av_interleave_packet | ( | AVFormatContext * | s, | |
AVPacket * | out, | |||
AVPacket * | in, | |||
int | flush | |||
) | [static] |
Interleaves an AVPacket correctly so it can be muxed.
out | the interleaved packet will be output here | |
in | the input packet | |
flush | 1 if no further packets are available as input and all remaining packets should be output |
Definition at line 2466 of file utils.c.
Referenced by av_interleaved_write_frame(), and av_write_trailer().
int av_interleave_packet_per_dts | ( | AVFormatContext * | s, | |
AVPacket * | out, | |||
AVPacket * | pkt, | |||
int | flush | |||
) |
Interleave a packet per DTS in an output media file.
Packets with pkt->destruct == av_destruct_packet will be freed inside this function, so they cannot be used after it, note calling av_free_packet() on them is still safe.
s | media file handle | |
out | the interleaved packet will be output here | |
in | the input packet | |
flush | 1 if no further packets are available as input and all remaining packets should be output |
Definition at line 2404 of file utils.c.
Referenced by av_interleave_packet(), and gxf_interleave_packet().
int av_interleaved_write_frame | ( | AVFormatContext * | s, | |
AVPacket * | pkt | |||
) |
Writes a packet to an output media file ensuring correct interleaving.
The packet must contain one audio or video frame. If the packets are already correctly interleaved the application should call av_write_frame() instead as it is slightly faster. It is also important to keep in mind that completely non-interleaved input will need huge amounts of memory to interleave with this, so it is preferable to interleave at the demuxer level.
s | media file handle | |
pkt | the packet, which contains the stream_index, buf/buf_size, dts/pts, ... |
Definition at line 2473 of file utils.c.
Referenced by write_frame().
int av_new_packet | ( | AVPacket * | pkt, | |
int | size | |||
) |
Allocate the payload of a packet and initialize its fields to default values.
pkt | packet | |
size | wanted payload size |
Definition at line 205 of file utils.c.
Referenced by amr_read_packet(), ape_read_packet(), asf_read_packet(), audio_read_packet(), av_get_packet(), avisynth_read_packet(), avs_read_video_packet(), cin_read_packet(), dxa_read_packet(), ff_rm_parse_packet(), ff_rm_retrieve_cache(), ffm_read_packet(), film_read_packet(), flic_read_packet(), fourxm_read_packet(), gif_read_packet(), grab_read_packet(), gxf_new_audio_packet(), h264_handle_packet(), img_read_packet(), ingenient_read_packet(), load_ipmovie_packet(), matroska_parse_block(), mm_read_packet(), mmf_read_packet(), mpc_read_packet(), mpegps_read_packet(), mpegts_push_data(), mpegts_raw_read_packet(), mxf_get_d10_aes3_packet(), nut_read_packet(), nuv_packet(), ogg_read_packet(), raw_read_partial_packet(), read_frame(), read_packet(), rm_assemble_video_frame(), rm_read_packet(), roq_read_packet(), rtp_parse_packet(), seq_read_packet(), siff_read_packet(), smacker_read_packet(), str_read_packet(), swf_read_packet(), v4l2_read_packet(), vmd_read_packet(), wsvqa_read_packet(), wv_read_packet(), and x11grab_read_packet().
AVProgram* av_new_program | ( | AVFormatContext * | ac, | |
int | id | |||
) |
AVStream* av_new_stream | ( | AVFormatContext * | s, | |
int | id | |||
) |
Add a new stream to a media file.
Can only be called in the read_header() function. If the flag AVFMTCTX_NOHEADER is in the format context, then new streams can be added in read_packet too.
s | media file handle | |
id | file format dependent stream id |
Definition at line 2137 of file utils.c.
Referenced by aac_read_header(), ac3_read_header(), add_audio_stream(), add_video_stream(), aiff_read_header(), amr_read_header(), apc_read_header(), ape_read_header(), asf_read_header(), au_read_header(), audio_read_header(), avi_read_header(), avisynth_read_header(), avs_read_packet(), cdata_read_header(), cin_read_header(), create_audio_stream(), create_stream(), daud_header(), dc1394_read_common(), decode_main_header(), dts_read_header(), dv_extract_audio_info(), dv_init_demux(), dxa_read_header(), ea_read_header(), ffm_read_header(), film_read_header(), flac_read_header(), flic_read_header(), fourxm_read_header(), get_sindex(), gif_read_header(), grab_read_header(), idcin_read_header(), img_read_header(), ipmovie_read_header(), lmlm4_read_header(), matroska_parse_attachments(), matroska_read_header(), mm_read_header(), mmf_read_header(), mov_read_trak(), mp3_read_header(), mpc8_read_header(), mpc_read_header(), mpegps_read_packet(), mpegts_read_header(), mtv_read_header(), mxf_parse_structural_metadata(), new_audio_stream(), new_pes_av_stream(), new_subtitle_stream(), new_video_stream(), nsv_parse_NSVs_header(), nut_read_header(), nuv_header(), ogg_new_stream(), pva_read_header(), raw_read_header(), read_header(), read_packet(), rm_read_header(), rm_read_header_old(), roq_read_header(), sdp_parse_line(), seq_read_header(), shorten_read_header(), siff_parse_vbv1(), smacker_read_header(), sol_read_header(), str_read_header(), swf_read_packet(), thp_read_header(), tta_read_header(), txd_read_header(), v4l2_read_header(), vc1t_read_header(), vid_read_header(), video_read_header(), vmd_read_header(), voc_read_header(), wav_read_header(), wc3_read_header(), wsaud_read_header(), wsvqa_read_header(), wv_read_header(), x11grab_read_header(), and yuv4_read_header().
AVOutputFormat* av_oformat_next | ( | AVOutputFormat * | f | ) |
int av_open_input_file | ( | AVFormatContext ** | ic_ptr, | |
const char * | filename, | |||
AVInputFormat * | fmt, | |||
int | buf_size, | |||
AVFormatParameters * | ap | |||
) |
Open a media file as input.
The codecs are not opened. Only the file header (if present) is read.
ic_ptr | the opened media file handle is put here | |
filename | filename to open. | |
fmt | if non NULL, force the file format to use | |
buf_size | optional buffer size (zero if default is OK) | |
ap | additional parameters needed when opening the file (NULL if default) |
Definition at line 415 of file utils.c.
Referenced by build_feed_streams(), build_file_streams(), decode_thread(), get_watermark_picture(), main(), open_input_stream(), opt_input_file(), and read_ffserver_streams().
int av_open_input_stream | ( | AVFormatContext ** | ic_ptr, | |
ByteIOContext * | pb, | |||
const char * | filename, | |||
AVInputFormat * | fmt, | |||
AVFormatParameters * | ap | |||
) |
Allocates all the structures needed to read an input stream.
This does not open the needed codecs for decoding the stream[s].
Definition at line 355 of file utils.c.
Referenced by av_open_input_file().
void av_pkt_dump | ( | FILE * | f, | |
AVPacket * | pkt, | |||
int | dump_payload | |||
) |
void av_pkt_dump_log | ( | void * | avcl, | |
int | level, | |||
AVPacket * | pkt, | |||
int | dump_payload | |||
) |
Send a nice dump of a packet to the log.
avcl | A pointer to an arbitrary struct of which the first field is a pointer to an AVClass struct. | |
level | The importance level of the message, lower values signifying higher importance. | |
pkt | packet to dump | |
dump_payload | true if the payload must be displayed too |
Definition at line 2950 of file utils.c.
Referenced by av_encode().
AVInputFormat* av_probe_input_format | ( | AVProbeData * | pd, | |
int | is_opened | |||
) |
Guess file format.
is_opened | whether the file is already opened, determines whether demuxers with or without AVFMT_NOFILE are probed |
Definition at line 290 of file utils.c.
Referenced by av_open_input_file().
static AVInputFormat* av_probe_input_format2 | ( | AVProbeData * | pd, | |
int | is_opened, | |||
int * | score_max | |||
) | [static] |
Definition at line 265 of file utils.c.
Referenced by av_open_input_file(), av_probe_input_format(), and set_codec_from_probe_data().
void av_program_add_stream_index | ( | AVFormatContext * | ac, | |
int | progid, | |||
unsigned int | idx | |||
) |
int av_read_frame | ( | AVFormatContext * | s, | |
AVPacket * | pkt | |||
) |
Return the next frame of a stream.
The returned packet is valid until the next av_read_frame() or until av_close_input_file() and must be freed with av_free_packet. For video, the packet contains exactly one frame. For audio, it contains an integer number of frames if each frame has a known fixed size (e.g. PCM or ADPCM data). If the audio frames have a variable size (e.g. MPEG audio), then it contains one frame.
pkt->pts, pkt->dts and pkt->duration are always set to correct values in AVStream.timebase units (and guessed if the format cannot provided them). pkt->pts can be AV_NOPTS_VALUE if the video format has B frames, so it is better to rely on pkt->dts if you do not decompress the payload.
Definition at line 881 of file utils.c.
Referenced by asf_read_pts(), av_encode(), av_seek_frame_generic(), decode_thread(), get_watermark_picture(), http_prepare_data(), main(), mpc_read_seek(), and wv_read_seek().
static void av_read_frame_flush | ( | AVFormatContext * | s | ) | [static] |
Flush the frame reader.
Definition at line 971 of file utils.c.
Referenced by av_find_stream_info(), av_seek_frame(), and av_seek_frame_generic().
static int av_read_frame_internal | ( | AVFormatContext * | s, | |
AVPacket * | pkt | |||
) | [static] |
int av_read_packet | ( | AVFormatContext * | s, | |
AVPacket * | pkt | |||
) |
Read a transport packet from a media file.
This function is obsolete and should never be used. Use av_read_frame() instead.
s | media file handle | |
pkt | is filled |
Definition at line 494 of file utils.c.
Referenced by av_estimate_timings_from_pts(), av_read_frame_internal(), and extract_mpeg4_header().
int av_read_pause | ( | AVFormatContext * | s | ) |
Pause a network based stream (e.g.
RTSP stream).
Use av_read_play() to resume it.
Definition at line 2086 of file utils.c.
Referenced by decode_thread().
int av_read_play | ( | AVFormatContext * | s | ) |
start playing a network based stream (e.g.
RTSP stream) at the current position
Definition at line 2077 of file utils.c.
Referenced by decode_thread().
void av_register_input_format | ( | AVInputFormat * | format | ) |
void av_register_output_format | ( | AVOutputFormat * | format | ) |
int av_seek_frame | ( | AVFormatContext * | s, | |
int | stream_index, | |||
int64_t | timestamp, | |||
int | flags | |||
) |
Seek to the key frame at timestamp.
'timestamp' in 'stream_index'.
stream_index | If stream_index is (-1), a default stream is selected, and timestamp is automatically converted from AV_TIME_BASE units to the stream specific time_base. | |
timestamp | timestamp in AVStream.time_base units or if there is no stream specified then in AV_TIME_BASE units | |
flags | flags which select direction and seeking mode |
Definition at line 1356 of file utils.c.
Referenced by av_find_stream_info(), decode_thread(), main(), opt_input_file(), and rtsp_cmd_play().
int av_seek_frame_binary | ( | AVFormatContext * | s, | |
int | stream_index, | |||
int64_t | target_ts, | |||
int | flags | |||
) |
Does a binary search using av_index_search_timestamp() and AVCodec.read_timestamp().
This is not supposed to be called directly by a user application, but by demuxers.
target_ts | target timestamp in the time base of the given stream | |
stream_index | stream number |
Definition at line 1104 of file utils.c.
Referenced by asf_read_seek(), av_seek_frame(), and read_seek().
static int av_seek_frame_byte | ( | AVFormatContext * | s, | |
int | stream_index, | |||
int64_t | pos, | |||
int | flags | |||
) | [static] |
static int av_seek_frame_generic | ( | AVFormatContext * | s, | |
int | stream_index, | |||
int64_t | timestamp, | |||
int | flags | |||
) | [static] |
int av_set_parameters | ( | AVFormatContext * | s, | |
AVFormatParameters * | ap | |||
) |
media file output
Definition at line 2211 of file utils.c.
Referenced by build_feed_streams(), http_prepare_data(), main(), opt_output_file(), and rtp_new_av_stream().
void av_set_program_name | ( | AVProgram * | program, | |
char * | provider_name, | |||
char * | name | |||
) |
void av_set_pts_info | ( | AVStream * | s, | |
int | pts_wrap_bits, | |||
int | pts_num, | |||
int | pts_den | |||
) |
Set the pts for a given stream.
s | stream | |
pts_wrap_bits | number of bits effectively used by the pts (used for wrap control, 33 is the value for MPEG) | |
pts_num | numerator to convert to seconds (MPEG: 1) | |
pts_den | denominator to convert to seconds (MPEG: 90000) |
Definition at line 3016 of file utils.c.
Referenced by add_av_stream1(), aiff_read_header(), amr_read_header(), ape_read_header(), asf_read_header(), asf_write_header1(), au_read_header(), audio_read_header(), av_new_stream(), avi_read_header(), avisynth_read_header(), cdata_read_header(), cin_read_header(), create_audio_stream(), create_stream(), dc1394_read_common(), decode_stream_header(), dv_extract_audio_info(), dv_extract_video_info(), dxa_read_header(), ea_read_header(), ffm_read_header(), film_read_header(), flic_read_header(), flv_write_header(), fourxm_read_header(), grab_read_header(), gxf_header(), gxf_write_header(), idcin_read_header(), img_read_header(), ipmovie_read_header(), lmlm4_read_header(), matroska_read_header(), mkv_write_tracks(), mm_read_header(), mmf_read_header(), mov_read_header(), mov_write_header(), mpc8_read_header(), mpc_read_header(), mpeg_mux_init(), mpegts_read_header(), mtv_read_header(), mxf_parse_structural_metadata(), new_pes_av_stream(), nsv_parse_NSVs_header(), nut_read_header(), nuv_header(), ogg_new_stream(), ogg_write_header(), parse_h264_sdp_line(), pva_read_header(), raw_read_header(), rm_read_header(), roq_read_header(), rtp_write_header(), seq_read_header(), siff_parse_vbv1(), smacker_read_header(), sol_read_header(), str_read_header(), swf_read_packet(), thp_read_header(), tta_read_header(), v4l2_read_header(), vc1t_read_header(), vid_read_header(), video_read_header(), vmd_read_header(), wav_read_header(), wc3_read_header(), write_header(), wsaud_read_header(), wsvqa_read_header(), wv_read_header(), x11grab_read_header(), and yuv4_read_header().
void av_update_cur_dts | ( | AVFormatContext * | s, | |
AVStream * | ref_st, | |||
int64_t | timestamp | |||
) |
Updates cur_dts of all streams based on given timestamp and AVStream.
Stream ref_st unchanged, others set cur_dts in their native timebase only needed for timestamp wrapping or if (dts not set and pts!=dts).
timestamp | new dts expressed in time_base of param ref_st | |
ref_st | reference stream giving time_base of param timestamp |
Definition at line 1001 of file utils.c.
Referenced by av_seek_frame_binary(), av_seek_frame_byte(), av_seek_frame_generic(), and mxf_read_seek().
static void av_update_stream_timings | ( | AVFormatContext * | ic | ) | [static] |
Estimate the stream timings from the one of each components.
Also computes the global bitrate if possible.
Definition at line 1417 of file utils.c.
Referenced by av_estimate_timings(), and fill_all_stream_timings().
int av_write_frame | ( | AVFormatContext * | s, | |
AVPacket * | pkt | |||
) |
Write a packet to an output media file.
The packet shall contain one audio or video frame. The packet must be correctly interleaved according to the container specification, if not then av_interleaved_write_frame must be used
s | media file handle | |
pkt | the packet, which contains the stream_index, buf/buf_size, dts/pts, ... |
Definition at line 2388 of file utils.c.
Referenced by http_prepare_data(), write_audio_frame(), and write_video_frame().
int av_write_header | ( | AVFormatContext * | s | ) |
Allocate the stream private data and write the stream header to an output media file.
s | media file handle |
Definition at line 2230 of file utils.c.
Referenced by av_encode(), build_feed_streams(), http_prepare_data(), main(), and rtp_new_av_stream().
int av_write_trailer | ( | AVFormatContext * | s | ) |
Write the stream trailer to an output media file and free the file private data.
s | media file handle |
Definition at line 2506 of file utils.c.
Referenced by av_encode(), close_connection(), http_prepare_data(), and main().
static void avformat_get_context_defaults | ( | AVFormatContext * | s | ) | [static] |
enum CodecID codec_get_id | ( | const AVCodecTag * | tags, | |
unsigned int | tag | |||
) |
Definition at line 1735 of file utils.c.
Referenced by asf_read_header(), au_read_header(), av_codec_get_id(), avi_read_header(), avisynth_read_header(), decode_stream_header(), get_aiff_header(), get_codec_data(), matroska_read_header(), mov_read_esds(), mov_read_stsd(), nsv_parse_NSVs_header(), nut_read_header(), ogm_dshow_header(), ogm_header(), swf_read_packet(), and voc_get_packet().
unsigned int codec_get_tag | ( | const AVCodecTag * | tags, | |
int | id | |||
) |
Definition at line 1725 of file utils.c.
Referenced by av_codec_get_tag(), gxf_write_header(), mkv_write_codecprivate(), mov_find_codec_tag(), and mov_write_esds_tag().
static void compute_frame_duration | ( | int * | pnum, | |
int * | pden, | |||
AVStream * | st, | |||
AVCodecParserContext * | pc, | |||
AVPacket * | pkt | |||
) | [static] |
Return the frame duration in seconds.
Return 0 if not available.
Definition at line 551 of file utils.c.
Referenced by compute_pkt_fields(), and compute_pkt_fields2().
static void compute_pkt_fields | ( | AVFormatContext * | s, | |
AVStream * | st, | |||
AVCodecParserContext * | pc, | |||
AVPacket * | pkt | |||
) | [static] |
Definition at line 2307 of file utils.c.
Referenced by av_interleaved_write_frame(), and av_write_frame().
void dump_format | ( | AVFormatContext * | ic, | |
int | index, | |||
const char * | url, | |||
int | is_output | |||
) |
Definition at line 2591 of file utils.c.
Referenced by av_encode(), decode_thread(), main(), and opt_input_file().
static void dump_stream_format | ( | AVFormatContext * | ic, | |
int | i, | |||
int | index, | |||
int | is_output | |||
) | [static] |
void ff_reduce_index | ( | AVFormatContext * | s, | |
int | stream_index | |||
) |
Ensures the index uses less memory than the maximum specified in AVFormatContext.max_index_size, by discarding entries if it grows too large.
This function is not part of the public API and should only be called by demuxers.
Definition at line 1013 of file utils.c.
Referenced by av_read_frame_internal(), and mpegps_read_pes_header().
static void fill_all_stream_timings | ( | AVFormatContext * | ic | ) | [static] |
Definition at line 1463 of file utils.c.
Referenced by av_estimate_timings(), and av_estimate_timings_from_pts().
int find_info_tag | ( | char * | arg, | |
int | arg_size, | |||
const char * | tag1, | |||
const char * | info | |||
) |
Attempts to find a specific tag in a URL.
syntax: '?tag1=val1&tag2=val2...'. Little URL decoding is done. Return 1 if found.
Definition at line 2787 of file utils.c.
Referenced by open_input_stream(), rtp_open(), and udp_open().
static void flush_packet_queue | ( | AVFormatContext * | s | ) | [static] |
Definition at line 935 of file utils.c.
Referenced by av_close_input_stream(), av_estimate_timings_from_pts(), and av_read_frame_flush().
static const char* format_to_name | ( | void * | ptr | ) | [static] |
static int get_audio_frame_size | ( | AVCodecContext * | enc, | |
int | size | |||
) | [static] |
Get the number of samples of an audio frame.
Return -1 on error.
Definition at line 524 of file utils.c.
Referenced by compute_frame_duration(), and compute_pkt_fields2().
static int get_std_framerate | ( | int | i | ) | [static] |
AVOutputFormat* guess_format | ( | const char * | short_name, | |
const char * | filename, | |||
const char * | mime_type | |||
) |
Definition at line 101 of file utils.c.
Referenced by guess_format(), guess_stream_format(), main(), opt_format(), opt_output_file(), parse_ffconfig(), and rtp_new_av_stream().
AVOutputFormat* guess_stream_format | ( | const char * | short_name, | |
const char * | filename, | |||
const char * | mime_type | |||
) |
static int has_codec_parameters | ( | AVCodecContext * | enc | ) | [static] |
Definition at line 1655 of file utils.c.
Referenced by av_find_stream_info(), and try_decode_frame().
static void hex_dump_internal | ( | void * | avcl, | |
FILE * | f, | |||
int | level, | |||
uint8_t * | buf, | |||
int | size | |||
) | [static] |
static int is_intra_only | ( | AVCodecContext * | enc | ) | [static] |
int match_ext | ( | const char * | filename, | |
const char * | extensions | |||
) |
Definition at line 74 of file utils.c.
Referenced by av_probe_input_format2(), guess_format(), http_parse_request(), mpegts_probe(), and nsv_probe().
int64_t parse_date | ( | const char * | datestr, | |
int | duration | |||
) |
Parses datestr
and returns a corresponding number of microseconds.
datestr | String representing a date or a duration.
| |
duration | Flag which tells how to interpret datestr , if not zero datestr is interpreted as a duration, otherwise as a date. |
Definition at line 2671 of file utils.c.
Referenced by open_input_stream(), opt_seek(), parse_time_or_die(), and rtsp_parse_range_npt().
int parse_frame_rate | ( | int * | frame_rate, | |
int * | frame_rate_base, | |||
const char * | arg | |||
) |
int parse_image_size | ( | int * | width_ptr, | |
int * | height_ptr, | |||
const char * | str | |||
) |
static void pkt_dump_internal | ( | void * | avcl, | |
FILE * | f, | |||
int | level, | |||
AVPacket * | pkt, | |||
int | dump_payload | |||
) | [static] |
static int set_codec_from_probe_data | ( | AVStream * | st, | |
AVProbeData * | pd, | |||
int | score | |||
) | [static] |
static int tb_unreliable | ( | AVCodecContext * | c | ) | [static] |
Definition at line 2376 of file utils.c.
Referenced by av_interleaved_write_frame(), av_write_frame(), and av_write_trailer().
static void update_initial_timestamps | ( | AVFormatContext * | s, | |
int | stream_index, | |||
int64_t | dts, | |||
int64_t | pts | |||
) | [static] |
void url_split | ( | char * | proto, | |
int | proto_size, | |||
char * | authorization, | |||
int | authorization_size, | |||
char * | hostname, | |||
int | hostname_size, | |||
int * | port_ptr, | |||
char * | path, | |||
int | path_size, | |||
const char * | url | |||
) |
Definition at line 2955 of file utils.c.
Referenced by find_rtp_session_with_url(), http_open_cnx(), rtp_open(), rtp_set_remote_url(), rtsp_cmd_describe(), rtsp_cmd_setup(), rtsp_read_header(), sdp_parse_line(), tcp_open(), udp_open(), and udp_set_remote_url().
const AVClass av_format_context_class = { "AVFormatContext", format_to_name, options } [static] |
AVInputFormat* first_iformat = NULL |
AVOutputFormat* first_oformat = NULL |
Initial value:
{ {"probesize", NULL, OFFSET(probesize), FF_OPT_TYPE_INT, 32000, 32, INT_MAX, D}, {"muxrate", "set mux rate", OFFSET(mux_rate), FF_OPT_TYPE_INT, DEFAULT, 0, INT_MAX, E}, {"packetsize", "set packet size", OFFSET(packet_size), FF_OPT_TYPE_INT, DEFAULT, 0, INT_MAX, E}, {"fflags", NULL, OFFSET(flags), FF_OPT_TYPE_FLAGS, DEFAULT, INT_MIN, INT_MAX, D|E, "fflags"}, {"ignidx", "ignore index", 0, FF_OPT_TYPE_CONST, AVFMT_FLAG_IGNIDX, INT_MIN, INT_MAX, D, "fflags"}, {"genpts", "generate pts", 0, FF_OPT_TYPE_CONST, AVFMT_FLAG_GENPTS, INT_MIN, INT_MAX, D, "fflags"}, {"track", " set the track number", OFFSET(track), FF_OPT_TYPE_INT, DEFAULT, 0, INT_MAX, E}, {"year", "set the year", OFFSET(year), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, E}, {"analyzeduration", "how many microseconds are analyzed to estimate duration", OFFSET(max_analyze_duration), FF_OPT_TYPE_INT, 3*AV_TIME_BASE, 0, INT_MAX, D}, {"cryptokey", "decryption key", OFFSET(key), FF_OPT_TYPE_BINARY, 0, 0, 0, D}, {"indexmem", "max memory used for timestamp index (per stream)", OFFSET(max_index_size), FF_OPT_TYPE_INT, INT_MAX, 0, INT_MAX, D}, {NULL}, }