FFmpeg
avformat.h
Go to the documentation of this file.
1 /*
2  * copyright (c) 2001 Fabrice Bellard
3  *
4  * This file is part of FFmpeg.
5  *
6  * FFmpeg is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * FFmpeg is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with FFmpeg; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19  */
20 
21 #ifndef AVFORMAT_AVFORMAT_H
22 #define AVFORMAT_AVFORMAT_H
23 
317 #include <time.h>
318 #include <stdio.h> /* FILE */
319 #include "libavcodec/avcodec.h"
320 #include "libavutil/dict.h"
321 #include "libavutil/log.h"
322 
323 #include "avio.h"
324 #include "libavformat/version.h"
325 
326 struct AVFormatContext;
327 
328 struct AVDeviceInfoList;
330 
409 /* packet functions */
410 
411 
421 int av_get_packet(AVIOContext *s, AVPacket *pkt, int size);
422 
423 
438 int av_append_packet(AVIOContext *s, AVPacket *pkt, int size);
439 
440 /*************************************************/
441 /* input/output formats */
442 
443 struct AVCodecTag;
444 
448 typedef struct AVProbeData {
449  const char *filename;
450  unsigned char *buf;
451  int buf_size;
452  const char *mime_type;
453 } AVProbeData;
454 
455 #define AVPROBE_SCORE_RETRY (AVPROBE_SCORE_MAX/4)
456 #define AVPROBE_SCORE_STREAM_RETRY (AVPROBE_SCORE_MAX/4-1)
457 
458 #define AVPROBE_SCORE_EXTENSION 50
459 #define AVPROBE_SCORE_MIME 75
460 #define AVPROBE_SCORE_MAX 100
461 
462 #define AVPROBE_PADDING_SIZE 32
463 
464 #define AVFMT_NOFILE 0x0001
466 #define AVFMT_NEEDNUMBER 0x0002
467 #define AVFMT_SHOW_IDS 0x0008
468 #define AVFMT_GLOBALHEADER 0x0040
469 #define AVFMT_NOTIMESTAMPS 0x0080
470 #define AVFMT_GENERIC_INDEX 0x0100
471 #define AVFMT_TS_DISCONT 0x0200
472 #define AVFMT_VARIABLE_FPS 0x0400
473 #define AVFMT_NODIMENSIONS 0x0800
474 #define AVFMT_NOSTREAMS 0x1000
475 #define AVFMT_NOBINSEARCH 0x2000
476 #define AVFMT_NOGENSEARCH 0x4000
477 #define AVFMT_NO_BYTE_SEEK 0x8000
478 #define AVFMT_ALLOW_FLUSH 0x10000
479 #define AVFMT_TS_NONSTRICT 0x20000
482 #define AVFMT_TS_NEGATIVE 0x40000
491 #define AVFMT_SEEK_TO_PTS 0x4000000
497 typedef struct AVOutputFormat {
498  const char *name;
504  const char *long_name;
505  const char *mime_type;
506  const char *extensions;
507  /* output support */
508  enum AVCodecID audio_codec;
509  enum AVCodecID video_codec;
510  enum AVCodecID subtitle_codec;
517  int flags;
523  const struct AVCodecTag * const *codec_tag;
524 
525 
526  const AVClass *priv_class;
527 
528  /*****************************************************************
529  * No fields below this line are part of the public API. They
530  * may not be used outside of libavformat and can be changed and
531  * removed at will.
532  * New public fields should be added right above.
533  *****************************************************************
534  */
535  struct AVOutputFormat *next;
539  int priv_data_size;
540 
541  int (*write_header)(struct AVFormatContext *);
549  int (*write_packet)(struct AVFormatContext *, AVPacket *pkt);
550  int (*write_trailer)(struct AVFormatContext *);
554  int (*interleave_packet)(struct AVFormatContext *, AVPacket *out,
555  AVPacket *in, int flush);
563  int (*query_codec)(enum AVCodecID id, int std_compliance);
564 
565  void (*get_output_timestamp)(struct AVFormatContext *s, int stream,
566  int64_t *dts, int64_t *wall);
570  int (*control_message)(struct AVFormatContext *s, int type,
571  void *data, size_t data_size);
581  int (*write_uncoded_frame)(struct AVFormatContext *, int stream_index,
582  AVFrame **frame, unsigned flags);
587  int (*get_device_list)(struct AVFormatContext *s, struct AVDeviceInfoList *device_list);
592  int (*create_device_capabilities)(struct AVFormatContext *s, struct AVDeviceCapabilitiesQuery *caps);
597  int (*free_device_capabilities)(struct AVFormatContext *s, struct AVDeviceCapabilitiesQuery *caps);
598  enum AVCodecID data_codec;
608  int (*init)(struct AVFormatContext *);
617  void (*deinit)(struct AVFormatContext *);
623  int (*check_bitstream)(struct AVFormatContext *, const AVPacket *pkt);
633 typedef struct AVInputFormat {
638  const char *name;
639 
645  const char *long_name;
646 
652  int flags;
653 
659  const char *extensions;
660 
661  const struct AVCodecTag * const *codec_tag;
662 
663  const AVClass *priv_class;
664 
670  const char *mime_type;
671 
672  /*****************************************************************
673  * No fields below this line are part of the public API. They
674  * may not be used outside of libavformat and can be changed and
675  * removed at will.
676  * New public fields should be added right above.
677  *****************************************************************
678  */
679  struct AVInputFormat *next;
680 
684  int raw_codec_id;
685 
689  int priv_data_size;
690 
696  int (*read_probe)(AVProbeData *);
697 
703  int (*read_header)(struct AVFormatContext *);
704 
714  int (*read_packet)(struct AVFormatContext *, AVPacket *pkt);
715 
720  int (*read_close)(struct AVFormatContext *);
721 
730  int (*read_seek)(struct AVFormatContext *,
731  int stream_index, int64_t timestamp, int flags);
732 
737  int64_t (*read_timestamp)(struct AVFormatContext *s, int stream_index,
738  int64_t *pos, int64_t pos_limit);
744  int (*read_play)(struct AVFormatContext *);
745 
750  int (*read_pause)(struct AVFormatContext *);
751 
758  int (*read_seek2)(struct AVFormatContext *s, int stream_index, int64_t min_ts, int64_t ts, int64_t max_ts, int flags);
764  int (*get_device_list)(struct AVFormatContext *s, struct AVDeviceInfoList *device_list);
765 
770  int (*create_device_capabilities)(struct AVFormatContext *s, struct AVDeviceCapabilitiesQuery *caps);
771 
776  int (*free_device_capabilities)(struct AVFormatContext *s, struct AVDeviceCapabilitiesQuery *caps);
777 } AVInputFormat;
782 enum AVStreamParseType {
783  AVSTREAM_PARSE_NONE,
791 };
792 
793 typedef struct AVIndexEntry {
794  int64_t pos;
795  int64_t timestamp;
801 #define AVINDEX_KEYFRAME 0x0001
802 #define AVINDEX_DISCARD_FRAME 0x0002
805  int flags:2;
806  int size:30; //Yeah, trying to keep the size of this small to reduce memory requirements (it is 24 vs. 32 bytes due to possible 8-byte alignment).
807  int min_distance;
808 } AVIndexEntry;
809 
810 #define AV_DISPOSITION_DEFAULT 0x0001
811 #define AV_DISPOSITION_DUB 0x0002
812 #define AV_DISPOSITION_ORIGINAL 0x0004
813 #define AV_DISPOSITION_COMMENT 0x0008
814 #define AV_DISPOSITION_LYRICS 0x0010
815 #define AV_DISPOSITION_KARAOKE 0x0020
822 #define AV_DISPOSITION_FORCED 0x0040
823 #define AV_DISPOSITION_HEARING_IMPAIRED 0x0080
824 #define AV_DISPOSITION_VISUAL_IMPAIRED 0x0100
825 #define AV_DISPOSITION_CLEAN_EFFECTS 0x0200
833 #define AV_DISPOSITION_ATTACHED_PIC 0x0400
838 #define AV_DISPOSITION_TIMED_THUMBNAILS 0x0800
839 
840 typedef struct AVStreamInternal AVStreamInternal;
841 
845 #define AV_DISPOSITION_CAPTIONS 0x10000
846 #define AV_DISPOSITION_DESCRIPTIONS 0x20000
847 #define AV_DISPOSITION_METADATA 0x40000
848 #define AV_DISPOSITION_DEPENDENT 0x80000
849 
850 
853 #define AV_PTS_WRAP_IGNORE 0
854 #define AV_PTS_WRAP_ADD_OFFSET 1
855 #define AV_PTS_WRAP_SUB_OFFSET -1
856 
864 typedef struct AVStream {
865  int index;
871  int id;
872 #if FF_API_LAVF_AVCTX
876  attribute_deprecated
877  AVCodecContext *codec;
878 #endif
879  void *priv_data;
893  AVRational time_base;
894 
903  int64_t start_time;
904 
913  int64_t duration;
914 
915  int64_t nb_frames;
916 
917  int disposition;
919  enum AVDiscard discard;
920 
926  AVRational sample_aspect_ratio;
927 
928  AVDictionary *metadata;
929 
937  AVRational avg_frame_rate;
938 
946  AVPacket attached_pic;
947 
966  AVPacketSideData *side_data;
970  int nb_side_data;
971 
977  int event_flags;
978 #define AVSTREAM_EVENT_FLAG_METADATA_UPDATED 0x0001
980 
988  AVRational r_frame_rate;
989 
990 #if FF_API_LAVF_FFSERVER
991 
998  attribute_deprecated
999  char *recommended_encoder_configuration;
1000 #endif
1001 
1011  AVCodecParameters *codecpar;
1012 
1013  /*****************************************************************
1014  * All fields below this line are not part of the public API. They
1015  * may not be used outside of libavformat and can be changed and
1016  * removed at will.
1017  * Internal note: be aware that physically removing these fields
1018  * will break ABI. Replace removed fields with dummy fields, and
1019  * add new fields to AVStreamInternal.
1020  *****************************************************************
1021  */
1022 
1023 #define MAX_STD_TIMEBASES (30*12+30+3+6)
1024 
1027  struct {
1028  int64_t last_dts;
1029  int64_t duration_gcd;
1030  int duration_count;
1031  int64_t rfps_duration_sum;
1032  double (*duration_error)[2][MAX_STD_TIMEBASES];
1033  int64_t codec_info_duration;
1034  int64_t codec_info_duration_fields;
1035  int frame_delay_evidence;
1036 
1042  int found_decoder;
1043 
1044  int64_t last_duration;
1045 
1049  int64_t fps_first_dts;
1050  int fps_first_dts_idx;
1051  int64_t fps_last_dts;
1052  int fps_last_dts_idx;
1053 
1054  } *info;
1055 
1056  int pts_wrap_bits;
1058  // Timestamp generation support:
1066  int64_t first_dts;
1067  int64_t cur_dts;
1068  int64_t last_IP_pts;
1069  int last_IP_duration;
1070 
1074  int probe_packets;
1079  int codec_info_nb_frames;
1080 
1081  /* av_read_frame() support */
1082  enum AVStreamParseType need_parsing;
1083  struct AVCodecParserContext *parser;
1084 
1088  struct AVPacketList *last_in_packet_buffer;
1089  AVProbeData probe_data;
1090 #define MAX_REORDER_DELAY 16
1091  int64_t pts_buffer[MAX_REORDER_DELAY+1];
1092 
1093  AVIndexEntry *index_entries;
1095  int nb_index_entries;
1096  unsigned int index_entries_allocated_size;
1103  int stream_identifier;
1104 
1105  int64_t interleaver_chunk_size;
1106  int64_t interleaver_chunk_duration;
1107 
1115  int request_probe;
1120  int skip_to_keyframe;
1121 
1125  int skip_samples;
1126 
1134  int64_t start_skip_samples;
1135 
1142  int64_t first_discard_sample;
1149  int64_t last_discard_sample;
1150 
1155  int nb_decoded_frames;
1156 
1161  int64_t mux_ts_offset;
1162 
1166  int64_t pts_wrap_reference;
1167 
1178  int pts_wrap_behavior;
1179 
1183  int update_initial_durations_done;
1184 
1188  int64_t pts_reorder_error[MAX_REORDER_DELAY+1];
1189  uint8_t pts_reorder_error_count[MAX_REORDER_DELAY+1];
1190 
1194  int64_t last_dts_for_order_check;
1195  uint8_t dts_ordered;
1196  uint8_t dts_misordered;
1201  int inject_global_side_data;
1202 
1208  AVRational display_aspect_ratio;
1209 
1214  AVStreamInternal *internal;
1215 } AVStream;
1216 
1217 #if FF_API_FORMAT_GET_SET
1218 
1222 attribute_deprecated
1223 AVRational av_stream_get_r_frame_rate(const AVStream *s);
1224 attribute_deprecated
1225 void av_stream_set_r_frame_rate(AVStream *s, AVRational r);
1226 #if FF_API_LAVF_FFSERVER
1227 attribute_deprecated
1228 char* av_stream_get_recommended_encoder_configuration(const AVStream *s);
1229 attribute_deprecated
1230 void av_stream_set_recommended_encoder_configuration(AVStream *s, char *configuration);
1231 #endif
1232 #endif
1233 
1234 struct AVCodecParserContext *av_stream_get_parser(const AVStream *s);
1235 
1241 int64_t av_stream_get_end_pts(const AVStream *st);
1242 
1243 #define AV_PROGRAM_RUNNING 1
1244 
1251 typedef struct AVProgram {
1252  int id;
1253  int flags;
1254  enum AVDiscard discard;
1255  unsigned int *stream_index;
1256  unsigned int nb_stream_indexes;
1257  AVDictionary *metadata;
1258 
1259  int program_num;
1260  int pmt_pid;
1261  int pcr_pid;
1262 
1263  /*****************************************************************
1264  * All fields below this line are not part of the public API. They
1265  * may not be used outside of libavformat and can be changed and
1266  * removed at will.
1267  * New public fields should be added right above.
1268  *****************************************************************
1269  */
1270  int64_t start_time;
1271  int64_t end_time;
1272 
1273  int64_t pts_wrap_reference;
1274  int pts_wrap_behavior;
1275 } AVProgram;
1276 
1277 #define AVFMTCTX_NOHEADER 0x0001
1279 #define AVFMTCTX_UNSEEKABLE 0x0002
1285 typedef struct AVChapter {
1286  int id;
1287  AVRational time_base;
1288  int64_t start, end;
1289  AVDictionary *metadata;
1290 } AVChapter;
1291 
1292 
1296 typedef int (*av_format_control_message)(struct AVFormatContext *s, int type,
1297  void *data, size_t data_size);
1298 
1299 typedef int (*AVOpenCallback)(struct AVFormatContext *s, AVIOContext **pb, const char *url, int flags,
1300  const AVIOInterruptCB *int_cb, AVDictionary **options);
1310 };
1311 
1312 typedef struct AVFormatInternal AVFormatInternal;
1313 
1328 typedef struct AVFormatContext {
1333  const AVClass *av_class;
1334 
1340  struct AVInputFormat *iformat;
1341 
1347  struct AVOutputFormat *oformat;
1348 
1356  void *priv_data;
1357 
1371 
1372  /* stream info */
1377  int ctx_flags;
1378 
1384  unsigned int nb_streams;
1396  AVStream **streams;
1397 
1398 #if FF_API_FORMAT_FILENAME
1399 
1407  attribute_deprecated
1408  char filename[1024];
1409 #endif
1424  char *url;
1425 
1433  int64_t start_time;
1434 
1443  int64_t duration;
1444 
1450  int64_t bit_rate;
1451 
1452  unsigned int packet_size;
1453  int max_delay;
1454 
1459  int flags;
1460 #define AVFMT_FLAG_GENPTS 0x0001
1461 #define AVFMT_FLAG_IGNIDX 0x0002
1462 #define AVFMT_FLAG_NONBLOCK 0x0004
1463 #define AVFMT_FLAG_IGNDTS 0x0008
1464 #define AVFMT_FLAG_NOFILLIN 0x0010
1465 #define AVFMT_FLAG_NOPARSE 0x0020
1466 #define AVFMT_FLAG_NOBUFFER 0x0040
1467 #define AVFMT_FLAG_CUSTOM_IO 0x0080
1468 #define AVFMT_FLAG_DISCARD_CORRUPT 0x0100
1469 #define AVFMT_FLAG_FLUSH_PACKETS 0x0200
1470 
1476 #define AVFMT_FLAG_BITEXACT 0x0400
1477 #define AVFMT_FLAG_MP4A_LATM 0x8000
1478 #define AVFMT_FLAG_SORT_DTS 0x10000
1479 #define AVFMT_FLAG_PRIV_OPT 0x20000
1480 #if FF_API_LAVF_KEEPSIDE_FLAG
1481 #define AVFMT_FLAG_KEEP_SIDE_DATA 0x40000
1482 #endif
1483 #define AVFMT_FLAG_FAST_SEEK 0x80000
1484 #define AVFMT_FLAG_SHORTEST 0x100000
1485 #define AVFMT_FLAG_AUTO_BSF 0x200000
1486 
1487 
1492  int64_t probesize;
1500  int64_t max_analyze_duration;
1501 
1502  const uint8_t *key;
1503  int keylen;
1504 
1505  unsigned int nb_programs;
1506  AVProgram **programs;
1507 
1512  enum AVCodecID video_codec_id;
1513 
1518  enum AVCodecID audio_codec_id;
1519 
1524  enum AVCodecID subtitle_codec_id;
1525 
1536  unsigned int max_index_size;
1537 
1542  unsigned int max_picture_buffer;
1543 
1555  unsigned int nb_chapters;
1556  AVChapter **chapters;
1557 
1566  AVDictionary *metadata;
1567 
1579  int64_t start_time_realtime;
1586  int fps_probe_size;
1587 
1593  int error_recognition;
1594 
1604  AVIOInterruptCB interrupt_callback;
1605 
1609  int debug;
1610 #define FF_FDEBUG_TS 0x0001
1611 
1628  int64_t max_interleave_delta;
1629 
1634  int strict_std_compliance;
1635 
1641  int event_flags;
1642 #define AVFMT_EVENT_FLAG_METADATA_UPDATED 0x0001
1643 
1644 
1648  int max_ts_probe;
1649 
1657  int avoid_negative_ts;
1658 #define AVFMT_AVOID_NEG_TS_AUTO -1
1659 #define AVFMT_AVOID_NEG_TS_MAKE_NON_NEGATIVE 1
1660 #define AVFMT_AVOID_NEG_TS_MAKE_ZERO 2
1661 
1666  int ts_id;
1667 
1674  int audio_preload;
1675 
1682  int max_chunk_duration;
1683 
1690  int max_chunk_size;
1691 
1698  int use_wallclock_as_timestamps;
1699 
1705  int avio_flags;
1706 
1713  enum AVDurationEstimationMethod duration_estimation_method;
1714 
1720  int64_t skip_initial_bytes;
1721 
1727  unsigned int correct_ts_overflow;
1728 
1734  int seek2any;
1735 
1741  int flush_packets;
1742 
1750  int probe_score;
1751 
1757  int format_probesize;
1758 
1765  char *codec_whitelist;
1766 
1773  char *format_whitelist;
1774 
1779  AVFormatInternal *internal;
1780 
1787  int io_repositioned;
1788 
1796 
1804 
1812 
1820 
1826  int metadata_header_padding;
1827 
1832  void *opaque;
1837  av_format_control_message control_message_cb;
1838 
1843  int64_t output_ts_offset;
1844 
1851  uint8_t *dump_separator;
1852 
1857  enum AVCodecID data_codec_id;
1858 
1859 #if FF_API_OLD_OPEN_CALLBACKS
1860 
1877  attribute_deprecated
1878  int (*open_cb)(struct AVFormatContext *s, AVIOContext **p, const char *url, int flags, const AVIOInterruptCB *int_cb, AVDictionary **options);
1879 #endif
1880 
1886  char *protocol_whitelist;
1887 
1908  int (*io_open)(struct AVFormatContext *s, AVIOContext **pb, const char *url,
1909  int flags, AVDictionary **options);
1910 
1914  void (*io_close)(struct AVFormatContext *s, AVIOContext *pb);
1915 
1921  char *protocol_blacklist;
1929 } AVFormatContext;
1930 
1931 #if FF_API_FORMAT_GET_SET
1932 
1936 attribute_deprecated
1937 int av_format_get_probe_score(const AVFormatContext *s);
1938 attribute_deprecated
1939 AVCodec * av_format_get_video_codec(const AVFormatContext *s);
1940 attribute_deprecated
1941 void av_format_set_video_codec(AVFormatContext *s, AVCodec *c);
1942 attribute_deprecated
1943 AVCodec * av_format_get_audio_codec(const AVFormatContext *s);
1944 attribute_deprecated
1945 void av_format_set_audio_codec(AVFormatContext *s, AVCodec *c);
1946 attribute_deprecated
1947 AVCodec * av_format_get_subtitle_codec(const AVFormatContext *s);
1948 attribute_deprecated
1949 void av_format_set_subtitle_codec(AVFormatContext *s, AVCodec *c);
1950 attribute_deprecated
1951 AVCodec * av_format_get_data_codec(const AVFormatContext *s);
1952 attribute_deprecated
1953 void av_format_set_data_codec(AVFormatContext *s, AVCodec *c);
1954 attribute_deprecated
1955 int av_format_get_metadata_header_padding(const AVFormatContext *s);
1956 attribute_deprecated
1957 void av_format_set_metadata_header_padding(AVFormatContext *s, int c);
1958 attribute_deprecated
1959 void * av_format_get_opaque(const AVFormatContext *s);
1960 attribute_deprecated
1961 void av_format_set_opaque(AVFormatContext *s, void *opaque);
1962 attribute_deprecated
1963 av_format_control_message av_format_get_control_message_cb(const AVFormatContext *s);
1964 attribute_deprecated
1965 void av_format_set_control_message_cb(AVFormatContext *s, av_format_control_message callback);
1966 #if FF_API_OLD_OPEN_CALLBACKS
1967 attribute_deprecated AVOpenCallback av_format_get_open_cb(const AVFormatContext *s);
1968 attribute_deprecated void av_format_set_open_cb(AVFormatContext *s, AVOpenCallback callback);
1969 #endif
1970 #endif
1971 
1977 
1984 
1985 typedef struct AVPacketList {
1986  AVPacket pkt;
1987  struct AVPacketList *next;
1988 } AVPacketList;
1989 
1990 
2003 unsigned avformat_version(void);
2004 
2008 const char *avformat_configuration(void);
2009 
2013 const char *avformat_license(void);
2014 
2015 #if FF_API_NEXT
2016 
2024 attribute_deprecated
2025 void av_register_all(void);
2026 
2027 attribute_deprecated
2028 void av_register_input_format(AVInputFormat *format);
2029 attribute_deprecated
2030 void av_register_output_format(AVOutputFormat *format);
2031 #endif
2032 
2047 int avformat_network_init(void);
2048 
2053 int avformat_network_deinit(void);
2054 
2055 #if FF_API_NEXT
2056 
2061 attribute_deprecated
2062 AVInputFormat *av_iformat_next(const AVInputFormat *f);
2063 
2069 attribute_deprecated
2070 AVOutputFormat *av_oformat_next(const AVOutputFormat *f);
2071 #endif
2072 
2082 const AVOutputFormat *av_muxer_iterate(void **opaque);
2083 
2093 const AVInputFormat *av_demuxer_iterate(void **opaque);
2094 
2101 
2107 
2114 const AVClass *avformat_get_class(void);
2115 
2136 
2150  uint8_t *data, size_t size);
2151 
2160 uint8_t *av_stream_new_side_data(AVStream *stream,
2161  enum AVPacketSideDataType type, int size);
2170 uint8_t *av_stream_get_side_data(const AVStream *stream,
2171  enum AVPacketSideDataType type, int *size);
2172 
2173 AVProgram *av_new_program(AVFormatContext *s, int id);
2174 
2197  const char *format_name, const char *filename);
2198 
2207 AVInputFormat *av_find_input_format(const char *short_name);
2208 
2216 AVInputFormat *av_probe_input_format(AVProbeData *pd, int is_opened);
2217 
2230 AVInputFormat *av_probe_input_format2(AVProbeData *pd, int is_opened, int *score_max);
2231 
2239 AVInputFormat *av_probe_input_format3(AVProbeData *pd, int is_opened, int *score_ret);
2240 
2258  const char *url, void *logctx,
2259  unsigned int offset, unsigned int max_probe_size);
2260 
2265  const char *url, void *logctx,
2266  unsigned int offset, unsigned int max_probe_size);
2267 
2287 int avformat_open_input(AVFormatContext **ps, const char *url, AVInputFormat *fmt, AVDictionary **options);
2288 
2289 attribute_deprecated
2290 int av_demuxer_open(AVFormatContext *ic);
2291 
2314 
2326 
2327 void av_program_add_stream_index(AVFormatContext *ac, int progid, unsigned int idx);
2328 
2354  enum AVMediaType type,
2355  int wanted_stream_nb,
2356  int related_stream,
2357  AVCodec **decoder_ret,
2358  int flags);
2359 
2384 int av_read_frame(AVFormatContext *s, AVPacket *pkt);
2385 
2399 int av_seek_frame(AVFormatContext *s, int stream_index, int64_t timestamp,
2400  int flags);
2401 
2430 int avformat_seek_file(AVFormatContext *s, int stream_index, int64_t min_ts, int64_t ts, int64_t max_ts, int flags);
2431 
2449 
2455 
2462 
2472 #define AVSEEK_FLAG_BACKWARD 1
2473 #define AVSEEK_FLAG_BYTE 2
2474 #define AVSEEK_FLAG_ANY 4
2475 #define AVSEEK_FLAG_FRAME 8
2476 
2477 
2482 #define AVSTREAM_INIT_IN_WRITE_HEADER 0
2483 #define AVSTREAM_INIT_IN_INIT_OUTPUT 1
2484 
2485 
2502 av_warn_unused_result
2504 
2524 av_warn_unused_result
2526 
2565 
2610 
2619 int av_write_uncoded_frame(AVFormatContext *s, int stream_index,
2620  AVFrame *frame);
2621 
2638 int av_interleaved_write_uncoded_frame(AVFormatContext *s, int stream_index,
2639  AVFrame *frame);
2640 
2647 int av_write_uncoded_frame_query(AVFormatContext *s, int stream_index);
2648 
2659 
2672 AVOutputFormat *av_guess_format(const char *short_name,
2673  const char *filename,
2674  const char *mime_type);
2675 
2679 enum AVCodecID av_guess_codec(AVOutputFormat *fmt, const char *short_name,
2680  const char *filename, const char *mime_type,
2681  enum AVMediaType type);
2682 
2698 int av_get_output_timestamp(struct AVFormatContext *s, int stream,
2699  int64_t *dts, int64_t *wall);
2700 
2701 
2725 void av_hex_dump(FILE *f, const uint8_t *buf, int size);
2726 
2739 void av_hex_dump_log(void *avcl, int level, const uint8_t *buf, int size);
2740 
2749 void av_pkt_dump2(FILE *f, const AVPacket *pkt, int dump_payload, const AVStream *st);
2750 
2751 
2763 void av_pkt_dump_log2(void *avcl, int level, const AVPacket *pkt, int dump_payload,
2764  const AVStream *st);
2765 
2774 enum AVCodecID av_codec_get_id(const struct AVCodecTag * const *tags, unsigned int tag);
2775 
2784 unsigned int av_codec_get_tag(const struct AVCodecTag * const *tags, enum AVCodecID id);
2785 
2795 int av_codec_get_tag2(const struct AVCodecTag * const *tags, enum AVCodecID id,
2796  unsigned int *tag);
2797 
2798 int av_find_default_stream_index(AVFormatContext *s);
2799 
2811 int av_index_search_timestamp(AVStream *st, int64_t timestamp, int flags);
2812 
2819 int av_add_index_entry(AVStream *st, int64_t pos, int64_t timestamp,
2820  int size, int distance, int flags);
2821 
2822 
2842 void av_url_split(char *proto, int proto_size,
2843  char *authorization, int authorization_size,
2844  char *hostname, int hostname_size,
2845  int *port_ptr,
2846  char *path, int path_size,
2847  const char *url);
2848 
2849 
2861  int index,
2862  const char *url,
2863  int is_output);
2864 
2865 
2866 #define AV_FRAME_FILENAME_FLAGS_MULTIPLE 1
2867 
2868 
2881 int av_get_frame_filename2(char *buf, int buf_size,
2882  const char *path, int number, int flags);
2883 
2884 int av_get_frame_filename(char *buf, int buf_size,
2885  const char *path, int number);
2886 
2893 int av_filename_number_test(const char *filename);
2894 
2912 int av_sdp_create(AVFormatContext *ac[], int n_files, char *buf, int size);
2913 
2921 int av_match_ext(const char *filename, const char *extensions);
2922 
2933 int avformat_query_codec(const AVOutputFormat *ofmt, enum AVCodecID codec_id,
2934  int std_compliance);
2935 
2951 const struct AVCodecTag *avformat_get_riff_video_tags(void);
2955 const struct AVCodecTag *avformat_get_riff_audio_tags(void);
2959 const struct AVCodecTag *avformat_get_mov_video_tags(void);
2963 const struct AVCodecTag *avformat_get_mov_audio_tags(void);
2964 
2987 
2997 
3012  const char *spec);
3013 
3014 int avformat_queue_attached_pictures(AVFormatContext *s);
3015 
3016 #if FF_API_OLD_BSF
3017 
3028 attribute_deprecated
3029 int av_apply_bitstream_filters(AVCodecContext *codec, AVPacket *pkt,
3030  AVBitStreamFilterContext *bsfc);
3031 #endif
3032 
3033 enum AVTimebaseSource {
3034  AVFMT_TBCF_AUTO = -1,
3035  AVFMT_TBCF_DECODER,
3036  AVFMT_TBCF_DEMUXER,
3037 #if FF_API_R_FRAME_RATE
3038  AVFMT_TBCF_R_FRAMERATE,
3039 #endif
3040 };
3041 
3053  AVStream *ost, const AVStream *ist,
3054  enum AVTimebaseSource copy_tb);
3055 
3062 
3067 #endif /* AVFORMAT_AVFORMAT_H */
void av_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)
Split a URL string into components.
Definition: utils.c:4691
int(* io_open)(struct AVFormatContext *s, AVIOContext **pb, const char *url, int flags, AVDictionary **options)
A callback for opening new IO streams.
Definition: avformat.h:1922
full parsing and interpolation of timestamps for frames not starting on a packet boundary ...
Definition: avformat.h:795
Bytestream IO Context.
Definition: avio.h:161
void av_pkt_dump2(FILE *f, const AVPacket *pkt, int dump_payload, const AVStream *st)
Send a nice dump of a packet to the specified file stream.
Definition: dump.c:108
Buffered I/O operations.
AVPacketSideDataType
Definition: avcodec.h:1143
struct AVProgram AVProgram
New fields can be added to the end with minor version bumps.
This structure describes decoded (raw) audio or video data.
Definition: frame.h:218
int av_interleaved_write_frame(AVFormatContext *s, AVPacket *pkt)
Write a packet to an output media file ensuring correct interleaving.
Definition: mux.c:1185
int av_add_index_entry(AVStream *st, int64_t pos, int64_t timestamp, int size, int distance, int flags)
Add an index entry into a sorted list.
Definition: utils.c:2038
int av_write_frame(AVFormatContext *s, AVPacket *pkt)
Write a packet to an output media file.
Definition: mux.c:878
AVRational av_guess_sample_aspect_ratio(AVFormatContext *format, AVStream *stream, AVFrame *frame)
Guess the sample aspect ratio of a frame, based on both the stream and the frame aspect ratio...
Definition: utils.c:4985
enum AVCodecID video_codec
default video codec
Definition: avformat.h:518
int av_get_output_timestamp(struct AVFormatContext *s, int stream, int64_t *dts, int64_t *wall)
Get timing information for the data currently output.
Definition: mux.c:1302
AVInputFormat * av_probe_input_format3(AVProbeData *pd, int is_opened, int *score_ret)
Guess the file format.
Definition: format.c:128
Definition: avformat.h:642
int av_write_uncoded_frame_query(AVFormatContext *s, int stream_index)
Test whether a muxer supports uncoded frame.
Definition: mux.c:1379
int priv_data_size
Size of private data so that it can be allocated in the wrapper.
Definition: avformat.h:698
AVCodec.
Definition: avcodec.h:3408
This struct describes the properties of an encoded stream.
Definition: avcodec.h:3876
enum AVDurationEstimationMethod av_fmt_ctx_get_duration_estimation_method(const AVFormatContext *ctx)
Returns the method used to set ctx->duration.
Definition: options.c:163
Format I/O context.
Definition: avformat.h:1342
AVRational av_guess_frame_rate(AVFormatContext *ctx, AVStream *stream, AVFrame *frame)
Guess the frame rate, based on both the container and codec information.
Definition: utils.c:5008
const struct AVCodecTag * avformat_get_mov_audio_tags(void)
Definition: isom.c:652
Public dictionary API.
int flags
can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, AVFMT_GLOBALHEADER, AVFMT_NOTIMESTAMPS, AVFMT_VARIABLE_FPS, AVFMT_NODIMENSIONS, AVFMT_NOSTREAMS, AVFMT_ALLOW_FLUSH, AVFMT_TS_NONSTRICT, AVFMT_TS_NEGATIVE
Definition: avformat.h:526
struct AVStream AVStream
Stream structure.
const struct AVCodecTag * avformat_get_riff_video_tags(void)
Definition: riff.c:576
enum AVCodecID av_codec_get_id(const struct AVCodecTag *const *tags, unsigned int tag)
Get the AVCodecID for the given codec tag tag.
unsigned avformat_version(void)
Return the LIBAVFORMAT_VERSION_INT constant.
Definition: utils.c:66
const char * avformat_license(void)
Return the libavformat license.
Definition: utils.c:77
int avformat_transfer_internal_stream_timing_info(const AVOutputFormat *ofmt, AVStream *ost, const AVStream *ist, enum AVTimebaseSource copy_tb)
Transfer internal timing information from one stream to another.
Definition: utils.c:5685
int priv_data_size
size of private data so that it can be allocated in the wrapper
Definition: avformat.h:548
int avformat_match_stream_specifier(AVFormatContext *s, AVStream *st, const char *spec)
Check if the stream st contained in s is matched by the stream specifier spec.
Definition: utils.c:5029
AVDurationEstimationMethod
The duration of a video can be estimated through various ways, and this enum can be used to know how ...
Definition: avformat.h:1320
AVStream * avformat_new_stream(AVFormatContext *s, const AVCodec *c)
Add a new stream to a media file.
Definition: utils.c:4441
uint8_t * av_stream_get_side_data(const AVStream *stream, enum AVPacketSideDataType type, int *size)
Get side information from stream.
Definition: utils.c:5405
int av_codec_get_tag2(const struct AVCodecTag *const *tags, enum AVCodecID id, unsigned int *tag)
Get the codec tag for the given codec id.
Definition: internal.h:44
AVFormatContext * avformat_alloc_context(void)
Allocate an AVFormatContext.
Definition: options.c:144
void av_pkt_dump_log2(void *avcl, int level, const AVPacket *pkt, int dump_payload, const AVStream *st)
Send a nice dump of a packet to the log.
Definition: dump.c:113
const char * avformat_configuration(void)
Return the libavformat build-time configuration.
Definition: utils.c:72
int flags
Flags modifying the (de)muxer behaviour.
Definition: avformat.h:1473
Definition: avformat.h:1999
char * protocol_whitelist
&#39;,&#39; separated list of allowed protocols.
Definition: avformat.h:1900
int avformat_network_init(void)
Do global initialization of network libraries.
Definition: utils.c:4922
const struct AVCodecTag * avformat_get_riff_audio_tags(void)
Definition: riff.c:581
int av_sdp_create(AVFormatContext *ac[], int n_files, char *buf, int size)
Generate an SDP for an RTP session.
Definition: sdp.c:841
int av_get_packet(AVIOContext *s, AVPacket *pkt, int size)
Allocate and read the payload of a packet and initialize its fields with default values.
Definition: utils.c:310
int av_match_ext(const char *filename, const char *extensions)
Return a positive value if the given filename has one of the given extensions, 0 otherwise.
Definition: format.c:38
const AVClass * avformat_get_class(void)
Get the AVClass for AVFormatContext.
Definition: options.c:168
int av_probe_input_buffer2(AVIOContext *pb, AVInputFormat **fmt, const char *url, void *logctx, unsigned int offset, unsigned int max_probe_size)
Probe a bytestream to determine the input format.
Definition: format.c:222
full parsing and repack with timestamp and position generation by parser for raw this assumes that ea...
Definition: avformat.h:797
Duration estimated from bitrate (less accurate)
Definition: avformat.h:1323
int av_append_packet(AVIOContext *s, AVPacket *pkt, int size)
Read data and append it to the current content of the AVPacket.
Definition: utils.c:320
const AVOutputFormat * av_muxer_iterate(void **opaque)
Iterate over all registered muxers.
Definition: allformats.c:492
const struct AVCodecTag * avformat_get_mov_video_tags(void)
Definition: isom.c:647
int avformat_alloc_output_context2(AVFormatContext **ctx, AVOutputFormat *oformat, const char *format_name, const char *filename)
Allocate an AVFormatContext for an output format.
Definition: mux.c:148
void av_dump_format(AVFormatContext *ic, int index, const char *url, int is_output)
Print detailed information about the input or output format, such as duration, bitrate, streams, container, programs, metadata, side data, codec and time base.
Definition: dump.c:561
Callback for checking whether to abort blocking functions.
Definition: avio.h:58
int av_find_best_stream(AVFormatContext *ic, enum AVMediaType type, int wanted_stream_nb, int related_stream, AVCodec **decoder_ret, int flags)
Find the "best" stream in the file.
Definition: utils.c:4169
AVRational av_stream_get_codec_timebase(const AVStream *st)
Get the internal codec timebase from a stream.
Definition: utils.c:5747
int av_probe_input_buffer(AVIOContext *pb, AVInputFormat **fmt, const char *url, void *logctx, unsigned int offset, unsigned int max_probe_size)
Like av_probe_input_buffer2() but returns 0 on success.
Definition: format.c:320
AVProgram * av_find_program_from_stream(AVFormatContext *ic, AVProgram *last, int s)
Find the programs which belong to a given stream.
Definition: utils.c:4152
Definition: dict.c:30
AVCodecID
Identify the syntax and semantics of the bitstream.
Definition: avcodec.h:215
Definition: internal.h:149
int av_index_search_timestamp(AVStream *st, int64_t timestamp, int flags)
Get the index for a specific timestamp.
Definition: utils.c:2147
void av_hex_dump(FILE *f, const uint8_t *buf, int size)
Send a nice hexadecimal dump of a buffer to the specified file stream.
Definition: dump.c:74
char * url
input or output URL.
Definition: avformat.h:1438
int av_read_play(AVFormatContext *s)
Start playing a network-based stream (e.g.
Definition: utils.c:4236
struct AVFormatContext AVFormatContext
Format I/O context.
New fields can be added to the end with minor version bumps.
Definition: avformat.h:1260
AVInputFormat * av_probe_input_format2(AVProbeData *pd, int is_opened, int *score_max)
Guess the file format.
Definition: format.c:205
void * opaque
User data.
Definition: avformat.h:1846
Only parse headers, do not repack.
Definition: avformat.h:794
int avformat_query_codec(const AVOutputFormat *ofmt, enum AVCodecID codec_id, int std_compliance)
Test if the given container can store a codec.
Definition: utils.c:4904
Definition: internal.h:66
const char * mime_type
mime_type, when known.
Definition: avformat.h:452
int buf_size
Size of buf except extra allocated bytes.
Definition: avformat.h:451
unsigned char * buf
Buffer must have AVPROBE_PADDING_SIZE of extra allocated bytes filled with zero.
Definition: avformat.h:450
void av_format_inject_global_side_data(AVFormatContext *s)
This function will cause global side data to be injected in the next packet of each stream as well as...
Definition: utils.c:154
int av_read_pause(AVFormatContext *s)
Pause a network-based stream (e.g.
Definition: utils.c:4245
AVInputFormat * av_find_input_format(const char *short_name)
Find AVInputFormat based on the short name of the input format.
Definition: format.c:118
av_warn_unused_result int avformat_write_header(AVFormatContext *s, AVDictionary **options)
Allocate the stream private data and write the stream header to an output media file.
Definition: mux.c:508
int(* av_format_control_message)(struct AVFormatContext *s, int type, void *data, size_t data_size)
Callback used by devices to communicate with application.
Definition: avformat.h:1310
int av_stream_add_side_data(AVStream *st, enum AVPacketSideDataType type, uint8_t *data, size_t size)
Wrap an existing array as stream side data.
Definition: utils.c:5420
enum AVCodecID av_guess_codec(AVOutputFormat *fmt, const char *short_name, const char *filename, const char *mime_type, enum AVMediaType type)
Guess the codec ID based upon muxer and filename.
Definition: format.c:87
int max_streams
The maximum number of streams.
Definition: avformat.h:1942
Definition: avformat.h:802
Duration estimated from a stream with a known duration.
Definition: avformat.h:1322
uint8_t * av_stream_new_side_data(AVStream *stream, enum AVPacketSideDataType type, int size)
Allocate new information from stream.
Definition: utils.c:5456
AVOutputFormat * av_guess_format(const char *short_name, const char *filename, const char *mime_type)
Return the output format in the list of registered output formats which best matches the provided par...
Definition: format.c:51
Libavformat version macros.
av_warn_unused_result int avformat_init_output(AVFormatContext *s, AVDictionary **options)
Allocate the stream private data and initialize the codec, but do not write the header.
Definition: mux.c:488
const AVInputFormat * av_demuxer_iterate(void **opaque)
Iterate over all registered demuxers.
Definition: allformats.c:509
Definition: avcodec.h:5032
Definition: avcodec.h:5662
Stream structure.
Definition: avformat.h:873
int avformat_network_deinit(void)
Undo the initialization done by avformat_network_init.
Definition: utils.c:4934
Definition: avcodec.h:1373
Libavcodec external API header.
AVIOContext * pb
I/O context.
Definition: avformat.h:1384
main external API structure.
Definition: avcodec.h:1518
int av_filename_number_test(const char *filename)
Check whether filename actually is a numbered sequence generator.
Definition: utils.c:327
int av_get_frame_filename2(char *buf, int buf_size, const char *path, int number, int flags)
Return in &#39;buf&#39; the path with &#39;d&#39; replaced by a number.
Definition: utils.c:4631
void(* io_close)(struct AVFormatContext *s, AVIOContext *pb)
A callback for closing the streams opened with AVFormatContext.io_open().
Definition: avformat.h:1928
Describe the class of an AVClass context structure.
Definition: log.h:67
enum AVCodecID subtitle_codec
default subtitle codec
Definition: avformat.h:519
Rational number (pair of numerator and denominator).
Definition: rational.h:58
AVMediaType
Definition: avutil.h:199
void avformat_free_context(AVFormatContext *s)
Free an AVFormatContext and all its streams.
Definition: utils.c:4375
This structure contains the data a format has to probe a file.
Definition: avformat.h:448
int av_read_frame(AVFormatContext *s, AVPacket *pkt)
Return the next frame of a stream.
Definition: utils.c:1767
List of devices.
Definition: avdevice.h:460
int avformat_seek_file(AVFormatContext *s, int stream_index, int64_t min_ts, int64_t ts, int64_t max_ts, int flags)
Seek to timestamp ts.
Definition: utils.c:2528
full parsing and repack of the first frame only, only implemented for H.264 currently ...
Definition: avformat.h:796
int raw_codec_id
Raw demuxers store their codec ID here.
Definition: avformat.h:693
Duration accurately estimated from PTSes.
Definition: avformat.h:1321
int av_seek_frame(AVFormatContext *s, int stream_index, int64_t timestamp, int flags)
Seek to the keyframe at timestamp.
Definition: utils.c:2505
full parsing and repack
Definition: avformat.h:793
Definition: avformat.h:1299
int av_interleaved_write_uncoded_frame(AVFormatContext *s, int stream_index, AVFrame *frame)
Write an uncoded frame to an output media file.
Definition: mux.c:1373
enum AVCodecID data_codec
default data codec
Definition: avformat.h:607
int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options)
Read packets of a media file to get stream information.
Definition: utils.c:3550
AVStreamParseType
Definition: avformat.h:791
struct AVProbeData AVProbeData
This structure contains the data a format has to probe a file.
Definition: avformat.h:506
void avformat_close_input(AVFormatContext **s)
Close an opened input AVFormatContext.
Definition: utils.c:4413
int av_write_uncoded_frame(AVFormatContext *s, int stream_index, AVFrame *frame)
Write an uncoded frame to an output media file.
Definition: mux.c:1367
int(* read_header)(struct AVFormatContext *)
Read the format header and initialize the AVFormatContext structure.
Definition: avformat.h:712
enum AVCodecID audio_codec
default audio codec
Definition: avformat.h:517
int avformat_open_input(AVFormatContext **ps, const char *url, AVInputFormat *fmt, AVDictionary **options)
Open an input stream and read the header.
Definition: utils.c:537
AVDiscard
Definition: avcodec.h:785
int av_write_trailer(AVFormatContext *s)
Write the stream trailer to an output media file and free the file private data.
Definition: mux.c:1247
char * protocol_blacklist
&#39;,&#39; separated list of disallowed protocols.
Definition: avformat.h:1935
int avformat_flush(AVFormatContext *s)
Discard all internally buffered data.
Definition: utils.c:2585
int(* read_probe)(AVProbeData *)
Tell if a given file has a chance of being parsed as this format.
Definition: avformat.h:705
void av_hex_dump_log(void *avcl, int level, const uint8_t *buf, int size)
Send a nice hexadecimal dump of a buffer to the log.
Definition: dump.c:79
unsigned int av_codec_get_tag(const struct AVCodecTag *const *tags, enum AVCodecID id)
Get the codec tag for the given codec id id.
AVInputFormat * av_probe_input_format(AVProbeData *pd, int is_opened)
Guess the file format.
Definition: format.c:216
Following API allows user to probe device capabilities (supported codecs, pixel formats, sample formats, resolutions, channel counts, etc).
Definition: avdevice.h:400
This structure stores compressed data.
Definition: avcodec.h:1407
int64_t av_stream_get_end_pts(const AVStream *st)
Returns the pts of the last muxed packet + its duration.
Definition: utils.c:141