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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? obuffer.cc

?? ac3的解碼程序
?? CC
字號:
/*   File: obuffer.cc      Description:   Audio output buffer implementation*/#ifdef __GNUG__#pragma implementation#endif#include <stdio.h>#include <stdlib.h>#include <string.h>#include <String.h>#include <unistd.h>#include <fcntl.h>#include <sys/ioctl.h>#include <sys/types.h>#ifndef LINUX#include <stropts.h>#endif#include <fstream.h>#ifdef IRIXextern "C" {#include <dmedia/audio.h>}#endif#ifdef SOLARIS#include <sys/audioio.h>#endif#ifdef LINUX#include <sys/soundcard.h>#endif#include <memory.h>#include <sys/select.h>#include <sys/time.h>  // Time#ifndef LINUXextern "C" {int ioctl(int, int, ...);}#else#define IOCTL(a,b,c)		ioctl(a,b,&c)#endif#include "athread.hh"#include <errno.h>#include "error.hh"#include "debug.hh"#include "util.hh"#include "sync.hh"#include "mpeg2const.hh"#include "mpeg2buff.hh"#include "astream.hh"#include "crc.hh"#include "header.hh"#include "obuffer.hh"ShortObuffer::ShortObuffer(uint32 number_of_channels){#ifdef DEBUG  if (!number_of_channels || number_of_channels > MAXCHANNELS){    String err("ShortObuffer: number of channels has to be in [1, ");    err+=itoa(MAXCHANNELS);    err+="]!";    error(err.chars());    athr_exit(0);  }#endif  channels = number_of_channels;  for (unsigned int i=0; i<number_of_channels; i++) bufferp[i]=buffer+i;}void ShortObuffer::append(uint32 channel, int16 value){#ifdef DEBUG  if (channel >= channels){    error("illegal channelnumber in ShortObuffer::append()!");    athr_exit(0);  }  if (bufferp[channel] - buffer >= OBUFFERSIZE){    error("ShortObuffer: buffer overflow!");    athr_exit(0);  }#endif  *bufferp[channel] = value;  bufferp[channel] += channels;}void ShortObuffer::write_buffer (int fd){  int length = (int)((char *)bufferp[0] - (char *)buffer);  if (write (fd, buffer, length) != length)    warning("couldn't write all samples");  for (unsigned int i=0; i<channels; i++) bufferp[i]=buffer+i;}#ifdef IRIX  IrixObuffer::IrixObuffer(uint32 number_of_channels, Header* header){#ifdef DEBUG  if (!number_of_channels || number_of_channels > MAXCHANNELS){    cerr << "IrixObuffer: number of channels has to be in [1, " <<  MAXCHANNELS << "] !\n";    exit(1);  }#endif  channels = number_of_channels;  for (int i = 0; i < number_of_channels; ++i) bufferp[i] = buffer + i;    // open an audio port and configure it:    ALconfig config;  if (!(config = ALnewconfig())){    error("ALnewconfig failed!");    exit(1);  }  ALsetwidth(config, AL_SAMPLE_16);  if (channels == 1)    ALsetchannels(config, AL_MONO);  else  ALsetchannels(config, AL_STEREO);  if (!(port = ALopenport("MPEG audio player", "w", config))){    error("can't allocate an audio port!");    exit (1);  }    // set sample rate:  long pvbuffer[2] = { AL_OUTPUT_RATE, 0 };  pvbuffer[1] = header->frequency ();  ALsetparams(AL_DEFAULT_DEVICE, pvbuffer, 2);  ALfreeconfig(config);}IrixObuffer::~IrixObuffer(){  while (ALgetfilled(port) > 0) sleep (1);  ALcloseport(port);}// All inline to avoid linking problem!void IrixObuffer::append(uint32 channel, int16 value){#ifdef DEBUG  if (channel >= channels){    error("illegal channelnumber in IrixObuffer::append()!");    athr_exit(0);  }  if (bufferp[channel] - buffer >= OBUFFERSIZE){    error("IrixObuffer: buffer overflow!");    athr_exit(0);  }#endif  *bufferp[channel] = value;  bufferp[channel] += channels;}void IrixObuffer::write_buffer(int /* dummy */){  ALwritesamps(port, buffer, (long)(bufferp[0] - buffer));  for (int i = 0; i < channels; ++i) bufferp[i] = buffer + i;}#endif // IRIX#ifdef SOLARISint SparcObuffer::audio_fd = -1;SparcObuffer::SparcObuffer (uint32 number_of_channels, Header *header,			    bool use_speaker, bool use_headphone, bool use_line_out){  channels=number_of_channels;#ifdef DEBUG  if (!number_of_channels || number_of_channels > MAXCHANNELS){    cerr << "SparcObuffer: 0 < number of channels < " << MAXCHANNELS << "!\n";    exit (1);  }#endif  for (unsigned int i=0; i<number_of_channels; i++) bufferp[i]=buffer+i;  if (audio_fd < 0){    error("SparcObuffer::audio_fd has to be initialized by SparcObuffer::class_suitable()!");    athr_exit(0);  }  // configure the device:  audio_info info;  AUDIO_INITINFO (&info);  info.output_muted = False;  info.play.sample_rate = header->frequency ();  info.play.channels = channels;  info.play.precision = 16;  info.play.encoding = AUDIO_ENCODING_LINEAR;//  info.play.gain=AUDIO_MAX_GAIN/3;  if (use_speaker)    info.play.port |= AUDIO_SPEAKER;  if (use_headphone)    info.play.port |= AUDIO_HEADPHONE;  if (use_line_out)    info.play.port |= AUDIO_LINE_OUT;  info.play.buffer_size=OBUFFERSIZE;  info.play.samples=0;  info.play.eof=0;  info.play.pause=0;  info.play.error=0;  info.play.waiting=0;  info.play.balance = AUDIO_MID_BALANCE;  if (ioctl(audio_fd, AUDIO_SETINFO, &info)){    error("configuration of /dev/audio failed");    athr_exit(0);  }}static int droppedframes=0;static timeval timeout;SparcObuffer::~SparcObuffer (void){  ioctl(audio_fd, AUDIO_DRAIN);  close (audio_fd);  msg("Number of interrupted frames: ");  message(itoa(droppedframes));}void SparcObuffer::append(uint32 channel, int16 value){#ifdef DEBUG  if (channel >= channels){    cerr << "illegal channelnumber in SparcObuffer::append()!\n";    exit (1);  }  if (bufferp[channel] - buffer >= OBUFFERSIZE){    cerr << "buffer overflow!\n";    exit (1);  }#endif  *bufferp[channel] = value;  bufferp[channel] += channels;}void SparcObuffer::write_buffer(int){  int length = (int)((char*) bufferp[0] - (char*) buffer);#ifdef SPARC5  // This stuff seems useful on a SUN Sparc 5   static fd_set wfs;  FD_ZERO(&wfs);  FD_SET(audio_fd, &wfs);  if (select(FD_SETSIZE, 0, &wfs, 0, &timeout)>=0){    if (FD_ISSET(audio_fd, &wfs)){#endif      if (write(audio_fd, buffer, length) != length){        message("Warning: couldn't write all samples to /dev/audio");      }#ifdef SPARC5    }    else {      ioctl(audio_fd, I_FLUSH, FLUSHW);    // flush current stuff and replace by new      msg("flush audio");      droppedframes++;      if (write(audio_fd, buffer, length) != length){        message("Warning: couldn't write all samples to /dev/audio");      }    }  }#endif  for (unsigned int i=0; i<channels; i++) bufferp[i]=buffer+i;}int SparcObuffer::open_audio_device (void){  int fd=0;  // just check  if ((fd=open("/dev/audio", O_WRONLY | O_NDELAY)) < 0) //     if (errno == EBUSY){      cerr << "Sorry, the audio device is busy!\n";      exit (1);    }    else{      perror ("can't open /dev/audio for writing");      exit (1);    }  ioctl(fd, I_FLUSH, FLUSHRW);  close(fd);  /* now open (blocking) // | O_NDELAY)) */  if ((fd=open("/dev/audio", O_WRONLY))< 0){     if (errno == EBUSY){      error("Sorry, the audio device is busy!");      athr_exit(0);    }    else {      error("can't open /dev/audio for writing");      athr_exit(0);    }  }  ioctl(fd, I_FLUSH, FLUSHW);  // next time out  timeout.tv_sec=0;             // length/5513;  // length/5513=length*8 / 44100 (bps)   timeout.tv_usec=752600;  // (long int) (length*181);   // length*181= length*8/ 44100 * 1000000}void SparcObuffer::get_device_type (int fd, audio_device *devtype){  if (ioctl (fd, AUDIO_GETDEV, devtype)){    error("ioctl on /dev/audio");    athr_exit(0);  }}bool SparcObuffer::class_suitable (void){  audio_fd=open_audio_device();      // check for the CS4231 or dbri audio device  audio_device devtype;  get_device_type(audio_fd, &devtype);  // Sparc 5: CS4321, Sparc 10: dbri  return (!strcmp (devtype.name, "SUNW,CS4231") || !strcmp (devtype.name, "SUNW,dbri")) ? True : False;}#endif // SOLARIS#ifdef LINUXint LinuxObuffer::audio_fd = -1;LinuxObuffer::LinuxObuffer (uint32 number_of_channels,Header *header) {  int abuf_size;  int sample_rate;  int sample_bits=16;  int chan = channels=number_of_channels;  #ifdef DEBUG  if (!number_of_channels || number_of_channels > MAXCHANNELS){    cerr << "LinuxObuffer: 0 < number of channels < " << MAXCHANNELS << "!\n";    exit (1);  }#endif  for (unsigned int i=0; i<number_of_channels; i++) bufferp[i]=buffer+i;  if (audio_fd < 0){    error("LinuxObuffer::audio_fd has to be initialized by LinuxObuffer::class_suitable()!");    athr_exit(0);  }  IOCTL(audio_fd, SNDCTL_DSP_GETBLKSIZE, abuf_size);  if (abuf_size < 4096 || abuf_size > 65536) {    if (abuf_size == -1) {      error ("LinuxObuffer::abufsize failure");    } else {      error("Invalid audio buffers size \n");    }    athr_exit (0);  }  // configure the device:  sample_rate = header->frequency ();  if (IOCTL(audio_fd, SNDCTL_DSP_SPEED, sample_rate) < 0) {    error("unable to set audio speed");    athr_exit (0);  }  if ( IOCTL(audio_fd, SNDCTL_DSP_CHANNELS, chan) < 0 ) {    printf("LinuxObuffer::amount of channels (%d) not supported\n",chan);    athr_exit(0);  }  chan--;  if ( IOCTL(audio_fd, SNDCTL_DSP_STEREO, chan) < 0 ) {    printf("LinuxObuffer::Error when setting stereo\n");    athr_exit(0);  }  IOCTL(audio_fd, SNDCTL_DSP_SAMPLESIZE, sample_bits);}static int droppedframes=0;static timeval timeout;LinuxObuffer::~LinuxObuffer (void){  ioctl(audio_fd, SNDCTL_DSP_SYNC,NULL);  close (audio_fd);  msg("Number of interrupted frames: ");  message(itoa(droppedframes));}void LinuxObuffer::append(uint32 channel, int16 value){#ifdef DEBUG  if (channel >= channels){    cerr << "illegal channelnumber in SparcObuffer::append()!\n";    exit (1);  }  if (bufferp[channel] - buffer >= OBUFFERSIZE){    cerr << "buffer overflow!\n";    exit (1);  }#endif  *bufferp[channel] = value;  bufferp[channel] += channels;}void LinuxObuffer::write_buffer(int){  int length = (int)((char*) bufferp[0] - (char*) buffer);      if (write(audio_fd, buffer, length) != length){        message("Warning: couldn't write all samples to /dev/audio");      }  for (unsigned int i=0; i<channels; i++) bufferp[i]=buffer+i;}int LinuxObuffer::open_audio_device (void){  int fd=0;  // just check  if ((fd=open("/dev/dsp", O_WRONLY | O_NDELAY)) < 0) //     if (errno == EBUSY){      cerr << "Sorry, the audio device is busy!\n";      exit (1);    }    else{      perror ("can't open /dev/audio for writing");      exit (1);    }  ioctl(fd, SNDCTL_DSP_SYNC,NULL);  close(fd);  /* now open (blocking) // | O_NDELAY)) */  if ((fd=open("/dev/dsp", O_WRONLY))< 0){     if (errno == EBUSY){      error("Sorry, the audio device is busy!");      athr_exit(0);    }    else {      error("can't open /dev/audio for writing");      athr_exit(0);    }  }  ioctl(fd, SNDCTL_DSP_SYNC,NULL);  // next time out  timeout.tv_sec=0;             // length/5513;  // length/5513=length*8 / 44100 (bps)   timeout.tv_usec=752600;  // (long int) (length*181);   // length*181= length*8/ 44100 * 1000000  return fd;}bool LinuxObuffer::class_suitable (void){  audio_fd=open_audio_device();      // check for audio device  if (audio_fd == -1)    return False;  return True;}#endif // LINUX

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品91xxx| 精品国产乱码久久久久久图片| 欧美怡红院视频| 久久精品视频在线免费观看| 亚洲一级不卡视频| 成人午夜视频网站| 国产亚洲精品中文字幕| 午夜激情一区二区| 欧美天天综合网| 亚洲日本在线看| 成人美女在线观看| 国产欧美一区在线| 丁香婷婷综合色啪| 亚洲国产经典视频| 成人黄色av电影| 日本一区二区三区高清不卡| 精品一区二区久久| 日韩免费看的电影| 风流少妇一区二区| 一区二区三区在线观看欧美| 日本成人在线一区| 91精品在线一区二区| 偷窥少妇高潮呻吟av久久免费| 欧美午夜片在线观看| 亚洲r级在线视频| 91精品在线观看入口| 午夜电影网一区| 日韩欧美中文字幕公布| 激情综合色综合久久| 国产午夜亚洲精品午夜鲁丝片| 国产宾馆实践打屁股91| 国产精品情趣视频| 欧美亚洲日本国产| 久久精品国产网站| 中文字幕一区二区三区视频| av成人免费在线观看| 五月天精品一区二区三区| 精品久久久久久久人人人人传媒| 国产麻豆精品视频| 亚洲欧美国产高清| 日韩免费性生活视频播放| 成人av午夜电影| 日本不卡视频在线观看| 国产精品青草综合久久久久99| 欧美在线观看视频一区二区| 久久精品久久综合| 亚洲欧美国产毛片在线| 久久亚洲二区三区| 欧美亚洲高清一区| 成人精品在线视频观看| 欧美a一区二区| 一区二区三区四区视频精品免费 | 不卡电影一区二区三区| 亚洲国产精品一区二区尤物区| 欧美韩日一区二区三区四区| 欧美精品少妇一区二区三区| 成人精品一区二区三区四区 | 成人app下载| 久久99久国产精品黄毛片色诱| 亚洲另类色综合网站| 精品国免费一区二区三区| 日韩毛片一二三区| 日韩欧美国产麻豆| 欧美午夜一区二区| 91女人视频在线观看| 国产99久久久国产精品潘金| 久久精品国产第一区二区三区| 亚洲国产成人91porn| 亚洲一二三专区| 婷婷六月综合网| 美女一区二区视频| 经典三级视频一区| 国产一级精品在线| 高清成人免费视频| 99re亚洲国产精品| 一本色道久久综合狠狠躁的推荐 | 午夜精品久久久久久久99水蜜桃| 玉足女爽爽91| 亚洲成人综合在线| 视频一区欧美日韩| 国产曰批免费观看久久久| 国产美女视频91| 97久久精品人人做人人爽50路| 99re8在线精品视频免费播放| 91九色最新地址| 777午夜精品免费视频| 日韩精品一区二区三区视频播放| 日韩欧美国产综合| 国产精品久久久久影院老司| 一区二区日韩电影| 黄一区二区三区| 本田岬高潮一区二区三区| 欧美午夜精品一区二区三区| 9191成人精品久久| 国产精品乱码一区二区三区软件 | 国产在线一区观看| 色婷婷综合中文久久一本| 欧美一级电影网站| 亚洲欧洲国产专区| 另类小说图片综合网| 成人91在线观看| 日韩丝袜情趣美女图片| |精品福利一区二区三区| 免费人成在线不卡| 91久久精品一区二区三| 精品av久久707| 亚洲成av人影院在线观看网| 夫妻av一区二区| 精品日本一线二线三线不卡| 亚洲欧美一区二区三区久本道91| 秋霞电影一区二区| 欧美综合一区二区| 国产精品久久久久国产精品日日| 亚洲一区二区中文在线| 91尤物视频在线观看| 久久久青草青青国产亚洲免观| 午夜免费久久看| 99国产精品久| 精品国产免费一区二区三区四区| 一级做a爱片久久| 91丨九色丨蝌蚪富婆spa| 精品国产不卡一区二区三区| 午夜av区久久| 欧美日韩大陆在线| 午夜精品爽啪视频| 欧美视频一区二区三区在线观看| 欧美国产欧美亚州国产日韩mv天天看完整| 日本不卡一二三| 日韩欧美一级精品久久| 天使萌一区二区三区免费观看| 在线观看亚洲精品| 一区二区三区国产精品| 在线观看一区二区视频| 五月天婷婷综合| 日韩一区二区三区在线视频| 日本成人在线电影网| 亚洲国产精品t66y| 国产91精品在线观看| 国产人久久人人人人爽| 成人av综合一区| 亚洲欧美国产毛片在线| 91福利视频网站| 奇米影视7777精品一区二区| 精品sm在线观看| www.在线欧美| 午夜精品久久一牛影视| 精品国产人成亚洲区| 成人精品gif动图一区| 一区二区三区四区不卡视频| 欧美精品久久久久久久久老牛影院| 午夜精品福利在线| 国产日韩v精品一区二区| 99re免费视频精品全部| 午夜一区二区三区视频| 精品国产一区a| 一本一本久久a久久精品综合麻豆| 亚洲v日本v欧美v久久精品| 日韩一区国产二区欧美三区| 国产二区国产一区在线观看| 亚洲综合免费观看高清完整版在线| 欧美一卡在线观看| 91啪九色porn原创视频在线观看| 奇米一区二区三区av| 一区二区高清免费观看影视大全| 久久久久久久久久美女| 日韩精品中文字幕一区| 色偷偷88欧美精品久久久| 国产在线精品免费| 日韩高清国产一区在线| 亚洲人成人一区二区在线观看| 欧美日韩高清在线| 91在线视频免费91| 成熟亚洲日本毛茸茸凸凹| 日本午夜精品视频在线观看| 亚洲一二三区在线观看| 国产精品国产三级国产| 国产午夜精品久久久久久久 | 国产一区二区在线影院| 无吗不卡中文字幕| 一区二区三区国产精品| 亚洲欧美另类小说| 亚洲日本va午夜在线影院| 日本一区二区电影| 久久精品在这里| 精品成人私密视频| 精品99一区二区三区| 久久日韩精品一区二区五区| 欧美一区二区免费视频| 欧美一区二区视频网站| 宅男在线国产精品| 欧美大片在线观看一区二区| 4438亚洲最大| 精品国产伦一区二区三区免费| 正在播放亚洲一区| 精品国产青草久久久久福利| 久久久综合九色合综国产精品| 久久一日本道色综合| 亚洲狠狠爱一区二区三区| 亚洲欧美另类在线| 日韩黄色片在线观看|