50 if ((*length >> 24) || *length < 16)
66 static const uint8_t startcode[] = {0, 0, 0, 0, 1, 0xbc};
67 static const uint8_t endcode[] = {0, 0, 0, 0, 0xe1, 0xe2};
68 if (!memcmp(p->
buf, startcode,
sizeof(startcode)) &&
69 !memcmp(&p->
buf[16 -
sizeof(endcode)], endcode,
sizeof(endcode)))
205 if (fps < 1 || fps > 9) fps = 9;
206 return frame_rate_tab[fps - 1];
215 static const AVRational map[] = {{50, 1}, {60000, 1001}, {24, 1},
216 {25, 1}, {30000, 1001}};
217 int idx =
av_log2((flags & 0x7c0) >> 6);
240 else if (tag ==
TRACK_FPF && (value == 1 || value == 2))
261 if (map_cnt > 1000) {
265 if (pkt_len < 4 * map_cnt) {
270 pkt_len -= 4 * map_cnt;
272 for (i = 0; i < map_cnt; i++)
274 i * (uint64_t)fields_per_map + 1, 0, 0, 0);
312 int track_type, track_id, track_len;
322 if (!(track_type & 0x80)) {
327 if ((track_id & 0xc0) != 0xc0) {
333 if (idx < 0)
continue;
335 if (!main_timebase.
num || !main_timebase.
den) {
365 if (!main_timebase.
num || !main_timebase.
den) {
367 main_timebase.
num = fps.
den;
368 main_timebase.
den = fps.
num * 2;
377 if (!main_timebase.
num || !main_timebase.
den)
388 if (!max_interval-- || pb->eof_reached) \
390 tmp = tmp << 8 | avio_r8(pb); \
403 uint64_t last_found_pos = 0;
420 if (
avio_seek(pb, last_pos, SEEK_SET) < 0)
428 if ((track >= 0 && track != cur_track) || (timestamp >= 0 && timestamp > cur_timestamp)) {
429 if (
avio_seek(pb, last_pos, SEEK_SET) >= 0)
435 return cur_timestamp;
446 int track_type, track_id, ret;
447 int field_nr, field_info, skip = 0;
469 stream_index =
get_sindex(s, track_id, track_type);
470 if (stream_index < 0)
480 int first = field_info >> 16;
481 int last = field_info & 0xffff;
483 if (first <= last && last*bps <= pkt_len) {
485 skip = pkt_len - last*
bps;
486 pkt_len = (last-first)*bps;
508 uint64_t maxlen = 100 * 1024 * 1024;
513 if (timestamp < start_time) timestamp =
start_time;
519 if (idx < st->nb_index_entries - 2)
521 maxlen =
FFMAX(maxlen, 200 * 1024);
526 if (
FFABS(found - timestamp) > 4)
532 int64_t *pos, int64_t pos_limit) {