|
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
|
2 /* vim: set sw=2 ts=8 et tw=80 : */ |
|
3 /* This Source Code Form is subject to the terms of the Mozilla Public |
|
4 * License, v. 2.0. If a copy of the MPL was not distributed with this |
|
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
|
6 |
|
7 #include "RtspMetaData.h" |
|
8 #include "prlog.h" |
|
9 |
|
10 using namespace mozilla; |
|
11 |
|
12 namespace mozilla { |
|
13 namespace net { |
|
14 |
|
15 NS_IMPL_ISUPPORTS(RtspMetaData, nsIStreamingProtocolMetaData) |
|
16 |
|
17 RtspMetaData::RtspMetaData() |
|
18 : mIndex(0) |
|
19 , mWidth(0) |
|
20 , mHeight(0) |
|
21 , mDuration(0) |
|
22 , mSampleRate(0) |
|
23 , mCurrentTimeStamp(0) |
|
24 , mChannelCount(0) |
|
25 { |
|
26 mMimeType.AssignLiteral("NONE"); |
|
27 } |
|
28 |
|
29 RtspMetaData::~RtspMetaData() |
|
30 { |
|
31 |
|
32 } |
|
33 |
|
34 nsresult |
|
35 RtspMetaData::DeserializeRtspMetaData(const InfallibleTArray<RtspMetadataParam>& metaArray) |
|
36 { |
|
37 nsresult rv; |
|
38 |
|
39 // Deserialize meta data. |
|
40 for (uint32_t i = 0; i < metaArray.Length(); i++) { |
|
41 const RtspMetaValue& value = metaArray[i].value(); |
|
42 const nsCString& name = metaArray[i].name(); |
|
43 |
|
44 if (name.EqualsLiteral("FRAMETYPE")) { |
|
45 rv = SetFrameType(value); |
|
46 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); |
|
47 } else if (name.EqualsLiteral("TIMESTAMP")) { |
|
48 rv = SetTimeStamp(value); |
|
49 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); |
|
50 } else if (name.EqualsLiteral("TRACKS")) { |
|
51 rv = SetTotalTracks(value); |
|
52 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); |
|
53 } else if(name.EqualsLiteral("MIMETYPE")) { |
|
54 rv = SetMimeType(value); |
|
55 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); |
|
56 } else if (name.EqualsLiteral("WIDTH")) { |
|
57 rv = SetWidth(value); |
|
58 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); |
|
59 } else if (name.EqualsLiteral("HEIGHT")) { |
|
60 rv = SetHeight(value); |
|
61 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); |
|
62 } else if (name.EqualsLiteral("SAMPLERATE")) { |
|
63 rv = SetSampleRate(value); |
|
64 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); |
|
65 } else if(name.EqualsLiteral("DURATION")) { |
|
66 rv = SetDuration(value); |
|
67 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); |
|
68 } else if (name.EqualsLiteral("CHANNELCOUNT")) { |
|
69 rv = SetChannelCount(value); |
|
70 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); |
|
71 } else if (name.EqualsLiteral("ESDS")) { |
|
72 rv = SetEsdsData(value); |
|
73 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); |
|
74 } else if (name.EqualsLiteral("AVCC")) { |
|
75 rv = SetAvccData(value); |
|
76 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); |
|
77 } |
|
78 } |
|
79 |
|
80 return NS_OK; |
|
81 } |
|
82 |
|
83 NS_IMETHODIMP |
|
84 RtspMetaData::GetFrameType(uint32_t *aFrameType) |
|
85 { |
|
86 NS_ENSURE_ARG_POINTER(aFrameType); |
|
87 *aFrameType = mFrameType; |
|
88 return NS_OK; |
|
89 } |
|
90 |
|
91 NS_IMETHODIMP |
|
92 RtspMetaData::SetFrameType(uint32_t aFrameType) |
|
93 { |
|
94 mFrameType = aFrameType; |
|
95 return NS_OK; |
|
96 } |
|
97 |
|
98 NS_IMETHODIMP |
|
99 RtspMetaData::GetTotalTracks(uint32_t *aTracks) |
|
100 { |
|
101 NS_ENSURE_ARG_POINTER(aTracks); |
|
102 *aTracks = mTotalTracks; |
|
103 return NS_OK; |
|
104 } |
|
105 |
|
106 NS_IMETHODIMP |
|
107 RtspMetaData::SetTotalTracks(uint32_t aTracks) |
|
108 { |
|
109 mTotalTracks = aTracks; |
|
110 return NS_OK; |
|
111 } |
|
112 |
|
113 NS_IMETHODIMP |
|
114 RtspMetaData::GetMimeType(nsACString & aMimeType) |
|
115 { |
|
116 aMimeType.Assign(mMimeType); |
|
117 return NS_OK; |
|
118 } |
|
119 |
|
120 NS_IMETHODIMP |
|
121 RtspMetaData::SetMimeType(const nsACString & aMimeType) |
|
122 { |
|
123 mMimeType.Assign(aMimeType); |
|
124 return NS_OK; |
|
125 } |
|
126 |
|
127 NS_IMETHODIMP |
|
128 RtspMetaData::GetWidth(uint32_t *aWidth) |
|
129 { |
|
130 NS_ENSURE_ARG_POINTER(aWidth); |
|
131 *aWidth = mWidth; |
|
132 return NS_OK; |
|
133 } |
|
134 |
|
135 NS_IMETHODIMP |
|
136 RtspMetaData::SetWidth(uint32_t aWidth) |
|
137 { |
|
138 mWidth = aWidth; |
|
139 return NS_OK; |
|
140 } |
|
141 |
|
142 /* attribute unsigned long height; */ |
|
143 NS_IMETHODIMP |
|
144 RtspMetaData::GetHeight(uint32_t *aHeight) |
|
145 { |
|
146 NS_ENSURE_ARG_POINTER(aHeight); |
|
147 *aHeight = mHeight; |
|
148 return NS_OK; |
|
149 } |
|
150 |
|
151 NS_IMETHODIMP |
|
152 RtspMetaData::SetHeight(uint32_t aHeight) |
|
153 { |
|
154 mHeight = aHeight; |
|
155 return NS_OK; |
|
156 } |
|
157 |
|
158 /* attribute unsigned long long duration; */ |
|
159 NS_IMETHODIMP |
|
160 RtspMetaData::GetDuration(uint64_t *aDuration) |
|
161 { |
|
162 NS_ENSURE_ARG_POINTER(aDuration); |
|
163 *aDuration = mDuration; |
|
164 return NS_OK; |
|
165 } |
|
166 |
|
167 NS_IMETHODIMP |
|
168 RtspMetaData::SetDuration(uint64_t aDuration) |
|
169 { |
|
170 mDuration = aDuration; |
|
171 return NS_OK; |
|
172 } |
|
173 |
|
174 /* attribute unsigned long sampleRate; */ |
|
175 NS_IMETHODIMP |
|
176 RtspMetaData::GetSampleRate(uint32_t *aSampleRate) |
|
177 { |
|
178 NS_ENSURE_ARG_POINTER(aSampleRate); |
|
179 *aSampleRate = mSampleRate; |
|
180 return NS_OK; |
|
181 } |
|
182 |
|
183 NS_IMETHODIMP |
|
184 RtspMetaData::SetSampleRate(uint32_t aSampleRate) |
|
185 { |
|
186 mSampleRate = aSampleRate; |
|
187 return NS_OK; |
|
188 } |
|
189 |
|
190 NS_IMETHODIMP |
|
191 RtspMetaData::GetTimeStamp(uint64_t *aTimeStamp) |
|
192 { |
|
193 NS_ENSURE_ARG_POINTER(aTimeStamp); |
|
194 *aTimeStamp = mCurrentTimeStamp; |
|
195 return NS_OK; |
|
196 } |
|
197 |
|
198 NS_IMETHODIMP |
|
199 RtspMetaData::SetTimeStamp(uint64_t aTimeStamp) |
|
200 { |
|
201 mCurrentTimeStamp = aTimeStamp; |
|
202 return NS_OK; |
|
203 } |
|
204 |
|
205 NS_IMETHODIMP |
|
206 RtspMetaData::GetChannelCount(uint32_t *aChannelCount) |
|
207 { |
|
208 NS_ENSURE_ARG_POINTER(aChannelCount); |
|
209 *aChannelCount = mChannelCount; |
|
210 return NS_OK; |
|
211 } |
|
212 |
|
213 NS_IMETHODIMP |
|
214 RtspMetaData::SetChannelCount(uint32_t aChannelCount) |
|
215 { |
|
216 mChannelCount = aChannelCount; |
|
217 return NS_OK; |
|
218 } |
|
219 |
|
220 NS_IMETHODIMP |
|
221 RtspMetaData::GetEsdsData(nsACString & aESDS) |
|
222 { |
|
223 aESDS.Assign(mESDS); |
|
224 return NS_OK; |
|
225 } |
|
226 |
|
227 NS_IMETHODIMP |
|
228 RtspMetaData::SetEsdsData(const nsACString & aESDS) |
|
229 { |
|
230 mESDS.Assign(aESDS); |
|
231 return NS_OK; |
|
232 } |
|
233 |
|
234 NS_IMETHODIMP |
|
235 RtspMetaData::GetAvccData(nsACString & aAVCC) |
|
236 { |
|
237 aAVCC.Assign(mAVCC); |
|
238 return NS_OK; |
|
239 } |
|
240 |
|
241 NS_IMETHODIMP |
|
242 RtspMetaData::SetAvccData(const nsACString & aAVCC) |
|
243 { |
|
244 mAVCC.Assign(aAVCC); |
|
245 return NS_OK; |
|
246 } |
|
247 |
|
248 } // namespace mozilla::net |
|
249 } // namespace mozilla |