| Index: media/filters/in_memory_url_protocol.cc
|
| diff --git a/media/filters/in_memory_url_protocol.cc b/media/filters/in_memory_url_protocol.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..dd7d984bac34b259ebdff08edc7d735fb4ec7de5
|
| --- /dev/null
|
| +++ b/media/filters/in_memory_url_protocol.cc
|
| @@ -0,0 +1,59 @@
|
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "media/filters/in_memory_url_protocol.h"
|
| +
|
| +namespace media {
|
| +
|
| +InMemoryUrlProtocol::InMemoryUrlProtocol(const uint8* data, int64 size,
|
| + bool streaming)
|
| + : data_(data),
|
| + size_(size),
|
| + position_(0),
|
| + streaming_(streaming) {
|
| +}
|
| +
|
| +InMemoryUrlProtocol::~InMemoryUrlProtocol() {}
|
| +
|
| +int InMemoryUrlProtocol::Read(int size, uint8* data) {
|
| + if (size < 0)
|
| + return -1;
|
| +
|
| + int available_bytes = static_cast<int>(size_ - position_);
|
| + if (size > available_bytes)
|
| + size = available_bytes;
|
| +
|
| + memcpy(data, data_ + position_, size);
|
| + position_ += size;
|
| + return size;
|
| +}
|
| +
|
| +bool InMemoryUrlProtocol::GetPosition(int64* position_out) {
|
| + if (!position_out)
|
| + return false;
|
| +
|
| + *position_out = position_;
|
| + return true;
|
| +}
|
| +
|
| +bool InMemoryUrlProtocol::SetPosition(int64 position) {
|
| + if (position < 0 || position >= size_)
|
| + return false;
|
| + position_ = position;
|
| + return true;
|
| +}
|
| +
|
| +bool InMemoryUrlProtocol::GetSize(int64* size_out) {
|
| + if (!size_out)
|
| + return false;
|
| +
|
| + *size_out = size_;
|
| + return true;
|
| +}
|
| +
|
| +bool InMemoryUrlProtocol::IsStreaming() {
|
| + return streaming_;
|
| +}
|
| +
|
| +} // namespace media
|
|
|