| Index: media/filters/ffmpeg_glue.cc
|
| diff --git a/media/filters/ffmpeg_glue.cc b/media/filters/ffmpeg_glue.cc
|
| index 23f0a364ddad5efd108d63544ab5c23e5aa9ab0a..39ec1ab2e07cf7e4e9a58c853d2cd86c6c82c0fc 100644
|
| --- a/media/filters/ffmpeg_glue.cc
|
| +++ b/media/filters/ffmpeg_glue.cc
|
| @@ -137,6 +137,53 @@ FFmpegGlue::FFmpegGlue() {
|
| av_register_all();
|
| }
|
|
|
| +BufferUrlProtocol::BufferUrlProtocol(const uint8* buf, int size,
|
| + bool streaming)
|
| + : buf_(buf),
|
| + size_(size),
|
| + offset_(0),
|
| + streaming_(streaming) {
|
| +}
|
| +
|
| +BufferUrlProtocol::~BufferUrlProtocol() {}
|
| +
|
| +int BufferUrlProtocol::Read(int size, uint8* data) {
|
| + int bytes_to_copy = size;
|
| + int bytes_left = size_ - offset_;
|
| +
|
| + if (bytes_to_copy > bytes_left)
|
| + bytes_to_copy = bytes_left;
|
| +
|
| + if (bytes_to_copy == 0)
|
| + return 0;
|
| +
|
| + memcpy(data, buf_ + offset_, bytes_to_copy);
|
| + offset_ += bytes_to_copy;
|
| +
|
| + return bytes_to_copy;
|
| +}
|
| +
|
| +bool BufferUrlProtocol::GetPosition(int64* position_out) {
|
| + *position_out = offset_;
|
| + return true;
|
| +}
|
| +
|
| +bool BufferUrlProtocol::SetPosition(int64 position) {
|
| + if (position < 0 || position >= size_)
|
| + return false;
|
| +
|
| + offset_ = position;
|
| + return true;
|
| +}
|
| +
|
| +bool BufferUrlProtocol::GetSize(int64* size_out) {
|
| + *size_out = size_;
|
| + return true;
|
| +}
|
| +
|
| +bool BufferUrlProtocol::IsStreaming() { return streaming_; }
|
| +
|
| +
|
| FFmpegGlue::~FFmpegGlue() {
|
| av_lockmgr_register(NULL);
|
| }
|
|
|