⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sdl_umsaudio.c

📁 完整的RTP RTSP代码库
💻 C
📖 第 1 页 / 共 2 页
字号:
            rc = UADSetNumberFormat(this, "SIGNED");            break;        case AUDIO_S16LSB:	    success       = 1;            bitsPerSample = 16;            rc = UADSetSampleRate(this,  spec->freq << 16, &outRate );            rc = UADSetByteOrder(this, "LSB");            rc = UADSetNumberFormat(this, "SIGNED");            break;        case AUDIO_S16MSB:	    success       = 1;            bitsPerSample = 16;            rc = UADSetSampleRate(this,  spec->freq << 16, &outRate );            rc = UADSetByteOrder(this, "MSB");            rc = UADSetNumberFormat(this, "SIGNED");            break;        case AUDIO_U16LSB:	    success       = 1;            bitsPerSample = 16;            rc = UADSetSampleRate(this,  spec->freq << 16, &outRate );            rc = UADSetByteOrder(this, "LSB");            rc = UADSetNumberFormat(this, "UNSIGNED");            break;        case AUDIO_U16MSB:	    success       = 1;            bitsPerSample = 16;            rc = UADSetSampleRate(this,  spec->freq << 16, &outRate );            rc = UADSetByteOrder(this, "MSB");            rc = UADSetNumberFormat(this, "UNSIGNED");            break;        default:            break;        }        if ( ! success ) {            test_format = SDL_NextAudioFormat();        }    }    while ( ! success && test_format );    if ( success == 0 ) {        SDL_SetError("Couldn't find any hardware audio formats");        return -1;    }    spec->format = test_format;    for ( frag_spec = 0; (0x01<<frag_spec) < spec->size; ++frag_spec );    if ( (0x01<<frag_spec) != spec->size ) {        SDL_SetError("Fragment size must be a power of two");        return -1;    }    if ( frag_spec > 2048 ) frag_spec = 2048;    this->hidden->bytesPerSample   = (bitsPerSample / 8) * spec->channels;    samplesPerSec                  = this->hidden->bytesPerSample * outRate;    this->hidden->playbuf._length  = 0;    this->hidden->playbuf._maximum = spec->size;    this->hidden->playbuf._buffer  = (unsigned char*)malloc(spec->size);    this->hidden->fillbuf._length  = 0;    this->hidden->fillbuf._maximum = spec->size;    this->hidden->fillbuf._buffer  = (unsigned char*)malloc(spec->size);    rc = UADSetBitsPerSample(this,  bitsPerSample );    rc = UADSetDMABufferSize(this,  frag_spec, &outBufSize );    rc = UADSetChannels(this, spec->channels);      /* functions reduces to mono or stereo */    lgain = 100; /*maximum left input gain*/    rgain = 100; /*maimum right input gain*/    rc = UADEnableOutput(this, "LINE_OUT",&lgain,&rgain);    rc = UADInitialize(this);    rc = UADStart(this);    rc = UADSetVolume(this, 100);    rc = UADSetBalance(this, 0);    /* We're ready to rock and roll. :-) */    return 0;}static UMSAudioDevice_ReturnCode UADGetBitsPerSample(_THIS, long* bits){    return UMSAudioDevice_get_bits_per_sample( this->hidden->umsdev,					       this->hidden->ev,					       bits );}static UMSAudioDevice_ReturnCode UADSetBitsPerSample(_THIS, long bits){    return UMSAudioDevice_set_bits_per_sample( this->hidden->umsdev,					       this->hidden->ev,					       bits );}static UMSAudioDevice_ReturnCode UADSetSampleRate(_THIS, long rate, long* set_rate){    /* from the mac code: sample rate = spec->freq << 16; */    return UMSAudioDevice_set_sample_rate( this->hidden->umsdev,					   this->hidden->ev,					   rate,					   set_rate );}static UMSAudioDevice_ReturnCode UADSetByteOrder(_THIS, string byte_order){    return UMSAudioDevice_set_byte_order( this->hidden->umsdev,					  this->hidden->ev,					  byte_order );}static UMSAudioDevice_ReturnCode UADSetAudioFormatType(_THIS, string fmt){    /* possible PCM, A_LAW or MU_LAW */    return UMSAudioDevice_set_audio_format_type( this->hidden->umsdev,						 this->hidden->ev,						 fmt );}static UMSAudioDevice_ReturnCode UADSetNumberFormat(_THIS, string fmt){    /* possible SIGNED, UNSIGNED, or TWOS_COMPLEMENT */    return UMSAudioDevice_set_number_format( this->hidden->umsdev,					     this->hidden->ev,					     fmt );}static UMSAudioDevice_ReturnCode UADInitialize(_THIS){    return UMSAudioDevice_initialize( this->hidden->umsdev,				      this->hidden->ev );}static UMSAudioDevice_ReturnCode UADStart(_THIS){    return UMSAudioDevice_start( this->hidden->umsdev,				 this->hidden->ev );}static UMSAudioDevice_ReturnCode UADSetTimeFormat(_THIS,  UMSAudioTypes_TimeFormat fmt ){    /*     * Switches the time format to the new format, immediately.     * possible UMSAudioTypes_Msecs, UMSAudioTypes_Bytes or UMSAudioTypes_Samples     */    return UMSAudioDevice_set_time_format( this->hidden->umsdev,					   this->hidden->ev,					   fmt );}static UMSAudioDevice_ReturnCode UADWriteBuffSize(_THIS,  long* buff_size ){    /*     * returns write buffer size in the current time format     */    return UMSAudioDevice_write_buff_size( this->hidden->umsdev,                                           this->hidden->ev,					   buff_size );}static UMSAudioDevice_ReturnCode UADWriteBuffRemain(_THIS,  long* buff_size ){    /*     * returns amount of available space in the write buffer     * in the current time format     */    return UMSAudioDevice_write_buff_remain( this->hidden->umsdev,                                             this->hidden->ev,					     buff_size );}static UMSAudioDevice_ReturnCode UADWriteBuffUsed(_THIS,  long* buff_size ){    /*     * returns amount of filled space in the write buffer     * in the current time format     */    return UMSAudioDevice_write_buff_used( this->hidden->umsdev,                                           this->hidden->ev,					   buff_size );}static UMSAudioDevice_ReturnCode UADSetDMABufferSize(_THIS,  long bytes, long* bytes_ret ){    /*     * Request a new DMA buffer size, maximum requested size 2048.     * Takes effect with next initialize() call.     * Devices may or may not support DMA.     */    return UMSAudioDevice_set_DMA_buffer_size( this->hidden->umsdev,					       this->hidden->ev,					       bytes,					       bytes_ret );}static UMSAudioDevice_ReturnCode UADSetVolume(_THIS,  long volume ){    /*     * Set the volume.     * Takes effect immediately.     */    return UMSAudioDevice_set_volume( this->hidden->umsdev,				      this->hidden->ev,				      volume );}static UMSAudioDevice_ReturnCode UADSetBalance(_THIS,  long balance ){    /*     * Set the balance.     * Takes effect immediately.     */    return UMSAudioDevice_set_balance( this->hidden->umsdev,				       this->hidden->ev,				       balance );}static UMSAudioDevice_ReturnCode UADSetChannels(_THIS,  long channels ){    /*     * Set mono or stereo.     * Takes effect with next initialize() call.     */    if ( channels != 1 ) channels = 2;    return UMSAudioDevice_set_number_of_channels( this->hidden->umsdev,				                  this->hidden->ev,				                  channels );}static UMSAudioDevice_ReturnCode UADOpen(_THIS,  string device, string mode, long flags){    return UMSAudioDevice_open( this->hidden->umsdev,				this->hidden->ev,				device,				mode,				flags );}static UMSAudioDevice_ReturnCode UADWrite(_THIS,  UMSAudioTypes_Buffer* buff,                                           long samples,					   long* samples_written){    return UMSAudioDevice_write( this->hidden->umsdev,				 this->hidden->ev,				 buff,				 samples,				 samples_written );}static UMSAudioDevice_ReturnCode UADPlayRemainingData(_THIS,  boolean block ){    return UMSAudioDevice_play_remaining_data( this->hidden->umsdev,					       this->hidden->ev,					       block);}static UMSAudioDevice_ReturnCode UADStop(_THIS){    return UMSAudioDevice_stop( this->hidden->umsdev,				this->hidden->ev );}static UMSAudioDevice_ReturnCode UADClose(_THIS){    return UMSAudioDevice_close( this->hidden->umsdev,				 this->hidden->ev );}static UMSAudioDevice_ReturnCode UADEnableOutput(_THIS,  string output, long* left_gain, long* right_gain){    return UMSAudioDevice_enable_output( this->hidden->umsdev,					 this->hidden->ev,					 output,					 left_gain,					 right_gain );}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -