1 /*
2 * Copyright (c) 2025 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "cj_avplayer_ffi.h"
17 #include "media_log.h"
18 #include "media_source_ffi.h"
19
20 using namespace OHOS::FFI;
21
22 namespace {
23 constexpr OHOS::HiviewDFX::HiLogLabel LABEL = {LOG_CORE, LOG_DOMAIN_PLAYER, "CJAVPlayer"};
24 int32_t g_serverIpAddressCode = 0;
25 int32_t g_avgDownloadRateCode = 1;
26 int32_t g_downloadRateCode = 2;
27 int32_t g_isDownloadingCode = 3;
28 int32_t g_bufferDurationCode = 4;
29 } // namespace
30
31 namespace OHOS {
32 namespace Media {
VectorToRetData(RetData & ret,std::vector<NativeT> & data)33 template <class RetData, class NativeT> int32_t VectorToRetData(RetData &ret, std::vector<NativeT> &data)
34 {
35 auto len = data.size();
36 if (len <= 0) {
37 return MSERR_EXT_API9_OK;
38 }
39 NativeT *outValue = static_cast<NativeT *>(malloc(sizeof(NativeT) * len));
40 if (outValue == nullptr) {
41 return MSERR_EXT_API9_NO_MEMORY;
42 }
43 for (size_t i = 0; i < len; ++i) {
44 outValue[i] = data[i];
45 }
46 ret.size = static_cast<int64_t>(len);
47 ret.head = outValue;
48 return MSERR_EXT_API9_OK;
49 }
50
MallocObject(NativeT value)51 template <class NativeT> void *MallocObject(NativeT value)
52 {
53 NativeT *data = static_cast<NativeT *>(malloc(sizeof(NativeT)));
54 if (data == nullptr) {
55 return nullptr;
56 }
57 *data = value;
58 return static_cast<void *>(data);
59 }
60
ConvertCPlaystrategy(CPlayStrategy & strategy)61 AVPlayStrategy ConvertCPlaystrategy(CPlayStrategy &strategy)
62 {
63 AVPlayStrategy avPlayStrategy;
64 avPlayStrategy.preferredWidth = strategy.preferredWidth;
65 avPlayStrategy.preferredHeight = strategy.preferredHeight;
66 avPlayStrategy.preferredBufferDuration = strategy.preferredBufferDuration;
67 avPlayStrategy.preferredHdr = strategy.preferredHdr;
68 avPlayStrategy.mutedMediaType = static_cast<OHOS::Media::MediaType>(strategy.mutedMediaType);
69 if (strategy.preferredAudioLanguage != nullptr) {
70 avPlayStrategy.preferredAudioLanguage = std::string(strategy.preferredAudioLanguage);
71 }
72 if (strategy.preferredSubtitleLanguage != nullptr) {
73 avPlayStrategy.preferredSubtitleLanguage = std::string(strategy.preferredSubtitleLanguage);
74 }
75 return avPlayStrategy;
76 }
77
78 extern "C" {
FfiMediaCreateAVPlayer(int32_t * errCode)79 int64_t FfiMediaCreateAVPlayer(int32_t *errCode)
80 {
81 auto avPlayerImpl = FFIData::Create<CJAVPlayer>();
82 if (avPlayerImpl == nullptr) {
83 *errCode = MSERR_EXT_API9_NO_MEMORY;
84 return INVALID_ID;
85 }
86 if (!avPlayerImpl->Constructor()) {
87 *errCode = MSERR_EXT_API9_NO_MEMORY;
88 FFI::FFIData::Release(avPlayerImpl->GetID());
89 return INVALID_ID;
90 }
91 return avPlayerImpl->GetID();
92 }
93
FfiMediaAVPlayerGetUrl(int64_t id,int32_t * errCode)94 char *FfiMediaAVPlayerGetUrl(int64_t id, int32_t *errCode)
95 {
96 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
97 if (avPlayerImpl == nullptr) {
98 *errCode = MSERR_EXT_API9_NO_MEMORY;
99 return nullptr;
100 }
101 return avPlayerImpl->GetUrl();
102 }
103
FfiMediaAVPlayerSetUrl(int64_t id,char * url,int32_t * errCode)104 void FfiMediaAVPlayerSetUrl(int64_t id, char *url, int32_t *errCode)
105 {
106 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
107 if (avPlayerImpl == nullptr) {
108 *errCode = MSERR_EXT_API9_NO_MEMORY;
109 return;
110 }
111 avPlayerImpl->SetUrl(url);
112 }
113
FfiMediaAVPlayerGetAVFileDescriptor(int64_t id,int32_t * errCode)114 CAVFileDescriptor FfiMediaAVPlayerGetAVFileDescriptor(int64_t id, int32_t *errCode)
115 {
116 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
117 if (avPlayerImpl == nullptr) {
118 *errCode = MSERR_EXT_API9_NO_MEMORY;
119 return CAVFileDescriptor{0};
120 }
121 return avPlayerImpl->GetAVFileDescriptor();
122 }
123
FfiMediaAVPlayerSetAVFileDescriptor(int64_t id,CAVFileDescriptor fileDescriptor,int32_t * errCode)124 void FfiMediaAVPlayerSetAVFileDescriptor(int64_t id, CAVFileDescriptor fileDescriptor, int32_t *errCode)
125 {
126 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
127 if (avPlayerImpl == nullptr) {
128 *errCode = MSERR_EXT_API9_NO_MEMORY;
129 return;
130 }
131 avPlayerImpl->SetAVFileDescriptor(fileDescriptor);
132 }
133
FfiMediaAVPlayerGetDataSrc(int64_t id,int32_t * errCode)134 CAVDataSrcDescriptor FfiMediaAVPlayerGetDataSrc(int64_t id, int32_t *errCode)
135 {
136 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
137 if (avPlayerImpl == nullptr) {
138 *errCode = MSERR_EXT_API9_NO_MEMORY;
139 return CAVDataSrcDescriptor{0};
140 }
141 return avPlayerImpl->GetDataSrc();
142 }
143
FfiMediaAVPlayerSetDataSrc(int64_t id,CAVDataSrcDescriptor dataSrcDescriptor,int32_t * errCode)144 void FfiMediaAVPlayerSetDataSrc(int64_t id, CAVDataSrcDescriptor dataSrcDescriptor, int32_t *errCode)
145 {
146 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
147 if (avPlayerImpl == nullptr) {
148 *errCode = MSERR_EXT_API9_NO_MEMORY;
149 return;
150 }
151 avPlayerImpl->SetDataSrc(dataSrcDescriptor);
152 }
153
FfiMediaAVPlayerGetSurfaceID(int64_t id,int32_t * errCode)154 char *FfiMediaAVPlayerGetSurfaceID(int64_t id, int32_t *errCode)
155 {
156 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
157 if (avPlayerImpl == nullptr) {
158 *errCode = MSERR_EXT_API9_NO_MEMORY;
159 return nullptr;
160 }
161 return avPlayerImpl->GetSurfaceID();
162 }
163
FfiMediaAVPlayerSetSurfaceID(int64_t id,char * surfaceId,int32_t * errCode)164 void FfiMediaAVPlayerSetSurfaceID(int64_t id, char *surfaceId, int32_t *errCode)
165 {
166 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
167 if (avPlayerImpl == nullptr) {
168 *errCode = MSERR_EXT_API9_NO_MEMORY;
169 return;
170 }
171 avPlayerImpl->SetSurfaceID(surfaceId);
172 }
173
FfiMediaAVPlayerGetLoop(int64_t id,int32_t * errCode)174 bool FfiMediaAVPlayerGetLoop(int64_t id, int32_t *errCode)
175 {
176 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
177 if (avPlayerImpl == nullptr) {
178 *errCode = MSERR_EXT_API9_NO_MEMORY;
179 return false;
180 }
181 return avPlayerImpl->GetLoop();
182 }
183
FfiMediaAVPlayerSetLoop(int64_t id,bool loop,int32_t * errCode)184 void FfiMediaAVPlayerSetLoop(int64_t id, bool loop, int32_t *errCode)
185 {
186 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
187 if (avPlayerImpl == nullptr) {
188 *errCode = MSERR_EXT_API9_NO_MEMORY;
189 return;
190 }
191 avPlayerImpl->SetLoop(loop);
192 }
193
FfiMediaAVPlayerGetVideoScaleType(int64_t id,int32_t * errCode)194 int32_t FfiMediaAVPlayerGetVideoScaleType(int64_t id, int32_t *errCode)
195 {
196 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
197 if (avPlayerImpl == nullptr) {
198 *errCode = MSERR_EXT_API9_NO_MEMORY;
199 return 0;
200 }
201 return avPlayerImpl->GetVideoScaleType();
202 }
203
FfiMediaAVPlayerSetVideoScaleType(int64_t id,int32_t videoScaleType,int32_t * errCode)204 void FfiMediaAVPlayerSetVideoScaleType(int64_t id, int32_t videoScaleType, int32_t *errCode)
205 {
206 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
207 if (avPlayerImpl == nullptr) {
208 *errCode = MSERR_EXT_API9_NO_MEMORY;
209 return;
210 }
211 avPlayerImpl->SetVideoScaleType(videoScaleType);
212 }
213
FfiMediaAVPlayerGetAudioInterruptMode(int64_t id,int32_t * errCode)214 int32_t FfiMediaAVPlayerGetAudioInterruptMode(int64_t id, int32_t *errCode)
215 {
216 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
217 if (avPlayerImpl == nullptr) {
218 *errCode = MSERR_EXT_API9_NO_MEMORY;
219 return 0;
220 }
221 return avPlayerImpl->GetAudioInterruptMode();
222 }
223
FfiMediaAVPlayerSetAudioInterruptMode(int64_t id,int32_t interruptMode,int32_t * errCode)224 void FfiMediaAVPlayerSetAudioInterruptMode(int64_t id, int32_t interruptMode, int32_t *errCode)
225 {
226 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
227 if (avPlayerImpl == nullptr) {
228 *errCode = MSERR_EXT_API9_NO_MEMORY;
229 return;
230 }
231 avPlayerImpl->SetAudioInterruptMode(interruptMode);
232 }
233
FfiMediaAVPlayerGetAudioRendererInfo(int64_t id,int32_t * errCode)234 OHOS::AudioStandard::CAudioRendererInfo FfiMediaAVPlayerGetAudioRendererInfo(int64_t id, int32_t *errCode)
235 {
236 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
237 if (avPlayerImpl == nullptr) {
238 *errCode = MSERR_EXT_API9_NO_MEMORY;
239 return OHOS::AudioStandard::CAudioRendererInfo{0};
240 }
241 return avPlayerImpl->GetAudioRendererInfo();
242 }
243
FfiMediaAVPlayerSetAudioRendererInfo(int64_t id,OHOS::AudioStandard::CAudioRendererInfo info,int32_t * errCode)244 void FfiMediaAVPlayerSetAudioRendererInfo(int64_t id, OHOS::AudioStandard::CAudioRendererInfo info, int32_t *errCode)
245 {
246 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
247 if (avPlayerImpl == nullptr) {
248 *errCode = MSERR_EXT_API9_NO_MEMORY;
249 return;
250 }
251 avPlayerImpl->SetAudioRendererInfo(info);
252 }
253
FfiMediaAVPlayerGetAudioEffectMode(int64_t id,int32_t * errCode)254 int32_t FfiMediaAVPlayerGetAudioEffectMode(int64_t id, int32_t *errCode)
255 {
256 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
257 if (avPlayerImpl == nullptr) {
258 *errCode = MSERR_EXT_API9_NO_MEMORY;
259 return 0;
260 }
261 return avPlayerImpl->GetAudioEffectMode();
262 }
263
FfiMediaAVPlayerSetAudioEffectMode(int64_t id,int32_t effectMode,int32_t * errCode)264 void FfiMediaAVPlayerSetAudioEffectMode(int64_t id, int32_t effectMode, int32_t *errCode)
265 {
266 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
267 if (avPlayerImpl == nullptr) {
268 *errCode = MSERR_EXT_API9_NO_MEMORY;
269 return;
270 }
271 avPlayerImpl->SetAudioEffectMode(effectMode);
272 }
273
FfiMediaAVPlayerGetState(int64_t id,int32_t * errCode)274 char *FfiMediaAVPlayerGetState(int64_t id, int32_t *errCode)
275 {
276 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
277 if (avPlayerImpl == nullptr) {
278 *errCode = MSERR_EXT_API9_NO_MEMORY;
279 return nullptr;
280 }
281 return avPlayerImpl->GetState();
282 }
283
FfiMediaAVPlayerGetCurrentTime(int64_t id,int32_t * errCode)284 int32_t FfiMediaAVPlayerGetCurrentTime(int64_t id, int32_t *errCode)
285 {
286 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
287 if (avPlayerImpl == nullptr) {
288 *errCode = MSERR_EXT_API9_NO_MEMORY;
289 return 0;
290 }
291 return avPlayerImpl->GetCurrentTime();
292 }
293
FfiMediaAVPlayerGetDuration(int64_t id,int32_t * errCode)294 int32_t FfiMediaAVPlayerGetDuration(int64_t id, int32_t *errCode)
295 {
296 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
297 if (avPlayerImpl == nullptr) {
298 *errCode = MSERR_EXT_API9_NO_MEMORY;
299 return 0;
300 }
301 return avPlayerImpl->GetDuration();
302 }
303
FfiMediaAVPlayerGetWidth(int64_t id,int32_t * errCode)304 int32_t FfiMediaAVPlayerGetWidth(int64_t id, int32_t *errCode)
305 {
306 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
307 if (avPlayerImpl == nullptr) {
308 *errCode = MSERR_EXT_API9_NO_MEMORY;
309 return 0;
310 }
311 return avPlayerImpl->GetWidth();
312 }
313
FfiMediaAVPlayerGetHeight(int64_t id,int32_t * errCode)314 int32_t FfiMediaAVPlayerGetHeight(int64_t id, int32_t *errCode)
315 {
316 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
317 if (avPlayerImpl == nullptr) {
318 *errCode = MSERR_EXT_API9_NO_MEMORY;
319 return 0;
320 }
321 return avPlayerImpl->GetHeight();
322 }
323
FfiMediaAVPlayerPrepare(int64_t id)324 int32_t FfiMediaAVPlayerPrepare(int64_t id)
325 {
326 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
327 if (avPlayerImpl == nullptr) {
328 return MSERR_EXT_API9_NO_MEMORY;
329 }
330 return avPlayerImpl->Prepare();
331 }
332
FfiMediaAVPlayerPlay(int64_t id)333 int32_t FfiMediaAVPlayerPlay(int64_t id)
334 {
335 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
336 if (avPlayerImpl == nullptr) {
337 return MSERR_EXT_API9_NO_MEMORY;
338 }
339 return avPlayerImpl->Play();
340 }
341
FfiMediaAVPlayerPause(int64_t id)342 int32_t FfiMediaAVPlayerPause(int64_t id)
343 {
344 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
345 if (avPlayerImpl == nullptr) {
346 return MSERR_EXT_API9_NO_MEMORY;
347 }
348 return avPlayerImpl->Pause();
349 }
350
FfiMediaAVPlayerStop(int64_t id)351 int32_t FfiMediaAVPlayerStop(int64_t id)
352 {
353 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
354 if (avPlayerImpl == nullptr) {
355 return MSERR_EXT_API9_NO_MEMORY;
356 }
357 return avPlayerImpl->Stop();
358 }
359
FfiMediaAVPlayerReset(int64_t id)360 int32_t FfiMediaAVPlayerReset(int64_t id)
361 {
362 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
363 if (avPlayerImpl == nullptr) {
364 return MSERR_EXT_API9_NO_MEMORY;
365 }
366 return avPlayerImpl->Reset();
367 }
368
FfiMediaAVPlayerRelease(int64_t id)369 int32_t FfiMediaAVPlayerRelease(int64_t id)
370 {
371 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
372 if (avPlayerImpl == nullptr) {
373 return MSERR_EXT_API9_NO_MEMORY;
374 }
375 return avPlayerImpl->Release();
376 }
377
FfiMediaAVPlayerSeek(int64_t id,int32_t time,int32_t mode)378 int32_t FfiMediaAVPlayerSeek(int64_t id, int32_t time, int32_t mode)
379 {
380 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
381 if (avPlayerImpl == nullptr) {
382 return MSERR_EXT_API9_NO_MEMORY;
383 }
384 avPlayerImpl->Seek(time, mode);
385 return MSERR_EXT_API9_OK;
386 }
387
FfiMediaAVPlayerOnStateChange(int64_t id,int64_t callbackId)388 int32_t FfiMediaAVPlayerOnStateChange(int64_t id, int64_t callbackId)
389 {
390 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
391 if (avPlayerImpl == nullptr) {
392 return MSERR_EXT_API9_NO_MEMORY;
393 }
394 return avPlayerImpl->OnStateChange(callbackId);
395 }
396
FfiMediaAVPlayerOffStateChange(int64_t id,int64_t callbackId)397 int32_t FfiMediaAVPlayerOffStateChange(int64_t id, int64_t callbackId)
398 {
399 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
400 if (avPlayerImpl == nullptr) {
401 return MSERR_EXT_API9_NO_MEMORY;
402 }
403 return avPlayerImpl->OffStateChange(callbackId);
404 }
405
FfiMediaAVPlayerOffStateChangeAll(int64_t id)406 int32_t FfiMediaAVPlayerOffStateChangeAll(int64_t id)
407 {
408 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
409 if (avPlayerImpl == nullptr) {
410 return MSERR_EXT_API9_NO_MEMORY;
411 }
412 return avPlayerImpl->OffStateChangeAll();
413 }
414
FfiMediaAVPlayerOnError(int64_t id,int64_t callbackId)415 int32_t FfiMediaAVPlayerOnError(int64_t id, int64_t callbackId)
416 {
417 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
418 if (avPlayerImpl == nullptr) {
419 return MSERR_EXT_API9_NO_MEMORY;
420 }
421 return avPlayerImpl->OnError(callbackId);
422 }
423
FfiMediaAVPlayerOffError(int64_t id,int64_t callbackId)424 int32_t FfiMediaAVPlayerOffError(int64_t id, int64_t callbackId)
425 {
426 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
427 if (avPlayerImpl == nullptr) {
428 return MSERR_EXT_API9_NO_MEMORY;
429 }
430 return avPlayerImpl->OffError(callbackId);
431 }
432
FfiMediaAVPlayerOffErrorAll(int64_t id)433 int32_t FfiMediaAVPlayerOffErrorAll(int64_t id)
434 {
435 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
436 if (avPlayerImpl == nullptr) {
437 return MSERR_EXT_API9_NO_MEMORY;
438 }
439 return avPlayerImpl->OffErrorAll();
440 }
441
FfiMediaAVPlayerOnSeekDone(int64_t id,int64_t callbackId)442 int32_t FfiMediaAVPlayerOnSeekDone(int64_t id, int64_t callbackId)
443 {
444 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
445 if (avPlayerImpl == nullptr) {
446 return MSERR_EXT_API9_NO_MEMORY;
447 }
448 return avPlayerImpl->OnSeekDone(callbackId);
449 }
450
FfiMediaAVPlayerOffSeekDone(int64_t id,int64_t callbackId)451 int32_t FfiMediaAVPlayerOffSeekDone(int64_t id, int64_t callbackId)
452 {
453 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
454 if (avPlayerImpl == nullptr) {
455 return MSERR_EXT_API9_NO_MEMORY;
456 }
457 return avPlayerImpl->OffSeekDone(callbackId);
458 }
459
FfiMediaAVPlayerOffSeekDoneAll(int64_t id)460 int32_t FfiMediaAVPlayerOffSeekDoneAll(int64_t id)
461 {
462 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
463 if (avPlayerImpl == nullptr) {
464 return MSERR_EXT_API9_NO_MEMORY;
465 }
466 return avPlayerImpl->OffSeekDoneAll();
467 }
468
FfiMediaAVPlayerOnSpeedDone(int64_t id,int64_t callbackId)469 int32_t FfiMediaAVPlayerOnSpeedDone(int64_t id, int64_t callbackId)
470 {
471 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
472 if (avPlayerImpl == nullptr) {
473 return MSERR_EXT_API9_NO_MEMORY;
474 }
475 return avPlayerImpl->OnSpeedDone(callbackId);
476 }
477
FfiMediaAVPlayerOffSpeedDone(int64_t id,int64_t callbackId)478 int32_t FfiMediaAVPlayerOffSpeedDone(int64_t id, int64_t callbackId)
479 {
480 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
481 if (avPlayerImpl == nullptr) {
482 return MSERR_EXT_API9_NO_MEMORY;
483 }
484 return avPlayerImpl->OffSpeedDone(callbackId);
485 }
486
FfiMediaAVPlayerOffSpeedDoneAll(int64_t id)487 int32_t FfiMediaAVPlayerOffSpeedDoneAll(int64_t id)
488 {
489 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
490 if (avPlayerImpl == nullptr) {
491 return MSERR_EXT_API9_NO_MEMORY;
492 }
493 return avPlayerImpl->OffSpeedDoneAll();
494 }
495
FfiMediaAVPlayerOnBitRateDone(int64_t id,int64_t callbackId)496 int32_t FfiMediaAVPlayerOnBitRateDone(int64_t id, int64_t callbackId)
497 {
498 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
499 if (avPlayerImpl == nullptr) {
500 return MSERR_EXT_API9_NO_MEMORY;
501 }
502 return avPlayerImpl->OnBitRateDone(callbackId);
503 }
504
FfiMediaAVPlayerOffBitRateDone(int64_t id,int64_t callbackId)505 int32_t FfiMediaAVPlayerOffBitRateDone(int64_t id, int64_t callbackId)
506 {
507 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
508 if (avPlayerImpl == nullptr) {
509 return MSERR_EXT_API9_NO_MEMORY;
510 }
511 return avPlayerImpl->OffBitRateDone(callbackId);
512 }
513
FfiMediaAVPlayerOffBitRateDoneAll(int64_t id)514 int32_t FfiMediaAVPlayerOffBitRateDoneAll(int64_t id)
515 {
516 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
517 if (avPlayerImpl == nullptr) {
518 return MSERR_EXT_API9_NO_MEMORY;
519 }
520 return avPlayerImpl->OffBitRateDoneAll();
521 }
522
FfiMediaAVPlayerOnAvailableBitrates(int64_t id,int64_t callbackId)523 int32_t FfiMediaAVPlayerOnAvailableBitrates(int64_t id, int64_t callbackId)
524 {
525 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
526 if (avPlayerImpl == nullptr) {
527 return MSERR_EXT_API9_NO_MEMORY;
528 }
529 return avPlayerImpl->OnAvailableBitrates(callbackId);
530 }
531
FfiMediaAVPlayerOffAvailableBitrates(int64_t id,int64_t callbackId)532 int32_t FfiMediaAVPlayerOffAvailableBitrates(int64_t id, int64_t callbackId)
533 {
534 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
535 if (avPlayerImpl == nullptr) {
536 return MSERR_EXT_API9_NO_MEMORY;
537 }
538 return avPlayerImpl->OffAvailableBitrates(callbackId);
539 }
540
FfiMediaAVPlayerOffAvailableBitratesAll(int64_t id)541 int32_t FfiMediaAVPlayerOffAvailableBitratesAll(int64_t id)
542 {
543 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
544 if (avPlayerImpl == nullptr) {
545 return MSERR_EXT_API9_NO_MEMORY;
546 }
547 return avPlayerImpl->OffAvailableBitratesAll();
548 }
549
FfiMediaAVPlayerOnMediaKeySystemInfoUpdate(int64_t id,int64_t callbackId)550 int32_t FfiMediaAVPlayerOnMediaKeySystemInfoUpdate(int64_t id, int64_t callbackId)
551 {
552 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
553 if (avPlayerImpl == nullptr) {
554 return MSERR_EXT_API9_NO_MEMORY;
555 }
556 return avPlayerImpl->OnMediaKeySystemInfoUpdate(callbackId);
557 }
558
FfiMediaAVPlayerOffMediaKeySystemInfoUpdate(int64_t id,int64_t callbackId)559 int32_t FfiMediaAVPlayerOffMediaKeySystemInfoUpdate(int64_t id, int64_t callbackId)
560 {
561 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
562 if (avPlayerImpl == nullptr) {
563 return MSERR_EXT_API9_NO_MEMORY;
564 }
565 return avPlayerImpl->OffMediaKeySystemInfoUpdate(callbackId);
566 }
567
FfiMediaAVPlayerOffMediaKeySystemInfoUpdateAll(int64_t id)568 int32_t FfiMediaAVPlayerOffMediaKeySystemInfoUpdateAll(int64_t id)
569 {
570 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
571 if (avPlayerImpl == nullptr) {
572 return MSERR_EXT_API9_NO_MEMORY;
573 }
574 return avPlayerImpl->OffMediaKeySystemInfoUpdateAll();
575 }
576
FfiMediaAVPlayerOnVolumeChange(int64_t id,int64_t callbackId)577 int32_t FfiMediaAVPlayerOnVolumeChange(int64_t id, int64_t callbackId)
578 {
579 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
580 if (avPlayerImpl == nullptr) {
581 return MSERR_EXT_API9_NO_MEMORY;
582 }
583 return avPlayerImpl->OnVolumeChange(callbackId);
584 }
585
FfiMediaAVPlayerOffVolumeChange(int64_t id,int64_t callbackId)586 int32_t FfiMediaAVPlayerOffVolumeChange(int64_t id, int64_t callbackId)
587 {
588 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
589 if (avPlayerImpl == nullptr) {
590 return MSERR_EXT_API9_NO_MEMORY;
591 }
592 return avPlayerImpl->OffVolumeChange(callbackId);
593 }
594
FfiMediaAVPlayerOffVolumeChangeAll(int64_t id)595 int32_t FfiMediaAVPlayerOffVolumeChangeAll(int64_t id)
596 {
597 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
598 if (avPlayerImpl == nullptr) {
599 return MSERR_EXT_API9_NO_MEMORY;
600 }
601 return avPlayerImpl->OffVolumeChangeAll();
602 }
603
FfiMediaAVPlayerOnEndOfStream(int64_t id,int64_t callbackId)604 int32_t FfiMediaAVPlayerOnEndOfStream(int64_t id, int64_t callbackId)
605 {
606 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
607 if (avPlayerImpl == nullptr) {
608 return MSERR_EXT_API9_NO_MEMORY;
609 }
610 return avPlayerImpl->OnEndOfStream(callbackId);
611 }
612
FfiMediaAVPlayerOffEndOfStream(int64_t id,int64_t callbackId)613 int32_t FfiMediaAVPlayerOffEndOfStream(int64_t id, int64_t callbackId)
614 {
615 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
616 if (avPlayerImpl == nullptr) {
617 return MSERR_EXT_API9_NO_MEMORY;
618 }
619 return avPlayerImpl->OffEndOfStream(callbackId);
620 }
621
FfiMediaAVPlayerOffEndOfStreamAll(int64_t id)622 int32_t FfiMediaAVPlayerOffEndOfStreamAll(int64_t id)
623 {
624 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
625 if (avPlayerImpl == nullptr) {
626 return MSERR_EXT_API9_NO_MEMORY;
627 }
628 return avPlayerImpl->OffEndOfStreamAll();
629 }
630
FfiMediaAVPlayerOnTimeUpdate(int64_t id,int64_t callbackId)631 int32_t FfiMediaAVPlayerOnTimeUpdate(int64_t id, int64_t callbackId)
632 {
633 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
634 if (avPlayerImpl == nullptr) {
635 return MSERR_EXT_API9_NO_MEMORY;
636 }
637 return avPlayerImpl->OnTimeUpdate(callbackId);
638 }
639
FfiMediaAVPlayerOffTimeUpdate(int64_t id,int64_t callbackId)640 int32_t FfiMediaAVPlayerOffTimeUpdate(int64_t id, int64_t callbackId)
641 {
642 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
643 if (avPlayerImpl == nullptr) {
644 return MSERR_EXT_API9_NO_MEMORY;
645 }
646 return avPlayerImpl->OffTimeUpdate(callbackId);
647 }
648
FfiMediaAVPlayerOffTimeUpdateAll(int64_t id)649 int32_t FfiMediaAVPlayerOffTimeUpdateAll(int64_t id)
650 {
651 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
652 if (avPlayerImpl == nullptr) {
653 return MSERR_EXT_API9_NO_MEMORY;
654 }
655 return avPlayerImpl->OffTimeUpdateAll();
656 }
657
FfiMediaAVPlayerOnDurationUpdate(int64_t id,int64_t callbackId)658 int32_t FfiMediaAVPlayerOnDurationUpdate(int64_t id, int64_t callbackId)
659 {
660 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
661 if (avPlayerImpl == nullptr) {
662 return MSERR_EXT_API9_NO_MEMORY;
663 }
664 return avPlayerImpl->OnDurationUpdate(callbackId);
665 }
666
FfiMediaAVPlayerOffDurationUpdate(int64_t id,int64_t callbackId)667 int32_t FfiMediaAVPlayerOffDurationUpdate(int64_t id, int64_t callbackId)
668 {
669 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
670 if (avPlayerImpl == nullptr) {
671 return MSERR_EXT_API9_NO_MEMORY;
672 }
673 return avPlayerImpl->OffDurationUpdate(callbackId);
674 }
675
FfiMediaAVPlayerOffDurationUpdateAll(int64_t id)676 int32_t FfiMediaAVPlayerOffDurationUpdateAll(int64_t id)
677 {
678 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
679 if (avPlayerImpl == nullptr) {
680 return MSERR_EXT_API9_NO_MEMORY;
681 }
682 return avPlayerImpl->OffDurationUpdateAll();
683 }
684
FfiMediaAVPlayerOnBufferingUpdate(int64_t id,int64_t callbackId)685 int32_t FfiMediaAVPlayerOnBufferingUpdate(int64_t id, int64_t callbackId)
686 {
687 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
688 if (avPlayerImpl == nullptr) {
689 return MSERR_EXT_API9_NO_MEMORY;
690 }
691 return avPlayerImpl->OnBufferingUpdate(callbackId);
692 }
693
FfiMediaAVPlayerOffBufferingUpdate(int64_t id,int64_t callbackId)694 int32_t FfiMediaAVPlayerOffBufferingUpdate(int64_t id, int64_t callbackId)
695 {
696 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
697 if (avPlayerImpl == nullptr) {
698 return MSERR_EXT_API9_NO_MEMORY;
699 }
700 return avPlayerImpl->OffBufferingUpdate(callbackId);
701 }
702
FfiMediaAVPlayerOffBufferingUpdateAll(int64_t id)703 int32_t FfiMediaAVPlayerOffBufferingUpdateAll(int64_t id)
704 {
705 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
706 if (avPlayerImpl == nullptr) {
707 return MSERR_EXT_API9_NO_MEMORY;
708 }
709 return avPlayerImpl->OffBufferingUpdateAll();
710 }
711
FfiMediaAVPlayerOnStartRenderFrame(int64_t id,int64_t callbackId)712 int32_t FfiMediaAVPlayerOnStartRenderFrame(int64_t id, int64_t callbackId)
713 {
714 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
715 if (avPlayerImpl == nullptr) {
716 return MSERR_EXT_API9_NO_MEMORY;
717 }
718 return avPlayerImpl->OnStartRenderFrame(callbackId);
719 }
720
FfiMediaAVPlayerOffStartRenderFrame(int64_t id,int64_t callbackId)721 int32_t FfiMediaAVPlayerOffStartRenderFrame(int64_t id, int64_t callbackId)
722 {
723 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
724 if (avPlayerImpl == nullptr) {
725 return MSERR_EXT_API9_NO_MEMORY;
726 }
727 return avPlayerImpl->OffStartRenderFrame(callbackId);
728 }
729
FfiMediaAVPlayerOffStartRenderFrameAll(int64_t id)730 int32_t FfiMediaAVPlayerOffStartRenderFrameAll(int64_t id)
731 {
732 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
733 if (avPlayerImpl == nullptr) {
734 return MSERR_EXT_API9_NO_MEMORY;
735 }
736 return avPlayerImpl->OffStartRenderFrameAll();
737 }
738
FfiMediaAVPlayerOnVideoSizeChange(int64_t id,int64_t callbackId)739 int32_t FfiMediaAVPlayerOnVideoSizeChange(int64_t id, int64_t callbackId)
740 {
741 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
742 if (avPlayerImpl == nullptr) {
743 return MSERR_EXT_API9_NO_MEMORY;
744 }
745 return avPlayerImpl->OnVideoSizeChange(callbackId);
746 }
747
FfiMediaAVPlayerOffVideoSizeChange(int64_t id,int64_t callbackId)748 int32_t FfiMediaAVPlayerOffVideoSizeChange(int64_t id, int64_t callbackId)
749 {
750 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
751 if (avPlayerImpl == nullptr) {
752 return MSERR_EXT_API9_NO_MEMORY;
753 }
754 return avPlayerImpl->OffVideoSizeChange(callbackId);
755 }
756
FfiMediaAVPlayerOffVideoSizeChangeAll(int64_t id)757 int32_t FfiMediaAVPlayerOffVideoSizeChangeAll(int64_t id)
758 {
759 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
760 if (avPlayerImpl == nullptr) {
761 return MSERR_EXT_API9_NO_MEMORY;
762 }
763 return avPlayerImpl->OffVideoSizeChangeAll();
764 }
765
FfiMediaAVPlayerOnAudioInterrupt(int64_t id,int64_t callbackId)766 int32_t FfiMediaAVPlayerOnAudioInterrupt(int64_t id, int64_t callbackId)
767 {
768 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
769 if (avPlayerImpl == nullptr) {
770 return MSERR_EXT_API9_NO_MEMORY;
771 }
772 return avPlayerImpl->OnAudioInterrupt(callbackId);
773 }
774
FfiMediaAVPlayerOffAudioInterrupt(int64_t id,int64_t callbackId)775 int32_t FfiMediaAVPlayerOffAudioInterrupt(int64_t id, int64_t callbackId)
776 {
777 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
778 if (avPlayerImpl == nullptr) {
779 return MSERR_EXT_API9_NO_MEMORY;
780 }
781 return avPlayerImpl->OffAudioInterrupt(callbackId);
782 }
783
FfiMediaAVPlayerOffAudioInterruptAll(int64_t id)784 int32_t FfiMediaAVPlayerOffAudioInterruptAll(int64_t id)
785 {
786 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
787 if (avPlayerImpl == nullptr) {
788 return MSERR_EXT_API9_NO_MEMORY;
789 }
790 return avPlayerImpl->OffAudioInterruptAll();
791 }
792
FfiMediaAVPlayerOnAudioDeviceChange(int64_t id,int64_t callbackId)793 int32_t FfiMediaAVPlayerOnAudioDeviceChange(int64_t id, int64_t callbackId)
794 {
795 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
796 if (avPlayerImpl == nullptr) {
797 return MSERR_EXT_API9_NO_MEMORY;
798 }
799 return avPlayerImpl->OnAudioDeviceChange(callbackId);
800 }
801
FfiMediaAVPlayerOffAudioDeviceChange(int64_t id,int64_t callbackId)802 int32_t FfiMediaAVPlayerOffAudioDeviceChange(int64_t id, int64_t callbackId)
803 {
804 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
805 if (avPlayerImpl == nullptr) {
806 return MSERR_EXT_API9_NO_MEMORY;
807 }
808 return avPlayerImpl->OffAudioDeviceChange(callbackId);
809 }
810
FfiMediaAVPlayerOffAudioDeviceChangeAll(int64_t id)811 int32_t FfiMediaAVPlayerOffAudioDeviceChangeAll(int64_t id)
812 {
813 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
814 if (avPlayerImpl == nullptr) {
815 return MSERR_EXT_API9_NO_MEMORY;
816 }
817 return avPlayerImpl->OffAudioDeviceChangeAll();
818 }
819
FfiMediaAVPlayerOnSubtitleUpdate(int64_t id,int64_t callbackId)820 int32_t FfiMediaAVPlayerOnSubtitleUpdate(int64_t id, int64_t callbackId)
821 {
822 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
823 if (avPlayerImpl == nullptr) {
824 return MSERR_EXT_API9_NO_MEMORY;
825 }
826 return avPlayerImpl->OnSubtitleUpdate(callbackId);
827 }
828
FfiMediaAVPlayerOffSubtitleUpdate(int64_t id,int64_t callbackId)829 int32_t FfiMediaAVPlayerOffSubtitleUpdate(int64_t id, int64_t callbackId)
830 {
831 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
832 if (avPlayerImpl == nullptr) {
833 return MSERR_EXT_API9_NO_MEMORY;
834 }
835 return avPlayerImpl->OffSubtitleUpdate(callbackId);
836 }
837
FfiMediaAVPlayerOffSubtitleUpdateAll(int64_t id)838 int32_t FfiMediaAVPlayerOffSubtitleUpdateAll(int64_t id)
839 {
840 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
841 if (avPlayerImpl == nullptr) {
842 return MSERR_EXT_API9_NO_MEMORY;
843 }
844 return avPlayerImpl->OffSubtitleUpdateAll();
845 }
846
FfiMediaAVPlayerOnTrackChange(int64_t id,int64_t callbackId)847 int32_t FfiMediaAVPlayerOnTrackChange(int64_t id, int64_t callbackId)
848 {
849 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
850 if (avPlayerImpl == nullptr) {
851 return MSERR_EXT_API9_NO_MEMORY;
852 }
853 return avPlayerImpl->OnTrackChange(callbackId);
854 }
855
FfiMediaAVPlayerOffTrackChange(int64_t id,int64_t callbackId)856 int32_t FfiMediaAVPlayerOffTrackChange(int64_t id, int64_t callbackId)
857 {
858 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
859 if (avPlayerImpl == nullptr) {
860 return MSERR_EXT_API9_NO_MEMORY;
861 }
862 return avPlayerImpl->OffTrackChange(callbackId);
863 }
864
FfiMediaAVPlayerOffTrackChangeAll(int64_t id)865 int32_t FfiMediaAVPlayerOffTrackChangeAll(int64_t id)
866 {
867 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
868 if (avPlayerImpl == nullptr) {
869 return MSERR_EXT_API9_NO_MEMORY;
870 }
871 return avPlayerImpl->OffTrackChangeAll();
872 }
873
FfiMediaAVPlayerOnTrackInfoUpdate(int64_t id,int64_t callbackId)874 int32_t FfiMediaAVPlayerOnTrackInfoUpdate(int64_t id, int64_t callbackId)
875 {
876 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
877 if (avPlayerImpl == nullptr) {
878 return MSERR_EXT_API9_NO_MEMORY;
879 }
880 return avPlayerImpl->OnTrackInfoUpdate(callbackId);
881 }
882
FfiMediaAVPlayerOffTrackInfoUpdate(int64_t id,int64_t callbackId)883 int32_t FfiMediaAVPlayerOffTrackInfoUpdate(int64_t id, int64_t callbackId)
884 {
885 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
886 if (avPlayerImpl == nullptr) {
887 return MSERR_EXT_API9_NO_MEMORY;
888 }
889 return avPlayerImpl->OffTrackInfoUpdate(callbackId);
890 }
891
FfiMediaAVPlayerOffTrackInfoUpdateAll(int64_t id)892 int32_t FfiMediaAVPlayerOffTrackInfoUpdateAll(int64_t id)
893 {
894 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
895 if (avPlayerImpl == nullptr) {
896 return MSERR_EXT_API9_NO_MEMORY;
897 }
898 return avPlayerImpl->OffTrackInfoUpdateAll();
899 }
900
FfiMediaAVPlayerOnAmplitudeUpdate(int64_t id,int64_t callbackId)901 int32_t FfiMediaAVPlayerOnAmplitudeUpdate(int64_t id, int64_t callbackId)
902 {
903 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
904 if (avPlayerImpl == nullptr) {
905 return MSERR_EXT_API9_NO_MEMORY;
906 }
907 return avPlayerImpl->OnAmplitudeUpdate(callbackId);
908 }
909
FfiMediaAVPlayerOffAmplitudeUpdate(int64_t id,int64_t callbackId)910 int32_t FfiMediaAVPlayerOffAmplitudeUpdate(int64_t id, int64_t callbackId)
911 {
912 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
913 if (avPlayerImpl == nullptr) {
914 return MSERR_EXT_API9_NO_MEMORY;
915 }
916 return avPlayerImpl->OffAmplitudeUpdate(callbackId);
917 }
918
FfiMediaAVPlayerOffAmplitudeUpdateAll(int64_t id)919 int32_t FfiMediaAVPlayerOffAmplitudeUpdateAll(int64_t id)
920 {
921 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
922 if (avPlayerImpl == nullptr) {
923 return MSERR_EXT_API9_NO_MEMORY;
924 }
925 return avPlayerImpl->OffAmplitudeUpdateAll();
926 }
927
FfiMediaAVPlayerSetMediaSource(int64_t id,int64_t srcId,CPlayStrategy strategy)928 int32_t FfiMediaAVPlayerSetMediaSource(int64_t id, int64_t srcId, CPlayStrategy strategy)
929 {
930 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
931 if (avPlayerImpl == nullptr) {
932 return MSERR_EXT_API9_NO_MEMORY;
933 }
934 auto mediaSrcImpl = FFIData::GetData<CJMediaSource>(srcId);
935 if (mediaSrcImpl == nullptr) {
936 return MSERR_EXT_API9_NO_MEMORY;
937 }
938 return avPlayerImpl->SetMediaSource(mediaSrcImpl->mediaSource, ConvertCPlaystrategy(strategy));
939 }
940
FfiMediaAVPlayerSetPlaybackStrategy(int64_t id,CPlayStrategy strategy)941 int32_t FfiMediaAVPlayerSetPlaybackStrategy(int64_t id, CPlayStrategy strategy)
942 {
943 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
944 if (avPlayerImpl == nullptr) {
945 return MSERR_EXT_API9_NO_MEMORY;
946 }
947 return avPlayerImpl->SetPlaybackStrategy(ConvertCPlaystrategy(strategy));
948 }
949
FfiMediaAVPlayerSetMediaMuted(int64_t id,int32_t mediaType,bool muted)950 int32_t FfiMediaAVPlayerSetMediaMuted(int64_t id, int32_t mediaType, bool muted)
951 {
952 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
953 if (avPlayerImpl == nullptr) {
954 return MSERR_EXT_API9_NO_MEMORY;
955 }
956 return avPlayerImpl->SetMediaMuted(mediaType, muted);
957 }
958
FfiMediaAVPlayerGetSelectedTracks(int64_t id,int32_t * errCode)959 CArrI32 FfiMediaAVPlayerGetSelectedTracks(int64_t id, int32_t *errCode)
960 {
961 CArrI32 ret = {.head = nullptr, .size = 0};
962 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
963 if (avPlayerImpl == nullptr) {
964 *errCode = MSERR_EXT_API9_NO_MEMORY;
965 return ret;
966 }
967 std::vector<int32_t> tracks;
968 *errCode = avPlayerImpl->GetSelectedTracks(tracks);
969 if (*errCode != MSERR_EXT_API9_OK) {
970 return ret;
971 }
972 *errCode = VectorToRetData<CArrI32, int32_t>(ret, tracks);
973 return ret;
974 }
975
FfiMediaAVPlayerSelectTrack(int64_t id,int32_t index,int32_t mode)976 int32_t FfiMediaAVPlayerSelectTrack(int64_t id, int32_t index, int32_t mode)
977 {
978 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
979 if (avPlayerImpl == nullptr) {
980 return MSERR_EXT_API9_NO_MEMORY;
981 }
982 return avPlayerImpl->SelectTrack(index, mode);
983 }
984
FfiMediaAVPlayerDeselectTrack(int64_t id,int32_t index)985 int32_t FfiMediaAVPlayerDeselectTrack(int64_t id, int32_t index)
986 {
987 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
988 if (avPlayerImpl == nullptr) {
989 return MSERR_EXT_API9_NO_MEMORY;
990 }
991 return avPlayerImpl->DeselectTrack(index);
992 }
993
FreeCArrCMediaKeySystemInfo(CArrCMediaKeySystemInfo & info,int64_t index,bool isUuidNeed)994 void FreeCArrCMediaKeySystemInfo(CArrCMediaKeySystemInfo &info, int64_t index, bool isUuidNeed)
995 {
996 for (int64_t i = 0; i < index; i++) {
997 free(info.head[i].uuid);
998 free(info.head[i].pssh.head);
999 info.head[i].uuid = nullptr;
1000 info.head[i].pssh.head = nullptr;
1001 }
1002 if (isUuidNeed) {
1003 free(info.head[index].uuid);
1004 info.head[index].uuid = nullptr;
1005 }
1006 }
1007
FfiMediaAVPlayerSetSpeed(int64_t id,int32_t speed)1008 void FfiMediaAVPlayerSetSpeed(int64_t id, int32_t speed)
1009 {
1010 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
1011 if (avPlayerImpl == nullptr) {
1012 MEDIA_LOGE("failed to get CJAVPlayer");
1013 return;
1014 }
1015 avPlayerImpl->SetSpeed(speed);
1016 }
1017
FfiMediaAVPlayerSetBitrate(int64_t id,int32_t bitrate)1018 void FfiMediaAVPlayerSetBitrate(int64_t id, int32_t bitrate)
1019 {
1020 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
1021 if (avPlayerImpl == nullptr) {
1022 MEDIA_LOGE("failed to get CJAVPlayer");
1023 return;
1024 }
1025 avPlayerImpl->SetBitrate(bitrate);
1026 }
1027
FfiMediaAVPlayerSetVolume(int64_t id,float volume)1028 void FfiMediaAVPlayerSetVolume(int64_t id, float volume)
1029 {
1030 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
1031 if (avPlayerImpl == nullptr) {
1032 MEDIA_LOGE("failed to get CJAVPlayer");
1033 return;
1034 }
1035 avPlayerImpl->SetVolume(volume);
1036 }
1037
FfiMediaAVPlayerAddSubtitleFromFd(int64_t id,int32_t fd,int64_t offset,int64_t length)1038 int32_t FfiMediaAVPlayerAddSubtitleFromFd(int64_t id, int32_t fd, int64_t offset, int64_t length)
1039 {
1040 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
1041 if (avPlayerImpl == nullptr) {
1042 MEDIA_LOGE("failed to get CJAVPlayer");
1043 return MSERR_EXT_API9_NO_MEMORY;
1044 }
1045 return avPlayerImpl->AddSubtitleFromFd(fd, offset, length);
1046 }
1047
FfiMediaAVPlayerAddSubtitleFromUrl(int64_t id,char * url)1048 int32_t FfiMediaAVPlayerAddSubtitleFromUrl(int64_t id, char *url)
1049 {
1050 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
1051 if (avPlayerImpl == nullptr) {
1052 MEDIA_LOGE("failed to get CJAVPlayer");
1053 return MSERR_EXT_API9_NO_MEMORY;
1054 }
1055 return avPlayerImpl->AddSubtitleFromUrl(std::string(url));
1056 }
1057
FreeCPlaybackInfos(CPlaybackInfo * infos,int64_t index)1058 void FreeCPlaybackInfos(CPlaybackInfo *infos, int64_t index)
1059 {
1060 for (int64_t i = 0; i < index; i++) {
1061 free(infos[i].value);
1062 infos[i].value = nullptr;
1063 }
1064 free(infos);
1065 }
1066
GetServerIpAddress(Format & format,CPlaybackInfo * infos,int64_t & index)1067 bool GetServerIpAddress(Format &format, CPlaybackInfo *infos, int64_t &index)
1068 {
1069 std::string ip;
1070 if (format.GetStringValue(PlaybackInfoKey::SERVER_IP_ADDRESS, ip)) {
1071 char *data = MallocCString(ip);
1072 if (data == nullptr) {
1073 free(infos);
1074 return false;
1075 }
1076 infos[index].value = static_cast<void *>(data);
1077 infos[index].key = g_serverIpAddressCode;
1078 index++;
1079 }
1080 return true;
1081 }
1082
GetAvgDnowloadRate(Format & format,CPlaybackInfo * infos,int64_t & index)1083 bool GetAvgDnowloadRate(Format &format, CPlaybackInfo *infos, int64_t &index)
1084 {
1085 int64_t avgDnowloadRate;
1086 if (format.GetLongValue(PlaybackInfoKey::AVG_DOWNLOAD_RATE, avgDnowloadRate)) {
1087 infos[index].value = MallocObject<int64_t>(avgDnowloadRate);
1088 if (infos[index].value == nullptr) {
1089 FreeCPlaybackInfos(infos, index);
1090 return false;
1091 }
1092 infos[index].key = g_avgDownloadRateCode;
1093 index++;
1094 }
1095 return true;
1096 }
1097
GetDnowloadRate(Format & format,CPlaybackInfo * infos,int64_t & index)1098 bool GetDnowloadRate(Format &format, CPlaybackInfo *infos, int64_t &index)
1099 {
1100 int64_t dnowloadRate;
1101 if (format.GetLongValue(PlaybackInfoKey::DOWNLOAD_RATE, dnowloadRate)) {
1102 infos[index].value = MallocObject<int64_t>(dnowloadRate);
1103 if (infos[index].value == nullptr) {
1104 FreeCPlaybackInfos(infos, index);
1105 return false;
1106 }
1107 infos[index].key = g_downloadRateCode;
1108 index++;
1109 }
1110 return true;
1111 }
1112
ConvertPlaybackInfo(Format & format,int32_t * errCode)1113 CArrCPlaybackInfo ConvertPlaybackInfo(Format &format, int32_t *errCode)
1114 {
1115 CArrCPlaybackInfo ret = {.infos = nullptr, .size = 0};
1116 auto formatMap = format.GetFormatMap();
1117 auto size = static_cast<int64_t>(formatMap.size());
1118 if (size <= 0) {
1119 return ret;
1120 }
1121 *errCode = MSERR_EXT_API9_NO_MEMORY;
1122 CPlaybackInfo *infos = static_cast<CPlaybackInfo *>(malloc(sizeof(CPlaybackInfo) * size));
1123 if (infos == nullptr) {
1124 return ret;
1125 }
1126 int64_t index = 0;
1127 if (!GetServerIpAddress(format, infos, index)) {
1128 return ret;
1129 }
1130 if (!GetAvgDnowloadRate(format, infos, index)) {
1131 return ret;
1132 }
1133 if (!GetDnowloadRate(format, infos, index)) {
1134 return ret;
1135 }
1136 int32_t isDnowloading;
1137 if (format.GetIntValue(PlaybackInfoKey::IS_DOWNLOADING, isDnowloading)) {
1138 infos[index].value = MallocObject<int32_t>(isDnowloading);
1139 if (infos[index].value == nullptr) {
1140 FreeCPlaybackInfos(infos, index);
1141 return ret;
1142 }
1143 infos[index].key = g_isDownloadingCode;
1144 index++;
1145 }
1146 int64_t bufferDuration;
1147 if (format.GetLongValue(PlaybackInfoKey::BUFFER_DURATION, bufferDuration)) {
1148 infos[index].value = MallocObject<int64_t>(bufferDuration);
1149 if (infos[index].value == nullptr) {
1150 FreeCPlaybackInfos(infos, index);
1151 return ret;
1152 }
1153 infos[index].key = g_bufferDurationCode;
1154 }
1155 ret.infos = infos;
1156 ret.size = size;
1157 *errCode = MSERR_EXT_API9_OK;
1158 return ret;
1159 }
1160
FfiMediaAVPlayerGetPlaybackInfo(int64_t id,int32_t * errCode)1161 CArrCPlaybackInfo FfiMediaAVPlayerGetPlaybackInfo(int64_t id, int32_t *errCode)
1162 {
1163 CArrCPlaybackInfo info = {.infos = nullptr, .size = 0};
1164 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
1165 if (avPlayerImpl == nullptr) {
1166 MEDIA_LOGE("failed to get CJAVPlayer");
1167 *errCode = MSERR_EXT_API9_NO_MEMORY;
1168 return info;
1169 }
1170 Format format;
1171 *errCode = avPlayerImpl->GetPlaybackInfo(format);
1172 if (*errCode != MSERR_EXT_API9_OK) {
1173 return info;
1174 }
1175 return ConvertPlaybackInfo(format, errCode);
1176 }
1177
FfiMediaAVPlayerGetTrackDescription(int64_t id,int32_t * errCode)1178 CArrCMediaDescription FfiMediaAVPlayerGetTrackDescription(int64_t id, int32_t *errCode)
1179 {
1180 CArrCMediaDescription info = {.head = nullptr, .size = 0};
1181 auto avPlayerImpl = FFIData::GetData<CJAVPlayer>(id);
1182 if (avPlayerImpl == nullptr) {
1183 MEDIA_LOGE("failed to get CJAVPlayer");
1184 *errCode = MSERR_EXT_API9_NO_MEMORY;
1185 return info;
1186 }
1187 std::vector<Format> trackInfos;
1188 *errCode = avPlayerImpl->GetTrackDescription(trackInfos);
1189 if (*errCode != MSERR_EXT_API9_OK) {
1190 return info;
1191 }
1192 return Convert2CArrCMediaDescription(trackInfos);
1193 }
1194 } // extern "C"
1195 } // namespace Media
1196 } // namespace OHOS