279 lines
8.0 KiB
C++
279 lines
8.0 KiB
C++
/*
|
|
* Copyright (c) 2020 Amlogic, Inc. All rights reserved.
|
|
*
|
|
* This source code is subject to the terms and conditions defined in the
|
|
* file 'LICENSE' which is part of this source code package.
|
|
*
|
|
* Description:
|
|
*/
|
|
|
|
#define LOG_NDEBUG 0
|
|
#define LOG_TAG "AmlMpMediaPlayer"
|
|
#include <Aml_MP/Aml_MediaPlayer.h>
|
|
#include "Aml_MP_MediaPlayerImpl.h"
|
|
#include "utils/AmlMpUtils.h"
|
|
#include "utils/AmlMpHandle.h"
|
|
|
|
static const char* mName = LOG_TAG;
|
|
|
|
using namespace aml_mp;
|
|
|
|
int Aml_MP_MediaPlayer_Create(AML_MP_MEDIAPLAYER* handle)
|
|
{
|
|
sptr<AmlMpMediaPlayerImpl> player = new AmlMpMediaPlayerImpl();
|
|
player->incStrong(player.get());
|
|
|
|
*handle = aml_handle_cast(player);
|
|
|
|
MLOG();
|
|
return 0;
|
|
}
|
|
|
|
int Aml_MP_MediaPlayer_Destroy(AML_MP_MEDIAPLAYER handle)
|
|
{
|
|
MLOG();
|
|
//release
|
|
sptr<AmlMpMediaPlayerImpl> player = aml_handle_cast<AmlMpMediaPlayerImpl>(handle);
|
|
RETURN_IF(-1, player == nullptr);
|
|
player->reset();
|
|
|
|
MLOG();
|
|
//destroy
|
|
player->decStrong(handle);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int Aml_MP_MediaPlayer_SetANativeWindow(AML_MP_MEDIAPLAYER handle, ANativeWindow* nativeWindow)
|
|
{
|
|
sptr<AmlMpMediaPlayerImpl> player = aml_handle_cast<AmlMpMediaPlayerImpl>(handle);
|
|
RETURN_IF(-1, player == nullptr);
|
|
|
|
return player->setANativeWindow(nativeWindow);
|
|
}
|
|
|
|
int Aml_MP_MediaPlayer_SetVideoWindow(AML_MP_MEDIAPLAYER handle, int32_t x, int32_t y, int32_t width, int32_t height)
|
|
{
|
|
sptr<AmlMpMediaPlayerImpl> player = aml_handle_cast<AmlMpMediaPlayerImpl>(handle);
|
|
RETURN_IF(-1, player == nullptr);
|
|
|
|
return player->setVideoWindow(x, y, width, height);
|
|
}
|
|
|
|
int Aml_MP_MediaPlayer_SetDataSource(AML_MP_MEDIAPLAYER handle, const char *uri)
|
|
{
|
|
sptr<AmlMpMediaPlayerImpl> player = aml_handle_cast<AmlMpMediaPlayerImpl>(handle);
|
|
RETURN_IF(-1, player == nullptr);
|
|
|
|
return player->setDataSource(uri);
|
|
}
|
|
|
|
int Aml_MP_MediaPlayer_Prepare(AML_MP_MEDIAPLAYER handle)
|
|
{
|
|
sptr<AmlMpMediaPlayerImpl> player = aml_handle_cast<AmlMpMediaPlayerImpl>(handle);
|
|
RETURN_IF(-1, player == nullptr);
|
|
|
|
return player->prepare();
|
|
}
|
|
|
|
int Aml_MP_MediaPlayer_PrepareAsync(AML_MP_MEDIAPLAYER handle)
|
|
{
|
|
sptr<AmlMpMediaPlayerImpl> player = aml_handle_cast<AmlMpMediaPlayerImpl>(handle);
|
|
RETURN_IF(-1, player == nullptr);
|
|
|
|
return player->prepareAsync();
|
|
}
|
|
|
|
int Aml_MP_MediaPlayer_Start(AML_MP_MEDIAPLAYER handle)
|
|
{
|
|
sptr<AmlMpMediaPlayerImpl> player = aml_handle_cast<AmlMpMediaPlayerImpl>(handle);
|
|
RETURN_IF(-1, player == nullptr);
|
|
|
|
return player->start();
|
|
}
|
|
|
|
int Aml_MP_MediaPlayer_SeekTo(AML_MP_MEDIAPLAYER handle, int msec)
|
|
{
|
|
sptr<AmlMpMediaPlayerImpl> player = aml_handle_cast<AmlMpMediaPlayerImpl>(handle);
|
|
RETURN_IF(-1, player == nullptr);
|
|
|
|
return player->seekTo(msec);
|
|
}
|
|
|
|
int Aml_MP_MediaPlayer_Pause(AML_MP_MEDIAPLAYER handle)
|
|
{
|
|
sptr<AmlMpMediaPlayerImpl> player = aml_handle_cast<AmlMpMediaPlayerImpl>(handle);
|
|
RETURN_IF(-1, player == nullptr);
|
|
|
|
return player->pause();
|
|
}
|
|
|
|
int Aml_MP_MediaPlayer_Resume(AML_MP_MEDIAPLAYER handle)
|
|
{
|
|
sptr<AmlMpMediaPlayerImpl> player = aml_handle_cast<AmlMpMediaPlayerImpl>(handle);
|
|
RETURN_IF(-1, player == nullptr);
|
|
|
|
return player->resume();
|
|
}
|
|
|
|
int Aml_MP_MediaPlayer_Stop(AML_MP_MEDIAPLAYER handle)
|
|
{
|
|
sptr<AmlMpMediaPlayerImpl> player = aml_handle_cast<AmlMpMediaPlayerImpl>(handle);
|
|
RETURN_IF(-1, player == nullptr);
|
|
|
|
return player->stop();
|
|
}
|
|
|
|
int Aml_MP_MediaPlayer_Reset(AML_MP_MEDIAPLAYER handle)
|
|
{
|
|
sptr<AmlMpMediaPlayerImpl> player = aml_handle_cast<AmlMpMediaPlayerImpl>(handle);
|
|
RETURN_IF(-1, player == nullptr);
|
|
|
|
return player->reset();
|
|
}
|
|
|
|
int Aml_MP_MediaPlayer_GetCurrentPosition(AML_MP_MEDIAPLAYER handle, int* msec)
|
|
{
|
|
sptr<AmlMpMediaPlayerImpl> player = aml_handle_cast<AmlMpMediaPlayerImpl>(handle);
|
|
RETURN_IF(-1, player == nullptr);
|
|
|
|
return player->getCurrentPosition(msec);
|
|
}
|
|
|
|
int Aml_MP_MediaPlayer_GetDuration(AML_MP_MEDIAPLAYER handle, int* msec)
|
|
{
|
|
sptr<AmlMpMediaPlayerImpl> player = aml_handle_cast<AmlMpMediaPlayerImpl>(handle);
|
|
RETURN_IF(-1, player == nullptr);
|
|
|
|
return player->getDuration(msec);
|
|
}
|
|
|
|
int Aml_MP_MediaPlayer_SetMute(AML_MP_MEDIAPLAYER handle, bool mute)
|
|
{
|
|
sptr<AmlMpMediaPlayerImpl> player = aml_handle_cast<AmlMpMediaPlayerImpl>(handle);
|
|
RETURN_IF(-1, player == nullptr);
|
|
|
|
return player->setMute(mute);
|
|
}
|
|
|
|
int Aml_MP_MediaPlayer_SetVolume(AML_MP_MEDIAPLAYER handle, float volume)
|
|
{
|
|
sptr<AmlMpMediaPlayerImpl> player = aml_handle_cast<AmlMpMediaPlayerImpl>(handle);
|
|
RETURN_IF(-1, player == nullptr);
|
|
|
|
return player->setVolume(volume);
|
|
}
|
|
|
|
int Aml_MP_MediaPlayer_GetVolume(AML_MP_MEDIAPLAYER handle, float* volume)
|
|
{
|
|
sptr<AmlMpMediaPlayerImpl> player = aml_handle_cast<AmlMpMediaPlayerImpl>(handle);
|
|
RETURN_IF(-1, player == nullptr);
|
|
|
|
return player->getVolume(volume);
|
|
}
|
|
|
|
int Aml_MP_MediaPlayer_ShowVideo(AML_MP_MEDIAPLAYER handle)
|
|
{
|
|
sptr<AmlMpMediaPlayerImpl> player = aml_handle_cast<AmlMpMediaPlayerImpl>(handle);
|
|
RETURN_IF(-1, player == nullptr);
|
|
|
|
return player->showVideo();
|
|
}
|
|
|
|
int Aml_MP_MediaPlayer_HideVideo(AML_MP_MEDIAPLAYER handle)
|
|
{
|
|
sptr<AmlMpMediaPlayerImpl> player = aml_handle_cast<AmlMpMediaPlayerImpl>(handle);
|
|
RETURN_IF(-1, player == nullptr);
|
|
|
|
return player->hideVideo();
|
|
}
|
|
|
|
int Aml_MP_MediaPlayer_ShowSubtitle(AML_MP_MEDIAPLAYER handle)
|
|
{
|
|
sptr<AmlMpMediaPlayerImpl> player = aml_handle_cast<AmlMpMediaPlayerImpl>(handle);
|
|
RETURN_IF(-1, player == nullptr);
|
|
|
|
return player->showSubtitle();
|
|
}
|
|
|
|
int Aml_MP_MediaPlayer_HideSubtitle(AML_MP_MEDIAPLAYER handle)
|
|
{
|
|
sptr<AmlMpMediaPlayerImpl> player = aml_handle_cast<AmlMpMediaPlayerImpl>(handle);
|
|
RETURN_IF(-1, player == nullptr);
|
|
|
|
return player->hideSubtitle();
|
|
}
|
|
|
|
int Aml_MP_MediaPlayer_SetSubtitleWindow(AML_MP_MEDIAPLAYER handle, int x, int y, int width, int height)
|
|
{
|
|
sptr<AmlMpMediaPlayerImpl> player = aml_handle_cast<AmlMpMediaPlayerImpl>(handle);
|
|
RETURN_IF(-1, player == nullptr);
|
|
|
|
return player->setSubtitleWindow(x, y, width, height);
|
|
}
|
|
|
|
int Aml_MP_MediaPlayer_Invoke(AML_MP_MEDIAPLAYER handle, Aml_MP_MediaPlayerInvokeRequest* request, Aml_MP_MediaPlayerInvokeReply* reply)
|
|
{
|
|
sptr<AmlMpMediaPlayerImpl> player = aml_handle_cast<AmlMpMediaPlayerImpl>(handle);
|
|
RETURN_IF(-1, player == nullptr);
|
|
|
|
return player->invoke(request, reply);
|
|
}
|
|
|
|
int Aml_MP_MediaPlayer_SetAVSyncSource(AML_MP_MEDIAPLAYER handle, Aml_MP_MediaPlayerAVSyncSource syncSource)
|
|
{
|
|
sptr<AmlMpMediaPlayerImpl> player = aml_handle_cast<AmlMpMediaPlayerImpl>(handle);
|
|
RETURN_IF(-1, player == nullptr);
|
|
|
|
return player->setAVSyncSource(syncSource);
|
|
}
|
|
|
|
int Aml_MP_MediaPlayer_SetParameter(AML_MP_MEDIAPLAYER handle, Aml_MP_MediaPlayerParameterKey key, void* parameter)
|
|
{
|
|
sptr<AmlMpMediaPlayerImpl> player = aml_handle_cast<AmlMpMediaPlayerImpl>(handle);
|
|
RETURN_IF(-1, player == nullptr);
|
|
|
|
return player->setParameter(key, parameter);
|
|
}
|
|
|
|
int Aml_MP_MediaPlayer_GetParameter(AML_MP_MEDIAPLAYER handle, Aml_MP_MediaPlayerParameterKey key, void* parameter)
|
|
{
|
|
sptr<AmlMpMediaPlayerImpl> player = aml_handle_cast<AmlMpMediaPlayerImpl>(handle);
|
|
RETURN_IF(-1, player == nullptr);
|
|
|
|
return player->getParameter(key, parameter);
|
|
}
|
|
|
|
bool Aml_MP_MediaPlayer_IsPlaying(AML_MP_MEDIAPLAYER handle)
|
|
{
|
|
sptr<AmlMpMediaPlayerImpl> player = aml_handle_cast<AmlMpMediaPlayerImpl>(handle);
|
|
RETURN_IF(-1, player == nullptr);
|
|
|
|
return player->isPlaying();
|
|
}
|
|
|
|
int Aml_MP_MediaPlayer_RegisterEventCallBack(AML_MP_MEDIAPLAYER handle, Aml_MP_MediaPlayerEventCallback cb, void* userData)
|
|
{
|
|
sptr<AmlMpMediaPlayerImpl> player = aml_handle_cast<AmlMpMediaPlayerImpl>(handle);
|
|
RETURN_IF(-1, player == nullptr);
|
|
|
|
return player->registerEventCallBack(cb, userData);
|
|
}
|
|
|
|
int Aml_MP_MediaPlayer_SetPlaybackRate(AML_MP_MEDIAPLAYER handle, float rate)
|
|
{
|
|
sptr<AmlMpMediaPlayerImpl> player = aml_handle_cast<AmlMpMediaPlayerImpl>(handle);
|
|
RETURN_IF(-1, player == nullptr);
|
|
|
|
return player->setPlaybackRate(rate);
|
|
}
|
|
|
|
int Aml_MP_MediaPlayer_SetLooping(AML_MP_MEDIAPLAYER handle, int loop)
|
|
{
|
|
sptr<AmlMpMediaPlayerImpl> player = aml_handle_cast<AmlMpMediaPlayerImpl>(handle);
|
|
RETURN_IF(-1, player == nullptr);
|
|
|
|
return player->setLooping(loop);
|
|
}
|
|
|