亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? srec.cc

?? linux下錄音程序
?? CC
字號:
/* * wavrec/mpegrec for Linux ( Direct-to-disk WAV file and MP3 capture ) *                          ( MP3 is available via lame: www.sulaco.org/mp3 ) * Developed by Andrew L. Sandoval -- sandoval@netwaysglobal.com -- Feb. 2000 * * Copyright (C) 2000 Andrew L. Sandoval *  *  This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. *  *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. *  *  You should have received a copy of the GNU General Public License *  along with this program; if not, write to the Free Software *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */#include <iostream>#include <string>#include <vector>#include <deque>#include <cstring>#include <map>extern "C"{ #include <stdio.h> #include <unistd.h> #include <sys/ioctl.h> #include <sys/soundcard.h> #include <pthread.h> #include <signal.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdio.h> #include <errno.h>}#define BUFFER_SIZE	65535#define MIN_BUFFERS	10struct SndBuffer{	unsigned long used;	unsigned char buffer[BUFFER_SIZE];};#define WAV_ID_RIFF 0x46464952 /* "RIFF" */#define WAV_ID_WAVE 0x45564157 /* "WAVE" */#define WAV_ID_FMT  0x20746d66 /* "fmt " */#define WAV_ID_DATA 0x61746164 /* "data" */#define WAV_ID_PCM  0x0001struct WaveHeader{	unsigned long riff;	unsigned long file_length;	unsigned long wave;	unsigned long fmt;	unsigned long fmt_length;	short fmt_tag;	short channels;	unsigned long sample_rate;	unsigned long bytes_per_second;	short block_align;	short bits;	unsigned long data;	unsigned long data_length;};struct WaveHeader genericWaveHeader = { WAV_ID_RIFF, 0xFFFFFFFF, WAV_ID_WAVE,										WAV_ID_FMT, 16, WAV_ID_PCM, 										2, 44100, 192000,										4, 16, WAV_ID_DATA,										0xFFFFFFFF };deque <struct SndBuffer *> inputBuffers;deque <struct SndBuffer *> fullBuffers;unsigned long seconds = 0; 	//Ctrl-C to stopunsigned long bytesPerSecond = 44100 * 2 *2;int recordingNow = 0;int doneRecording = 0;int stopRequested = 0;int	binitialized = 0;pthread_mutex_t fullBuffersLock  = PTHREAD_MUTEX_INITIALIZER;pthread_mutex_t inputBuffersLock = PTHREAD_MUTEX_INITIALIZER;int outputFd = 1;static void stop(int signal){	stopRequested++;}unsigned long shipToEncoder(unsigned long *processed){ unsigned long lastSize; pthread_mutex_lock( &fullBuffersLock ); lastSize = fullBuffers.size(); if(!lastSize) {	  pthread_mutex_unlock( &fullBuffersLock ); 	  if(processed) *processed = 0;	  return lastSize; } struct SndBuffer *sndbuf = fullBuffers[0]; fullBuffers.pop_front(); pthread_mutex_unlock( &fullBuffersLock ); write( outputFd, reinterpret_cast<void*>(sndbuf->buffer), sndbuf->used ); if(processed) *processed = sndbuf->used; lastSize--; delete sndbuf; return lastSize;}static void *encode(void *arg){  unsigned long lastSize = 1;  unsigned long bytesProcessed = 0;  unsigned long Processed = 0;  while(!doneRecording || lastSize)  {		  lastSize = shipToEncoder(&Processed);		  bytesProcessed += Processed;		  if( bytesProcessed > (bytesPerSecond /2) )		  {				cerr << ".";				bytesProcessed = 0;		  }		  if(!lastSize)		  {				  sched_yield();				  continue;		  }  }}static void *prepareBuffers(void *arg){ while(1) {		 // Prepare enough input buffers for one second: 		unsigned long onesecond = bytesPerSecond / BUFFER_SIZE;		onesecond++;		for(int i=0; i < onesecond; i++)		{ 				struct SndBuffer *buffer = new SndBuffer;			   	memset( reinterpret_cast<void*>(buffer), 0, sizeof(SndBuffer) );				pthread_mutex_lock( &inputBuffersLock );			   	inputBuffers.push_back( buffer );				pthread_mutex_unlock( &inputBuffersLock );	   	}		pthread_mutex_lock( &inputBuffersLock );		unsigned long sz = inputBuffers.size();		pthread_mutex_unlock( &inputBuffersLock );		binitialized = 1;		while(sz > MIN_BUFFERS)		{				sched_yield();				pthread_mutex_lock( &inputBuffersLock );				sz = inputBuffers.size();				pthread_mutex_unlock( &inputBuffersLock );		} } return NULL;}int main(int argc, char *argv[]){ unsigned long rate = 44100; char *mpg_bitrate = "192"; unsigned long argument_error = 0; string outputFile = "-"; string encoderProcess = "lame"; string encoderExtraFlags = ""; int userSuppliedEncoder = 0; int userSuppliedEncoderExtras = 0; FILE *lame_encoder = NULL;  int mpegrec = 0; if(strstr(argv[0], "mpegrec")) mpegrec++; cerr << argv[0]       << "  Copyright (C) 2000 Andrew L. Sandoval" << endl       << "This program comes with ABSOLUTELY NO WARRANTY." << endl <<      "See the file COPYING (http://www.gnu.org/copyleft/gpl.txt) for details."       << endl << endl; for(int i=1; i<argc; i++) {	if(!strcmp(argv[i], "-l") && argc>i)	{			seconds = atol(argv[i+1]);			++i;			continue;	}	if(!strcmp(argv[i], "-r") && argc>1)	{			rate = atol(argv[i+1]);			++i;			continue;	}	if(!strcmp(argv[i], "-e") && argc>1)	{			encoderProcess = string(argv[i+1]);			userSuppliedEncoder = 1;			++i;			continue;    }	if(!strcmp(argv[i], "-x") && argc>1)	{			encoderExtraFlags = string(argv[i+1]);			userSuppliedEncoderExtras = 1;			++i;			continue;    }	if(!strcmp(argv[i], "-o") && argc>1)	{			outputFile = string(argv[i+1]);			++i;			continue;	}	if(!strcmp(argv[i], "-b") && argc>1)	{			mpg_bitrate = argv[i+1];			++i;			continue;	}	if(!strcmp(argv[i], "--help") || !strcmp(argv[i], "-?"))	{			argument_error++;			break;	}	cerr << "Unknown argument: '" << argv[i] << "'" << endl;	argument_error++; } if(argument_error) {	cerr << endl << "USAGE: " << argv[0] << " [options]" << endl	<< "Options:" << endl	<< "	-b mp3_bitrate_in_kHz (for mpegrec only - default is 192)" << endl	<< "	-e encoder_process (for mpegrec only - default is \"lame\")" << endl	<< "	-l length_in_seconds  (default is to continue until ctrl-c)" << endl	<< "	-r rate               (default is 44100)" << endl	<< "	-o outputfilename     (default is stdout or \"-\")" << endl	<< "	-x extraEncoderFlags  (default is \"\")" << endl	<< endl;	return 1; } bytesPerSecond = rate * 2 * 2;  // rate * 16-bits * stereo genericWaveHeader.sample_rate = rate; genericWaveHeader.bytes_per_second = bytesPerSecond; unsigned long hdrSeconds = seconds ? seconds : 3600 * 24;  //24hr Max. genericWaveHeader.data_length = bytesPerSecond * (hdrSeconds + 1); genericWaveHeader.file_length = genericWaveHeader.data_length +								 sizeof(genericWaveHeader); // Setup the signal handler so we stop on CTRL-C signal( SIGHUP, stop ); signal( SIGINT, stop ); signal( SIGQUIT, stop ); signal( SIGTERM, stop ); signal( SIGPIPE, stop );  // Start the buffer supply thread... pthread_t prepbufThread; pthread_create( &prepbufThread, NULL, prepareBuffers, NULL); while( !binitialized ) sched_yield();  //Give prepareBuffers a chance  // Begin recording and continue until recordingNow = 0 or bytes of input // equals seconds requested... unsigned long totalBytesRequested = 0; if(seconds) totalBytesRequested = seconds * bytesPerSecond; // If output file is specified and this is NOT an argument of mpegrec // open the output file: if(!mpegrec) {	if( outputFile != string("-") )	{		outputFd = open( outputFile.c_str(), O_WRONLY|O_CREAT|O_TRUNC, 0644 );		if(outputFd == -1)		{			perror( outputFile.c_str() );			return 1;		}	} } else // mpegrec: {	if(!userSuppliedEncoder)	{		encoderProcess += " -ms -b ";		encoderProcess += mpg_bitrate;		if(userSuppliedEncoderExtras) 		{			encoderProcess += " ";			encoderProcess += encoderExtraFlags;		}		encoderProcess += " - ";		encoderProcess += outputFile;	}	else	{		if(userSuppliedEncoderExtras) 		{			encoderProcess += " ";			encoderProcess += encoderExtraFlags;		}	}	cerr << "Streaming " << rate << "Hz WAV data to:" << endl          << encoderProcess << endl << flush;	lame_encoder = popen( encoderProcess.c_str(), "w" );	if(!lame_encoder)	{		perror( encoderProcess.c_str() );		return 1;	}	outputFd = fileno( lame_encoder ); } // // Open the sound card // int dsp = open( "/dev/dsp", O_RDONLY ); if(dsp == -1) {		 perror( "/dev/dsp" );		 return 1; } // Reset the card, set the format, stereo, and speed... ioctl( dsp, SNDCTL_DSP_RESET, 0); int format = AFMT_S16_LE; if( ioctl(dsp, SNDCTL_DSP_SETFMT, &format) == -1) {	perror( "SNDCTL_DSP_SETFMT" );	return 1; } int stereo = 1; if( ioctl(dsp, SNDCTL_DSP_STEREO, &stereo) == -1) {	perror( "SNDCTL_DSP_STEREO" );	return 1; } int samplerate = rate; if( ioctl(dsp, SNDCTL_DSP_SPEED, &samplerate) == -1) {	perror( "SNDCTL_DSP_SPEED" );	return 1; } // // Begin Recording... // cerr << endl; recordingNow = 1; // // Write the WAV Header (generic because the length is MAX) // write( outputFd, reinterpret_cast<void*>(&genericWaveHeader),	    sizeof(genericWaveHeader) );  // Start the encode supply thread... pthread_t encodeThread; pthread_create( &encodeThread, NULL, encode, NULL); unsigned long bytesRead = 0;  while(1) {		 pthread_mutex_lock( &inputBuffersLock );		 struct SndBuffer *buf = inputBuffers[0];		 if(!buf)		 {				 pthread_mutex_unlock( &inputBuffersLock );				 cerr << "No inputBuffers!" << endl;				 buf = new SndBuffer;				 buf->used = 0;		 }		 else inputBuffers.pop_front();		 pthread_mutex_unlock( &inputBuffersLock );		 buf->used = read( dsp, reinterpret_cast<void*>(buf->buffer),						   BUFFER_SIZE );		 bytesRead += buf->used;		 pthread_mutex_lock( &fullBuffersLock );		 fullBuffers.push_back( buf );		 pthread_mutex_unlock( &fullBuffersLock );		 if( stopRequested ) break;		 if(seconds && bytesRead > totalBytesRequested) break; } recordingNow = 0; doneRecording = 1; // Reset the card ioctl( dsp, SNDCTL_DSP_RESET, 0); close( dsp ); pthread_join( encodeThread, NULL );  //Do NOT exit until output is written while(shipToEncoder(NULL)) ; cerr << endl << "Total Bytes Recorded before encoding: " << bytesRead << endl; while(shipToEncoder(NULL)) ; if(!mpegrec) close(outputFd); else pclose( lame_encoder ); return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
a4yy欧美一区二区三区| 精品少妇一区二区三区免费观看| 欧美日韩国产成人在线免费| 国产视频一区在线观看| 一区二区三区色| aaa亚洲精品| 国产亚洲成年网址在线观看| 日韩电影在线免费看| 欧洲国产伦久久久久久久| 国产欧美精品区一区二区三区 | 91亚洲永久精品| 久久久久国产免费免费| 日产国产欧美视频一区精品| 欧美在线一二三四区| 日韩一区中文字幕| www.综合网.com| ww久久中文字幕| 久久精品国产亚洲a| 91.xcao| 亚洲一区二区三区激情| 97国产精品videossex| 国产精品免费视频一区| 国产黄人亚洲片| 国产丝袜美腿一区二区三区| 极品美女销魂一区二区三区| 欧美va在线播放| 日韩国产欧美三级| 日韩一区二区不卡| 奇米精品一区二区三区四区| 欧美日韩电影一区| 三级一区在线视频先锋 | 日本韩国精品在线| 亚洲精品免费视频| 欧美性受xxxx| 日韩和欧美一区二区三区| 欧美视频三区在线播放| 亚洲福利视频导航| 6080亚洲精品一区二区| 日韩高清在线一区| 日韩欧美综合一区| 国产精品一区二区你懂的| 日本一区二区免费在线| 成人免费高清视频| 亚洲男人天堂一区| 欧美日韩国产欧美日美国产精品| 午夜av区久久| 欧美成人福利视频| 国产成人免费在线观看| 欧美国产日产图区| 色94色欧美sute亚洲13| 婷婷综合另类小说色区| 精品国产不卡一区二区三区| 国产91精品精华液一区二区三区 | 中文字幕欧美区| 色婷婷综合中文久久一本| 亚洲午夜视频在线| 日韩美一区二区三区| 国产精品一区二区无线| 亚洲视频你懂的| 欧美一级欧美一级在线播放| 国内久久精品视频| 一区二区三区高清| 26uuuu精品一区二区| 色婷婷av久久久久久久| 美国av一区二区| 国产农村妇女精品| 欧美主播一区二区三区美女| 奇米亚洲午夜久久精品| 国产精品久久国产精麻豆99网站| 欧美色区777第一页| 国产在线不卡一区| 亚洲午夜久久久久久久久电影院 | 视频一区视频二区中文| 久久精品男人的天堂| 欧美综合一区二区| 国产成人亚洲综合色影视| 亚洲成人av资源| 国产精品美女久久久久av爽李琼 | 夜夜亚洲天天久久| 久久影院午夜片一区| 欧美午夜理伦三级在线观看| 国产精品资源在线看| 亚洲超丰满肉感bbw| 中文字幕中文字幕一区| 精品日韩在线观看| 欧美亚洲国产怡红院影院| 国产凹凸在线观看一区二区| 午夜精品久久久| 中文字幕一区二区不卡| 久久综合九色综合久久久精品综合| 一本一本大道香蕉久在线精品| 九九国产精品视频| 午夜精品国产更新| 亚洲在线中文字幕| 亚洲男女一区二区三区| 久久久久久黄色| 精品奇米国产一区二区三区| 欧美日韩1234| 欧美日韩小视频| 欧美怡红院视频| 91香蕉国产在线观看软件| 风间由美一区二区三区在线观看| 久久黄色级2电影| 免费观看一级欧美片| 偷拍亚洲欧洲综合| 日日欢夜夜爽一区| 亚洲一区二区三区激情| 一区二区久久久| 夜夜嗨av一区二区三区| 亚洲欧美另类在线| 亚洲男帅同性gay1069| 亚洲欧美日韩系列| 一区二区三区精品在线| 亚洲最大成人综合| 亚洲午夜久久久久久久久久久| 亚洲精品中文字幕乱码三区| 一区二区三区日韩在线观看| 一区二区在线看| 亚洲午夜一区二区三区| 一区二区三区免费| 亚洲国产另类av| 日韩av电影一区| 激情图片小说一区| 国产成人亚洲综合色影视| youjizz久久| 欧美色手机在线观看| 欧美一区二区三区成人| 亚洲精品一区二区三区蜜桃下载 | 中文字幕亚洲综合久久菠萝蜜| 国产人久久人人人人爽| 国产亚洲婷婷免费| 亚洲色图视频网| 亚洲国产精品影院| 久久精品久久久精品美女| 狠狠色狠狠色综合日日91app| 国产精选一区二区三区| www.亚洲色图.com| 欧美三级电影在线观看| 精品久久一区二区| 国产精品沙发午睡系列990531| 亚洲色图丝袜美腿| 首页亚洲欧美制服丝腿| 国产毛片一区二区| 色综合天天天天做夜夜夜夜做| 欧美日韩国产首页| 欧美极品另类videosde| 一区二区三区精密机械公司| 美女网站在线免费欧美精品| 成人免费视频免费观看| 精品视频一区三区九区| 久久日一线二线三线suv| 亚洲欧美日韩久久| 国产制服丝袜一区| 色菇凉天天综合网| 亚洲精品一线二线三线| 一区二区三区四区视频精品免费| 麻豆极品一区二区三区| 91浏览器在线视频| 2023国产精品自拍| 亚洲综合在线免费观看| 国产福利一区二区三区视频在线| 欧洲精品视频在线观看| 亚洲精品一区二区三区香蕉| 亚洲一区二区三区中文字幕| 国产精品中文字幕日韩精品| 欧美性色综合网| 国产精品久久一卡二卡| 美女尤物国产一区| 欧美午夜精品一区| 1024成人网| 国模一区二区三区白浆 | 91网站在线播放| 久久天天做天天爱综合色| 亚洲成人激情综合网| 99久久久国产精品免费蜜臀| 精品久久人人做人人爱| 亚洲第一激情av| 欧美中文字幕一二三区视频| 国产日产欧美一区二区视频| 久久超碰97中文字幕| 91精品国产综合久久福利| 一区二区三区 在线观看视频| 成人中文字幕在线| 久久美女艺术照精彩视频福利播放| 午夜精品久久久久久| 91麻豆免费在线观看| 国产精品欧美精品| 成人自拍视频在线观看| 久久精品网站免费观看| 麻豆精品视频在线观看视频| 欧美高清激情brazzers| 一级特黄大欧美久久久| 色呦呦国产精品| 亚洲男帅同性gay1069| 一本大道av伊人久久综合| 国产精品国产三级国产aⅴ原创| 国产98色在线|日韩| 国产三级欧美三级| 国产成人小视频| 中文一区一区三区高中清不卡|