34#define MVR_HEADER_SIZE 512
35#define MVR_ENTRY_SIZE 8
36#define MVR_CHUNK_HEADER 16
46 unsigned index_table_size, index_capacity, index_count;
49 if (p->buf_size < 0x40)
60 index_table_size =
AV_RL32(p->buf + 0x34);
61 index_capacity =
AV_RL32(p->buf + 0x38);
62 index_count =
AV_RL32(p->buf + 0x3c);
64 if (index_capacity == 0 ||
66 index_table_size != index_size ||
67 index_count > index_capacity)
79 uint64_t time_meta_ms;
80 uint32_t index_count, start_ms,
offset;
81 int64_t index_table_size, data_start;
104 time_meta_ms * 1000);
112 if (index_table_size == 0 ||
127 for (
unsigned i = 0;
i < index_count;
i++) {
128 uint32_t next_start_ms;
129 int64_t next_offset, chunk_size;
131 if (
i + 1 < index_count) {
142 chunk_size = next_offset -
offset;
143 if (chunk_size <= MVR_CHUNK_HEADER || chunk_size > INT_MAX)
151 start_ms = next_start_ms;
168 if (
s->io_repositioned) {
174 s->io_repositioned = 0;
202 .p.extensions =
"mvr",
int64_t avio_seek(AVIOContext *s, int64_t offset, int whence)
fseek() equivalent for AVIOContext.
int64_t avio_size(AVIOContext *s)
Get the filesize.
int64_t avio_skip(AVIOContext *s, int64_t offset)
Skip given number of bytes forward.
unsigned int avio_rl32(AVIOContext *s)
uint64_t avio_rl64(AVIOContext *s)
static int read_packet(void *opaque, uint8_t *buf, int buf_size)
#define i(width, name, range_min, range_max)
static int read_probe(const AVProbeData *p)
static int64_t filesize(AVIOContext *pb)
static int read_header(FFV1Context *f, RangeCoder *c)
AVStream * avformat_new_stream(AVFormatContext *s, const struct AVCodec *c)
Add a new stream to a media file.
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.
int av_index_search_timestamp(AVStream *st, int64_t timestamp, int flags)
Get the index for a specific timestamp.
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
#define AVERROR_EOF
End of file.
int av_size_mult(size_t a, size_t b, size_t *r)
Multiply two size_t values checking for overflow.
#define AV_NOPTS_VALUE
Undefined timestamp value.
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.
Memory handling functions.
static int mvr_read_packet(AVFormatContext *s, AVPacket *pkt)
static int mvr_read_header(AVFormatContext *s)
static int mvr_probe(const AVProbeData *p)
int height
The height of the video frame in pixels.
int width
The width of the video frame in pixels.
enum AVMediaType codec_type
General type of the encoded data.
enum AVCodecID codec_id
Specific type of the encoded data (the codec used).
int64_t timestamp
Timestamp in AVStream.time_base units, preferably the time from which on correctly decoded frames are...
This structure stores compressed data.
This structure contains the data a format has to probe a file.
AVCodecParameters * codecpar
Codec parameters associated with this stream.
int64_t duration
Decoding: duration of the stream, in stream time base.
AVIndexEntry * index_entries
Only used if the format does not support seeking natively.
enum AVStreamParseType need_parsing