mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 10:22:45 -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) {
|
pandavfs_seek(URLContext *h, PN_int64 pos, int whence) {
|
||||||
istream *s = (istream*)(h->priv_data);
|
istream *s = (istream*)(h->priv_data);
|
||||||
switch(whence) {
|
switch(whence) {
|
||||||
case 0: s->seekg(pos, ios::beg); break;
|
case SEEK_SET: s->seekg(pos, ios::beg); break;
|
||||||
case 1: s->seekg(pos, ios::cur); break;
|
case SEEK_CUR: s->seekg(pos, ios::cur); break;
|
||||||
case 2: s->seekg(pos, ios::end); 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:
|
default:
|
||||||
movies_cat.error() << "Illegal parameter to seek in ffmpegVirtualFile\n";
|
movies_cat.error() << "Illegal parameter to seek in ffmpegVirtualFile\n";
|
||||||
|
s->clear();
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
s->clear();
|
s->clear();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user