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

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

?? mpg123.c

?? mpeg 2 source code for video compression
?? 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"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 */	-1, /* do not use rva per default */	NULL /* no playlist 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;}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);    catchsignal (SIGCHLD, catch_child);    switch ((buffer_pid = fork())) {      case -1: /* error */        perror("fork()");#ifdef HAVE_TERMIOS	if(param.term_ctrl)		term_restore();#endif        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()");#ifdef HAVE_TERMIOS      if(param.term_ctrl)      	term_restore();#endif      exit (1);#ifndef NOXFERMEM    }#endif  }  switch(param.outmode) {    case DECODE_AUDIO:      if(audio_open(&ai) < 0) {        perror("audio");#ifdef HAVE_TERMIOS	if(param.term_ctrl)		term_restore();#endif        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:            fprintf (stderr, "%s: Unknown argument \"%s\" to option \"%s\".\n",                prgName, arg, loptarg);            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) {    fprintf(stderr,"Can't open %s for writing (%s).\n",Arg,strerror(errno));    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, 0 },	{0, "rva-radio",         GLO_INT,  0, &param.rva, 0 },	{0, "rva-album",         GLO_INT,  0, &param.rva, 1 },	{0, "rva-audiophile",         GLO_INT,  0, &param.rva, 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;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区国产| 色婷婷av一区二区三区之一色屋| 成人h动漫精品一区二区| 91香蕉视频在线| 日韩精品在线网站| 亚洲精品视频在线| 国内外成人在线视频| 欧美色综合影院| 国产欧美日韩卡一| 91精品黄色片免费大全| 日韩欧美一二三| 一区二区三区鲁丝不卡| 国产精品白丝jk黑袜喷水| 欧美精品成人一区二区三区四区| 夜夜夜精品看看| 国产成人精品综合在线观看| 欧美精品v国产精品v日韩精品 | 国产女主播在线一区二区| 亚洲在线成人精品| caoporm超碰国产精品| 精品女同一区二区| 偷拍一区二区三区四区| 色香蕉成人二区免费| 国产女人aaa级久久久级| 久久激情五月婷婷| 欧美一区二区三区小说| 亚洲午夜三级在线| 色94色欧美sute亚洲线路二| 中文字幕一区二区视频| 国产成人在线视频网址| 久久久亚洲欧洲日产国码αv| 免费一级欧美片在线观看| 欧美酷刑日本凌虐凌虐| 亚洲乱码国产乱码精品精98午夜| 成人app网站| 国产精品二区一区二区aⅴ污介绍| 国产精品一卡二卡| 国产亚洲综合色| 成人午夜短视频| 国产精品美女一区二区在线观看| 国产寡妇亲子伦一区二区| 久久先锋资源网| 国产精品自拍毛片| 欧美国产精品一区二区三区| 国产福利一区二区| 1000部国产精品成人观看| 99久久99久久精品免费观看| ...av二区三区久久精品| 91老司机福利 在线| 亚洲国产精品影院| 555夜色666亚洲国产免| 激情久久五月天| 国产欧美综合色| 色狠狠综合天天综合综合| 亚洲成a人片在线不卡一二三区 | 亚洲天堂网中文字| 色综合中文字幕国产 | 欧美一区二区在线观看| 日韩电影在线看| 亚洲精品一区在线观看| 国产成人av自拍| 亚洲欧美日韩精品久久久久| 欧美天堂亚洲电影院在线播放| 视频一区二区欧美| 久久一区二区视频| 色综合天天综合色综合av| 午夜电影一区二区三区| 国产日产精品一区| 欧美日韩一区在线观看| 国产麻豆视频一区二区| 亚洲激情欧美激情| 欧美精品一区男女天堂| 91丨porny丨蝌蚪视频| 日韩电影一区二区三区| 国产精品你懂的在线欣赏| 欧美日韩国产在线播放网站| 国产精品中文欧美| 亚洲成人免费视频| 亚洲国产成人午夜在线一区| 69av一区二区三区| 欧美日韩成人在线一区| 久久超碰97中文字幕| 日本一区二区三区四区| 色av成人天堂桃色av| 美腿丝袜在线亚洲一区| 国产精品久久久爽爽爽麻豆色哟哟| 欧美三级电影一区| 国产99久久久精品| 日韩电影在线免费观看| 国产精品色婷婷| 欧美一区二区女人| 色成人在线视频| 国产精品一区一区| 麻豆专区一区二区三区四区五区| 国产精品久久久久久久第一福利| 欧美日韩综合在线免费观看| 国产成人在线视频免费播放| 日日骚欧美日韩| 亚洲免费观看高清在线观看| 国产免费观看久久| 欧美精品一区二区精品网| 欧美丰满美乳xxx高潮www| 国产一区二区在线免费观看| 亚洲精品高清在线观看| 精品乱人伦小说| 欧美日韩不卡一区二区| 一本到三区不卡视频| 国产精品白丝av| 黄色资源网久久资源365| 青娱乐精品视频在线| 亚洲动漫第一页| 亚洲国产精品久久不卡毛片 | 色综合视频在线观看| 国产综合久久久久影院| 日韩精品视频网站| 亚洲国产一区在线观看| 综合激情网...| 国产精品第一页第二页第三页| 久久九九99视频| 日本一区二区视频在线观看| 国产日韩精品一区二区三区在线| 久久网这里都是精品| 久久精品人人做人人综合| xf在线a精品一区二区视频网站| 136国产福利精品导航| 欧美mv和日韩mv国产网站| 欧美精品1区2区3区| 欧美日韩一区二区在线视频| 欧美日韩综合在线免费观看| 欧美一a一片一级一片| 欧美视频你懂的| 欧美一区二区免费视频| 欧美不卡一区二区| 国产欧美日韩视频一区二区 | 国产亚洲欧美日韩在线一区| 久久在线观看免费| 国产精品欧美久久久久无广告| 中文字幕日本乱码精品影院| 亚洲丝袜自拍清纯另类| 艳妇臀荡乳欲伦亚洲一区| 亚洲综合精品久久| 蜜桃视频在线一区| 国产乱码一区二区三区| av一区二区三区在线| 欧美性极品少妇| 精品日韩一区二区三区| 中文字幕av一区 二区| 亚洲一区在线播放| 蜜桃av一区二区三区| 风流少妇一区二区| 另类小说视频一区二区| 国产一区二区精品久久91| av午夜一区麻豆| 欧美日韩一区二区不卡| 精品少妇一区二区| 亚洲欧洲国产日韩| 日本麻豆一区二区三区视频| 成人不卡免费av| 91精品国产91久久久久久一区二区 | 亚洲国产精品精华液2区45| 麻豆91在线播放| 国产传媒一区在线| 欧洲精品视频在线观看| 日韩欧美国产麻豆| 1区2区3区国产精品| 精品亚洲成av人在线观看| 欧美中文字幕久久| 久久婷婷国产综合国色天香 | 日韩免费一区二区三区在线播放| 欧美国产精品一区| 日本成人中文字幕| 在线视频国内一区二区| 国产婷婷一区二区| 青青草伊人久久| 欧美日韩一区二区三区四区五区| 国产日本欧美一区二区| 青青草精品视频| 欧美在线视频全部完| 国产精品久久久久一区| 九九久久精品视频| 91精品国产91热久久久做人人 | 日韩不卡免费视频| 欧美综合欧美视频| 国产精品一卡二卡| 日韩一区二区三区观看| 亚洲影院理伦片| 91久久精品网| 亚洲欧美韩国综合色| eeuss影院一区二区三区| 久久奇米777| 韩国女主播一区| www久久久久| 国产一区二区三区久久悠悠色av| 日韩一区二区三区免费看 | 91丝袜美女网| 国产精品短视频| 91免费版在线| 亚洲三级免费观看| 91美女精品福利| 亚洲人吸女人奶水|