40 #define PRI_PRETTY_GUID \ 41 "%08"PRIx32"-%04"PRIx16"-%04"PRIx16"-%02x%02x%02x%02x%02x%02x%02x%02x" 42 #define ARG_PRETTY_GUID(g) \ 43 AV_RL32(g),AV_RL16(g+4),AV_RL16(g+6),g[8],g[9],g[10],g[11],g[12],g[13],g[14],g[15] 44 #define LEN_PRETTY_GUID 34 82 while(nread < buf_size) {
84 int read_request =
FFMIN(buf_size - nread, remaining_in_sector);
92 if (n == remaining_in_sector) {
102 return nread ? nread : n;
115 else if (whence == SEEK_CUR)
117 else if (whence == SEEK_END)
137 for (i = 0; i <
count; i++) {
173 }
else if (depth == 1) {
180 }
else if (depth == 2) {
191 for (i = 0; i < nb_sectors1; i++) {
214 length &= 0xFFFFFFFFFFFF;
257 const uint8_t *buf_end = buf + buf_size;
259 while(buf + 48 <= buf_end) {
261 uint64_t file_length;
265 "remaining directory entries ignored\n",
FF_ARG_GUID(buf));
268 dir_length =
AV_RL16(buf + 16);
269 file_length =
AV_RL64(buf + 24);
270 name_size = 2 *
AV_RL32(buf + 32);
273 "bad filename length, remaining directory entries ignored\n");
276 if (dir_length == 0) {
278 "bad dir length, remaining directory entries ignored\n");
281 if (48 + (int64_t)name_size > buf_end - buf) {
282 av_log(s,
AV_LOG_ERROR,
"filename exceeds buffer size; remaining directory entries ignored\n");
285 first_sector =
AV_RL32(buf + 40 + name_size);
286 depth =
AV_RL32(buf + 44 + name_size);
290 if (name_size >= filename_size &&
291 !memcmp(name, filename, filename_size) &&
292 (name_size < filename_size + 2 || !
AV_RN16(name + filename_size)))
300 #define wtvfile_open(s, buf, buf_size, filename) \ 301 wtvfile_open2(s, buf, buf_size, filename, sizeof(filename)) 338 {0x48,0xC0,0xCE,0x5D,0xB9,0xD0,0x63,0x41,0x87,0x2C,0x4F,0x32,0x22,0x3B,0xE8,0x8A};
340 {0x6D,0x66,0x92,0xE2,0x02,0x9C,0x8D,0x44,0xAA,0x8D,0x78,0x1A,0x93,0xFD,0xC3,0x95};
342 {0x1C,0xD4,0x7B,0x10,0xDA,0xA6,0x91,0x46,0x83,0x69,0x11,0xB2,0xCD,0xAA,0x28,0x8E};
344 {0xE6,0xA2,0xB4,0x3A,0x47,0x42,0x34,0x4B,0x89,0x6C,0x30,0xAF,0xA5,0xD2,0x1C,0x24};
346 {0xD9,0x79,0xE7,0xEf,0xF0,0x97,0x86,0x47,0x80,0x0D,0x95,0xCF,0x50,0x5D,0xDC,0x66};
348 {0xC4,0xE1,0xD4,0x4B,0xA1,0x90,0x09,0x41,0x82,0x36,0x27,0xF0,0x0E,0x7D,0xCC,0x5B};
350 {0x68,0xAB,0xF1,0xCA,0x53,0xE1,0x41,0x4D,0xA6,0xB3,0xA7,0xC9,0x98,0xDB,0x75,0xEE};
352 {0x50,0xD9,0x99,0x95,0x33,0x5F,0x17,0x46,0xAF,0x7C,0x1E,0x54,0xB5,0x10,0xDA,0xA3};
354 {0xBE,0xBF,0x1C,0x50,0x49,0xB8,0xCE,0x42,0x9B,0xE9,0x3D,0xB8,0x69,0xFB,0x82,0xB3};
360 {0x81,0xEB,0x36,0xE4,0x4F,0x52,0xCE,0x11,0x9F,0x53,0x00,0x20,0xAF,0x0B,0xA7,0x70};
362 {0x6C,0x17,0x5F,0x45,0x06,0x4B,0xCE,0x47,0x9A,0xEF,0x8C,0xAE,0xF7,0x3D,0xF7,0xB5};
364 {0x20,0x80,0x6D,0xE0,0x46,0xDB,0xCF,0x11,0xB4,0xD1,0x00,0x80,0x5F,0x6C,0xBB,0xEA};
366 {0x89,0x8A,0x8B,0xB8,0x49,0xB0,0x80,0x4C,0xAD,0xCF,0x58,0x98,0x98,0x5E,0x22,0xC1};
370 {0xC3,0xCB,0xFF,0x34,0xB3,0xD5,0x71,0x41,0x90,0x02,0xD4,0xC6,0x03,0x01,0x69,0x7F};
372 {0xE3,0x76,0x2A,0xF7,0x0A,0xEB,0xD0,0x11,0xAC,0xE4,0x00,0x00,0xC0,0xCC,0x16,0xBA};
374 {0xAA,0xDD,0x2A,0xF5,0xF0,0x36,0xF5,0x43,0x95,0xEA,0x6D,0x86,0x64,0x84,0x26,0x2A};
376 {0x79,0x85,0x9F,0x4A,0xF8,0x6B,0x92,0x43,0x8A,0x6D,0xD2,0xDD,0x09,0xFA,0x78,0x61};
389 time_t t = (value / 10000000LL) - 11644473600LL;
391 struct tm *tm =
gmtime_r(&t, &tmbuf);
394 if (!strftime(buf, buf_size,
"%Y-%m-%d %H:%M:%S", tm))
405 time_t t = (value / 10000000LL) - 719162LL*86400LL;
407 struct tm *tm =
gmtime_r(&t, &tmbuf);
410 if (!strftime(buf, buf_size,
"%Y-%m-%d %H:%M:%S", tm))
423 struct tm *tm=
gmtime_r(&t, &tmbuf);
426 if (!strftime(buf, buf_size,
"%Y-%m-%d %H:%M:%S", tm))
435 unsigned int filesize;
440 if (strcmp(mime,
"image/jpeg"))
464 if (!strcmp(key,
"WM/MediaThumbType")) {
474 if (type == 0 && length == 4) {
476 }
else if (type == 1) {
482 }
else if (type == 3 && length == 4) {
483 strcpy(buf,
avio_rl32(pb) ?
"true" :
"false");
484 }
else if (type == 4 && length == 8) {
486 if (!strcmp(key,
"WM/EncodingTime") ||
487 !strcmp(key,
"WM/MediaOriginalBroadcastDateTime")) {
492 }
else if (!strcmp(key,
"WM/WMRVEncodeTime") ||
493 !strcmp(key,
"WM/WMRVEndTime")) {
498 }
else if (!strcmp(key,
"WM/WMRVExpirationDate")) {
503 }
else if (!strcmp(key,
"WM/WMRVBitrate"))
506 snprintf(buf, buf_size,
"%"PRIi64, num);
507 }
else if (type == 5 && length == 2) {
509 }
else if (type == 6 && length == 16) {
513 }
else if (type == 2 && !strcmp(key,
"WM/Picture")) {
519 av_log(s,
AV_LOG_WARNING,
"unsupported metadata entry; key:%s, type:%d, length:0x%x\n", key, type, length);
544 "remaining metadata entries ignored\n",
FF_ARG_GUID(guid));
548 get_tag(s, pb, key, type, length);
657 st =
parse_media_type(s, st, sid, mediatype, actual_subtype, actual_formattype, size - 32);
785 int len, sid, consumed;
789 if (len < 32 || len > INT_MAX - 7) {
815 consumed += 92 +
size;
831 consumed += 76 +
size;
840 if (stream_index >= 0) {
854 buf_size =
FFMIN(len - consumed,
sizeof(buf));
856 consumed += buf_size;
861 if (stream_index >= 0) {
868 else if (audio_type == 3)
874 if (stream_index >= 0) {
877 av_log(s,
AV_LOG_WARNING,
"DVB scrambled stream detected (st:%d), decoding will likely fail\n", stream_index);
882 if (stream_index >= 0) {
890 if (!strcmp(language,
"nar") || !strcmp(language,
"NAR"))
897 if (stream_index >= 0) {
923 }
else if (!
ff_guidcmp(g, (
const ff_asf_guid){0x83,0x95,0x74,0x40,0x9D,0x6B,0xEC,0x4E,0xB4,0x3C,0x67,0xA1,0x80,0x1E,0x1A,0x9B})) {
925 if (stream_index >= 0)
926 av_log(s,
AV_LOG_WARNING,
"encrypted stream detected (st:%d), decoding will likely fail\n", stream_index);
928 !
ff_guidcmp(g, (
const ff_asf_guid){0x14,0x56,0x1A,0x0C,0xCD,0x30,0x40,0x4F,0xBC,0xBF,0xD0,0x3E,0x52,0x30,0x62,0x07}) ||
929 !
ff_guidcmp(g, (
const ff_asf_guid){0x79,0x66,0xB5,0xE0,0xB9,0x12,0xCC,0x43,0xB7,0xDF,0x57,0x8C,0xAA,0x5A,0x7B,0x63}) ||
930 !
ff_guidcmp(g, (
const ff_asf_guid){0x02,0xAE,0x5B,0x2F,0x8F,0x7B,0x60,0x4F,0x82,0xD6,0xE4,0xEA,0x2F,0x1F,0x4C,0x99}) ||
932 !
ff_guidcmp(g, (
const ff_asf_guid){0xCC,0x32,0x64,0xDD,0x29,0xE2,0xDB,0x40,0x80,0xF6,0xD2,0x63,0x28,0xD2,0x76,0x1F}) ||
933 !
ff_guidcmp(g, (
const ff_asf_guid){0xE5,0xC5,0x67,0x90,0x5C,0x4C,0x05,0x42,0x86,0xC8,0x7A,0xFE,0x20,0xFE,0x1E,0xFA}) ||
934 !
ff_guidcmp(g, (
const ff_asf_guid){0x80,0x6D,0xF3,0x41,0x32,0x41,0xC2,0x4C,0xB1,0x21,0x01,0xA4,0x32,0x19,0xD8,0x1B}) ||
935 !
ff_guidcmp(g, (
const ff_asf_guid){0x51,0x1D,0xAB,0x72,0xD2,0x87,0x9B,0x48,0xBA,0x11,0x0E,0x08,0xDC,0x21,0x02,0x43}) ||
936 !
ff_guidcmp(g, (
const ff_asf_guid){0x65,0x8F,0xFC,0x47,0xBB,0xE2,0x34,0x46,0x9C,0xEF,0xFD,0xBF,0xE6,0x26,0x1D,0x5C}) ||
937 !
ff_guidcmp(g, (
const ff_asf_guid){0xCB,0xC5,0x68,0x80,0x04,0x3C,0x2B,0x49,0xB4,0x7D,0x03,0x08,0x82,0x0D,0xCE,0x51}) ||
938 !
ff_guidcmp(g, (
const ff_asf_guid){0xBC,0x2E,0xAF,0x82,0xA6,0x30,0x64,0x42,0xA8,0x0B,0xAD,0x2E,0x13,0x72,0xAC,0x60}) ||
939 !
ff_guidcmp(g, (
const ff_asf_guid){0x1E,0xBE,0xC3,0xC5,0x43,0x92,0xDC,0x11,0x85,0xE5,0x00,0x12,0x3F,0x6F,0x73,0xB9}) ||
940 !
ff_guidcmp(g, (
const ff_asf_guid){0x3B,0x86,0xA2,0xB1,0xEB,0x1E,0xC3,0x44,0x8C,0x88,0x1C,0xA3,0xFF,0xE3,0xE7,0x6A}) ||
941 !
ff_guidcmp(g, (
const ff_asf_guid){0x4E,0x7F,0x4C,0x5B,0xC4,0xD0,0x38,0x4B,0xA8,0x3E,0x21,0x7F,0x7B,0xBF,0x52,0xE7}) ||
942 !
ff_guidcmp(g, (
const ff_asf_guid){0x63,0x36,0xEB,0xFE,0xA1,0x7E,0xD9,0x11,0x83,0x08,0x00,0x07,0xE9,0x5E,0xAD,0x8D}) ||
943 !
ff_guidcmp(g, (
const ff_asf_guid){0x70,0xE9,0xF1,0xF8,0x89,0xA4,0x4C,0x4D,0x83,0x73,0xB8,0x12,0xE0,0xD5,0xF8,0x1E}) ||
947 !
ff_guidcmp(g, (
const ff_asf_guid){0xF7,0x10,0x02,0xB9,0xEE,0x7C,0xED,0x4E,0xBD,0x7F,0x05,0x40,0x35,0x86,0x18,0xA1})) {
963 unsigned root_sector;
967 int64_t timeline_pos;
977 if (root_size >
sizeof(root)) {
1036 uint64_t last_position = 0;
1040 while (e <= e_end && frame_nb > e->
size) {
1041 e->
pos = last_position;
1048 e_end->
pos = last_position;
1064 int stream_index,
len,
ret;
1067 if (stream_index < 0)
1068 return stream_index;
1080 int64_t ts,
int flags)
1085 int64_t ts_relative;
1095 ts_relative -= wtv->
epoch;
const uint8_t ff_table_0_entries_time_le16[40]
static int recover(WtvContext *wtv, uint64_t broken_pos)
Try to seek over a broken chunk.
const ff_asf_guid ff_metadata_guid
static const ff_asf_guid mediasubtype_mpeg2_sections
const ff_asf_guid ff_SBE2_STREAM_DESC_EVENT
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
int64_t avio_size(AVIOContext *s)
Get the filesize.
#define WTV_BIGSECTOR_BITS
static const ff_asf_guid EVENTID_CSDescriptorSpanningEvent
int64_t pts
pts for next data chunk
static int read_ints(AVIOContext *pb, uint32_t *data, int count)
read non-zero integers (le32) from input stream
ptrdiff_t const GLvoid * data
#define AV_LOG_WARNING
Something somehow does not look correct.
static const ff_asf_guid mediatype_mstvcaption
enum AVCodecID codec_id
Specific type of the encoded data (the codec used).
int sector_bits
sector shift bits; used to convert sector number into pb_filesystem offset
int64_t avio_seek(AVIOContext *s, int64_t offset, int whence)
fseek() equivalent for AVIOContext.
unsigned char * buffer
Start of the buffer.
enum AVMediaType codec_type
static int parse_videoinfoheader2(AVFormatContext *s, AVStream *st)
parse VIDEOINFOHEADER2 structure
const ff_asf_guid ff_mediatype_video
int64_t avio_skip(AVIOContext *s, int64_t offset)
Skip given number of bytes forward.
void * opaque
A private pointer, passed to the read/write/seek/...
void * av_mallocz(size_t size)
Allocate a memory block with alignment suitable for all memory accesses (including vectors if availab...
#define AV_CH_LAYOUT_STEREO
int ctx_flags
Flags signalling stream properties.
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_WL32 unsigned int_TMPL AV_WL24 unsigned int_TMPL AV_RL16
int avio_get_str16le(AVIOContext *pb, int maxlen, char *buf, int buflen)
Read a UTF-16 string from pb and convert it to UTF-8.
const ff_asf_guid ff_format_waveformatex
const AVCodecGuid ff_codec_wav_guids[]
static const ff_asf_guid mediatype_mpeg2_sections
const ff_asf_guid ff_data_guid
static av_always_inline double av_int2double(uint64_t i)
Reinterpret a 64-bit integer as a double.
static int read_packet(AVFormatContext *s, AVPacket *pkt)
#define FF_MEDIASUBTYPE_BASE_GUID
static int read_header(AVFormatContext *s)
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf offset
enum AVStreamParseType need_parsing
int id
Format-specific stream ID.
GLsizei GLboolean const GLfloat * value
AVStream * avformat_new_stream(AVFormatContext *s, const AVCodec *c)
Add a new stream to a media file.
const ff_asf_guid ff_mediatype_audio
AVStream ** streams
A list of all streams in the file.
const ff_asf_guid ff_mediasubtype_cpfilters_processed
#define AVERROR_EOF
End of file.
static void get_tag(AVFormatContext *s, AVIOContext *pb, const char *key, int type, int length)
static int oledate_to_iso8601(char *buf, int buf_size, int64_t value)
Convert OLE DATE to ISO-8601 string.
static int64_t seek_by_sector(AVIOContext *pb, int64_t sector, int64_t offset)
static av_always_inline int64_t avio_tell(AVIOContext *s)
ftell() equivalent for AVIOContext.
const ff_asf_guid ff_sync_guid
uint64_t channel_layout
Audio only.
int avio_read(AVIOContext *s, unsigned char *buf, int size)
Read size bytes from AVIOContext into buf.
int ff_get_wav_header(AVFormatContext *s, AVIOContext *pb, AVCodecParameters *par, int size, int big_endian)
int64_t bit_rate
The average bitrate of the encoded data (in bits per second).
static int read_close(AVFormatContext *s)
const uint8_t ff_table_0_entries_legacy_attrib_le16[58]
AVIOContext * avio_alloc_context(unsigned char *buffer, int buffer_size, int write_flag, void *opaque, int(*read_packet)(void *opaque, uint8_t *buf, int buf_size), int(*write_packet)(void *opaque, uint8_t *buf, int buf_size), int64_t(*seek)(void *opaque, int64_t offset, int whence))
Allocate and initialize an AVIOContext for buffered I/O.
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
AVDictionary * metadata
Metadata that applies to the whole file.
static AVStream * new_stream(AVFormatContext *s, AVStream *st, int sid, int codec_type)
Initialise stream.
AVInputFormat ff_wtv_demuxer
AVIOContext * pb_filesystem
file system (AVFormatContext->pb)
unsigned int avio_rl32(AVIOContext *s)
int64_t timestamp
Timestamp in AVStream.time_base units, preferably the time from which on correctly decoded frames are...
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
preferred ID for decoding MPEG audio layer 1, 2 or 3
static void get_attachment(AVFormatContext *s, AVIOContext *pb, int length)
enum AVMediaType codec_type
General type of the encoded data.
int ff_get_guid(AVIOContext *s, ff_asf_guid *g)
const uint8_t ff_timeline_table_0_entries_Events_le16[62]
int extradata_size
Size of the extradata content in bytes.
int avio_r8(AVIOContext *s)
AVIOContext * pb
timeline file
#define wtvfile_open(s, buf, buf_size, filename)
const ff_asf_guid ff_format_cpfilters_processed
unsigned char * buf
Buffer must have AVPROBE_PADDING_SIZE of extra allocated bytes filled with zero.
unsigned int nb_streams
Number of elements in AVFormatContext.streams.
static int filetime_to_iso8601(char *buf, int buf_size, int64_t value)
Convert win32 FILETIME to ISO-8601 string.
audio channel layout utility functions
static const ff_asf_guid EVENTID_DVBScramblingControlSpanningEvent
const AVCodecTag ff_codec_bmp_tags[]
static const ff_asf_guid mediatype_mpeg2_pes
const uint8_t ff_timeline_le16[16]
static const ff_asf_guid mediasubtype_mpeg1payload
const ff_asf_guid ff_timestamp_guid
static int parse_chunks(AVFormatContext *s, int mode, int64_t seekts, int *len_ptr)
Parse WTV chunks.
static void parse_legacy_attrib(AVFormatContext *s, AVIOContext *pb)
Parse metadata entries.
static void wtvfile_close(AVIOContext *pb)
Close file opened with wtvfile_open_sector(), or wtv_open()
const ff_asf_guid ff_format_mpeg2_video
static int crazytime_to_iso8601(char *buf, int buf_size, int64_t value)
Convert crazy time (100ns since 1 Jan 0001) to ISO-8601 string.
static const ff_asf_guid EVENTID_StreamIDSpanningEvent
static const ff_asf_guid EVENTID_CtxADescriptorSpanningEvent
static const ff_asf_guid EVENTID_AudioTypeSpanningEvent
static int wtvfile_read_packet(void *opaque, uint8_t *buf, int buf_size)
const ff_asf_guid ff_DSATTRIB_TRANSPORT_PROPERTIES
static const ff_asf_guid EVENTID_AudioDescriptorSpanningEvent
AVIOContext * pb
I/O context.
static const ff_asf_guid EVENTID_SubtitleSpanningEvent
static const ff_asf_guid mediasubtype_teletext
int av_dict_set(AVDictionary **pm, const char *key, const char *value, int flags)
Set the given entry in *pm, overwriting an existing entry.
const ff_asf_guid ff_index_guid
Undefined Behavior In the C language
static AVStream * parse_media_type(AVFormatContext *s, AVStream *st, int sid, ff_asf_guid mediatype, ff_asf_guid subtype, ff_asf_guid formattype, uint64_t size)
parse Media Type structure and populate stream
const AVCodecGuid ff_video_guids[]
static int64_t wtvfile_seek(void *opaque, int64_t offset, int whence)
const AVMetadataConv ff_asf_metadata_conv[]
int error
contains the error code or 0 if no error happened
This structure contains the data a format has to probe a file.
unsigned int index_entries_allocated_size
static int read_seek(AVFormatContext *s, int stream_index, int64_t ts, int flags)
#define flags(name, subs,...)
int ff_parse_mpeg2_descriptor(AVFormatContext *fc, AVStream *st, int stream_type, const uint8_t **pp, const uint8_t *desc_list_end, Mp4Descr *mp4_descr, int mp4_descr_count, int pid, MpegTSContext *ts)
Parse an MPEG-2 descriptor.
int64_t duration
Decoding: duration of the stream, in stream time base.
unsigned int avio_rl16(AVIOContext *s)
static void parse_mpeg1waveformatex(AVStream *st)
Parse MPEG1WAVEFORMATEX extradata structure.
const ff_asf_guid ff_stream2_guid
enum AVCodecID ff_codec_guid_get_id(const AVCodecGuid *guids, ff_asf_guid guid)
const ff_asf_guid ff_dir_entry_guid
enum AVCodecID ff_wav_codec_get_id(unsigned int tag, int bps)
static AVIOContext * wtvfile_open_sector(unsigned first_sector, uint64_t length, int depth, AVFormatContext *s)
Open file.
int disposition
AV_DISPOSITION_* bit field.
void avio_context_free(AVIOContext **s)
Free the supplied IO context and everything associated with it.
#define AVSEEK_SIZE
ORing this as the "whence" parameter to a seek function causes it to return the filesize without seek...
int ff_get_bmp_header(AVIOContext *pb, AVStream *st, uint32_t *size)
Read BITMAPINFOHEADER structure and set AVStream codec width, height and bits_per_encoded_sample fiel...
static const ff_asf_guid mediasubtype_dtvccdata
const ff_asf_guid ff_format_videoinfo2
const ff_asf_guid ff_wtv_guid
int64_t last_valid_pts
latest valid pts, used for interactive seeking
uint32_t * sectors
file allocation table
static const ff_asf_guid EVENTID_LanguageSpanningEvent
static const ff_asf_guid mediasubtype_dvb_subtitle
void * priv_data
Format private data.
const ff_asf_guid ff_format_none
int bits_per_coded_sample
The number of bits per sample in the codedwords.
uint8_t * extradata
Extra binary data needed for initializing the decoder, codec-dependent.
static const ff_asf_guid EVENTID_TeletextSpanningEvent
static int read_probe(const AVProbeData *p)
AVCodecParameters * codecpar
Codec parameters associated with this stream.
#define av_malloc_array(a, b)
int avio_feof(AVIOContext *s)
Similar to feof() but also returns nonzero on read errors.
uint32_t codec_tag
Additional information about the codec (corresponds to the AVI FOURCC).
const ff_asf_guid ff_stream1_guid
Filter the word “frame” indicates either a video frame or a group of audio as stored in an AVFrame structure Format for each input and each output the list of supported formats For video that means pixel format For audio that means channel sample they are references to shared objects When the negotiation mechanism computes the intersection of the formats supported at each end of a all references to both lists are replaced with a reference to the intersection And when a single format is eventually chosen for a link amongst the remaining all references to the list are updated That means that if a filter requires that its input and output have the same format amongst a supported all it has to do is use a reference to the same list of formats query_formats can leave some formats unset and return AVERROR(EAGAIN) to cause the negotiation mechanism toagain later.That can be used by filters with complex requirements to use the format negotiated on one link to set the formats supported on another.Frame references ownership and permissions
int nb_sectors
number of sectors
#define AV_CH_LAYOUT_MONO
static AVIOContext * wtvfile_open2(AVFormatContext *s, const uint8_t *buf, int buf_size, const uint8_t *filename, int filename_size)
Open file using filename.
static av_always_inline int ff_guidcmp(const void *g1, const void *g2)
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_RL32
This structure stores compressed data.
uint64_t avio_rl64(AVIOContext *s)
mode
Use these values in ebur128_init (or'ed).
#define ARG_PRETTY_GUID(g)
int64_t pts
Presentation timestamp in AVStream->time_base units; the time at which the decompressed packet will b...
#define AV_NOPTS_VALUE
Undefined timestamp value.
AVIndexEntry * index_entries