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

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

?? mpg123.c

?? mpg123 是 MPEG 1.0/2.0/2.5 的實時播放軟件
?? C
?? 第 1 頁 / 共 3 頁
字號:
/*	mpg123: main code of the program (not of the decoder...)	copyright 1995-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 Michael Hipp*/#include "config.h"#include "debug.h"#define ME "main"#include <stdlib.h>#include <sys/types.h>#if !defined(WIN32) && !defined(GENERIC)#include <sys/wait.h>#include <sys/time.h>#include <sys/resource.h>#endif#include <errno.h>#include <string.h>#include <fcntl.h>#include <time.h>#ifdef HAVE_SCHED_H#include <sched.h>#endif#include "mpg123.h"#include "getlopt.h"#include "buffer.h"#include "term.h"#ifdef GAPLESS#include "layer3.h"#endif#include "playlist.h"#include "id3.h"#include "icy.h"static void usage(int err);static void want_usage(char* arg);static void long_usage(int err);static void want_long_usage(char* arg);static void print_title(FILE* o);static void give_version(char* arg);struct parameter param = {   FALSE , /* aggressiv */  FALSE , /* shuffle */  FALSE , /* remote */  FALSE , /* remote to stderr */  DECODE_AUDIO , /* write samples to audio device */  FALSE , /* silent operation */  FALSE , /* xterm title on/off */  0 ,     /* second level buffer size */  TRUE ,  /* resync after stream error */  0 ,     /* verbose level */#ifdef HAVE_TERMIOS  FALSE , /* term control */#endif  -1 ,     /* force mono */  0 ,     /* force stereo */  0 ,     /* force 8bit */  0 ,     /* force rate */  0 , 	  /* down sample */  FALSE , /* checkrange */  0 ,	  /* doublespeed */  0 ,	  /* halfspeed */  0 ,	  /* force_reopen, always (re)opens audio device for next song */#ifdef USE_3DNOW  0 ,     /* autodetect from CPUFLAGS */  FALSE , /* normal operation */#endif  FALSE,  /* try to run process in 'realtime mode' */     { 0,},  /* wav,cdr,au Filename */#ifdef GAPLESS	0, /* gapless off per default - yet */#endif	0, /* default is to play all titles in playlist */	0, /* do not use rva per default */	NULL, /* no playlist per default */	0 /* condensed id3 per default */};char *prgName = NULL;char *equalfile = NULL;/* ThOr: pointers are not TRUE or FALSE */int have_eq_settings = FALSE;long outscale  = MAXOUTBURST;long numframes = -1;long startFrame= 0;int buffer_fd[2];int buffer_pid;static int intflag = FALSE;int OutputDescriptor;#if !defined(WIN32) && !defined(GENERIC)static void catch_child(void){  while (waitpid(-1, NULL, WNOHANG) > 0);}static void catch_interrupt(void){  intflag = TRUE;}#endif/* oh, what a mess... */void next_track(void){	intflag = TRUE;}void safe_exit(int code){#ifdef HAVE_TERMIOS	if(param.term_ctrl)		term_restore();#endif	exit(code);}static struct frame fr;struct audio_info_struct ai,pre_ai;txfermem *buffermem = NULL;#define FRAMEBUFUNIT (18 * 64 * 4)void set_synth_functions(struct frame *fr);void init_output(void){  static int init_done = FALSE;  if (init_done)    return;  init_done = TRUE;#ifndef NOXFERMEM  /*   * Only DECODE_AUDIO and DECODE_FILE are sanely handled by the   * buffer process. For now, we just ignore the request   * to buffer the output. [dk]   */  if (param.usebuffer && (param.outmode != DECODE_AUDIO) &&      (param.outmode != DECODE_FILE)) {    fprintf(stderr, "Sorry, won't buffer output unless writing plain audio.\n");    param.usebuffer = 0;  }     if (param.usebuffer) {    unsigned int bufferbytes;    sigset_t newsigset, oldsigset;    if (param.usebuffer < 32)      param.usebuffer = 32; /* minimum is 32 Kbytes! */    bufferbytes = (param.usebuffer * 1024);    bufferbytes -= bufferbytes % FRAMEBUFUNIT;	/* +1024 for NtoM rounding problems */    xfermem_init (&buffermem, bufferbytes ,0,1024);    pcm_sample = (unsigned char *) buffermem->data;    pcm_point = 0;    sigemptyset (&newsigset);    sigaddset (&newsigset, SIGUSR1);    sigprocmask (SIG_BLOCK, &newsigset, &oldsigset);    #if !defined(WIN32) && !defined(GENERIC)    catchsignal (SIGCHLD, catch_child);	 #endif    switch ((buffer_pid = fork())) {      case -1: /* error */        perror("fork()");        safe_exit(1);      case 0: /* child */        if(rd)          rd->close(rd); /* child doesn't need the input stream */        xfermem_init_reader (buffermem);        buffer_loop (&ai, &oldsigset);        xfermem_done_reader (buffermem);        xfermem_done (buffermem);        exit(0);      default: /* parent */        xfermem_init_writer (buffermem);        param.outmode = DECODE_BUFFER;    }  }  else {#endif	/* + 1024 for NtoM rate converter */    if (!(pcm_sample = (unsigned char *) malloc(audiobufsize * 2 + 1024))) {      perror ("malloc()");      safe_exit (1);#ifndef NOXFERMEM    }#endif  }  switch(param.outmode) {    case DECODE_AUDIO:      if(audio_open(&ai) < 0) {        perror("audio");        safe_exit(1);      }      break;    case DECODE_WAV:      wav_open(&ai,param.filename);      break;    case DECODE_AU:      au_open(&ai,param.filename);      break;    case DECODE_CDR:      cdr_open(&ai,param.filename);      break;  }}static void set_output_h(char *a){  if(ai.output <= 0)    ai.output = AUDIO_OUT_HEADPHONES;  else    ai.output |= AUDIO_OUT_HEADPHONES;}static void set_output_s(char *a){  if(ai.output <= 0)    ai.output = AUDIO_OUT_INTERNAL_SPEAKER;  else    ai.output |= AUDIO_OUT_INTERNAL_SPEAKER;}static void set_output_l(char *a){  if(ai.output <= 0)    ai.output = AUDIO_OUT_LINE_OUT;  else    ai.output |= AUDIO_OUT_LINE_OUT;}static void set_output (char *arg){    switch (*arg) {        case 'h': set_output_h(arg); break;        case 's': set_output_s(arg); break;        case 'l': set_output_l(arg); break;        default:            error3("%s: Unknown argument \"%s\" to option \"%s\".\n",                prgName, arg, loptarg);            safe_exit(1);    }}void set_verbose (char *arg){    param.verbose++;}void set_wav(char *arg){  param.outmode = DECODE_WAV;  strncpy(param.filename,arg,255);  param.filename[255] = 0;}void set_cdr(char *arg){  param.outmode = DECODE_CDR;  strncpy(param.filename,arg,255);  param.filename[255] = 0;}void set_au(char *arg){  param.outmode = DECODE_AU;  strncpy(param.filename,arg,255);  param.filename[255] = 0;}static void SetOutFile(char *Arg){  param.outmode=DECODE_FILE;  OutputDescriptor=open(Arg,O_WRONLY,0);  if(OutputDescriptor==-1) {    error2("Can't open %s for writing (%s).\n",Arg,strerror(errno));    safe_exit(1);  }}static void SetOutStdout(char *Arg){  param.outmode=DECODE_FILE;  OutputDescriptor=1;}static void SetOutStdout1(char *Arg){  param.outmode=DECODE_AUDIOFILE;  OutputDescriptor=1;}void realtime_not_compiled(char *arg){  fprintf(stderr,"Option '-T / --realtime' not compiled into this binary.\n");}/* Please note: GLO_NUM expects point to LONG! *//* ThOr: *  Yeah, and despite that numerous addresses to int variables were passed. *  That's not good on my Alpha machine with int=32bit and long=64bit! *  Introduced GLO_INT and GLO_LONG as different bits to make that clear. *  GLO_NUM no longer exists. */topt opts[] = {	{'k', "skip",        GLO_ARG | GLO_LONG, 0, &startFrame, 0},	{'a', "audiodevice", GLO_ARG | GLO_CHAR, 0, &ai.device,  0},	{'2', "2to1",        GLO_INT,  0, &param.down_sample, 1},	{'4', "4to1",        GLO_INT,  0, &param.down_sample, 2},	{'t', "test",        GLO_INT,  0, &param.outmode, DECODE_TEST},	{'s', "stdout",      GLO_INT,  SetOutStdout, &param.outmode, DECODE_FILE},	{'S', "STDOUT",      GLO_INT,  SetOutStdout1, &param.outmode,DECODE_AUDIOFILE},	{'O', "outfile",     GLO_ARG | GLO_CHAR, SetOutFile, NULL, 0},	{'c', "check",       GLO_INT,  0, &param.checkrange, TRUE},	{'v', "verbose",     0,        set_verbose, 0,           0},	{'q', "quiet",       GLO_INT,  0, &param.quiet, TRUE},	{'y', "resync",      GLO_INT,  0, &param.tryresync, FALSE},	{'0', "single0",     GLO_INT,  0, &param.force_mono, 0},	{0,   "left",        GLO_INT,  0, &param.force_mono, 0},	{'1', "single1",     GLO_INT,  0, &param.force_mono, 1},	{0,   "right",       GLO_INT,  0, &param.force_mono, 1},	{'m', "singlemix",   GLO_INT,  0, &param.force_mono, 3},	{0,   "mix",         GLO_INT,  0, &param.force_mono, 3},	{0,   "mono",        GLO_INT,  0, &param.force_mono, 3},	{0,   "stereo",      GLO_INT,  0, &param.force_stereo, 1},	{0,   "reopen",      GLO_INT,  0, &param.force_reopen, 1},	{'g', "gain",        GLO_ARG | GLO_LONG, 0, &ai.gain,    0},	{'r', "rate",        GLO_ARG | GLO_LONG, 0, &param.force_rate,  0},	{0,   "8bit",        GLO_INT,  0, &param.force_8bit, 1},	{0,   "headphones",  0,                  set_output_h, 0,0},	{0,   "speaker",     0,                  set_output_s, 0,0},	{0,   "lineout",     0,                  set_output_l, 0,0},	{'o', "output",      GLO_ARG | GLO_CHAR, set_output, 0,  0},	{'f', "scale",       GLO_ARG | GLO_LONG, 0, &outscale,   0},	{'n', "frames",      GLO_ARG | GLO_LONG, 0, &numframes,  0},	#ifdef HAVE_TERMIOS	{'C', "control",     GLO_INT,  0, &param.term_ctrl, TRUE},	#endif	{'b', "buffer",      GLO_ARG | GLO_LONG, 0, &param.usebuffer,  0},	{'R', "remote",      GLO_INT,  0, &param.remote, TRUE},	{0,   "remote-err",  GLO_INT,  0, &param.remote_err, TRUE},	{'d', "doublespeed", GLO_ARG | GLO_LONG, 0, &param.doublespeed,0},	{'h', "halfspeed",   GLO_ARG | GLO_LONG, 0, &param.halfspeed,  0},	{'p', "proxy",       GLO_ARG | GLO_CHAR, 0, &proxyurl,   0},	{'@', "list",        GLO_ARG | GLO_CHAR, 0, &param.listname,   0},	/* 'z' comes from the the german word 'zufall' (eng: random) */	{'z', "shuffle",     GLO_INT,  0, &param.shuffle, 1},	{'Z', "random",      GLO_INT,  0, &param.shuffle, 2},	{'E', "equalizer",	 GLO_ARG | GLO_CHAR, 0, &equalfile,1},	#ifdef HAVE_SETPRIORITY	{0,   "aggressive",	 GLO_INT,  0, &param.aggressive, 2},	#endif	#ifdef USE_3DNOW	{0,   "force-3dnow", GLO_INT,  0, &param.stat_3dnow, 1},	{0,   "no-3dnow",    GLO_INT,  0, &param.stat_3dnow, 2},	{0,   "test-3dnow",  GLO_INT,  0, &param.test_3dnow, TRUE},	#endif	#if !defined(WIN32) && !defined(GENERIC)	{'u', "auth",        GLO_ARG | GLO_CHAR, 0, &httpauth,   0},	#endif	#ifdef HAVE_SCHED_SETSCHEDULER	/* check why this should be a long variable instead of int! */	{'T', "realtime",    GLO_LONG,  0, &param.realtime, TRUE },	#else	{'T', "realtime",    0,  realtime_not_compiled, 0,           0 },    	#endif	{0, "title",         GLO_INT,  0, &param.xterm_title, TRUE },	{'w', "wav",         GLO_ARG | GLO_CHAR, set_wav, 0 , 0 },	{0, "cdr",           GLO_ARG | GLO_CHAR, set_cdr, 0 , 0 },	{0, "au",            GLO_ARG | GLO_CHAR, set_au, 0 , 0 },	#ifdef GAPLESS	{0,   "gapless",	 GLO_INT,  0, &param.gapless, 1},	#endif	{'?', "help",            0,  want_usage, 0,           0 },	{0 , "longhelp" ,        0,  want_long_usage, 0,      0 },	{0 , "version" ,         0,  give_version, 0,         0 },	{'l', "listentry",       GLO_ARG | GLO_LONG, 0, &param.listentry, 0 },	{0, "rva-mix",         GLO_INT,  0, &param.rva, 1 },	{0, "rva-radio",         GLO_INT,  0, &param.rva, 1 },	{0, "rva-album",         GLO_INT,  0, &param.rva, 2 },	{0, "rva-audiophile",         GLO_INT,  0, &param.rva, 2 },	{0, "long-tag",         GLO_INT,  0, &param.long_id3, 1 },	{0, 0, 0, 0, 0, 0}};/* *   Change the playback sample rate. *   Consider that changing it after starting playback is not covered by gapless code! */static void reset_audio(void){#ifndef NOXFERMEM	if (param.usebuffer) {		/* wait until the buffer is empty,		 * then tell the buffer process to		 * change the sample rate.   [OF]		 */		while (xfermem_get_usedspace(buffermem)	> 0)			if (xfermem_block(XF_WRITER, buffermem) == XF_CMD_TERMINATE) {				intflag = TRUE;				break;			}		buffermem->freeindex = -1;		buffermem->readindex = 0; /* I know what I'm doing! ;-) */		buffermem->freeindex = 0;		if (intflag)			return;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品视频免费| 麻豆国产精品视频| 久久精品国产秦先生| 色婷婷综合久久| 久久久精品国产99久久精品芒果| 亚洲精品亚洲人成人网在线播放| 精品一区二区三区免费| 欧美日韩免费在线视频| 最新欧美精品一区二区三区| 狠狠色丁香婷婷综合| 欧美日本国产一区| 亚洲欧洲韩国日本视频| 国产精品亚洲综合一区在线观看| 欧美四级电影在线观看| 最新不卡av在线| 国产成人av自拍| 久久―日本道色综合久久| 日韩成人av影视| 欧美人体做爰大胆视频| 1024成人网| 99视频精品在线| 国产日韩亚洲欧美综合| 国产伦精一区二区三区| 日韩一区二区影院| 蜜桃av一区二区在线观看| 欧美麻豆精品久久久久久| 亚洲小少妇裸体bbw| 99精品视频在线观看| 国产精品免费视频一区| 国产成人无遮挡在线视频| 久久久.com| 国产一区 二区 三区一级| 26uuu精品一区二区三区四区在线| 日韩不卡免费视频| 欧美一二三区在线观看| 奇米888四色在线精品| 欧美一级片免费看| 麻豆一区二区99久久久久| 欧美大片在线观看一区| 激情成人综合网| 国产日韩欧美亚洲| 懂色av一区二区三区蜜臀| 国产欧美综合在线| 不卡视频在线看| 亚洲欧美激情一区二区| 在线中文字幕不卡| 日本一不卡视频| 精品成人a区在线观看| 国产精品一区在线观看你懂的| 久久精品免费在线观看| 91一区二区三区在线观看| 一区二区视频在线| 欧美一区二区在线看| 国产一区亚洲一区| 国产精品成人网| 欧美性猛交xxxxxx富婆| 美国欧美日韩国产在线播放| 久久精品人人做人人综合| 99久久精品国产毛片| 亚洲成在线观看| 精品成人免费观看| 色综合久久天天| 另类专区欧美蜜桃臀第一页| 中文字幕欧美日韩一区| 欧美揉bbbbb揉bbbbb| 蜜桃久久精品一区二区| 国产精品福利一区二区| 欧美日韩在线播放| 国产电影一区在线| 亚洲综合视频网| 久久久夜色精品亚洲| 色婷婷久久久亚洲一区二区三区| 青青草国产成人99久久| 国产精品国产三级国产有无不卡 | 欧美视频一区二区三区四区| 免费成人你懂的| 亚洲乱码日产精品bd| 精品少妇一区二区三区在线视频| av中文字幕在线不卡| 蜜桃视频一区二区| 亚洲精品中文字幕乱码三区| 精品国产欧美一区二区| 日韩欧美一级特黄在线播放| 成人午夜免费电影| 奇米影视一区二区三区| 亚洲永久精品国产| 中文字幕精品在线不卡| 欧美大片在线观看一区二区| 色8久久人人97超碰香蕉987| 国产一区91精品张津瑜| 日本午夜精品一区二区三区电影| 日韩毛片在线免费观看| 久久久久久99精品| 日韩精品一区二| 欧美三级日韩三级| 一本一本大道香蕉久在线精品| 国产精品99久| 精品一区二区三区免费视频| 日韩精品五月天| 亚洲一区二区三区激情| 日韩一区中文字幕| 国产精品视频麻豆| 国产日韩综合av| 久久人人爽爽爽人久久久| 91精品久久久久久久91蜜桃| 欧美日韩一区二区在线视频| 色丁香久综合在线久综合在线观看| 成人三级在线视频| 国产suv一区二区三区88区| 国产一区 二区 三区一级| 卡一卡二国产精品| 精品在线播放午夜| 极品销魂美女一区二区三区| 久久精品理论片| 久久成人免费网站| 国产剧情一区二区三区| 国产一区福利在线| 国产寡妇亲子伦一区二区| 国产精品一二三区在线| 成人午夜视频网站| 94-欧美-setu| 欧美在线色视频| 欧美羞羞免费网站| 777亚洲妇女| 中国色在线观看另类| 国产精品蜜臀av| 最新不卡av在线| 亚洲成人你懂的| 日本免费在线视频不卡一不卡二| 日韩影院精彩在线| 精品一区二区三区的国产在线播放| 国产主播一区二区| 国产精品69毛片高清亚洲| 波多野结衣亚洲| 在线亚洲人成电影网站色www| 欧美日韩一区高清| 精品久久一区二区三区| 欧美经典一区二区| 一区二区三区四区视频精品免费 | 亚洲一二三专区| 麻豆精品一区二区综合av| 国产毛片精品视频| 91免费观看在线| 欧美妇女性影城| 国产欧美日韩另类一区| 一区二区在线观看视频在线观看| 婷婷国产在线综合| 国产精品一区二区无线| 在线观看日韩国产| 精品久久久久久最新网址| 国产精品视频免费| 日韩在线一区二区| 国产99精品在线观看| 欧美视频在线不卡| 日韩精品一区二区三区视频| 日韩毛片视频在线看| 奇米四色…亚洲| 97精品电影院| 日韩三区在线观看| 亚洲美女屁股眼交| 国产麻豆精品theporn| 欧美色网站导航| 欧美高清在线一区二区| 天涯成人国产亚洲精品一区av| 国产不卡视频在线观看| 欧美另类videos死尸| 亚洲欧洲精品一区二区精品久久久 | 欧美一卡二卡三卡四卡| 中文字幕一区免费在线观看 | 精品成人一区二区| 亚洲午夜精品一区二区三区他趣| 国产麻豆成人精品| 欧美一三区三区四区免费在线看| 中文字幕av在线一区二区三区| 视频在线观看91| 色香色香欲天天天影视综合网| 日韩精品在线看片z| 午夜精品久久久久久久久久| av动漫一区二区| 国产午夜亚洲精品羞羞网站| 日韩av电影一区| 欧美色综合网站| 亚洲激情在线激情| 不卡一区中文字幕| 国产女主播在线一区二区| 九一九一国产精品| 555www色欧美视频| 亚洲va欧美va人人爽午夜| 色婷婷久久久亚洲一区二区三区| 国产精品毛片久久久久久| 国产伦理精品不卡| 久久久国际精品| 狠狠狠色丁香婷婷综合激情| 日韩一区二区电影| 日本欧美加勒比视频| 91精品国产福利在线观看| 日韩国产欧美在线播放| 这里只有精品视频在线观看| 日韩精品一级中文字幕精品视频免费观看 | 国产欧美久久久精品影院|