| 17 | return 0; |
| 18 | } |
| 19 | size_t ov_read_func(void* ptr, size_t size, size_t nmemb, void* datasource) |
| 20 | { |
| 21 | IReader* F = (IReader*)datasource; |
| 22 | size_t exist_block = _max(0ul, iFloor(F->elapsed() / (float)size)); |
| 23 | size_t read_block = _min(exist_block, nmemb); |
| 24 | F->r(ptr, (int)(read_block * size)); |
| 25 | return read_block; |
| 26 | } |
| 27 | int ov_close_func(void* datasource) { return 0; } |
| 28 | long ov_tell_func(void* datasource) { return ((IReader*)datasource)->tell(); } |
| 29 |