Libav
avformat.h
Go to the documentation of this file.
1 /*
2  * copyright (c) 2001 Fabrice Bellard
3  *
4  * This file is part of Libav.
5  *
6  * Libav 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  * Libav 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 Libav; 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 
253 #include <time.h>
254 #include <stdio.h> /* FILE */
255 #include "libavcodec/avcodec.h"
256 #include "libavutil/dict.h"
257 #include "libavutil/log.h"
258 
259 #include "avio.h"
260 #include "libavformat/version.h"
261 
262 struct AVFormatContext;
263 
264 
343 /* packet functions */
344 
345 
355 int av_get_packet(AVIOContext *s, AVPacket *pkt, int size);
356 
357 
372 int av_append_packet(AVIOContext *s, AVPacket *pkt, int size);
373 
374 #if FF_API_LAVF_FRAC
375 /*************************************************/
376 /* fractional numbers for exact pts handling */
377 
382 typedef struct AVFrac {
383  int64_t val, num, den;
384 } AVFrac;
385 #endif
386 
387 /*************************************************/
388 /* input/output formats */
389 
390 struct AVCodecTag;
391 
395 typedef struct AVProbeData {
396  const char *filename;
397  unsigned char *buf;
398  int buf_size;
400 } AVProbeData;
401 
402 #define AVPROBE_SCORE_EXTENSION 50
403 #define AVPROBE_SCORE_MIME 75
404 #define AVPROBE_SCORE_MAX 100
405 
406 #define AVPROBE_PADDING_SIZE 32
407 
408 #define AVFMT_NOFILE 0x0001
410 #define AVFMT_NEEDNUMBER 0x0002
411 #define AVFMT_SHOW_IDS 0x0008
412 #define AVFMT_RAWPICTURE 0x0020
414 #define AVFMT_GLOBALHEADER 0x0040
415 #define AVFMT_NOTIMESTAMPS 0x0080
416 #define AVFMT_GENERIC_INDEX 0x0100
417 #define AVFMT_TS_DISCONT 0x0200
418 #define AVFMT_VARIABLE_FPS 0x0400
419 #define AVFMT_NODIMENSIONS 0x0800
420 #define AVFMT_NOSTREAMS 0x1000
421 #define AVFMT_NOBINSEARCH 0x2000
422 #define AVFMT_NOGENSEARCH 0x4000
423 #define AVFMT_NO_BYTE_SEEK 0x8000
424 #define AVFMT_ALLOW_FLUSH 0x10000
425 #define AVFMT_TS_NONSTRICT 0x20000
428 #define AVFMT_TS_NEGATIVE 0x40000
438 typedef struct AVOutputFormat {
439  const char *name;
445  const char *long_name;
446  const char *mime_type;
447  const char *extensions;
448  /* output support */
449  enum AVCodecID audio_codec;
450  enum AVCodecID video_codec;
451  enum AVCodecID subtitle_codec;
458  int flags;
459 
464  const struct AVCodecTag * const *codec_tag;
466 
467  const AVClass *priv_class;
468 
469  /*****************************************************************
470  * No fields below this line are part of the public API. They
471  * may not be used outside of libavformat and can be changed and
472  * removed at will.
473  * New public fields should be added right above.
474  *****************************************************************
475  */
476  struct AVOutputFormat *next;
480  int priv_data_size;
481 
482  int (*write_header)(struct AVFormatContext *);
490  int (*write_packet)(struct AVFormatContext *, AVPacket *pkt);
491  int (*write_trailer)(struct AVFormatContext *);
495  int (*interleave_packet)(struct AVFormatContext *, AVPacket *out,
496  AVPacket *in, int flush);
503  int (*query_codec)(enum AVCodecID id, int std_compliance);
513 typedef struct AVInputFormat {
518  const char *name;
519 
525  const char *long_name;
526 
532  int flags;
533 
539  const char *extensions;
540 
541  const struct AVCodecTag * const *codec_tag;
542 
543  const AVClass *priv_class;
544 
550  const char *mime_type;
551 
552  /*****************************************************************
553  * No fields below this line are part of the public API. They
554  * may not be used outside of libavformat and can be changed and
555  * removed at will.
556  * New public fields should be added right above.
557  *****************************************************************
558  */
559  struct AVInputFormat *next;
560 
564  int raw_codec_id;
565 
569  int priv_data_size;
570 
577 
583  int (*read_header)(struct AVFormatContext *);
584 
594  int (*read_packet)(struct AVFormatContext *, AVPacket *pkt);
595 
600  int (*read_close)(struct AVFormatContext *);
610  int (*read_seek)(struct AVFormatContext *,
611  int stream_index, int64_t timestamp, int flags);
612 
617  int64_t (*read_timestamp)(struct AVFormatContext *s, int stream_index,
618  int64_t *pos, int64_t pos_limit);
619 
624  int (*read_play)(struct AVFormatContext *);
625 
630  int (*read_pause)(struct AVFormatContext *);
638  int (*read_seek2)(struct AVFormatContext *s, int stream_index, int64_t min_ts, int64_t ts, int64_t max_ts, int flags);
639 } AVInputFormat;
644 enum AVStreamParseType {
650 };
652 typedef struct AVIndexEntry {
653  int64_t pos;
654  int64_t timestamp;
655 #define AVINDEX_KEYFRAME 0x0001
656  int flags:2;
657  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).
658  int min_distance;
661 #define AV_DISPOSITION_DEFAULT 0x0001
662 #define AV_DISPOSITION_DUB 0x0002
663 #define AV_DISPOSITION_ORIGINAL 0x0004
664 #define AV_DISPOSITION_COMMENT 0x0008
665 #define AV_DISPOSITION_LYRICS 0x0010
666 #define AV_DISPOSITION_KARAOKE 0x0020
667 
673 #define AV_DISPOSITION_FORCED 0x0040
674 #define AV_DISPOSITION_HEARING_IMPAIRED 0x0080
675 #define AV_DISPOSITION_VISUAL_IMPAIRED 0x0100
676 #define AV_DISPOSITION_CLEAN_EFFECTS 0x0200
683 #define AV_DISPOSITION_ATTACHED_PIC 0x0400
684 
692 typedef struct AVStream {
693  int index;
699  int id;
711  AVCodecContext *codec;
712  void *priv_data;
713 
714 #if FF_API_LAVF_FRAC
715 
719  struct AVFrac pts;
720 #endif
721 
734  AVRational time_base;
735 
742  int64_t start_time;
743 
749  int64_t duration;
750 
751  int64_t nb_frames;
752 
753  int disposition;
755  enum AVDiscard discard;
762  AVRational sample_aspect_ratio;
763 
764  AVDictionary *metadata;
765 
773  AVRational avg_frame_rate;
774 
782  AVPacket attached_pic;
783 
800  AVPacketSideData *side_data;
804  int nb_side_data;
805 
811  int event_flags;
812 #define AVSTREAM_EVENT_FLAG_METADATA_UPDATED 0x0001
813 
814  /*****************************************************************
815  * All fields below this line are not part of the public API. They
816  * may not be used outside of libavformat and can be changed and
817  * removed at will.
818  * New public fields should be added right above.
819  *****************************************************************
820  */
821 
825 #define MAX_STD_TIMEBASES (60*12+5)
826  struct {
827  int nb_decoded_frames;
828  int found_decoder;
829 
833  int64_t fps_first_dts;
834  int fps_first_dts_idx;
835  int64_t fps_last_dts;
836  int fps_last_dts_idx;
837 
838  } *info;
839 
840  int pts_wrap_bits;
842  // Timestamp generation support:
843  int64_t first_dts;
844  int64_t cur_dts;
845  int64_t last_IP_pts;
846  int last_IP_duration;
851 #define MAX_PROBE_PACKETS 2500
852  int probe_packets;
857  int codec_info_nb_frames;
859  /* av_read_frame() support */
860  enum AVStreamParseType need_parsing;
862 
866  struct AVPacketList *last_in_packet_buffer;
867  AVProbeData probe_data;
868 #define MAX_REORDER_DELAY 16
869  int64_t pts_buffer[MAX_REORDER_DELAY+1];
870 
871  AVIndexEntry *index_entries;
873  int nb_index_entries;
874  unsigned int index_entries_allocated_size;
877 #define AV_PROGRAM_RUNNING 1
885 typedef struct AVProgram {
886  int id;
887  int flags;
888  enum AVDiscard discard;
889  unsigned int *stream_index;
890  unsigned int nb_stream_indexes;
891  AVDictionary *metadata;
894 #define AVFMTCTX_NOHEADER 0x0001
897 typedef struct AVChapter {
898  int id;
899  AVRational time_base;
900  int64_t start, end;
901  AVDictionary *metadata;
902 } AVChapter;
903 
904 typedef struct AVFormatInternal AVFormatInternal;
914 typedef struct AVFormatContext {
919  const AVClass *av_class;
920 
926  struct AVInputFormat *iformat;
933  struct AVOutputFormat *oformat;
942  void *priv_data;
943 
956  AVIOContext *pb;
957 
958  /* stream info */
963  int ctx_flags;
970  unsigned int nb_streams;
982  AVStream **streams;
983 
990  char filename[1024];
991 
999  int64_t start_time;
1000 
1009  int64_t duration;
1010 
1016  int bit_rate;
1018  unsigned int packet_size;
1019  int max_delay;
1020 
1025  int flags;
1026 #define AVFMT_FLAG_GENPTS 0x0001
1027 #define AVFMT_FLAG_IGNIDX 0x0002
1028 #define AVFMT_FLAG_NONBLOCK 0x0004
1029 #define AVFMT_FLAG_IGNDTS 0x0008
1030 #define AVFMT_FLAG_NOFILLIN 0x0010
1031 #define AVFMT_FLAG_NOPARSE 0x0020
1032 #define AVFMT_FLAG_NOBUFFER 0x0040
1033 #define AVFMT_FLAG_CUSTOM_IO 0x0080
1034 #define AVFMT_FLAG_DISCARD_CORRUPT 0x0100
1035 #define AVFMT_FLAG_FLUSH_PACKETS 0x0200
1042 #define AVFMT_FLAG_BITEXACT 0x0400
1049  unsigned int probesize;
1056  int max_analyze_duration;
1058  const uint8_t *key;
1059  int keylen;
1060 
1061  unsigned int nb_programs;
1062  AVProgram **programs;
1063 
1068  enum AVCodecID video_codec_id;
1074  enum AVCodecID audio_codec_id;
1075 
1080  enum AVCodecID subtitle_codec_id;
1081 
1092  unsigned int max_index_size;
1093 
1098  unsigned int max_picture_buffer;
1099 
1111  unsigned int nb_chapters;
1112  AVChapter **chapters;
1113 
1122  AVDictionary *metadata;
1123 
1130  int64_t start_time_realtime;
1131 
1137  int fps_probe_size;
1144  int error_recognition;
1155  AVIOInterruptCB interrupt_callback;
1156 
1160  int debug;
1161 #define FF_FDEBUG_TS 0x0001
1162 
1179  int64_t max_interleave_delta;
1180 
1185  int strict_std_compliance;
1186 
1192  int event_flags;
1193 #define AVFMT_EVENT_FLAG_METADATA_UPDATED 0x0001
1194 
1195  /*****************************************************************
1196  * All fields below this line are not part of the public API. They
1197  * may not be used outside of libavformat and can be changed and
1198  * removed at will.
1199  * New public fields should be added right above.
1200  *****************************************************************
1201  */
1202 
1208  struct AVPacketList *packet_buffer;
1209  struct AVPacketList *packet_buffer_end;
1210 
1211  /* av_seek_frame() support */
1212  int64_t data_offset;
1220  struct AVPacketList *raw_packet_buffer;
1221  struct AVPacketList *raw_packet_buffer_end;
1225  struct AVPacketList *parse_queue;
1226  struct AVPacketList *parse_queue_end;
1230 #define RAW_PACKET_BUFFER_SIZE 2500000
1231  int raw_packet_buffer_remaining_size;
1232 
1237  int64_t offset;
1242  AVRational offset_timebase;
1243 
1248  AVFormatInternal *internal;
1249 } AVFormatContext;
1251 typedef struct AVPacketList {
1252  AVPacket pkt;
1253  struct AVPacketList *next;
1254 } AVPacketList;
1255 
1269 unsigned avformat_version(void);
1270 
1274 const char *avformat_configuration(void);
1275 
1279 const char *avformat_license(void);
1280 
1290 void av_register_all(void);
1291 
1294 
1303 int avformat_network_init(void);
1304 
1308 int avformat_network_deinit(void);
1309 
1316 
1323 
1330 
1336 
1343 const AVClass *avformat_get_class(void);
1344 
1362 
1372  enum AVPacketSideDataType type, int *size);
1373 
1375 
1389 AVInputFormat *av_find_input_format(const char *short_name);
1390 
1398 AVInputFormat *av_probe_input_format(AVProbeData *pd, int is_opened);
1399 
1412 AVInputFormat *av_probe_input_format2(AVProbeData *pd, int is_opened, int *score_max);
1413 
1430  const char *filename, void *logctx,
1431  unsigned int offset, unsigned int max_probe_size);
1432 
1452 int avformat_open_input(AVFormatContext **ps, const char *filename, AVInputFormat *fmt, AVDictionary **options);
1453 
1476 
1502  enum AVMediaType type,
1503  int wanted_stream_nb,
1504  int related_stream,
1505  AVCodec **decoder_ret,
1506  int flags);
1507 
1533 
1547 int av_seek_frame(AVFormatContext *s, int stream_index, int64_t timestamp,
1548  int flags);
1549 
1577 int avformat_seek_file(AVFormatContext *s, int stream_index, int64_t min_ts, int64_t ts, int64_t max_ts, int flags);
1578 
1584 
1591 
1601 #define AVSEEK_FLAG_BACKWARD 1
1602 #define AVSEEK_FLAG_BYTE 2
1603 #define AVSEEK_FLAG_ANY 4
1604 #define AVSEEK_FLAG_FRAME 8
1605 
1606 
1626 
1658 
1693 
1704 
1717 AVOutputFormat *av_guess_format(const char *short_name,
1718  const char *filename,
1719  const char *mime_type);
1720 
1724 enum AVCodecID av_guess_codec(AVOutputFormat *fmt, const char *short_name,
1725  const char *filename, const char *mime_type,
1726  enum AVMediaType type);
1727 
1751 void av_hex_dump(FILE *f, const uint8_t *buf, int size);
1752 
1765 void av_hex_dump_log(void *avcl, int level, const uint8_t *buf, int size);
1766 
1775 void av_pkt_dump2(FILE *f, AVPacket *pkt, int dump_payload, AVStream *st);
1776 
1777 
1789 void av_pkt_dump_log2(void *avcl, int level, AVPacket *pkt, int dump_payload,
1790  AVStream *st);
1791 
1800 enum AVCodecID av_codec_get_id(const struct AVCodecTag * const *tags, unsigned int tag);
1801 
1810 unsigned int av_codec_get_tag(const struct AVCodecTag * const *tags, enum AVCodecID id);
1811 
1813 
1825 int av_index_search_timestamp(AVStream *st, int64_t timestamp, int flags);
1826 
1833 int av_add_index_entry(AVStream *st, int64_t pos, int64_t timestamp,
1834  int size, int distance, int flags);
1835 
1836 
1856 void av_url_split(char *proto, int proto_size,
1857  char *authorization, int authorization_size,
1858  char *hostname, int hostname_size,
1859  int *port_ptr,
1860  char *path, int path_size,
1861  const char *url);
1862 
1863 
1875  int index,
1876  const char *url,
1877  int is_output);
1878 
1891 int av_get_frame_filename(char *buf, int buf_size,
1892  const char *path, int number);
1893 
1900 int av_filename_number_test(const char *filename);
1901 
1919 int av_sdp_create(AVFormatContext *ac[], int n_files, char *buf, int size);
1920 
1928 int av_match_ext(const char *filename, const char *extensions);
1929 
1941  int std_compliance);
1942 
1958 const struct AVCodecTag *avformat_get_riff_video_tags(void);
1962 const struct AVCodecTag *avformat_get_riff_audio_tags(void);
1971 #endif /* AVFORMAT_AVFORMAT_H */
uint8_t * mime_type
mime_type, when known.
Definition: avformat.h:399
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:2713
full parsing and interpolation of timestamps for frames not starting on a packet boundary ...
Definition: avformat.h:655
Bytestream IO Context.
Definition: avio.h:68
Buffered I/O operations.
AVPacketSideDataType
Definition: avcodec.h:858
int size
int av_interleaved_write_frame(AVFormatContext *s, AVPacket *pkt)
Write a packet to an output media file ensuring correct interleaving.
Definition: mux.c:539
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:1181
enum AVCodecID id
Definition: mxfenc.c:84
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:238
int av_write_frame(AVFormatContext *s, AVPacket *pkt)
Write a packet to an output media file.
Definition: mux.c:365
const char * filename
Definition: avformat.h:396
int avformat_open_input(AVFormatContext **ps, const char *filename, AVInputFormat *fmt, AVDictionary **options)
Open an input stream and read the header.
Definition: utils.c:247
static int write_packet(AVFormatContext *s, AVPacket *pkt)
Definition: assenc.c:58
static int read_seek(AVFormatContext *ctx, int stream_index, int64_t timestamp, int flags)
Definition: libcdio.c:153
void av_pkt_dump2(FILE *f, AVPacket *pkt, int dump_payload, AVStream *st)
Send a nice dump of a packet to the specified file stream.
Definition: dump.c:103
uint8_t * av_stream_get_side_data(AVStream *stream, enum AVPacketSideDataType type, int *size)
Get side information from stream.
Definition: utils.c:3115
uint8_t pi<< 24) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_U8, uint8_t,(*(const uint8_t *) pi - 0x80) *(1.0f/(1<< 7))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_U8, uint8_t,(*(const uint8_t *) pi - 0x80) *(1.0/(1<< 7))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S16, int16_t,(*(const int16_t *) pi >> 8)+0x80) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S16, int16_t, *(const int16_t *) pi *(1.0f/(1<< 15))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S16, int16_t, *(const int16_t *) pi *(1.0/(1<< 15))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S32, int32_t,(*(const int32_t *) pi >> 24)+0x80) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S32, int32_t, *(const int32_t *) pi *(1.0f/(1U<< 31))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S32, int32_t, *(const int32_t *) pi *(1.0/(1U<< 31))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_FLT, float, av_clip_uint8(lrintf(*(const float *) pi *(1<< 7))+0x80)) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S16, int16_t, AV_SAMPLE_FMT_FLT, float, av_clip_int16(lrintf(*(const float *) pi *(1<< 15)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S32, int32_t, AV_SAMPLE_FMT_FLT, float, av_clipl_int32(llrintf(*(const float *) pi *(1U<< 31)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_DBL, double, av_clip_uint8(lrint(*(const double *) pi *(1<< 7))+0x80)) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S16, int16_t, AV_SAMPLE_FMT_DBL, double, av_clip_int16(lrint(*(const double *) pi *(1<< 15)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S32, int32_t, AV_SAMPLE_FMT_DBL, double, av_clipl_int32(llrint(*(const double *) pi *(1U<< 31)))) #define SET_CONV_FUNC_GROUP(ofmt, ifmt) static void set_generic_function(AudioConvert *ac) { } void ff_audio_convert_free(AudioConvert **ac) { if(! *ac) return;ff_dither_free(&(*ac) ->dc);av_freep(ac);} AudioConvert *ff_audio_convert_alloc(AVAudioResampleContext *avr, enum AVSampleFormat out_fmt, enum AVSampleFormat in_fmt, int channels, int sample_rate, int apply_map) { AudioConvert *ac;int in_planar, out_planar;ac=av_mallocz(sizeof(*ac));if(!ac) return NULL;ac->avr=avr;ac->out_fmt=out_fmt;ac->in_fmt=in_fmt;ac->channels=channels;ac->apply_map=apply_map;if(avr->dither_method !=AV_RESAMPLE_DITHER_NONE &&av_get_packed_sample_fmt(out_fmt)==AV_SAMPLE_FMT_S16 &&av_get_bytes_per_sample(in_fmt) > 2) { ac->dc=ff_dither_alloc(avr, out_fmt, in_fmt, channels, sample_rate, apply_map);if(!ac->dc) { av_free(ac);return NULL;} return ac;} in_planar=ff_sample_fmt_is_planar(in_fmt, channels);out_planar=ff_sample_fmt_is_planar(out_fmt, channels);if(in_planar==out_planar) { ac->func_type=CONV_FUNC_TYPE_FLAT;ac->planes=in_planar ? ac->channels :1;} else if(in_planar) ac->func_type=CONV_FUNC_TYPE_INTERLEAVE;else ac->func_type=CONV_FUNC_TYPE_DEINTERLEAVE;set_generic_function(ac);if(ARCH_AARCH64) ff_audio_convert_init_aarch64(ac);if(ARCH_ARM) ff_audio_convert_init_arm(ac);if(ARCH_X86) ff_audio_convert_init_x86(ac);return ac;} int ff_audio_convert(AudioConvert *ac, AudioData *out, AudioData *in) { int use_generic=1;int len=in->nb_samples;int p;if(ac->dc) { av_dlog(ac->avr, "%d samples - audio_convert: %s to %s (dithered)\", len, av_get_sample_fmt_name(ac->in_fmt), av_get_sample_fmt_name(ac->out_fmt));return ff_convert_dither(ac-> out
int priv_data_size
Size of private data so that it can be allocated in the wrapper.
Definition: avformat.h:576
AVCodec.
Definition: avcodec.h:2812
static int64_t duration
Definition: avplay.c:246
Format I/O context.
Definition: avformat.h:922
Public dictionary API.
uint8_t
const struct AVCodecTag * avformat_get_riff_video_tags(void)
Definition: riff.c:438
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:58
const char * avformat_license(void)
Return the libavformat license.
Definition: utils.c:68
AVPacket pkt
Definition: avformat.h:1260
int priv_data_size
size of private data so that it can be allocated in the wrapper
Definition: avformat.h:487
const char * name
AVStream * avformat_new_stream(AVFormatContext *s, const AVCodec *c)
Add a new stream to a media file.
Definition: utils.c:2521
AVFormatContext * avformat_alloc_context(void)
Allocate an AVFormatContext.
Definition: options.c:98
const char * avformat_configuration(void)
Return the libavformat build-time configuration.
Definition: utils.c:63
#define MAX_REORDER_DELAY
Definition: avformat.h:875
AVProgram * av_new_program(AVFormatContext *s, int id)
Definition: utils.c:2578
static int flags
Definition: log.c:44
uint32_t tag
Definition: movenc.c:844
int avformat_network_init(void)
Do global initialization of network components.
Definition: utils.c:2950
const struct AVCodecTag * avformat_get_riff_audio_tags(void)
Definition: riff.c:443
static av_cold int read_close(AVFormatContext *ctx)
Definition: libcdio.c:145
int av_sdp_create(AVFormatContext *ac[], int n_files, char *buf, int size)
Generate an SDP for an RTP session.
Definition: sdp.c:689
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:117
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:77
const AVClass * avformat_get_class(void)
Get the AVClass for AVFormatContext.
Definition: options.c:114
static int interleave_packet(AVFormatContext *s, AVPacket *out, AVPacket *in, int flush)
Interleave an AVPacket correctly so it can be muxed.
Definition: mux.c:528
static int write_trailer(AVFormatContext *s)
Definition: assenc.c:64
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:127
const OptionDef options[]
Definition: avconv_opt.c:2187
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:395
Callback for checking whether to abort blocking functions.
Definition: avio.h:51
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:2373
static int64_t start_time
Definition: avplay.c:245
AVCodecID
Identify the syntax and semantics of the bitstream.
Definition: avcodec.h:105
int av_index_search_timestamp(AVStream *st, int64_t timestamp, int flags)
Get the index for a specific timestamp.
Definition: utils.c:1222
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:69
struct AVCodecParser * parser
Definition: avcodec.h:3684
uint8_t pi<< 24) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_U8, uint8_t,(*(const uint8_t *) pi - 0x80) *(1.0f/(1<< 7))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_U8, uint8_t,(*(const uint8_t *) pi - 0x80) *(1.0/(1<< 7))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S16, int16_t,(*(const int16_t *) pi >> 8)+0x80) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S16, int16_t, *(const int16_t *) pi *(1.0f/(1<< 15))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S16, int16_t, *(const int16_t *) pi *(1.0/(1<< 15))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S32, int32_t,(*(const int32_t *) pi >> 24)+0x80) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S32, int32_t, *(const int32_t *) pi *(1.0f/(1U<< 31))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S32, int32_t, *(const int32_t *) pi *(1.0/(1U<< 31))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_FLT, float, av_clip_uint8(lrintf(*(const float *) pi *(1<< 7))+0x80)) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S16, int16_t, AV_SAMPLE_FMT_FLT, float, av_clip_int16(lrintf(*(const float *) pi *(1<< 15)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S32, int32_t, AV_SAMPLE_FMT_FLT, float, av_clipl_int32(llrintf(*(const float *) pi *(1U<< 31)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_DBL, double, av_clip_uint8(lrint(*(const double *) pi *(1<< 7))+0x80)) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S16, int16_t, AV_SAMPLE_FMT_DBL, double, av_clip_int16(lrint(*(const double *) pi *(1<< 15)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S32, int32_t, AV_SAMPLE_FMT_DBL, double, av_clipl_int32(llrint(*(const double *) pi *(1U<< 31)))) #define SET_CONV_FUNC_GROUP(ofmt, ifmt) static void set_generic_function(AudioConvert *ac) { } void ff_audio_convert_free(AudioConvert **ac) { if(! *ac) return;ff_dither_free(&(*ac) ->dc);av_freep(ac);} AudioConvert *ff_audio_convert_alloc(AVAudioResampleContext *avr, enum AVSampleFormat out_fmt, enum AVSampleFormat in_fmt, int channels, int sample_rate, int apply_map) { AudioConvert *ac;int in_planar, out_planar;ac=av_mallocz(sizeof(*ac));if(!ac) return NULL;ac->avr=avr;ac->out_fmt=out_fmt;ac->in_fmt=in_fmt;ac->channels=channels;ac->apply_map=apply_map;if(avr->dither_method !=AV_RESAMPLE_DITHER_NONE &&av_get_packed_sample_fmt(out_fmt)==AV_SAMPLE_FMT_S16 &&av_get_bytes_per_sample(in_fmt) > 2) { ac->dc=ff_dither_alloc(avr, out_fmt, in_fmt, channels, sample_rate, apply_map);if(!ac->dc) { av_free(ac);return NULL;} return ac;} in_planar=ff_sample_fmt_is_planar(in_fmt, channels);out_planar=ff_sample_fmt_is_planar(out_fmt, channels);if(in_planar==out_planar) { ac->func_type=CONV_FUNC_TYPE_FLAT;ac->planes=in_planar ? ac->channels :1;} else if(in_planar) ac->func_type=CONV_FUNC_TYPE_INTERLEAVE;else ac->func_type=CONV_FUNC_TYPE_DEINTERLEAVE;set_generic_function(ac);if(ARCH_AARCH64) ff_audio_convert_init_aarch64(ac);if(ARCH_ARM) ff_audio_convert_init_arm(ac);if(ARCH_X86) ff_audio_convert_init_x86(ac);return ac;} int ff_audio_convert(AudioConvert *ac, AudioData *out, AudioData *in) { int use_generic=1;int len=in->nb_samples;int p;if(ac->dc) { av_dlog(ac->avr, "%d samples - audio_convert: %s to %s (dithered)\", len, av_get_sample_fmt_name(ac->in_fmt), av_get_sample_fmt_name(ac->out_fmt));return ff_convert_dither(ac-> in
int av_read_play(AVFormatContext *s)
Start playing a network-based stream (e.g.
Definition: utils.c:2427
enum AVCodecID codec_id
Definition: mov_chan.c:432
New fields can be added to the end with minor version bumps.
Definition: avformat.h:892
AVInputFormat * av_probe_input_format2(AVProbeData *pd, int is_opened, int *score_max)
Guess the file format.
Definition: format.c:171
Only parse headers, do not repack.
Definition: avformat.h:654
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:2934
static float distance(float x, float y, int band)
int buf_size
Size of buf except extra allocated bytes.
Definition: avformat.h:398
unsigned char * buf
Buffer must have AVPROBE_PADDING_SIZE of extra allocated bytes filled with zero.
Definition: avformat.h:397
int av_read_pause(AVFormatContext *s)
Pause a network-based stream (e.g.
Definition: utils.c:2436
AVInputFormat * av_find_input_format(const char *short_name)
Find AVInputFormat based on the short name of the input format.
Definition: format.c:162
static int read_probe(AVProbeData *pd)
Definition: jvdec.c:55
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:139
int av_find_default_stream_index(AVFormatContext *s)
Definition: utils.c:1056
int av_probe_input_buffer(AVIOContext *pb, AVInputFormat **fmt, const char *filename, void *logctx, unsigned int offset, unsigned int max_probe_size)
Probe a bytestream to determine the input format.
Definition: format.c:238
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:104
void av_register_input_format(AVInputFormat *format)
Definition: format.c:55
Libavformat version macros.
AVOutputFormat * av_oformat_next(const AVOutputFormat *f)
If f is NULL, returns the first registered output format, if f is non-NULL, returns the next register...
Definition: format.c:47
int av_get_frame_filename(char *buf, int buf_size, const char *path, int number)
Return in &#39;buf&#39; the path with &#39;d&#39; replaced by a number.
Definition: utils.c:2660
static int read_header(FFV1Context *f)
Definition: ffv1dec.c:544
Stream structure.
Definition: avformat.h:699
void av_register_output_format(AVOutputFormat *format)
Definition: format.c:66
int avformat_network_deinit(void)
Undo the initialization done by avformat_network_init.
Definition: utils.c:2962
Libavcodec external API header.
struct AVOutputFormat * next
Definition: avformat.h:483
main external API structure.
Definition: avcodec.h:1050
int av_filename_number_test(const char *filename)
Check whether filename actually is a numbered sequence generator.
Definition: utils.c:134
static int read_packet(AVFormatContext *ctx, AVPacket *pkt)
Definition: libcdio.c:114
Describe the class of an AVClass context structure.
Definition: log.h:33
int index
Definition: gxfenc.c:72
rational number numerator/denominator
Definition: rational.h:43
AVMediaType
Definition: avutil.h:185
void avformat_free_context(AVFormatContext *s)
Free an AVFormatContext and all its streams.
Definition: utils.c:2445
This structure contains the data a format has to probe a file.
Definition: avformat.h:395
int av_read_frame(AVFormatContext *s, AVPacket *pkt)
Return the next frame of a stream.
Definition: utils.c:989
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:1542
full parsing and repack of the first frame only, only implemented for H.264 currently ...
Definition: avformat.h:656
int raw_codec_id
Raw demuxers store their codec ID here.
Definition: avformat.h:571
uint8_t level
Definition: svq3.c:147
#define attribute_deprecated
Definition: attributes.h:80
int av_seek_frame(AVFormatContext *s, int stream_index, int64_t timestamp, int flags)
Seek to the keyframe at timestamp.
Definition: utils.c:1531
full parsing and repack
Definition: avformat.h:653
struct AVPacketList * next
Definition: avformat.h:1261
static AVInputFormat * iformat
Definition: avprobe.c:53
int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options)
Read packets of a media file to get stream information.
Definition: utils.c:2052
static av_cold void flush(AVCodecContext *avctx)
Flush (reset) the frame ID after seeking.
Definition: alsdec.c:1797
AVStreamParseType
Definition: avformat.h:651
void avformat_close_input(AVFormatContext **s)
Close an opened input AVFormatContext.
Definition: utils.c:2499
static void write_header(FFV1Context *f)
Definition: ffv1enc.c:380
AVDiscard
Definition: avcodec.h:560
int av_write_trailer(AVFormatContext *s)
Write the stream trailer to an output media file and free the file private data.
Definition: mux.c:589
void av_pkt_dump_log2(void *avcl, int level, AVPacket *pkt, int dump_payload, AVStream *st)
Send a nice dump of a packet to the log.
Definition: dump.c:108
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:74
struct AVInputFormat * next
Definition: avformat.h:566
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:228
This structure stores compressed data.
Definition: avcodec.h:950
void av_register_all(void)
Initialize libavformat and register all the muxers, demuxers and protocols.
Definition: allformats.c:51
AVInputFormat * av_iformat_next(const AVInputFormat *f)
If f is NULL, returns the first registered input format, if f is non-NULL, returns the next registere...
Definition: format.c:39
static int read_seek2(AVFormatContext *s, int stream_index, int64_t min_ts, int64_t ts, int64_t max_ts, int flags)
Definition: assdec.c:175