java线程往缓存里加数据_带缓冲区的多线程读写数据

//vRecorder.hpp

//vov

#ifndef V_RECORDER_HPP

#define V_RECORDER_HPP

#include

#include

#include

#include

#include

#include

#include "Recorder.h"

#include "vBufferChar.hpp"

class vRecorder

{

void *handler_;

std::string config_path_;

int buffer_size_;

public:

vRecorder(std::string config_path,int size);

~vRecorder();

bool init();

bool start();

bool stop();

void release();

int read(char* data,int size);

private:

std::unique_ptr uptr_buffer_;

std::unique_ptr<:thread> uptr_thread_record_;

std::mutex mtx_buf_;

std::condition_variable cv_buf_;

std::atomic flag_record_;

void thread_record();

};

//public

vRecorder::vRecorder(std::string config_path,int size=16000)

:handler_(nullptr),

uptr_buffer_(nullptr),

uptr_thread_record_(nullptr),

flag_record_(false)

{

config_path_=config_path;

uptr_buffer_.reset(new vBufferChar(size));

}

vRecorder::~vRecorder() {

if(flag_record_&&uptr_thread_record_) {

flag_record_=false;

if(uptr_thread_record_->joinable()) {

uptr_thread_record_->join();

}

}

if(handler_) {

Recorder_Release(handler_);

}

std::cout<

}

bool vRecorder::init() {

handler_=Recorder_Init(config_path_.data());

return (!handler_)?false:true;

}

bool vRecorder::start() {

if(handler_&&!uptr_thread_record_&&!flag_record_) {

uptr_thread_record_.reset(new std::thread(&vRecorder::thread_record,this));

flag_record_=(!uptr_thread_record_)?false:true;

}

if(handler_&&uptr_thread_record_) {

flag_record_=true;

}

return flag_record_;

}

bool vRecorder::stop() {

if(flag_record_) {

flag_record_=false;

if(uptr_thread_record_->joinable()) {

uptr_thread_record_->join();

}

}

return true;

}

void vRecorder::release() {

flag_record_=false;

if(uptr_thread_record_->joinable()) {

uptr_thread_record_->join();

}

std::cout<

}

int vRecorder::read(char*data,int size) {

if(size<=0) {

return 0;

}

int read_size=0;

{

std::unique_lock<:mutex> lock(mtx_buf_);

cv_buf_.wait(lock,[this]{return uptr_buffer_->size()>0;});

read_size=uptr_buffer_->read(data,size);

}

return read_size;

}

//private

void vRecorder::thread_record() {

while(flag_record_) {

int16_t *data{nullptr};

int res=Recorder_Read(handler_,&data);

if(res>0) {

{

std::unique_lock<:mutex> lock(mtx_buf_);

uptr_buffer_->write((const char*)data,res<<1);

cv_buf_.notify_all();

}

}

}

}

