mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-02 09:52:27 -04:00
Fix bugs regarding ffmpeg and AVSEEK_SIZE
This commit is contained in:
parent
10f17086af
commit
1e4753f911
@ -96,11 +96,26 @@ static PN_int64
|
||||
pandavfs_seek(URLContext *h, PN_int64 pos, int whence) {
|
||||
istream *s = (istream*)(h->priv_data);
|
||||
switch(whence) {
|
||||
case 0: s->seekg(pos, ios::beg); break;
|
||||
case 1: s->seekg(pos, ios::cur); break;
|
||||
case 2: s->seekg(pos, ios::end); break;
|
||||
case SEEK_SET: s->seekg(pos, ios::beg); break;
|
||||
case SEEK_CUR: s->seekg(pos, ios::cur); break;
|
||||
case SEEK_END: s->seekg(pos, ios::end); break;
|
||||
case AVSEEK_SIZE: {
|
||||
s->seekg(0, ios::cur);
|
||||
offset_t p = s->tellg();
|
||||
s->seekg(-1, ios::end);
|
||||
offset_t size = s->tellg();
|
||||
if (size < 0) {
|
||||
movies_cat.error() << "Failed to determine filesize in ffmpegVirtualFile\n";
|
||||
s->clear();
|
||||
return -1;
|
||||
}
|
||||
size++;
|
||||
s->seekg(p, ios::beg);
|
||||
s->clear();
|
||||
return size; }
|
||||
default:
|
||||
movies_cat.error() << "Illegal parameter to seek in ffmpegVirtualFile\n";
|
||||
s->clear();
|
||||
return -1;
|
||||
}
|
||||
s->clear();
|
||||
|
Loading…
x
Reference in New Issue
Block a user