| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef MEDIA_BLINK_MULTIBUFFER_H_ | 5 #ifndef MEDIA_BLINK_MULTIBUFFER_H_ |
| 6 #define MEDIA_BLINK_MULTIBUFFER_H_ | 6 #define MEDIA_BLINK_MULTIBUFFER_H_ |
| 7 | 7 |
| 8 #include <stddef.h> | 8 #include <stddef.h> |
| 9 #include <stdint.h> | 9 #include <stdint.h> |
| 10 | 10 |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 107 virtual ~DataProvider() {} | 107 virtual ~DataProvider() {} |
| 108 | 108 |
| 109 // Returns the block number that is to be returned | 109 // Returns the block number that is to be returned |
| 110 // by the next Read() call. | 110 // by the next Read() call. |
| 111 virtual MultiBufferBlockId Tell() const = 0; | 111 virtual MultiBufferBlockId Tell() const = 0; |
| 112 | 112 |
| 113 // Returns true if one (or more) blocks are | 113 // Returns true if one (or more) blocks are |
| 114 // availble to read. | 114 // availble to read. |
| 115 virtual bool Available() const = 0; | 115 virtual bool Available() const = 0; |
| 116 | 116 |
| 117 // Returns how many bytes are available, note that Available() may still |
| 118 // return false even if AvailableBytes() returns a value greater than |
| 119 // zero if less than a full block is available. |
| 120 virtual int64_t AvailableBytes() const = 0; |
| 121 |
| 117 // Returns the next block. Only valid if Available() | 122 // Returns the next block. Only valid if Available() |
| 118 // returns true. Last block might be of a smaller size | 123 // returns true. Last block might be of a smaller size |
| 119 // and after the last block we will get an end-of-stream | 124 // and after the last block we will get an end-of-stream |
| 120 // DataBuffer. | 125 // DataBuffer. |
| 121 virtual scoped_refptr<DataBuffer> Read() = 0; | 126 virtual scoped_refptr<DataBuffer> Read() = 0; |
| 122 | 127 |
| 123 // Ask the data provider to stop giving us data. | 128 // Ask the data provider to stop giving us data. |
| 124 // It's ok if the effect is not immediate. | 129 // It's ok if the effect is not immediate. |
| 125 virtual void SetDeferred(bool deferred) = 0; | 130 virtual void SetDeferred(bool deferred) = 0; |
| 126 }; | 131 }; |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 242 // Unpin block 4 & 5: PinRange(4, 6, -1); | 247 // Unpin block 4 & 5: PinRange(4, 6, -1); |
| 243 void PinRange(const BlockId& from, const BlockId& to, int32_t how_much); | 248 void PinRange(const BlockId& from, const BlockId& to, int32_t how_much); |
| 244 | 249 |
| 245 // Calls PinRange for each range in |ranges|, convenience | 250 // Calls PinRange for each range in |ranges|, convenience |
| 246 // function for applying multiple changes to the pinned ranges. | 251 // function for applying multiple changes to the pinned ranges. |
| 247 void PinRanges(const IntervalMap<BlockId, int32_t>& ranges); | 252 void PinRanges(const IntervalMap<BlockId, int32_t>& ranges); |
| 248 | 253 |
| 249 // Increment max cache size by |size| (counted in blocks). | 254 // Increment max cache size by |size| (counted in blocks). |
| 250 void IncrementMaxSize(int32_t size); | 255 void IncrementMaxSize(int32_t size); |
| 251 | 256 |
| 257 // Returns how many bytes have been received by the data providers at position |
| 258 // |block|, which have not yet been submitted to the multibuffer cache. |
| 259 // The returned number should be less than the size of one block. |
| 260 int64_t UncommittedBytesAt(const BlockId& block); |
| 261 |
| 252 // Caller takes ownership of 'provider', cache will | 262 // Caller takes ownership of 'provider', cache will |
| 253 // not call it anymore. | 263 // not call it anymore. |
| 254 std::unique_ptr<DataProvider> RemoveProvider(DataProvider* provider); | 264 std::unique_ptr<DataProvider> RemoveProvider(DataProvider* provider); |
| 255 | 265 |
| 256 // Add a writer to this cache. Cache takes ownership, and may | 266 // Add a writer to this cache. Cache takes ownership, and may |
| 257 // destroy |provider| later. (Not during this call.) | 267 // destroy |provider| later. (Not during this call.) |
| 258 void AddProvider(std::unique_ptr<DataProvider> provider); | 268 void AddProvider(std::unique_ptr<DataProvider> provider); |
| 259 | 269 |
| 260 // Transfer all data from |other| to this. | 270 // Transfer all data from |other| to this. |
| 261 void MergeFrom(MultiBuffer* other); | 271 void MergeFrom(MultiBuffer* other); |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 338 // and 0 for all blocks that are not. Used to quickly figure out | 348 // and 0 for all blocks that are not. Used to quickly figure out |
| 339 // ranges of available/unavailable blocks without iterating. | 349 // ranges of available/unavailable blocks without iterating. |
| 340 IntervalMap<BlockId, int32_t> present_; | 350 IntervalMap<BlockId, int32_t> present_; |
| 341 | 351 |
| 342 DISALLOW_COPY_AND_ASSIGN(MultiBuffer); | 352 DISALLOW_COPY_AND_ASSIGN(MultiBuffer); |
| 343 }; | 353 }; |
| 344 | 354 |
| 345 } // namespace media | 355 } // namespace media |
| 346 | 356 |
| 347 #endif // MEDIA_BLINK_MULTIBUFFER_H_ | 357 #endif // MEDIA_BLINK_MULTIBUFFER_H_ |
| OLD | NEW |