#endif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
V Recorder是一款稳定且流畅的屏幕录像机/游戏录像机/适用于Android的录像机,也是功能强大的多合一视频编辑器。VideoShow Recorder由VideoShow应用程序的同一团队创建,拥有超过4亿用户。它是最易于使用的免费屏幕录像机,其音频已被全球500万用户选择。 VideoShow Recorder允许您在玩游戏时录制游戏,一键捕获屏幕以及编辑有滤镜,效果和音乐的视频。没有水印,也没有录制时间限制,您可以使用V Recorder进行高质量的屏幕录制并清除屏幕快照,而不会生根。 主要优点 ➤强大的录制功能: ✓您可以在录制或捕获屏幕时轻松隐藏无帧视频的录制窗口,将宽高比更改为宽屏,垂直或正方形。 ✓这是一款稳定的屏幕录像机,可让您记录任何应用程序的教程并捕获屏幕视频。 ✓只需一键即可开始在手机上录制所有声音,一键点击可随时暂停/恢复。 ✓简单的界面,超级容易在玩时录制游戏,录制视频通话或现场表演,捕获屏幕截图,录制屏幕和编辑图像。 ✓高质量和自定义设置:1440p分辨率,12.0Mbps质量,60 FPS,支持高清视频,纵向和横向视频定向。您可以随意更改视频设置以满足您的需求,并录制清晰流畅的视频或屏幕截图。 ➤专业视频编辑: —时髦的滤镜:我们提供了流行的滤镜,例如平滑/增白/超薄/女神/自然滤镜,使您的视频独一无二。 —可爱的贴纸:具有有趣的贴纸/ GIF /模因/表情符号主题,您可以通过简单的步骤制作受欢迎的视频,录制屏幕。 —单调的主题:我们有超过100种精心制作的免费主题,其中包括适合所有场合的圣诞节/玛卡龙/珍贵回忆录。 —数千份完全许可的音乐:您可以在线下载音乐或从设备添加本地歌曲。您甚至可以录制自己的声音,或使用我们的声音效果(例如卡通人物/机器人)使您的视频更酷。 —免费的视频编辑器:轻松剪切/合并/修剪/分割/反向/重复/旋转/拼贴/压缩/过渡/剪切您的录制剪辑。 —速度控制:使用快/慢更改视频的速度。随意将背景图片添加到垂直视频或对其进行模糊处理。 —魔术刷:触摸屏可绘制,涂鸦任何您想要制作原始视频的内容。您甚至可以模糊图像,对图像进行像素化以覆盖您不想显示的区域。或将视频转换为GIF,录制屏幕。VideoShow Recorder为您提供制作流行视频的最专业的编辑工具。 ➤在社交媒体上与朋友共享您的录制剪辑: ✓VideoShow Recorder /游戏录像机/视频录像机可以将手机屏幕录制为HD模式或快速模式。选择您需要的模式。 ✓您还可以自动录制来自麦克风的音频,这使得创建个性化视频变得很方便。 ✓您可以通过在YouTube / Twitch / Facebook / Twitter / Instagram上发布您的游戏记录来向更多人展示您的惊人技能。 ✓这是一款稳定的屏幕录像机,可让您记录任何应用程序的教程 。✓通过分享电影,电视节目或体育赛事记录与朋友分享您的故事。 V Recorder VideoShow Recorder致力于为Android制作最好的免费屏幕录像机。音频的VideoShow Recorder将是您理想的高清屏幕录像机,我们提供最好的产品和服务。VideoShow Recorder-具有音频和编辑器的屏幕录像机/游戏录像机/视频录像机是一款功能强大的应用程序,可使用智能手机捕捉所有珍贵的时刻,捕捉屏幕截图并编辑图像。立即下载并拥有丰富的经验! 什么是新的: 今日更新的功能: 屏幕截图和画笔 修复一些已知的错误 Mod信息: VIP功能已解锁。
V Recorder是一款稳定流畅的屏幕录像机/游戏录像机/录像机,适用于Android,也是一款功能强大的一体化视频编辑器。VideoShow Recorder由VideoShow应用程序团队创建,拥有超过4亿用户。它是世界上500万用户选择的最易于使用的免费屏幕录音机。 VideoShow Recorder允许您在播放时录制游戏,一键捕捉屏幕并使用滤镜,效果,音乐编辑视频。没有水印也没有录制时间限制,您可以使用V Recorder进行高质量的屏幕录制和清晰的截屏,无需生根。 强大的录音: 您可以在录制或捕获屏幕时轻松隐藏无框视频的录制窗口,将宽高比更改为宽屏,垂直或方形。 它是一个稳定的屏幕录像机,可以录制任何应用程序的教程和捕获屏幕视频 只需轻轻一按即可开始录制声音的手机上的所有内容,只需按一下即可暂停/恢复。 简单的界面,在播放时非常容易记录游戏,录制视频通话或现场表演,捕获屏幕截图,记录屏幕和编辑图像。 高品质和自定义设置:1440p分辨率,12.0Mbps质量,60 FPS,支持高清视频,纵向和横向视频方向。您可以随意更改视频设置以满足您的需求,并录制清晰流畅的视频或屏幕截图。 专业视频编辑: 时尚滤镜:我们提供流行的滤镜,如平滑/美白/纤细/女神/自然,让您的视频独一无二。 可爱的贴纸:有趣的贴纸/ GIF /模因/表情符号主题,你可以制作一个流行的视频,简单的步骤rec屏幕。 单调的主题:我们有超过100个精心设计的免费主题,其中包括适合所有场合的圣诞节/马卡龙/珍贵备忘录。 成千上万的完全许可音乐:您可以在线下载音乐或从您的设备添加本地歌曲。您甚至可以录制自己的声音或使用我们的声音效果,如卡通人物/机器人,使您的视频更酷 免费视频编辑器:轻松剪切/合并/修剪/分割/反向/复制/旋转/拼贴/压缩/转换/裁剪您的录制剪辑。 速度控制:使用快动作/慢动作来改变视频速度。随意将背景图片添加到垂直视频或模糊它。 魔术笔刷:触摸屏绘制,涂抹任何你想制作原创视频的东西。您甚至可以模糊图像,像素化图像以覆盖您不想显示的区域。或者将视频转换为GIF,rec屏幕。VideoShow Recorder为您提供最专业的编辑工具来制作热门视频。 什么是新的: 支持自动水平和垂直屏幕录制 更顺畅 破解信息: Vip功能已解锁。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值