Coverage Report

Created: 2018-09-25 14:53

/src/mozilla-central/dom/media/mp4/BufferStream.cpp
Line
Count
Source (jump to first uncovered line)
1
/* This Source Code Form is subject to the terms of the Mozilla Public
2
 * License, v. 2.0. If a copy of the MPL was not distributed with this
3
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4
5
#include "BufferStream.h"
6
#include "MediaData.h"
7
#include "MediaResource.h"
8
#include <algorithm>
9
10
namespace mozilla {
11
12
BufferStream::BufferStream()
13
  : mStartOffset(0)
14
  , mData(new mozilla::MediaByteBuffer)
15
0
{
16
0
}
17
18
BufferStream::BufferStream(mozilla::MediaByteBuffer* aBuffer)
19
  : mStartOffset(0)
20
  , mData(aBuffer)
21
0
{
22
0
}
23
24
BufferStream::~BufferStream()
25
0
{
26
0
}
27
28
/*virtual*/ bool
29
BufferStream::ReadAt(int64_t aOffset, void* aData, size_t aLength,
30
                     size_t* aBytesRead)
31
0
{
32
0
  if (aOffset < mStartOffset || aOffset > mStartOffset + mData->Length()) {
33
0
    return false;
34
0
  }
35
0
  *aBytesRead =
36
0
    std::min(aLength, size_t(mStartOffset + mData->Length() - aOffset));
37
0
  memcpy(aData, mData->Elements() + aOffset - mStartOffset, *aBytesRead);
38
0
  return true;
39
0
}
40
41
/*virtual*/ bool
42
BufferStream::CachedReadAt(int64_t aOffset, void* aData, size_t aLength,
43
                           size_t* aBytesRead)
44
0
{
45
0
  return ReadAt(aOffset, aData, aLength, aBytesRead);
46
0
}
47
48
/*virtual*/ bool
49
BufferStream::Length(int64_t* aLength)
50
0
{
51
0
  *aLength = mStartOffset + mData->Length();
52
0
  return true;
53
0
}
54
55
/* virtual */ void
56
BufferStream::DiscardBefore(int64_t aOffset)
57
0
{
58
0
  if (aOffset > mStartOffset) {
59
0
    mData->RemoveElementsAt(0, aOffset - mStartOffset);
60
0
    mStartOffset = aOffset;
61
0
  }
62
0
}
63
64
bool
65
BufferStream::AppendBytes(const uint8_t* aData, size_t aLength)
66
0
{
67
0
  return mData->AppendElements(aData, aLength, fallible);
68
0
}
69
70
MediaByteRange
71
BufferStream::GetByteRange()
72
0
{
73
0
  return MediaByteRange(mStartOffset, mStartOffset + mData->Length());
74
0
}
75
}