1 /* ------------------------------------------------------------------
2 * Copyright (C) 1998-2009 PacketVideo
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
13 * express or implied.
14 * See the License for the specific language governing permissions
15 * and limitations under the License.
16 * -------------------------------------------------------------------
17 */
18 #ifndef PVMF_JITTER_BUFFER_NODE_H_INCLUDED
19 #include "pvmf_jitter_buffer_node.h"
20 #endif
21 #ifndef PVMF_JITTER_BUFFER_INTERNAL_H_INCLUDED
22 #include "pvmf_jitter_buffer_internal.h"
23 #endif
24 #ifndef PV_LOGGGER_H_INCLUDED
25 #include "pvlogger.h"
26 #endif
27
PVMFJitterBufferExtensionInterfaceImpl(PVMFJitterBufferNode * c)28 PVMFJitterBufferExtensionInterfaceImpl::PVMFJitterBufferExtensionInterfaceImpl(PVMFJitterBufferNode*c)
29 : PVInterfaceImpl<OsclMemAllocator>(PVUuid(PVMF_JITTERBUFFERNODE_EXTENSIONINTERFACE_UUID))
30 , iContainer(c)
31 {}
32
~PVMFJitterBufferExtensionInterfaceImpl()33 PVMFJitterBufferExtensionInterfaceImpl::~PVMFJitterBufferExtensionInterfaceImpl()
34 {}
35
36 OSCL_EXPORT_REF
setPortParams(PVMFPortInterface * aPort,uint32 aTimeScale,uint32 aBitRate,OsclRefCounterMemFrag & aConfig,bool aRateAdaptation,uint32 aRateAdaptationFeedBackFrequency)37 bool PVMFJitterBufferExtensionInterfaceImpl::setPortParams(PVMFPortInterface* aPort,
38 uint32 aTimeScale,
39 uint32 aBitRate,
40 OsclRefCounterMemFrag& aConfig,
41 bool aRateAdaptation,
42 uint32 aRateAdaptationFeedBackFrequency)
43 {
44 return (iContainer->SetPortParams(aPort,
45 aTimeScale,
46 aBitRate,
47 aConfig,
48 aRateAdaptation,
49 aRateAdaptationFeedBackFrequency));
50 }
51
52 OSCL_EXPORT_REF
setPlayBackThresholdInMilliSeconds(uint32 threshold)53 void PVMFJitterBufferExtensionInterfaceImpl::setPlayBackThresholdInMilliSeconds(uint32 threshold)
54 {
55 iContainer->SetPlayBackThresholdInMilliSeconds(threshold);
56 }
57
58 OSCL_EXPORT_REF
setJitterBufferRebufferingThresholdInMilliSeconds(uint32 aThreshold)59 void PVMFJitterBufferExtensionInterfaceImpl::setJitterBufferRebufferingThresholdInMilliSeconds(uint32 aThreshold)
60 {
61 iContainer->SetJitterBufferRebufferingThresholdInMilliSeconds(aThreshold);
62 }
63
64 OSCL_EXPORT_REF
getJitterBufferRebufferingThresholdInMilliSeconds(uint32 & aThreshold)65 void PVMFJitterBufferExtensionInterfaceImpl::getJitterBufferRebufferingThresholdInMilliSeconds(uint32& aThreshold)
66 {
67 iContainer->GetJitterBufferRebufferingThresholdInMilliSeconds(aThreshold);
68 }
69
70 OSCL_EXPORT_REF
setJitterBufferDurationInMilliSeconds(uint32 duration)71 void PVMFJitterBufferExtensionInterfaceImpl::setJitterBufferDurationInMilliSeconds(uint32 duration)
72 {
73 iContainer->SetJitterBufferDurationInMilliSeconds(duration);
74 }
75
76 OSCL_EXPORT_REF
getJitterBufferDurationInMilliSeconds(uint32 & duration)77 void PVMFJitterBufferExtensionInterfaceImpl::getJitterBufferDurationInMilliSeconds(uint32& duration)
78 {
79 iContainer->GetJitterBufferDurationInMilliSeconds(duration);
80 }
81
82 OSCL_EXPORT_REF
setEarlyDecodingTimeInMilliSeconds(uint32 duration)83 void PVMFJitterBufferExtensionInterfaceImpl::setEarlyDecodingTimeInMilliSeconds(uint32 duration)
84 {
85 iContainer->SetEarlyDecodingTimeInMilliSeconds(duration);
86 }
87
88 OSCL_EXPORT_REF
setBurstThreshold(float burstThreshold)89 void PVMFJitterBufferExtensionInterfaceImpl::setBurstThreshold(float burstThreshold)
90 {
91 iContainer->SetBurstThreshold(burstThreshold);
92 }
93
94 OSCL_EXPORT_REF
setClientPlayBackClock(PVMFMediaClock * clientClock)95 void PVMFJitterBufferExtensionInterfaceImpl::setClientPlayBackClock(PVMFMediaClock* clientClock)
96 {
97 iContainer->SetClientPlayBackClock(clientClock);
98 }
99
100 OSCL_EXPORT_REF
setMaxInactivityDurationForMediaInMs(uint32 duration)101 void PVMFJitterBufferExtensionInterfaceImpl::setMaxInactivityDurationForMediaInMs(uint32 duration)
102 {
103 iContainer->SetMaxInactivityDurationForMediaInMs(duration);
104 }
105
106 OSCL_EXPORT_REF
getMaxInactivityDurationForMediaInMs(uint32 & duration)107 void PVMFJitterBufferExtensionInterfaceImpl::getMaxInactivityDurationForMediaInMs(uint32& duration)
108 {
109 iContainer->GetMaxInactivityDurationForMediaInMs(duration);
110 }
111
112 OSCL_EXPORT_REF
setRTCPIntervalInMicroSecs(uint32 aRTCPInterval)113 void PVMFJitterBufferExtensionInterfaceImpl::setRTCPIntervalInMicroSecs(uint32 aRTCPInterval)
114 {
115 iContainer->SetRTCPIntervalInMicroSecs(aRTCPInterval);
116 }
117
118 OSCL_EXPORT_REF
setPlayRange(int32 aStartTimeInMS,int32 aStopTimeInMS,bool oPlayAfterASeek,bool aStopTimeAvailable)119 bool PVMFJitterBufferExtensionInterfaceImpl::setPlayRange(int32 aStartTimeInMS,
120 int32 aStopTimeInMS,
121 bool oPlayAfterASeek,
122 bool aStopTimeAvailable)
123 {
124 return (iContainer->SetPlayRange(aStartTimeInMS,
125 aStopTimeInMS,
126 oPlayAfterASeek,
127 aStopTimeAvailable));
128 }
129
130 OSCL_EXPORT_REF
PrepareForRepositioning(bool oUseExpectedClientClockVal,uint32 aExpectedClientClockVal)131 bool PVMFJitterBufferExtensionInterfaceImpl::PrepareForRepositioning(bool oUseExpectedClientClockVal,
132 uint32 aExpectedClientClockVal)
133 {
134 return (iContainer->PrepareForRepositioning(oUseExpectedClientClockVal, aExpectedClientClockVal));
135 }
136
137 OSCL_EXPORT_REF
setPortSSRC(PVMFPortInterface * aPort,uint32 aSSRC)138 bool PVMFJitterBufferExtensionInterfaceImpl::setPortSSRC(PVMFPortInterface* aPort, uint32 aSSRC)
139 {
140 return (iContainer->SetPortSSRC(aPort, aSSRC));
141 }
142
143
144 OSCL_EXPORT_REF
setPortRTPParams(PVMFPortInterface * aPort,bool aSeqNumBasePresent,uint32 aSeqNumBase,bool aRTPTimeBasePresent,uint32 aRTPTimeBase,bool aNPTTimeBasePresent,uint32 aNPTInMS,bool oPlayAfterASeek)145 bool PVMFJitterBufferExtensionInterfaceImpl::setPortRTPParams(PVMFPortInterface* aPort,
146 bool aSeqNumBasePresent,
147 uint32 aSeqNumBase,
148 bool aRTPTimeBasePresent,
149 uint32 aRTPTimeBase,
150 bool aNPTTimeBasePresent,
151 uint32 aNPTInMS,
152 bool oPlayAfterASeek)
153 {
154 return (iContainer->SetPortRTPParams(aPort,
155 aSeqNumBasePresent,
156 aSeqNumBase,
157 aRTPTimeBasePresent,
158 aRTPTimeBase,
159 aNPTTimeBasePresent,
160 aNPTInMS,
161 oPlayAfterASeek));
162 }
163
164 OSCL_EXPORT_REF
setPortRTCPParams(PVMFPortInterface * aPort,int aNumSenders,uint32 aRR,uint32 aRS)165 bool PVMFJitterBufferExtensionInterfaceImpl::setPortRTCPParams(PVMFPortInterface* aPort,
166 int aNumSenders,
167 uint32 aRR,
168 uint32 aRS)
169 {
170 return iContainer->SetPortRTCPParams(aPort, aNumSenders, aRR, aRS);
171 }
172
173 OSCL_EXPORT_REF
getActualMediaDataTSAfterSeek()174 PVMFTimestamp PVMFJitterBufferExtensionInterfaceImpl::getActualMediaDataTSAfterSeek()
175 {
176 return (iContainer->GetActualMediaDataTSAfterSeek());
177 }
178
179 OSCL_EXPORT_REF
getMaxMediaDataTS()180 PVMFTimestamp PVMFJitterBufferExtensionInterfaceImpl::getMaxMediaDataTS()
181 {
182 return (iContainer->GetMaxMediaDataTS());
183 }
184
185 OSCL_EXPORT_REF PVMFStatus
setServerInfo(PVMFJitterBufferFireWallPacketInfo & aServerInfo)186 PVMFJitterBufferExtensionInterfaceImpl::setServerInfo(PVMFJitterBufferFireWallPacketInfo& aServerInfo)
187 {
188 return (iContainer->SetServerInfo(aServerInfo));
189 }
190
191 OSCL_EXPORT_REF PVMFStatus
NotifyOutOfBandEOS()192 PVMFJitterBufferExtensionInterfaceImpl::NotifyOutOfBandEOS()
193 {
194 return (iContainer->NotifyOutOfBandEOS());
195 }
196
197 OSCL_EXPORT_REF PVMFStatus
SendBOSMessage(uint32 aStreamID)198 PVMFJitterBufferExtensionInterfaceImpl::SendBOSMessage(uint32 aStreamID)
199 {
200 return (iContainer->SendBOSMessage(aStreamID));
201 }
202
203 OSCL_EXPORT_REF void
SetSharedBufferResizeParams(uint32 maxNumResizes,uint32 resizeSize)204 PVMFJitterBufferExtensionInterfaceImpl::SetSharedBufferResizeParams(uint32 maxNumResizes, uint32 resizeSize)
205 {
206 iContainer->SetSharedBufferResizeParams(maxNumResizes, resizeSize);
207 }
208
209 OSCL_EXPORT_REF void
GetSharedBufferResizeParams(uint32 & maxNumResizes,uint32 & resizeSize)210 PVMFJitterBufferExtensionInterfaceImpl::GetSharedBufferResizeParams(uint32& maxNumResizes, uint32& resizeSize)
211 {
212 iContainer->GetSharedBufferResizeParams(maxNumResizes, resizeSize);
213 }
214
215 OSCL_EXPORT_REF bool
ClearJitterBuffer(PVMFPortInterface * aPort,uint32 aSeqNum)216 PVMFJitterBufferExtensionInterfaceImpl::ClearJitterBuffer(PVMFPortInterface* aPort, uint32 aSeqNum)
217 {
218 return (iContainer->ClearJitterBuffer(aPort, aSeqNum));
219 }
220
221 OSCL_EXPORT_REF void
FlushJitterBuffer()222 PVMFJitterBufferExtensionInterfaceImpl::FlushJitterBuffer()
223 {
224 iContainer->FlushJitterBuffer();
225 }
226
227 OSCL_EXPORT_REF bool
NotifyAutoPauseComplete()228 PVMFJitterBufferExtensionInterfaceImpl::NotifyAutoPauseComplete()
229 {
230 return (iContainer->NotifyAutoPauseComplete());
231 }
232
233 OSCL_EXPORT_REF bool
NotifyAutoResumeComplete()234 PVMFJitterBufferExtensionInterfaceImpl::NotifyAutoResumeComplete()
235 {
236 return (iContainer->NotifyAutoResumeComplete());
237 }
238
239 OSCL_EXPORT_REF PVMFStatus
SetInputMediaHeaderPreParsed(PVMFPortInterface * aPort,bool aHeaderPreParsed)240 PVMFJitterBufferExtensionInterfaceImpl::SetInputMediaHeaderPreParsed(PVMFPortInterface* aPort,
241 bool aHeaderPreParsed)
242 {
243 return (iContainer->SetInputMediaHeaderPreParsed(aPort, aHeaderPreParsed));
244 }
245
246 OSCL_EXPORT_REF PVMFStatus
HasSessionDurationExpired(bool & aExpired)247 PVMFJitterBufferExtensionInterfaceImpl::HasSessionDurationExpired(bool& aExpired)
248 {
249 return (iContainer->HasSessionDurationExpired(aExpired));
250 }
251 OSCL_EXPORT_REF bool
PurgeElementsWithNPTLessThan(NptTimeFormat & aNPTTime)252 PVMFJitterBufferExtensionInterfaceImpl::PurgeElementsWithNPTLessThan(NptTimeFormat &aNPTTime)
253 {
254 return (iContainer->PurgeElementsWithNPTLessThan(aNPTTime));
255 }
256 OSCL_EXPORT_REF void
SetBroadCastSession()257 PVMFJitterBufferExtensionInterfaceImpl::SetBroadCastSession()
258 {
259 iContainer->SetBroadCastSession();
260 }
261 OSCL_EXPORT_REF void
DisableFireWallPackets()262 PVMFJitterBufferExtensionInterfaceImpl::DisableFireWallPackets()
263 {
264 iContainer->DisableFireWallPackets();
265 }
266 OSCL_EXPORT_REF void
StartOutputPorts()267 PVMFJitterBufferExtensionInterfaceImpl::StartOutputPorts()
268 {
269 iContainer->StartOutputPorts();
270 }
271 OSCL_EXPORT_REF void
StopOutputPorts()272 PVMFJitterBufferExtensionInterfaceImpl::StopOutputPorts()
273 {
274 iContainer->StopOutputPorts();
275 }
276
277 OSCL_EXPORT_REF void
UpdateJitterBufferState()278 PVMFJitterBufferExtensionInterfaceImpl::UpdateJitterBufferState()
279 {
280 iContainer->UpdateJitterBufferState();
281 }
282
283 OSCL_EXPORT_REF void
SetJitterBufferMemPoolInfo(const PvmfPortBaseImpl * aPort,uint32 aSize,uint32 aResizeSize,uint32 aMaxNumResizes,uint32 aExpectedNumberOfBlocksPerBuffer)284 PVMFJitterBufferExtensionInterfaceImpl::SetJitterBufferMemPoolInfo(const PvmfPortBaseImpl* aPort, uint32 aSize, uint32 aResizeSize, uint32 aMaxNumResizes, uint32 aExpectedNumberOfBlocksPerBuffer)
285 {
286 iContainer->SetJitterBufferMemPoolInfo(aPort, aSize, aResizeSize, aMaxNumResizes, aExpectedNumberOfBlocksPerBuffer);
287 }
288
289 OSCL_EXPORT_REF void
GetJitterBufferMemPoolInfo(const PvmfPortBaseImpl * aPort,uint32 & aSize,uint32 & aResizeSize,uint32 & aMaxNumResizes,uint32 & aExpectedNumberOfBlocksPerBuffer) const290 PVMFJitterBufferExtensionInterfaceImpl::GetJitterBufferMemPoolInfo(const PvmfPortBaseImpl* aPort, uint32& aSize, uint32& aResizeSize, uint32& aMaxNumResizes, uint32& aExpectedNumberOfBlocksPerBuffer) const
291 {
292 iContainer->GetJitterBufferMemPoolInfo(aPort, aSize, aResizeSize, aMaxNumResizes, aExpectedNumberOfBlocksPerBuffer);
293 }
294
295 OSCL_EXPORT_REF void
SetJitterBufferChunkAllocator(OsclMemPoolResizableAllocator * aDataBufferAllocator,const PVMFPortInterface * aPort)296 PVMFJitterBufferExtensionInterfaceImpl::SetJitterBufferChunkAllocator(OsclMemPoolResizableAllocator* aDataBufferAllocator, const PVMFPortInterface* aPort)
297 {
298 iContainer->SetJitterBufferChunkAllocator(aDataBufferAllocator, aPort);
299 }
300
301 OSCL_EXPORT_REF bool
PrepareForPlaylistSwitch()302 PVMFJitterBufferExtensionInterfaceImpl::PrepareForPlaylistSwitch()
303 {
304 return (iContainer->PrepareForPlaylistSwitch());
305 }
306