Fix bugs regarding ffmpeg and AVSEEK_SIZE

This commit is contained in:
rdb 2009-02-07 10:45:39 +00:00
parent 10f17086af
commit 1e4753f911

View File

@ -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();