@@ -1,7 +1,11 @@
# include "../include/Player.hpp"
# include <mutex>
# include <hilog/log.h>
static std : : recursive_mutex audioMutex ;
// 播放回调
static int32_t OnError ( OH_AudioRenderer * renderer , void * userData , OH_AudioStream_Result error ) ;
static int32_t OnWriteData ( OH_AudioRenderer * renderer , void * userData , void * buffer , int32_t length ) ;
@@ -10,7 +14,7 @@ static int32_t OnInterruptEvent(OH_AudioRenderer* renderer, void* userData, OH_A
acgist : : AudioPlayer : : AudioPlayer ( ) {
OH_AudioStream_Result ret = OH_AudioStreamBuilder_Create ( & this - > builder , AUDIOSTREAM_TYPE_RENDERER ) ;
OH_LOG_INFO ( LOG_APP , " 构造 音频构造器:%o" , ret ) ;
OH_LOG_INFO ( LOG_APP , " 配置 音频构造器:%o" , ret ) ;
// 配置音频播放参数
OH_AudioStreamBuilder_SetSamplingRate ( this - > builder , acgist : : samplingRate ) ;
OH_AudioStreamBuilder_SetChannelCount ( this - > builder , acgist : : channelCount ) ;
@@ -18,14 +22,14 @@ acgist::AudioPlayer::AudioPlayer() {
OH_AudioStreamBuilder_SetEncodingType ( this - > builder , OH_AudioStream_EncodingType : : AUDIOSTREAM_ENCODING_TYPE_RAW ) ;
OH_AudioStreamBuilder_SetRendererInfo ( this - > builder , OH_AudioStream_Usage : : AUDIOSTREAM_USAGE_MUSIC ) ;
OH_LOG_DEBUG ( LOG_APP , " 配置音频播放参数:%d %d " , acgist : : samplingRate , acgist : : channelCount ) ;
// 配置回调函数
// 配置音频播放 回调
OH_AudioRenderer_Callbacks callbacks ;
callbacks . OH_AudioRenderer_OnError = OnError ;
callbacks . OH_AudioRenderer_OnWriteData = OnWriteData ;
callbacks . OH_AudioRenderer_OnStreamEvent = OnStreamEvent ;
callbacks . OH_AudioRenderer_OnInterruptEvent = OnInterruptEvent ;
ret = OH_AudioStreamBuilder_SetRendererCallback ( this - > builder , callbacks , this ) ;
OH_LOG_DEBUG ( LOG_APP , " 设置播放回调函数 : %o " , ret ) ;
OH_LOG_DEBUG ( LOG_APP , " 设置音频 播放回调:%o " , ret ) ;
}
acgist : : AudioPlayer : : ~ AudioPlayer ( ) {
@@ -33,18 +37,19 @@ acgist::AudioPlayer::~AudioPlayer() {
if ( this - > builder ! = nullptr ) {
OH_AudioStream_Result ret = OH_AudioStreamBuilder_Destroy ( this - > builder ) ;
this - > builder = nullptr ;
OH_LOG_INFO ( LOG_APP , " 释放音频播放 : %o " , ret ) ;
OH_LOG_INFO ( LOG_APP , " 释放音频构造器 : %o " , ret ) ;
}
}
bool acgist : : AudioPlayer : : start ( ) {
std : : lock_guard < std : : recursive_mutex > audioLock ( audioMutex ) ;
if ( this - > running ) {
return true ;
}
this - > running = true ;
// 构造 音频播放器
// 配置 音频播放器
OH_AudioStream_Result ret = OH_AudioStreamBuilder_GenerateRenderer ( this - > builder , & this - > audioRenderer ) ;
OH_LOG_DEBUG ( LOG_APP , " 构造 音频播放器:%o" , ret ) ;
OH_LOG_DEBUG ( LOG_APP , " 配置 音频播放器:%o" , ret ) ;
// 开始音频播放
ret = OH_AudioRenderer_Start ( this - > audioRenderer ) ;
OH_LOG_DEBUG ( LOG_APP , " 开始音频播放:%o " , ret ) ;
@@ -52,13 +57,11 @@ bool acgist::AudioPlayer::start() {
}
bool acgist : : AudioPlayer : : stop ( ) {
std : : lock_guard < std : : recursive_mutex > audioLock ( audioMutex ) ;
if ( ! this - > running ) {
return true ;
}
this - > running = false ;
if ( this - > audioRenderer = = nullptr ) {
return true ;
}
// 停止音频播放
OH_AudioStream_Result ret = OH_AudioRenderer_Stop ( this - > audioRenderer ) ;
OH_LOG_DEBUG ( LOG_APP , " 停止音频播放:%o " , ret ) ;
@@ -75,7 +78,7 @@ static int32_t OnError(OH_AudioRenderer* renderer, void* userData, OH_AudioStrea
}
static int32_t OnWriteData ( OH_AudioRenderer * renderer , void * userData , void * buffer , int32_t length ) {
// TODO: 混音写入buffer
// TODO: 多个需要 混音写入buffer
return 0 ;
}
@@ -85,6 +88,6 @@ static int32_t OnStreamEvent(OH_AudioRenderer* renderer, void* userData, OH_Audi
}
static int32_t OnInterruptEvent ( OH_AudioRenderer * renderer , void * userData , OH_AudioInterrupt_ForceType type , OH_AudioInterrupt_Hint hint ) {
OH_LOG_DEBUG ( LOG_APP , " 音频播放打断 : %o %o " , type , hint ) ;
OH_LOG_DEBUG ( LOG_APP , " 打断 音频播放:%o %o" , type , hint ) ;
return 0 ;
}