SDL_PauseAudio函数

SDL_PauseAudio函数:

用此函数来暂停播放,或播放。根据参数来决定,如果参数是非0值就暂停,如果是0值就播放。

void SDL_PauseAudio(int pause_on)
例子:

int main(int argc, char* argv[])  
{  
    //Init  
    if(SDL_Init(SDL_INIT_AUDIO | SDL_INIT_TIMER)) {    
        printf( "Could not initialize SDL - %s\n", SDL_GetError());   
        return -1;  
    }  
    //SDL_AudioSpec  
    SDL_AudioSpec wanted_spec;  
    wanted_spec.freq = 44100;   
    wanted_spec.format = AUDIO_S16SYS;   
    wanted_spec.channels = 2;   
    wanted_spec.silence = 0;   
    wanted_spec.samples = 1024;   
    wanted_spec.callback = fill_audio;   
  
    if (SDL_OpenAudio(&wanted_spec, NULL)<0){   
        printf("can't open audio.\n");   
        return -1;   
    }   
  
    FILE *fp=fopen("../NocturneNo2inEflat_44.1k_s16le.pcm","rb+");  
    if(fp==NULL){  
        printf("cannot open this file\n");  
        return -1;  
    }  
    int pcm_buffer_size=4096;  
    char *pcm_buffer=(char *)malloc(pcm_buffer_size);  
    int data_count=0;  
  
    //Play  
    SDL_PauseAudio(0);  
  
    while(1){  
        if (fread(pcm_buffer, 1, pcm_buffer_size, fp) != pcm_buffer_size){  
            // Loop  
            fseek(fp, 0, SEEK_SET);  
            fread(pcm_buffer, 1, pcm_buffer_size, fp);  
            data_count=0;  
        }  
        printf("Now Playing %10d Bytes data.\n",data_count);  
        data_count+=pcm_buffer_size;  
        //Set audio buffer (PCM data)  
        audio_chunk = (Uint8 *) pcm_buffer;   
        //Audio buffer length  
        audio_len =pcm_buffer_size;  
        audio_pos = audio_chunk;  
          
        while(audio_len>0)//Wait until finish  
            SDL_Delay(1);   
    }  
    free(pcm_buffer);  
    SDL_Quit();  
  
    return 0;  
}  

蔡军生


老蔡学堂




SDL中获取扬声器欠载的方法主要包括以下几个步骤: 首先,使用SDL_Init函数来初始化SDL。在初始化时,会对系统的音频设备进行初始化,包括扬声器等。 接着,我们需要创建一个SDL_AudioSpec结构体,该结构体用于描述音频的参数信息。通过设置该结构体中的相关成员变量,可以控制音频的采样率、声道数、音频格式等。 然后,我们需要实现一个回调函数来处理音频数据。SDL会定期调用此回调函数,我们可以在其中对音频数据进行处理。当扬声器处于欠载状态时,我们可以在回调函数中进行相应的处理,例如准备一段静音或者降低音量。 接下来,我们需要使用SDL_OpenAudio函数来打开音频设备,并传入之前创建的SDL_AudioSpec结构体和回调函数。这样,SDL就会调用回调函数来处理音频数据,并通过音频设备进行输出。 在音频设备打开后,我们可以通过SDL_GetQueuedAudioSize函数来获取当前音频设备中待播放的音频数据大小。如果此值趋近于0,说明扬声器处于欠载状态。 最后,我们可以使用SDL_PauseAudio函数来暂停或者继续音频的播放。当扬声器欠载时,我们可以调用该函数来暂停音频的播放,以避免播放出现问题。 综上所述,以上就是在SDL中获取扬声器欠载的方法。通过控制音频参数、实现回调函数、打开音频设备以及获取待播放的音频数据大小,我们可以得知扬声器是否处于欠载状态,并做出相应的处理。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

caimouse

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值