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

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

?? buffer.c

?? 在linux環境下的MP3播放軟件
?? C
字號:
/*	buffer.c: output buffer	copyright 1997-2006 by the mpg123 project - free software under the terms of the LGPL 2.1	see COPYING and AUTHORS files in distribution or http://mpg123.de	initially written by Oliver Fromme	I (ThOr) am reviewing this file at about the same daytime as Oliver's timestamp here:	Mon Apr 14 03:53:18 MET DST 1997	- dammed night coders;-)*/#include <stdlib.h>#include <errno.h>#include "config.h"#include "mpg123.h"int outburst = MAXOUTBURST;static int intflag = FALSE;static int usr1flag = FALSE;static void catch_interrupt (void){	intflag = TRUE;}static void catch_usr1 (void){	usr1flag = TRUE;}/* Interfaces to writer process */extern void buffer_sig(int signal, int block);void buffer_ignore_lowmem(void){#ifndef NOXFERMEM	if (!buffermem)		return;	if(buffermem->wakeme[XF_READER])		xfermem_putcmd(buffermem->fd[XF_WRITER], XF_CMD_WAKEUP);#endif}void buffer_end(void){#ifndef NOXFERMEM	if (!buffermem)		return;	xfermem_putcmd(buffermem->fd[XF_WRITER], XF_CMD_TERMINATE);#endif}void buffer_resync(void){	buffer_sig(SIGINT, TRUE);}void buffer_reset(void){	buffer_sig(SIGUSR1, TRUE);}void buffer_start(void){	buffer_sig(SIGCONT, FALSE);}void buffer_stop(void){	buffer_sig(SIGSTOP, FALSE);}extern int buffer_pid;void buffer_sig(int signal, int block){	#ifndef NOXFERMEM	if (!buffermem)		return;	kill(buffer_pid, signal);		if (!block)		return;	if(xfermem_block(XF_WRITER, buffermem) != XF_CMD_WAKEUP) 		perror("Could not resync/reset buffers");#endif		return;}#ifndef NOXFERMEMvoid buffer_loop(struct audio_info_struct *ai, sigset_t *oldsigset){	int bytes;	int my_fd = buffermem->fd[XF_READER];	txfermem *xf = buffermem;	int done = FALSE;	int preload;	catchsignal (SIGINT, catch_interrupt);	catchsignal (SIGUSR1, catch_usr1);	sigprocmask (SIG_SETMASK, oldsigset, NULL);	if (param.outmode == DECODE_AUDIO) {		if (audio_open(ai) < 0) {			perror("audio");			exit(1);		}	}	/* Fill complete buffer on first run before starting to play.	 * Live mp3 streams constantly approach buffer underrun otherwise. [dk]	 */	preload = xf->size;	for (;;) {		if (intflag) {			intflag = FALSE;			if (param.outmode == DECODE_AUDIO)				audio_queueflush (ai);			xf->readindex = xf->freeindex;			if (xf->wakeme[XF_WRITER])				xfermem_putcmd(my_fd, XF_CMD_WAKEUP);		}		if (usr1flag) {			usr1flag = FALSE;			/*   close and re-open in order to flush			 *   the device's internal buffer before			 *   changing the sample rate.   [OF]			 */			/* writer must block when sending SIGUSR1			 * or we will lose all data processed 			 * in the meantime! [dk]			 */			xf->readindex = xf->freeindex;			/* We've nailed down the new starting location -			 * writer is now safe to go on. [dk]			 */			if (xf->wakeme[XF_WRITER])				xfermem_putcmd(my_fd, XF_CMD_WAKEUP);			if (param.outmode == DECODE_AUDIO) {				audio_close (ai);				ai->rate = xf->buf[0]; 				ai->channels = xf->buf[1]; 				ai->format = xf->buf[2];				if (audio_open(ai) < 0) {					perror("audio");					exit(1);				}			}		}		if ( (bytes = xfermem_get_usedspace(xf)) < outburst ) {			/* if we got a buffer underrun we first			 * fill 1/8 of the buffer before continue/start			 * playing */			if (preload < xf->size>>3)				preload = xf->size>>3;			if(preload < outburst)				preload = outburst;		}		if(bytes < preload) {			int cmd;			if (done && !bytes) { 				break;			}						if(!done) {				/* Don't spill into errno check below. */				errno = 0;				cmd = xfermem_block(XF_READER, xf);				switch(cmd) {					/* More input pending. */					case XF_CMD_WAKEUP_INFO:						continue;					/* Yes, we know buffer is low but					 * know we don't care.					 */					case XF_CMD_WAKEUP:						break;	/* Proceed playing. */					case XF_CMD_TERMINATE:						/* Proceed playing without 						 * blocking any further.						 */						done=TRUE;						break;					case -1:						if(errno==EINTR)							continue;						if(errno)							perror("Yuck! Error in buffer handling...");						done = TRUE;						xf->readindex = xf->freeindex;						xfermem_putcmd(xf->fd[XF_READER], XF_CMD_TERMINATE);						break;					default:						fprintf(stderr, "\nEh!? Received unknown command 0x%x in buffer process. Tell Daniel!\n", cmd);				}			}		}		/* Hack! The writer issues XF_CMD_WAKEUP when first adjust 		 * audio settings. We do not want to lower the preload mark		 * just yet!		 */		if (!bytes)			continue;		preload = outburst; /* set preload to lower mark */		if (bytes > xf->size - xf->readindex)			bytes = xf->size - xf->readindex;		if (bytes > outburst)			bytes = outburst;		if (param.outmode == DECODE_FILE)			bytes = write(OutputDescriptor, xf->data + xf->readindex, bytes);		else if (param.outmode == DECODE_AUDIO)			bytes = audio_play_samples(ai,				(unsigned char *) (xf->data + xf->readindex), bytes);		if(bytes < 0) {			bytes = 0;			if(errno != EINTR) {				perror("Ouch ... error while writing audio data: ");				/*				 * done==TRUE tells writer process to stop				 * sending data. There might be some latency				 * involved when resetting readindex to 				 * freeindex so we might need more than one				 * cycle to terminate. (The number of cycles				 * should be finite unless I managed to mess				 * up something. ;-) [dk]				 */				done = TRUE;					xf->readindex = xf->freeindex;				xfermem_putcmd(xf->fd[XF_READER], XF_CMD_TERMINATE);			}		}		xf->readindex = (xf->readindex + bytes) % xf->size;		if (xf->wakeme[XF_WRITER])			xfermem_putcmd(my_fd, XF_CMD_WAKEUP);	}	if (param.outmode == DECODE_AUDIO)		audio_close (ai);}#endif/* EOF */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
白白色亚洲国产精品| 国产精品美女久久久久久| 亚洲国产欧美在线| 色欧美片视频在线观看| 亚洲狠狠丁香婷婷综合久久久| 欧美日韩亚洲高清一区二区| 日韩精品欧美精品| 国产亚洲一本大道中文在线| 不卡区在线中文字幕| 亚洲精品五月天| 在线不卡a资源高清| 日日夜夜精品免费视频| 久久综合色一综合色88| 97久久超碰国产精品电影| 一区av在线播放| 日韩一级片在线观看| 懂色av一区二区三区蜜臀| 亚洲一区影音先锋| 日韩写真欧美这视频| 成人性生交大片免费看在线播放| 亚洲永久精品国产| 精品久久久久久久人人人人传媒| 不卡视频一二三四| 日韩国产精品91| 日本一区二区三区在线不卡| 99国产欧美另类久久久精品| 亚洲综合激情网| 久久伊人中文字幕| 色狠狠一区二区三区香蕉| 麻豆视频观看网址久久| 中文字幕在线免费不卡| 日韩欧美黄色影院| 精品一区二区三区视频在线观看| 色综合久久久久综合体| 国产亚洲短视频| 午夜影视日本亚洲欧洲精品| 成人av影院在线| 欧美成人伊人久久综合网| 中文字幕一区二区三区色视频| 久久精品亚洲乱码伦伦中文| 午夜精品福利一区二区蜜股av| 在线免费一区三区| 日韩一区二区免费电影| 99综合影院在线| 国产一区二区三区不卡在线观看| 一区二区欧美国产| 国产午夜精品久久| 欧美日本一区二区三区四区| 白白色 亚洲乱淫| 免费高清视频精品| 一区二区三区国产豹纹内裤在线| 久久伊人中文字幕| 中文字幕欧美一区| 日韩黄色免费电影| 亚洲高清视频的网址| 国产精品综合在线视频| 在线观看免费亚洲| 亚洲欧洲在线观看av| 国产精品高潮呻吟| 精品欧美乱码久久久久久1区2区| 99久久精品免费看国产| 奇米777欧美一区二区| 亚洲成av人片在www色猫咪| 色狠狠av一区二区三区| 一区二区三区四区蜜桃| 精品一区二区三区在线视频| 777午夜精品免费视频| 91久久久免费一区二区| 国产欧美日产一区| 欧美午夜一区二区三区免费大片| 在线视频一区二区三| 欧美做爰猛烈大尺度电影无法无天| 欧美日韩一区二区三区四区五区 | 久久―日本道色综合久久 | 久久99精品视频| 欧美一区二区视频网站| 国产麻豆91精品| 日本高清不卡视频| 欧美一级二级三级蜜桃| 国产日韩欧美激情| 1000精品久久久久久久久| 亚洲国产毛片aaaaa无费看| 91成人免费在线视频| 日本不卡一区二区三区| 久久99国产精品久久99果冻传媒| 国产69精品久久777的优势| caoporn国产一区二区| 欧美年轻男男videosbes| 久久精品欧美日韩精品| 亚洲精品乱码久久久久| 蜜桃视频在线观看一区二区| 亚洲国产视频在线| 91精品国产一区二区| 欧美性猛交xxxx乱大交退制版| 喷水一区二区三区| 国产日韩欧美一区二区三区综合| 欧美精品一区二区三区久久久| 亚洲视频免费看| 麻豆中文一区二区| 蜜桃av噜噜一区二区三区小说| 一本大道久久精品懂色aⅴ| 91精品一区二区三区久久久久久| 日本一区二区三级电影在线观看 | 亚洲人妖av一区二区| 日本伦理一区二区| 亚洲123区在线观看| 色婷婷av久久久久久久| 欧美人与性动xxxx| 精品少妇一区二区三区在线视频| 日韩精品一区二区三区中文不卡 | 丝袜亚洲另类欧美综合| 久久久久一区二区三区四区| 日韩在线卡一卡二| 中文字幕在线免费不卡| 国产成a人亚洲精| 亚洲国产精品精华液网站| 色一情一伦一子一伦一区| 91免费观看视频在线| 国产欧美中文在线| 欧美精品电影在线播放| 国产精品系列在线| 欧美精品一二三| 99re成人在线| 国产精品小仙女| 亚洲精品一区二区三区四区高清| 欧美视频一区二| 夜夜亚洲天天久久| 日韩成人一区二区| 亚洲高清视频中文字幕| 国产亚洲精品久| 韩国av一区二区三区在线观看| 亚洲综合男人的天堂| 色综合久久综合网| 国产一区二区中文字幕| 舔着乳尖日韩一区| 亚洲精品成人a在线观看| 精品国产乱码久久久久久免费| 91最新地址在线播放| 最新成人av在线| 国产亚洲综合在线| 日韩黄色免费电影| 欧美一二三四在线| 91精品国产欧美日韩| 欧美日韩国产经典色站一区二区三区| 99久久99久久精品免费观看| 福利电影一区二区| 国产综合一区二区| 精品一区二区国语对白| 亚洲精品一区二区三区蜜桃下载| 欧美电影影音先锋| 欧美日韩国产精品成人| 国产在线视频一区二区三区| 欧美日韩一区二区在线观看| 97精品视频在线观看自产线路二| 亚洲精品第一国产综合野| 中文字幕在线观看一区二区| 亚洲欧洲日韩综合一区二区| 一本大道av伊人久久综合| 欧美成人免费网站| 久久免费的精品国产v∧| 日韩精品在线看片z| 久久亚洲捆绑美女| 中文字幕成人av| 亚洲欧美在线高清| 亚洲乱码日产精品bd| 国产精品一区二区免费不卡| www.欧美精品一二区| 国产精品99久久不卡二区| 国产精品一区二区视频| 日韩免费看的电影| 26uuu国产电影一区二区| 精品sm捆绑视频| 国产欧美一区二区精品性色超碰 | 欧美日韩二区三区| 日韩一区二区三区三四区视频在线观看| 7777精品伊人久久久大香线蕉完整版 | 粉嫩久久99精品久久久久久夜| 成人性生交大片| 色婷婷精品久久二区二区蜜臀av| 欧美精品国产精品| 日本一道高清亚洲日美韩| 日韩不卡免费视频| 国产成人免费网站| 国产亚洲精久久久久久| 亚洲精选在线视频| 蜜臀av在线播放一区二区三区| 国产69精品久久久久777| 欧洲亚洲精品在线| 亚洲韩国精品一区| 欧美日韩一区二区三区免费看| 欧美一级日韩免费不卡| 日本一区二区成人在线| 亚洲福中文字幕伊人影院| 国产一区二区三区高清播放| 久久久精品2019中文字幕之3| 中文字幕欧美国产| 91视频免费播放| 国产精品一卡二卡在线观看| 老司机免费视频一区二区| 不卡电影免费在线播放一区|