123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- #ifndef JNI_STREAM_PLAYER_H_
- #define JNI_STREAM_PLAYER_H_
- #include <string>
- #include "audio_parameter.h"
- namespace base {
- class AudioPlayer {
- public:
- typedef void (*CompletionCallback)(AudioPlayer* player,
- int what, void* user_data);
- typedef void (*ErrorCallback)(AudioPlayer* player,
- int what, const std::string& str, void* user_data);
- public:
- AudioPlayer(const AudioParameter& parameter);
- virtual ~AudioPlayer();
- int Play();
- int Pause();
- int Resume();
- int Stop();
- int PutSamples(const uint8_t* samples, int length);
- /**
- * 当前播放位置
- */
- double GetCurrentPositon();
- /**
- * 总时长
- */
- double GetDuration();
- /*
- * vol 0.0 ~ 1.0
- * 平台无关
- */
- int SetVolume(float volume);
- /**
- * 平台相关
- */
- int SetVolume2(int volume);
- int SetMute(bool mute);
- void set_error_callback(AudioPlayer::ErrorCallback callback, void* user_data);
- void set_completion_callback(AudioPlayer::CompletionCallback callback, void* user_data);
- /**
- * 设置读取超时时间, 防止Play接口长时间阻塞
- * 默认5000毫秒
- */
- void set_read_timeout(int millis);
- private:
- class Impl;
- Impl* impl_;
- };
- } /* namespace fy */
- extern "C" base::AudioPlayer* CreateAudioPlayer();
- extern "C" void DestroyAudioPlayer(base::AudioPlayer* stream_player);
- /**
- * 当所有的StreamPlayer停止播放后,将关闭音频输出设备
- * 默认延迟5000毫秒关闭
- * @param millis 延迟时间 (毫秒)
- */
- extern "C" void SetAudioPlayerDisableAudioOutputDeviceDelayed(int millis);
- struct StreamPlayerMuteHandler {
- /**
- * 播放器设置是否静音
- * @param mute
- * @return
- */
- int (*SetMute)(bool mute);
- /**
- * 是否静音,静音返回true
- * @return
- */
- bool (*GetMute)();
- };
- extern "C" void SetAudioPlayerMuteHandler(const StreamPlayerMuteHandler& handler);
- #endif /* JNI_STREAM_PLAYER_H_ */
|