| 365 | } |
| 366 | |
| 367 | static int64_t dv_frame_offset(AVFormatContext *s, DVDemuxContext *c, |
| 368 | int64_t timestamp, int flags) |
| 369 | { |
| 370 | // FIXME: sys may be wrong if last dv_read_packet() failed (buffer is junk) |
| 371 | const DVprofile* sys = ff_dv_codec_profile(c->vst->codec); |
| 372 | int64_t offset; |
| 373 | int64_t size = url_fsize(s->pb); |
| 374 | int64_t max_offset = ((size-1) / sys->frame_size) * sys->frame_size; |
| 375 | |
| 376 | offset = sys->frame_size * timestamp; |
| 377 | |
| 378 | if (size >= 0 && offset > max_offset) offset = max_offset; |
| 379 | else if (offset < 0) offset = 0; |
| 380 | |
| 381 | return offset; |
| 382 | } |
| 383 | |
| 384 | void dv_offset_reset(DVDemuxContext *c, int64_t frame_offset) |
| 385 | { |
no test coverage detected