之前在冰冻做战斗内语音聊天,当时为了进度移植了voicechat,不过从代码质量上,voicechat设计的并不好,尤其是作为一个通用的聊天框架,并不易用。现在总算有空重写一套新的语音聊天库。
在接口上,提供了devices用于遍历设备。
class devices{ public: static std::vector<const PaDeviceInfo*> getInputDevices(); static std::vector<const PaDeviceInfo*> getOutputDevices(); };
提供了sound用于音频设定
class sound{ public: sound(); ~sound(); void start(); void stop(); void th_func(); boost::signals2::signal<void(char *, int)> sigCapture; bool setOutputDevice(PaDeviceIndex index); bool setInputDevice(PaDeviceIndex index); void setsoundsize(); void setechostate(bool on); private: static int inputcallback(const void *input, void *output, unsigned long frameCount, const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags, void *userData); static int outputcallback(const void *input, void *output, unsigned long frameCount, const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags, void *userData); private: };
提供了client用于管理多人聊天
client * create_client(int index = 0); client * get_client(int index); typedef void(*handle_iterator_client)(std::map<int, client*> & set); void iterator_client_set(handle_iterator_client fn); void iterator_client_set(std::function<void(std::map<int, client*> &) > fn); bool destroy_client(int index); int client_count();
client提供了write_buff和read_buff对缓冲区做操作。
相对而言,接口要比voicechat清晰很多。
代码地址:https://github.com/qianqians/vchat.git
时间: 2024-10-12 19:51:13