1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "WidevineVideoFrame.h"
#include "WidevineUtils.h"
using namespace cdm;
namespace mozilla {
WidevineVideoFrame::WidevineVideoFrame()
: mFormat(kUnknownVideoFormat)
, mSize(0,0)
, mBuffer(nullptr)
, mTimestamp(0)
{
Log("WidevineVideoFrame::WidevineVideoFrame() this=%p", this);
memset(mPlaneOffsets, 0, sizeof(mPlaneOffsets));
memset(mPlaneStrides, 0, sizeof(mPlaneStrides));
}
WidevineVideoFrame::WidevineVideoFrame(WidevineVideoFrame&& aOther)
: mFormat(aOther.mFormat)
, mSize(aOther.mSize)
, mBuffer(aOther.mBuffer)
, mTimestamp(aOther.mTimestamp)
{
Log("WidevineVideoFrame::WidevineVideoFrame(WidevineVideoFrame&&) this=%p, other=%p",
this, &aOther);
memcpy(mPlaneOffsets, aOther.mPlaneOffsets, sizeof(mPlaneOffsets));
memcpy(mPlaneStrides, aOther.mPlaneStrides, sizeof(mPlaneStrides));
aOther.mBuffer = nullptr;
}
WidevineVideoFrame::~WidevineVideoFrame()
{
if (mBuffer) {
mBuffer->Destroy();
mBuffer = nullptr;
}
}
void
WidevineVideoFrame::SetFormat(cdm::VideoFormat aFormat)
{
Log("WidevineVideoFrame::SetFormat(%d) this=%p", aFormat, this);
mFormat = aFormat;
}
cdm::VideoFormat
WidevineVideoFrame::Format() const
{
return mFormat;
}
void
WidevineVideoFrame::SetSize(cdm::Size aSize)
{
Log("WidevineVideoFrame::SetSize(%d,%d) this=%p", aSize.width, aSize.height, this);
mSize.width = aSize.width;
mSize.height = aSize.height;
}
cdm::Size
WidevineVideoFrame::Size() const
{
return mSize;
}
void
WidevineVideoFrame::SetFrameBuffer(cdm::Buffer* aFrameBuffer)
{
Log("WidevineVideoFrame::SetFrameBuffer(%p) this=%p", aFrameBuffer, this);
MOZ_ASSERT(!mBuffer);
mBuffer = aFrameBuffer;
}
cdm::Buffer*
WidevineVideoFrame::FrameBuffer()
{
return mBuffer;
}
void
WidevineVideoFrame::SetPlaneOffset(cdm::VideoFrame::VideoPlane aPlane, uint32_t aOffset)
{
Log("WidevineVideoFrame::SetPlaneOffset(%d, %d) this=%p", aPlane, aOffset, this);
mPlaneOffsets[aPlane] = aOffset;
}
uint32_t
WidevineVideoFrame::PlaneOffset(cdm::VideoFrame::VideoPlane aPlane)
{
return mPlaneOffsets[aPlane];
}
void
WidevineVideoFrame::SetStride(cdm::VideoFrame::VideoPlane aPlane, uint32_t aStride)
{
Log("WidevineVideoFrame::SetStride(%d, %d) this=%p", aPlane, aStride, this);
mPlaneStrides[aPlane] = aStride;
}
uint32_t
WidevineVideoFrame::Stride(cdm::VideoFrame::VideoPlane aPlane)
{
return mPlaneStrides[aPlane];
}
void
WidevineVideoFrame::SetTimestamp(int64_t timestamp)
{
Log("WidevineVideoFrame::SetTimestamp(%lld) this=%p", timestamp, this);
mTimestamp = timestamp;
}
int64_t
WidevineVideoFrame::Timestamp() const
{
return mTimestamp;
}
} // namespace mozilla
|