• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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