#include "avformat.h"
#include "internal.h"
#include "libavcodec/opt.h"
#include "metadata.h"
#include "libavutil/avstring.h"
#include "riff.h"
#include "audiointerleave.h"
#include <sys/time.h>
#include <time.h>
#include <strings.h>
#include <stdarg.h>
#include "network.h"
#include <assert.h>
Go to the source code of this file.
Defines | |
#define | LICENSE_PREFIX "libavformat license: " |
#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 | DURATION_MAX_RETRY 3 |
#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 | |
unsigned | avformat_version (void) |
I return the LIBAVFORMAT_VERSION_INT constant. | |
const char * | avformat_configuration (void) |
Returns the libavformat build-time configuration. | |
const char * | avformat_license (void) |
Returns the libavformat license. | |
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) |
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. | |
void | av_register_input_format (AVInputFormat *format) |
void | av_register_output_format (AVOutputFormat *format) |
int | av_match_ext (const char *filename, const char *extensions) |
Returns a positive value if the given filename has one of the given extensions, 0 otherwise. | |
static int | match_format (const char *name, const char *names) |
AVOutputFormat * | guess_format (const char *short_name, const char *filename, const char *mime_type) |
AVOutputFormat * | av_guess_format (const char *short_name, const char *filename, const char *mime_type) |
Returns the output format in the list of registered output formats which best matches the provided parameters, or returns NULL if there is no match. | |
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 AVMediaType type) |
Guesses the codec ID based upon muxer and filename. | |
AVInputFormat * | av_find_input_format (const char *short_name) |
Finds AVInputFormat based on the short name of the input format. | |
int | av_get_packet (ByteIOContext *s, AVPacket *pkt, int size) |
Allocates and reads the payload of a packet and initializes its fields with default values. | |
int | av_filename_number_test (const char *filename) |
Checks 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) |
Guesses the file format. | |
static int | set_codec_from_probe_data (AVFormatContext *s, AVStream *st, AVProbeData *pd, int score) |
int | av_open_input_stream (AVFormatContext **ic_ptr, ByteIOContext *pb, const char *filename, AVInputFormat *fmt, AVFormatParameters *ap) |
Open a media file from an IO stream. | |
int | ff_probe_input_buffer (ByteIOContext **pb, AVInputFormat **fmt, const char *filename, void *logctx, unsigned int offset, unsigned int max_probe_size) |
Probes a bytestream to determine the input format. | |
int | av_open_input_file (AVFormatContext **ic_ptr, const char *filename, AVInputFormat *fmt, int buf_size, AVFormatParameters *ap) |
Opens a media file as input. | |
static AVPacket * | add_to_pktbuf (AVPacketList **packet_buffer, AVPacket *pkt, AVPacketList **plast_pktl) |
int | av_read_packet (AVFormatContext *s, AVPacket *pkt) |
Reads 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 | update_initial_durations (AVFormatContext *s, AVStream *st, AVPacket *pkt) |
static void | compute_pkt_fields (AVFormatContext *s, AVStream *st, AVCodecParserContext *pc, AVPacket *pkt) |
static int | av_read_frame_internal (AVFormatContext *s, AVPacket *pkt) |
int | av_read_frame (AVFormatContext *s, AVPacket *pkt) |
Returns the next frame of a stream. | |
static void | flush_packet_queue (AVFormatContext *s) |
int | av_find_default_stream_index (AVFormatContext *s) |
void | ff_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 the 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) |
Adds an index entry into a sorted list. | |
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) |
Seeks to the keyframe at timestamp. | |
int | avformat_seek_file (AVFormatContext *s, int stream_index, int64_t min_ts, int64_t ts, int64_t max_ts, int flags) |
Seeks to timestamp ts. | |
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, int64_t old_offset) |
static void | av_estimate_timings (AVFormatContext *ic, int64_t old_offset) |
static int | has_codec_parameters (AVCodecContext *enc) |
static int | try_decode_frame (AVStream *st, AVPacket *avpkt) |
unsigned int | ff_codec_get_tag (const AVCodecTag *tags, int id) |
enum CodecID | ff_codec_get_id (const AVCodecTag *tags, unsigned int tag) |
unsigned int | av_codec_get_tag (const AVCodecTag *const *tags, enum CodecID id) |
enum CodecID | av_codec_get_id (const AVCodecTag *const *tags, unsigned int tag) |
static void | compute_chapters_end (AVFormatContext *s) |
static int | get_std_framerate (int i) |
static int | tb_unreliable (AVCodecContext *c) |
int | av_find_stream_info (AVFormatContext *ic) |
Reads packets of a media file to get stream information. | |
int | av_read_play (AVFormatContext *s) |
Starts playing a network-based stream (e.g. | |
int | av_read_pause (AVFormatContext *s) |
Pauses a network-based stream (e.g. | |
void | av_close_input_stream (AVFormatContext *s) |
Frees a AVFormatContext allocated by av_open_input_stream. | |
void | av_close_input_file (AVFormatContext *s) |
Closes a media file (but not its codecs). | |
AVStream * | av_new_stream (AVFormatContext *s, int id) |
Adds a new stream to a media file. | |
AVProgram * | av_new_program (AVFormatContext *ac, int id) |
AVChapter * | ff_new_chapter (AVFormatContext *s, int id, AVRational time_base, int64_t start, int64_t end, const char *title) |
Adds a new chapter. | |
int | av_set_parameters (AVFormatContext *s, AVFormatParameters *ap) |
media file output | |
int | av_write_header (AVFormatContext *s) |
Allocates the stream private data and writes the stream header to an output media file. | |
static int | compute_pkt_fields2 (AVFormatContext *s, AVStream *st, AVPacket *pkt) |
int | av_write_frame (AVFormatContext *s, AVPacket *pkt) |
Writes a packet to an output media file. | |
void | ff_interleave_add_packet (AVFormatContext *s, AVPacket *pkt, int(*compare)(AVFormatContext *, AVPacket *, AVPacket *)) |
Add packet to AVFormatContext->packet_buffer list, determining its interleaved position using compare() function argument. | |
int | ff_interleave_compare_dts (AVFormatContext *s, AVPacket *next, AVPacket *pkt) |
int | av_interleave_packet_per_dts (AVFormatContext *s, AVPacket *out, AVPacket *pkt, int flush) |
Interleaves 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) |
Writes the stream trailer to an output media file and frees the file private data. | |
void | ff_program_add_stream_index (AVFormatContext *ac, int progid, unsigned int idx) |
static void | print_fps (double d, const char *postfix) |
static void | dump_metadata (void *ctx, AVMetadata *m, const char *indent) |
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 framerate from a string to a fraction. | |
int64_t | av_gettime (void) |
Gets the current time in microseconds. | |
uint64_t | ff_ntp_time (void) |
Gets the current time since NTP epoch 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 a 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) |
Sends 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) |
Sends 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) |
Sends 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) |
Sends a nice dump of a packet to the log. | |
void | ff_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) |
Splits a URL string into components. | |
char * | ff_data_to_hex (char *buff, const uint8_t *src, int s, int lowercase) |
void | av_set_pts_info (AVStream *s, int pts_wrap_bits, unsigned int pts_num, unsigned int pts_den) |
Sets the pts for a given stream. | |
int | ff_url_join (char *str, int size, const char *proto, const char *authorization, const char *hostname, int port, const char *fmt,...) |
Assembles a URL string from components. | |
Variables | |
AVInputFormat * | first_iformat = NULL |
head of registered input format linked list | |
AVOutputFormat * | first_oformat = NULL |
head of registered output format linked list |
#define LICENSE_PREFIX "libavformat license: " |
#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_MIN 2048 |
static AVPacket* add_to_pktbuf | ( | AVPacketList ** | packet_buffer, | |
AVPacket * | pkt, | |||
AVPacketList ** | plast_pktl | |||
) | [static] |
int av_add_index_entry | ( | AVStream * | st, | |
int64_t | pos, | |||
int64_t | timestamp, | |||
int | size, | |||
int | distance, | |||
int | flags | |||
) |
void av_close_input_file | ( | AVFormatContext * | s | ) |
void av_close_input_stream | ( | AVFormatContext * | s | ) |
enum CodecID av_codec_get_id | ( | const AVCodecTag *const * | tags, | |
unsigned int | tag | |||
) |
unsigned int av_codec_get_tag | ( | const AVCodecTag *const * | tags, | |
enum CodecID | id | |||
) |
static void av_estimate_timings | ( | AVFormatContext * | ic, | |
int64_t | old_offset | |||
) | [static] |
static void av_estimate_timings_from_bit_rate | ( | AVFormatContext * | ic | ) | [static] |
static void av_estimate_timings_from_pts | ( | AVFormatContext * | ic, | |
int64_t | old_offset | |||
) | [static] |
int av_filename_number_test | ( | const char * | filename | ) |
int av_find_default_stream_index | ( | AVFormatContext * | s | ) |
AVInputFormat* av_find_input_format | ( | const char * | short_name | ) |
Finds AVInputFormat based on the short name of the input format.
int av_find_stream_info | ( | AVFormatContext * | ic | ) |
Reads 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 framerate in case of MPEG-2 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 |
static void av_frac_add | ( | AVFrac * | f, | |
int64_t | incr | |||
) | [static] |
static void av_frac_init | ( | AVFrac * | f, | |
int64_t | val, | |||
int64_t | num, | |||
int64_t | den | |||
) | [static] |
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 | |||
) |
int av_get_frame_filename | ( | char * | buf, | |
int | buf_size, | |||
const char * | path, | |||
int | number | |||
) |
Returns in 'buf' the path with 'd' replaced by a 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 |
int av_get_packet | ( | ByteIOContext * | s, | |
AVPacket * | pkt, | |||
int | size | |||
) |
int64_t av_gettime | ( | void | ) |
enum CodecID av_guess_codec | ( | AVOutputFormat * | fmt, | |
const char * | short_name, | |||
const char * | filename, | |||
const char * | mime_type, | |||
enum AVMediaType | type | |||
) |
AVOutputFormat* av_guess_format | ( | const char * | short_name, | |
const char * | filename, | |||
const char * | mime_type | |||
) |
Returns the output format in the list of registered output formats which best matches the provided parameters, or returns NULL if there is no match.
short_name | if non-NULL checks if short_name matches with the names of the registered formats | |
filename | if non-NULL checks if filename terminates with the extensions of the registered formats | |
mime_type | if non-NULL checks if mime_type matches with the MIME type of the registered formats |
static int av_has_duration | ( | AVFormatContext * | ic | ) | [static] |
void av_hex_dump | ( | FILE * | f, | |
uint8_t * | buf, | |||
int | size | |||
) |
Sends 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 |
void av_hex_dump_log | ( | void * | avcl, | |
int | level, | |||
uint8_t * | buf, | |||
int | size | |||
) |
Sends 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 |
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 |
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 |
int av_interleave_packet_per_dts | ( | AVFormatContext * | s, | |
AVPacket * | out, | |||
AVPacket * | pkt, | |||
int | flush | |||
) |
Interleaves 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 that 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 |
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, ... |
int av_match_ext | ( | const char * | filename, | |
const char * | extensions | |||
) |
AVProgram* av_new_program | ( | AVFormatContext * | ac, | |
int | id | |||
) |
AVStream* av_new_stream | ( | AVFormatContext * | s, | |
int | id | |||
) |
Adds 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 |
AVOutputFormat* av_oformat_next | ( | AVOutputFormat * | f | ) |
int av_open_input_file | ( | AVFormatContext ** | ic_ptr, | |
const char * | filename, | |||
AVInputFormat * | fmt, | |||
int | buf_size, | |||
AVFormatParameters * | ap | |||
) |
Opens 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). |
int av_open_input_stream | ( | AVFormatContext ** | ic_ptr, | |
ByteIOContext * | pb, | |||
const char * | filename, | |||
AVInputFormat * | fmt, | |||
AVFormatParameters * | ap | |||
) |
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 | |||
) |
Sends 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. |
AVInputFormat* av_probe_input_format | ( | AVProbeData * | pd, | |
int | is_opened | |||
) |
static AVInputFormat* av_probe_input_format2 | ( | AVProbeData * | pd, | |
int | is_opened, | |||
int * | score_max | |||
) | [static] |
int av_read_frame | ( | AVFormatContext * | s, | |
AVPacket * | pkt | |||
) |
Returns 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.time_base units (and guessed if the format cannot provide 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.
static int av_read_frame_internal | ( | AVFormatContext * | s, | |
AVPacket * | pkt | |||
) | [static] |
int av_read_packet | ( | AVFormatContext * | s, | |
AVPacket * | pkt | |||
) |
Reads 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 |
int av_read_pause | ( | AVFormatContext * | s | ) |
int av_read_play | ( | AVFormatContext * | s | ) |
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 | |||
) |
Seeks to the keyframe 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 no stream is specified, in AV_TIME_BASE units. | |
flags | flags which select direction and seeking mode |
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 |
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 | |||
) |
void av_set_pts_info | ( | AVStream * | s, | |
int | pts_wrap_bits, | |||
unsigned int | pts_num, | |||
unsigned int | pts_den | |||
) |
Sets 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) |
void av_update_cur_dts | ( | AVFormatContext * | s, | |
AVStream * | ref_st, | |||
int64_t | timestamp | |||
) |
Updates cur_dts of all streams based on the given timestamp and AVStream.
Stream ref_st unchanged, others set cur_dts in their native time base. 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 |
static void av_update_stream_timings | ( | AVFormatContext * | ic | ) | [static] |
int av_write_frame | ( | AVFormatContext * | s, | |
AVPacket * | pkt | |||
) |
Writes 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, ... |
int av_write_header | ( | AVFormatContext * | s | ) |
int av_write_trailer | ( | AVFormatContext * | s | ) |
const char* avformat_configuration | ( | void | ) |
const char* avformat_license | ( | void | ) |
int avformat_seek_file | ( | AVFormatContext * | s, | |
int | stream_index, | |||
int64_t | min_ts, | |||
int64_t | ts, | |||
int64_t | max_ts, | |||
int | flags | |||
) |
Seeks to timestamp ts.
Seeking will be done so that the point from which all active streams can be presented successfully will be closest to ts and within min/max_ts. Active streams are all streams that have AVStream.discard < AVDISCARD_ALL.
If flags contain AVSEEK_FLAG_BYTE, then all timestamps are in bytes and are the file position (this may not be supported by all demuxers). If flags contain AVSEEK_FLAG_FRAME, then all timestamps are in frames in the stream with stream_index (this may not be supported by all demuxers). Otherwise all timestamps are in units of the stream selected by stream_index or if stream_index is -1, in AV_TIME_BASE units. If flags contain AVSEEK_FLAG_ANY, then non-keyframes are treated as keyframes (this may not be supported by all demuxers).
stream_index | index of the stream which is used as time base reference | |
min_ts | smallest acceptable timestamp | |
ts | target timestamp | |
max_ts | largest acceptable timestamp | |
flags | flags |
unsigned avformat_version | ( | void | ) |
static void compute_chapters_end | ( | AVFormatContext * | s | ) | [static] |
static void compute_frame_duration | ( | int * | pnum, | |
int * | pden, | |||
AVStream * | st, | |||
AVCodecParserContext * | pc, | |||
AVPacket * | pkt | |||
) | [static] |
static void compute_pkt_fields | ( | AVFormatContext * | s, | |
AVStream * | st, | |||
AVCodecParserContext * | pc, | |||
AVPacket * | pkt | |||
) | [static] |
static int compute_pkt_fields2 | ( | AVFormatContext * | s, | |
AVStream * | st, | |||
AVPacket * | pkt | |||
) | [static] |
void dump_format | ( | AVFormatContext * | ic, | |
int | index, | |||
const char * | url, | |||
int | is_output | |||
) |
static void dump_metadata | ( | void * | ctx, | |
AVMetadata * | m, | |||
const char * | indent | |||
) | [static] |
static void dump_stream_format | ( | AVFormatContext * | ic, | |
int | i, | |||
int | index, | |||
int | is_output | |||
) | [static] |
enum CodecID ff_codec_get_id | ( | const AVCodecTag * | tags, | |
unsigned int | tag | |||
) |
unsigned int ff_codec_get_tag | ( | const AVCodecTag * | tags, | |
int | id | |||
) |
char* ff_data_to_hex | ( | char * | buff, | |
const uint8_t * | src, | |||
int | s, | |||
int | lowercase | |||
) |
void ff_interleave_add_packet | ( | AVFormatContext * | s, | |
AVPacket * | pkt, | |||
int(*)(AVFormatContext *, AVPacket *, AVPacket *) | compare | |||
) |
int ff_interleave_compare_dts | ( | AVFormatContext * | s, | |
AVPacket * | next, | |||
AVPacket * | pkt | |||
) |
AVChapter* ff_new_chapter | ( | AVFormatContext * | s, | |
int | id, | |||
AVRational | time_base, | |||
int64_t | start, | |||
int64_t | end, | |||
const char * | title | |||
) |
Adds a new chapter.
This function is NOT part of the public API and should ONLY be used by demuxers.
s | media file handle | |
id | unique ID for this chapter | |
start | chapter start time in time_base units | |
end | chapter end time in time_base units | |
title | chapter title |
uint64_t ff_ntp_time | ( | void | ) |
int ff_probe_input_buffer | ( | ByteIOContext ** | pb, | |
AVInputFormat ** | fmt, | |||
const char * | filename, | |||
void * | logctx, | |||
unsigned int | offset, | |||
unsigned int | max_probe_size | |||
) |
Probes 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 attempt is made. When the maximum probe size is reached, the input format with the highest score is returned.
pb | the bytestream to probe, it may be closed and opened again | |
fmt | the input format is put here | |
filename | the filename of the stream | |
logctx | the log context | |
offset | the offset within the bytestream to probe from | |
max_probe_size | the maximum probe buffer size (zero for default) |
void ff_program_add_stream_index | ( | AVFormatContext * | ac, | |
int | progid, | |||
unsigned int | idx | |||
) |
void ff_read_frame_flush | ( | AVFormatContext * | s | ) |
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.
int ff_url_join | ( | char * | str, | |
int | size, | |||
const char * | proto, | |||
const char * | authorization, | |||
const char * | hostname, | |||
int | port, | |||
const char * | fmt, | |||
... | ||||
) |
Assembles a URL string from components.
This is the reverse operation of ff_url_split.
Note, this requires networking to be initialized, so the caller must ensure ff_network_init has been called.
str | the buffer to fill with the url | |
size | the size of the str buffer | |
proto | the protocol identifier, if null, the separator after the identifier is left out, too | |
authorization | an optional authorization string, may be null | |
hostname | the host name string | |
port | the port number, left out from the string if negative | |
fmt | a generic format string for everything to add after the host/port, may be null |
void ff_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 | |||
) |
Splits a URL string into components.
To reassemble components back into a URL, use ff_url_join instead of using snprintf directly.
The pointers to buffers for storing individual components may be null, in order to ignore that component. Buffers for components not found are set to empty strings. If the port isn't found, it is set to a negative value.
proto | the buffer for the protocol | |
proto_size | the size of the proto buffer | |
authorization | the buffer for the authorization | |
authorization_size | the size of the authorization buffer | |
hostname | the buffer for the host name | |
hostname_size | the size of the hostname buffer | |
port_ptr | a pointer to store the port number in | |
path | the buffer for the path | |
path_size | the size of the path buffer | |
url | the URL to split |
static void fill_all_stream_timings | ( | AVFormatContext * | ic | ) | [static] |
int find_info_tag | ( | char * | arg, | |
int | arg_size, | |||
const char * | tag1, | |||
const char * | info | |||
) |
static void flush_packet_queue | ( | AVFormatContext * | s | ) | [static] |
static int get_audio_frame_size | ( | AVCodecContext * | enc, | |
int | size | |||
) | [static] |
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 | |||
) |
static int has_codec_parameters | ( | AVCodecContext * | enc | ) | [static] |
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] |
static int match_format | ( | const char * | name, | |
const char * | names | |||
) | [static] |
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. |
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 void print_fps | ( | double | d, | |
const char * | postfix | |||
) | [static] |
static int set_codec_from_probe_data | ( | AVFormatContext * | s, | |
AVStream * | st, | |||
AVProbeData * | pd, | |||
int | score | |||
) | [static] |
static int tb_unreliable | ( | AVCodecContext * | c | ) | [static] |
static void update_initial_durations | ( | AVFormatContext * | s, | |
AVStream * | st, | |||
AVPacket * | pkt | |||
) | [static] |
static void update_initial_timestamps | ( | AVFormatContext * | s, | |
int | stream_index, | |||
int64_t | dts, | |||
int64_t | pts | |||
) | [static] |
AVInputFormat* first_iformat = NULL |
AVOutputFormat* first_oformat = NULL |