📄 avformat.h
字号:
/* decoding: duration of the stream, in AV_TIME_BASE fractional seconds. */ int64_t duration; char language[4]; /* ISO 639 3-letter language code (empty string if undefined) */ /* av_read_frame() support */ int need_parsing; ///< 1->full parsing needed, 2->only parse headers dont repack struct AVCodecParserContext *parser; int64_t cur_dts; int last_IP_duration; int64_t last_IP_pts; /* av_seek_frame() support */ AVIndexEntry *index_entries; /* only used if the format does not support seeking natively */ int nb_index_entries; unsigned int index_entries_allocated_size; int64_t nb_frames; ///< number of frames in this stream if known or 0#define MAX_REORDER_DELAY 4 int64_t pts_buffer[MAX_REORDER_DELAY+1];} AVStream;#define AVFMTCTX_NOHEADER 0x0001 /* signal that no header is present (streams are added dynamically) */#define MAX_STREAMS 20/* format I/O context */typedef struct AVFormatContext { const AVClass *av_class; /* set by av_alloc_format_context */ /* can only be iformat or oformat, not both at the same time */ struct AVInputFormat *iformat; struct AVOutputFormat *oformat; void *priv_data; ByteIOContext pb; unsigned int nb_streams; AVStream *streams[MAX_STREAMS]; char filename[1024]; /* input or output filename */ /* stream info */ int64_t timestamp; char title[512]; char author[512]; char copyright[512]; char comment[512]; char album[512]; int year; /* ID3 year, 0 if none */ int track; /* track number, 0 if none */ char genre[32]; /* ID3 genre */ int ctx_flags; /* format specific flags, see AVFMTCTX_xx */ /* private data for pts handling (do not modify directly) */ /* This buffer is only needed when packets were already buffered but not decoded, for example to get the codec parameters in mpeg streams */ struct AVPacketList *packet_buffer; /* 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. */ int64_t start_time; /* decoding: duration of the stream, in AV_TIME_BASE fractional seconds. NEVER set this value directly: it is deduced from the AVStream values. */ int64_t duration; /* decoding: total file size. 0 if unknown */ int64_t file_size; /* 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. */ int bit_rate; /* av_read_frame() support */ AVStream *cur_st; const uint8_t *cur_ptr; int cur_len; AVPacket cur_pkt; /* av_seek_frame() support */ int64_t data_offset; /* offset of the first packet */ int index_built; int mux_rate; int packet_size; int preload; int max_delay;#define AVFMT_NOOUTPUTLOOP -1#define AVFMT_INFINITEOUTPUTLOOP 0 /* number of times to loop output in formats that support it */ int loop_output; int flags;#define AVFMT_FLAG_GENPTS 0x0001 ///< generate pts if missing even if it requires parsing future frames#define AVFMT_FLAG_IGNIDX 0x0002 ///< ignore index int loop_input; /* decoding: size of data to probe; encoding unused */ unsigned int probesize; /** * maximum duration in AV_TIME_BASE units over which the input should be analyzed in av_find_stream_info() */ int max_analyze_duration;} AVFormatContext;typedef struct AVPacketList { AVPacket pkt; struct AVPacketList *next;} AVPacketList;extern AVInputFormat *first_iformat;extern AVOutputFormat *first_oformat;enum CodecID av_guess_image2_codec(const char *filename);/* XXX: use automatic init with either ELF sections or C file parser *//* modules *//* utils.c */void av_register_input_format(AVInputFormat *format);void av_register_output_format(AVOutputFormat *format);AVOutputFormat *guess_stream_format(const char *short_name, const char *filename, const char *mime_type);AVOutputFormat *guess_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);void av_hex_dump(FILE *f, uint8_t *buf, int size);void av_pkt_dump(FILE *f, AVPacket *pkt, int dump_payload);void av_register_all(void);/* codec tag <-> codec id */enum CodecID av_codec_get_id(const struct AVCodecTag **tags, unsigned int tag);unsigned int av_codec_get_tag(const struct AVCodecTag **tags, enum CodecID id);/* media file input */AVInputFormat *av_find_input_format(const char *short_name);AVInputFormat *av_probe_input_format(AVProbeData *pd, int is_opened);int av_open_input_stream(AVFormatContext **ic_ptr, ByteIOContext *pb, const char *filename, AVInputFormat *fmt, AVFormatParameters *ap);int av_open_input_file(AVFormatContext **ic_ptr, const char *filename, AVInputFormat *fmt, int buf_size, AVFormatParameters *ap);/* no av_open for output, so applications will need this: */AVFormatContext *av_alloc_format_context(void);#define AVERROR_UNKNOWN (-1) /* unknown error */#define AVERROR_IO (-2) /* i/o error */#define AVERROR_NUMEXPECTED (-3) /* number syntax expected in filename */#define AVERROR_INVALIDDATA (-4) /* invalid data found */#define AVERROR_NOMEM (-5) /* not enough memory */#define AVERROR_NOFMT (-6) /* unknown format */#define AVERROR_NOTSUPP (-7) /* operation not supported */int av_find_stream_info(AVFormatContext *ic);int av_read_packet(AVFormatContext *s, AVPacket *pkt);int av_read_frame(AVFormatContext *s, AVPacket *pkt);int av_seek_frame(AVFormatContext *s, int stream_index, int64_t timestamp, int flags);int av_read_play(AVFormatContext *s);int av_read_pause(AVFormatContext *s);void av_close_input_file(AVFormatContext *s);AVStream *av_new_stream(AVFormatContext *s, int id);void av_set_pts_info(AVStream *s, int pts_wrap_bits, int pts_num, int pts_den);#define AVSEEK_FLAG_BACKWARD 1 ///< seek backward#define AVSEEK_FLAG_BYTE 2 ///< seeking based on position in bytes#define AVSEEK_FLAG_ANY 4 ///< seek to any frame, even non keyframesint av_find_default_stream_index(AVFormatContext *s);int av_index_search_timestamp(AVStream *st, int64_t timestamp, int flags);int av_add_index_entry(AVStream *st, int64_t pos, int64_t timestamp, int size, int distance, int flags);int av_seek_frame_binary(AVFormatContext *s, int stream_index, int64_t target_ts, int flags);void av_update_cur_dts(AVFormatContext *s, AVStream *ref_st, int64_t 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 ));/* media file output */int av_set_parameters(AVFormatContext *s, AVFormatParameters *ap);int av_write_header(AVFormatContext *s);int av_write_frame(AVFormatContext *s, AVPacket *pkt);int av_interleaved_write_frame(AVFormatContext *s, AVPacket *pkt);int av_interleave_packet_per_dts(AVFormatContext *s, AVPacket *out, AVPacket *pkt, int flush);int av_write_trailer(AVFormatContext *s);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);int parse_frame_rate(int *frame_rate, int *frame_rate_base, const char *arg);int64_t parse_date(const char *datestr, int duration);int64_t av_gettime(void);/* ffm specific for ffserver */#define FFM_PACKET_SIZE 4096offset_t ffm_read_write_index(int fd);void ffm_write_write_index(int fd, offset_t pos);void ffm_set_write_index(AVFormatContext *s, offset_t pos, offset_t file_size);int find_info_tag(char *arg, int arg_size, const char *tag1, const char *info);int av_get_frame_filename(char *buf, int buf_size, const char *path, int number);int av_filename_number_test(const char *filename);/* grab specific */int video_grab_init(void);int audio_init(void);/* DV1394 */int dv1394_init(void);int dc1394_init(void);#ifdef HAVE_AV_CONFIG_H#include "os_support.h"int strstart(const char *str, const char *val, const char **ptr);int stristart(const char *str, const char *val, const char **ptr);void pstrcpy(char *buf, int buf_size, const char *str);char *pstrcat(char *buf, int buf_size, const char *s);void __dynarray_add(unsigned long **tab_ptr, int *nb_ptr, unsigned long elem);#ifdef __GNUC__#define dynarray_add(tab, nb_ptr, elem)\do {\ typeof(tab) _tab = (tab);\ typeof(elem) _elem = (elem);\ (void)sizeof(**_tab == _elem); /* check that types are compatible */\ __dynarray_add((unsigned long **)_tab, nb_ptr, (unsigned long)_elem);\} while(0)#else#define dynarray_add(tab, nb_ptr, elem)\do {\ __dynarray_add((unsigned long **)(tab), nb_ptr, (unsigned long)(elem));\} while(0)#endiftime_t mktimegm(struct tm *tm);struct tm *brktimegm(time_t secs, struct tm *tm);const char *small_strptime(const char *p, const char *fmt, struct tm *dt);struct in_addr;int resolve_host(struct in_addr *sin_addr, const char *hostname);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);int match_ext(const char *filename, const char *extensions);#endif /* HAVE_AV_CONFIG_H */#ifdef __cplusplus}#endif#endif /* AVFORMAT_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -