input/InputStream: migrate from class Error to C++ exceptions

This commit is contained in:
Max Kellermann
2016-09-09 18:47:42 +02:00
parent 597e59f10d
commit 8c744efd56
64 changed files with 440 additions and 473 deletions

View File

@@ -61,8 +61,8 @@ struct FfmpegInputStream final : public InputStream {
/* virtual methods from InputStream */
bool IsEOF() override;
size_t Read(void *ptr, size_t size, Error &error) override;
bool Seek(offset_type offset, Error &error) override;
size_t Read(void *ptr, size_t size) override;
void Seek(offset_type offset) override;
};
static inline bool
@@ -103,15 +103,15 @@ input_ffmpeg_open(const char *uri,
}
size_t
FfmpegInputStream::Read(void *ptr, size_t read_size, Error &error)
FfmpegInputStream::Read(void *ptr, size_t read_size)
{
auto result = avio_read(h, (unsigned char *)ptr, read_size);
if (result <= 0) {
if (result < 0)
SetFfmpegError(error, result, "avio_read() failed");
throw MakeFfmpegError(result, "avio_read() failed");
eof = true;
return false;
return 0;
}
offset += result;
@@ -124,19 +124,16 @@ FfmpegInputStream::IsEOF()
return eof;
}
bool
FfmpegInputStream::Seek(offset_type new_offset, Error &error)
void
FfmpegInputStream::Seek(offset_type new_offset)
{
auto result = avio_seek(h, new_offset, SEEK_SET);
if (result < 0) {
SetFfmpegError(error, result, "avio_seek() failed");
return false;
}
if (result < 0)
throw MakeFfmpegError(result, "avio_seek() failed");
offset = result;
eof = false;
return true;
}
const InputPlugin input_plugin_ffmpeg = {