Patch the remaining uses or FFmpeg APIs

This commit is contained in:
Alexander Kernozhitsky 2022-09-02 01:27:25 +03:00 committed by John Preston
parent 21b0454461
commit c6c2a44e9d
5 changed files with 23 additions and 18 deletions

View file

@ -47,11 +47,11 @@ private:
return (_rotation == 90) || (_rotation == 270);
}
[[nodiscard]] static int Read(
[[nodiscard]] static int _read(
void *opaque,
uint8_t *buf,
int buf_size);
[[nodiscard]] static int64_t Seek(
[[nodiscard]] static int64_t _seek(
void *opaque,
int64_t offset,
int whence);
@ -113,7 +113,7 @@ int FrameGenerator::Impl::Read(void *opaque, uint8_t *buf, int buf_size) {
int FrameGenerator::Impl::read(uint8_t *buf, int buf_size) {
const auto available = _bytes.size() - _deviceOffset;
if (available <= 0) {
return -1;
return AVERROR_EOF;
}
const auto fill = std::min(int(available), buf_size);
memcpy(buf, _bytes.data() + _deviceOffset, fill);

View file

@ -181,7 +181,7 @@ struct Instance::Inner::Private {
int32 nbytes = qMin(l->data.size() - l->dataPos, int32(buf_size));
if (nbytes <= 0) {
return 0;
return AVERROR_EOF;
}
memcpy(buf, l->data.constData() + l->dataPos, nbytes);

View file

@ -105,7 +105,7 @@ int AbstractFFMpegLoader::_read_data(void *opaque, uint8_t *buf, int buf_size) {
auto nbytes = qMin(l->_data.size() - l->_dataPos, int32(buf_size));
if (nbytes <= 0) {
return 0;
return AVERROR_EOF;
}
memcpy(buf, l->_data.constData() + l->_dataPos, nbytes);
@ -138,7 +138,7 @@ int AbstractFFMpegLoader::_read_bytes(void *opaque, uint8_t *buf, int buf_size)
auto nbytes = qMin(static_cast<int>(l->_bytes.size()) - l->_dataPos, buf_size);
if (nbytes <= 0) {
return 0;
return AVERROR_EOF;
}
memcpy(buf, l->_bytes.data() + l->_dataPos, nbytes);
@ -169,7 +169,12 @@ int64_t AbstractFFMpegLoader::_seek_bytes(void *opaque, int64_t offset, int when
int AbstractFFMpegLoader::_read_file(void *opaque, uint8_t *buf, int buf_size) {
auto l = reinterpret_cast<AbstractFFMpegLoader *>(opaque);
return int(l->_f.read((char *)(buf), buf_size));
int ret = l->_f.read((char *)(buf), buf_size);
switch (ret) {
case -1: return AVERROR_EXTERNAL;
case 0: return AVERROR_EOF;
default: return ret;
}
}
int64_t AbstractFFMpegLoader::_seek_file(void *opaque, int64_t offset, int whence) {

View file

@ -44,12 +44,12 @@ File::Context::Context(
File::Context::~Context() = default;
int File::Context::Read(void *opaque, uint8_t *buffer, int bufferSize) {
int File::Context::_read(void *opaque, uint8_t *buffer, int bufferSize) {
return static_cast<Context*>(opaque)->read(
bytes::make_span(buffer, bufferSize));
}
int64_t File::Context::Seek(void *opaque, int64_t offset, int whence) {
int64_t File::Context::_seek(void *opaque, int64_t offset, int whence) {
return static_cast<Context*>(opaque)->seek(offset, whence);
}
@ -59,13 +59,13 @@ int File::Context::read(bytes::span buffer) {
const auto amount = std::min(_size - _offset, int64(buffer.size()));
if (unroll()) {
return -1;
return AVERROR_EXTERNAL;
} else if (amount > kMaxSingleReadAmount) {
LOG(("Streaming Error: Read callback asked for too much data: %1"
).arg(amount));
return -1;
return AVERROR_EXTERNAL;
} else if (!amount) {
return amount;
return AVERROR_EOF;
}
buffer = buffer.subspan(0, amount);
@ -87,10 +87,10 @@ int File::Context::read(bytes::span buffer) {
}
_semaphore.acquire();
if (_interrupted) {
return -1;
return AVERROR_EXTERNAL;
} else if (const auto error = _reader->streamingError()) {
fail(*error);
return -1;
return AVERROR_EXTERNAL;
}
}
@ -276,9 +276,9 @@ void File::Context::start(crl::time position, bool hwAllow) {
}
auto format = FFmpeg::MakeFormatPointer(
static_cast<void *>(this),
&Context::Read,
&Context::_read,
nullptr,
&Context::Seek);
&Context::_seek);
if (!format) {
return fail(Error::OpenFailed);
}

View file

@ -62,8 +62,8 @@ private:
Allowed,
Disallowed,
};
static int Read(void *opaque, uint8_t *buffer, int bufferSize);
static int64_t Seek(void *opaque, int64_t offset, int whence);
static int _read(void *opaque, uint8_t *buffer, int bufferSize);
static int64_t _seek(void *opaque, int64_t offset, int whence);
[[nodiscard]] int read(bytes::span buffer);
[[nodiscard]] int64_t seek(int64_t offset, int whence);