这篇教程C++ CDAudio_Play函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中CDAudio_Play函数的典型用法代码示例。如果您正苦于以下问题:C++ CDAudio_Play函数的具体用法?C++ CDAudio_Play怎么用?C++ CDAudio_Play使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了CDAudio_Play函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: CLQ1_ParseCDTrackstatic void CLQ1_ParseCDTrack( QMsg& message ) { byte cdtrack = message.ReadByte(); message.ReadByte(); // looptrack if ( ( clc.demoplaying || clc.demorecording ) && ( cls.qh_forcetrack != -1 ) ) { CDAudio_Play( ( byte )cls.qh_forcetrack, true ); } else { CDAudio_Play( cdtrack, true ); }}
开发者ID:janisl,项目名称:jlquake,代码行数:10,
示例2: CDAudio_SysUpdateint CDAudio_SysUpdate (void){ struct cdrom_subchnl subchnl; static time_t lastchk = 0; if (cdPlaying && lastchk < time(NULL) && cdfile != -1) { lastchk = time(NULL) + 2; //two seconds between chks subchnl.cdsc_format = CDROM_MSF; if (ioctl(cdfile, CDROMSUBCHNL, &subchnl) == -1) { Con_Print("ioctl CDROMSUBCHNL failed/n"); cdPlaying = false; return -1; } if (subchnl.cdsc_audiostatus != CDROM_AUDIO_PLAY && subchnl.cdsc_audiostatus != CDROM_AUDIO_PAUSED) { cdPlaying = false; if (cdPlayLooping) CDAudio_Play(cdPlayTrack, true); } else cdPlayTrack = subchnl.cdsc_trk; } return 0;}
开发者ID:CyberSys,项目名称:darkplaces,代码行数:28,
示例3: CDAudio_MessageHandler/*============CDAudio_MessageHandler============*/LONG CDAudio_MessageHandler (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam){ if (lParam != wDeviceID) return 1; switch (wParam) { case MCI_NOTIFY_SUCCESSFUL: if (playing) { playing = false; if (playLooping) CDAudio_Play (SRC_COMMAND, playTrack, true); } break; case MCI_NOTIFY_ABORTED: case MCI_NOTIFY_SUPERSEDED: break; case MCI_NOTIFY_FAILURE: Con_DPrintf ("MCI_NOTIFY_FAILURE/n"); CDAudio_Stop (SRC_COMMAND); cdValid = false; break; default: Con_DPrintf ("Unexpected MM_MCINOTIFY type (%i)/n", wParam); return 1; } return 0;}
开发者ID:SpiritQuaddicted,项目名称:reQuiem,代码行数:38,
示例4: CDAudio_Updatevoid CDAudio_Update(){ if(!cd_id || !enabled) return; if(cd_volume && cd_volume->value != cdvolume) { if(cdvolume) { Cvar_SetValue("cd_volume",0.0); CDAudio_Pause(); } else { Cvar_SetValue("cd_volume",1.0); CDAudio_Resume(); } cdvolume = cd_volume->value; return; } if(cd_nocd->value) { CDAudio_Stop(); return; } if(playLooping && (SDL_CDStatus(cd_id) != CD_PLAYING) && (SDL_CDStatus(cd_id) != CD_PAUSED)) { CDAudio_Play(lastTrack,true); }}
开发者ID:AJenbo,项目名称:Quake-2,代码行数:32,
示例5: BGM_PlayCDtrackvoid BGM_PlayCDtrack (byte track, qboolean looping){/* instead of searching by the order of music_handlers, do so by * the order of searchpath priority: the file from the searchpath * with the highest path_id is most likely from our own gamedir * itself. This way, if a mod has track02 as a *.mp3 file, which * is below *.ogg in the music_handler order, the mp3 will still * have priority over track02.ogg from, say, data1. */ char tmp[MAX_QPATH]; const char *ext; unsigned int path_id, prev_id, type; music_handler_t *handler; BGM_Stop(); if (CDAudio_Play(track, looping) == 0) return; /* success */ if (music_handlers == NULL) return; if (no_extmusic || !bgm_extmusic.value) return; prev_id = 0; type = 0; ext = NULL; handler = music_handlers; while (handler) { if (! handler->is_available) goto _next; if (! CDRIPTYPE(handler->type)) goto _next; q_snprintf(tmp, sizeof(tmp), "%s/track%02d.%s", MUSIC_DIRNAME, (int)track, handler->ext); if (! FS_FileExists(tmp, &path_id)) goto _next; if (path_id > prev_id) { prev_id = path_id; type = handler->type; ext = handler->ext; } _next: handler = handler->next; } if (ext == NULL) Con_Printf("Couldn't find a cdrip for track %d/n", (int)track); else { q_snprintf(tmp, sizeof(tmp), "%s/track%02d.%s", MUSIC_DIRNAME, (int)track, ext); bgmstream = S_CodecOpenStreamType(tmp, type); if (! bgmstream) Con_Printf("Couldn't handle music file %s/n", tmp); }}
开发者ID:JohnnyonFlame,项目名称:gcw0-hexen2,代码行数:58,
示例6: CL_ParseConfigString/*================CL_ParseConfigString================*/void CL_ParseConfigString(void){ int i; char * s; i = MSG_ReadShort(&net_message); if (i < 0 || i >= MAX_CONFIGSTRINGS) { Com_Error(ERR_DROP, "configstring > MAX_CONFIGSTRINGS"); } s = MSG_ReadString(&net_message); strcpy(cl.configstrings[i], s); // do something apropriate if (i >= CS_LIGHTS && i < CS_LIGHTS + MAX_LIGHTSTYLES) { CL_SetLightstyle(i - CS_LIGHTS); } else if (i == CS_CDTRACK) { if (cl.refresh_prepped) { CDAudio_Play(atoi(cl.configstrings[CS_CDTRACK]), true); } } else if (i >= CS_MODELS && i < CS_MODELS + MAX_MODELS) { if (cl.refresh_prepped) { cl.model_draw[i - CS_MODELS] = re.RegisterModel(cl.configstrings[i]); if (cl.configstrings[i][0] == '*') cl.model_clip[i - CS_MODELS] = CM_InlineModel(cl.configstrings[i]); else cl.model_clip[i - CS_MODELS] = NULL; } } else if (i >= CS_SOUNDS && i < CS_SOUNDS + MAX_MODELS) { if (cl.refresh_prepped) cl.sound_precache[i - CS_SOUNDS] = S_RegisterSound(cl.configstrings[i]); } else if (i >= CS_IMAGES && i < CS_IMAGES + MAX_MODELS) { if (cl.refresh_prepped) cl.image_precache[i - CS_IMAGES] = re.RegisterPic(cl.configstrings[i]); } else if (i >= CS_PLAYERSKINS && i < CS_PLAYERSKINS + MAX_CLIENTS) { if (cl.refresh_prepped) CL_ParseClientinfo(i - CS_PLAYERSKINS); }}
开发者ID:glampert,项目名称:quake2-for-ps2,代码行数:59,
示例7: CL_PlayBackgroundTrackvoid CL_PlayBackgroundTrack (void){ char name[MAX_QPATH]; int track; //fileHandle_t f; //BC investigate whether these lines are needed!! //if (!cl.refresh_prepped) // return; // using a named audio track intead of numbered if (strlen(cl.configstrings[CS_CDTRACK]) > 2) { sprintf(name, va("music/%s.ogg", cl.configstrings[CS_CDTRACK]) ); if (FS_LoadFile(name, NULL) != -1) { //BC add looping track. //check if the intro name exists. If not, then just use the looping track. char introname[MAX_QPATH]; sprintf(introname, va("music/%s_intro.ogg", cl.configstrings[CS_CDTRACK]) ); if (FS_LoadFile(introname, NULL) <= -1) strcpy (introname, name); CDAudio_Stop(); S_StartBackgroundTrack(introname, name); return; } } track = atoi(cl.configstrings[CS_CDTRACK]); if (track == 0) { // Stop any playing track CDAudio_Stop(); S_StopBackgroundTrack(); return; } // If an OGG file exists play it, otherwise fall back to CD audio sprintf(name, va("music/track%02i.ogg", CL_MissionPackCDTrack(track)) ); if ( (FS_LoadFile(name, NULL) != -1) && cl_ogg_music->value ) { S_StartBackgroundTrack(name, name); } else { CDAudio_Play(track, true); }}
开发者ID:AimHere,项目名称:thirty-flights-of-linux,代码行数:49,
示例8: CL_PlayBackgroundTrackvoid CL_PlayBackgroundTrack(void){ char name[MAX_QPATH]; int track; Com_DPrintf("CL_PlayBackgroundTrack/n"); // debug if (!cl.refresh_prepped) return; // using a named audio track intead of numbered if (strlen(cl.configstrings[CS_CDTRACK]) > 2) { Com_sprintf(name, sizeof(name), "music/%s.ogg", cl.configstrings[CS_CDTRACK]); if (FS_LoadFile(name, NULL) != -1) {#ifdef CD_AUDIO CDAudio_Stop();#endif S_StartBackgroundTrack(name, name); return; } } track = atoi(cl.configstrings[CS_CDTRACK]); if (track == 0) { // Stop any playing track Com_DPrintf("CL_PlayBackgroundTrack: stopping/n"); // debug#ifdef CD_AUDIO CDAudio_Stop();#endif S_StopBackgroundTrack(); return; } // If an OGG file exists play it, otherwise fall back to CD audio Com_sprintf(name, sizeof(name), "music/track%02i.ogg", CL_MissionPackCDTrack(track)); if ((FS_LoadFile(name, NULL) != -1) && cl_ogg_music->value) { Com_DPrintf("CL_PlayBackgroundTrack: playing track %s/n", name); // debug S_StartBackgroundTrack(name, name); }#ifdef CD_AUDIO else CDAudio_Play(track, true);#endif}
开发者ID:qbism,项目名称:qbq2,代码行数:47,
示例9: CDAudio_UpdatevoidCDAudio_Update(void){ static time_t lastchk; if (!enabled) return; if (playing && lastchk < time(NULL)) { lastchk = time(NULL) + 2; //two seconds between chks if (!CDDrv_IsPlaying(playTrack)) { playing = false; if (playLooping) CDAudio_Play(playTrack, true); } }}
开发者ID:AidHamza,项目名称:eviltoys,代码行数:17,
示例10: CDAudio_UpdatevoidCDAudio_Update (){ static int cnt = 0; if ( !cd_id || !enabled ) { return; } if ( cd_volume && ( cd_volume->value != cdvolume ) ) { if ( cdvolume ) { Cvar_SetValue( "cd_volume", 0.0 ); CDAudio_Pause(); } else { Cvar_SetValue( "cd_volume", 1.0 ); CDAudio_Resume(); } cdvolume = cd_volume->value; return; } /* this causes too much overhead to be executed every frame */ if ( ++cnt == 16 ) { cnt = 0; if ( cd_nocd->value ) { CDAudio_Stop(); return; } if ( playLooping && ( SDL_CDStatus( cd_id ) != CD_PLAYING ) && ( SDL_CDStatus( cd_id ) != CD_PAUSED ) ) { CDAudio_Play( lastTrack, true ); } }}
开发者ID:Nekrofage,项目名称:Quake2RPi,代码行数:46,
示例11: DoDeathSpecialint DoDeathSpecial(short SpriteNum){ SPRITEp sp = &sprite[SpriteNum]; USERp u = User[SpriteNum]; static BOOL alreadydid = FALSE; DoMatchEverything(NULL, sp->lotag, ON); #ifndef SW_SHAREWARE if(gs.MusicOn && !alreadydid) { CDAudio_Stop(); CDAudio_Play(RedBookSong[Level], TRUE); alreadydid = TRUE; } #endif BossSpriteNum[0] = -2; return(0);}
开发者ID:dos-games,项目名称:vanilla-shadow_warrior,代码行数:20,
示例12: CDAudio_Updatevoid CDAudio_Update(void){ struct ioc_read_subchannel subchnl; struct cd_sub_channel_info data; static time_t lastchk; if (cdfile == -1 || !enabled) return; if (old_cdvolume != bgmvolume.value) CDAudio_SetVolume (&bgmvolume); if (playing && lastchk < time(NULL)) { lastchk = time(NULL) + 2; //two seconds between chks memset (&subchnl, 0, sizeof(subchnl)); subchnl.data = &data; subchnl.data_len = sizeof(data); subchnl.address_format = CD_MSF_FORMAT; subchnl.data_format = CD_CURRENT_POSITION; subchnl.track = playTrack; if (ioctl(cdfile, CDIOCREADSUBCHANNEL, &subchnl) == -1 ) { IOCTL_FAILURE(CDIOCREADSUBCHANNEL); playing = false; return; } if (data.header.audio_status != CD_AS_PLAY_IN_PROGRESS && data.header.audio_status != CD_AS_PLAY_PAUSED) { playing = false; if (playLooping) CDAudio_Play(playTrack, true); } else { playTrack = data.what.position.track_number; } }}
开发者ID:crutchwalkfactory,项目名称:motocakerteam,代码行数:41,
示例13: CDAudio_Updatevoid CDAudio_Update(void){ struct cdrom_subchnl subchnl; static time_t lastchk; if (!enabled) return; if (bgmvolume.value != cdvolume) { if (cdvolume) { Cvar_SetValue ("bgmvolume", 0.0); cdvolume = bgmvolume.value; CDAudio_Pause (); } else { Cvar_SetValue ("bgmvolume", 1.0); cdvolume = bgmvolume.value; CDAudio_Resume (); } } if (playing && lastchk < time(NULL)) { lastchk = time(NULL) + 2; //two seconds between chks subchnl.cdsc_format = CDROM_MSF; if (ioctl(cdfile, CDROMSUBCHNL, &subchnl) == -1 ) { Con_DPrintf("ioctl cdromsubchnl failed/n"); playing = false; return; } if (subchnl.cdsc_audiostatus != CDROM_AUDIO_PLAY && subchnl.cdsc_audiostatus != CDROM_AUDIO_PAUSED) { playing = false; if (playLooping) CDAudio_Play(playTrack, true); } }}
开发者ID:flwh,项目名称:Alcatel_OT_985_kernel,代码行数:40,
示例14: CDA_Startvoid CDA_Start (int track, qboolean loop, qboolean notify){#ifdef UQE_FMOD_CDAUDIO if (SND_InitialisedCD == false) return; if(SND_MusicChannel.inuse == true) FMOD_MusicStop(); if(loop == true) { SND_MusicChannel.looping = true; result = FMOD_Sound_SetMode(fmod_musicCD, FMOD_LOOP_NORMAL); FMOD_ERROR(result, true, false); } else { SND_MusicChannel.looping = false; result = FMOD_Sound_SetMode(fmod_musicCD, FMOD_LOOP_OFF); FMOD_ERROR(result, true, false); } // fmod track numbers starts at zero result = FMOD_Sound_GetSubSound(fmod_musicCD, track-1, &fmod_musicCD_subsound); FMOD_ERROR(result, notify, false); result = FMOD_System_GetChannel(fmod_system, 0, &SND_MusicChannel.channel); FMOD_ERROR(result, true, false); result = FMOD_System_PlaySound(fmod_system, FMOD_CHANNEL_REUSE, fmod_musicCD_subsound, FALSE, &SND_MusicChannel.channel); FMOD_ERROR(result, notify, false); SND_MusicChannel.inuse = true;#else CDAudio_Play((byte)track, loop);#endif}
开发者ID:infernuslord,项目名称:uqe-quake,代码行数:40,
示例15: CDAudio_Updatevoid CDAudio_Update(){ if(!cd_id || !enabled) return; if(bgmvolume.value != cdvolume) { if(cdvolume) { Cvar_SetValue("bgmvolume",0.0); CDAudio_Pause(); } else { Cvar_SetValue("bgmvolume",1.0); CDAudio_Resume(); } cdvolume = bgmvolume.value; return; } if(playLooping && (SDL_CDStatus(cd_id) != CD_PLAYING) && (SDL_CDStatus(cd_id) != CD_PAUSED)) CDAudio_Play(cd_id->cur_track+1,true);}
开发者ID:davemichael,项目名称:NaCl-Quake,代码行数:22,
示例16: CDAudio_Updatevoid CDAudio_Update(void){ CDstatus curstat; if (!cd_handle || !enabled) return; if (old_cdvolume != bgmvolume.value) CDAudio_SetVolume (&bgmvolume); if (playing && realtime > endOfTrack) { // curstat = cd_handle->status; curstat = SDL_CDStatus(cd_handle); if (curstat != CD_PLAYING && curstat != CD_PAUSED) { playing = false; endOfTrack = -1.0; if (playLooping) CDAudio_Play(playTrack, true); } }}
开发者ID:crutchwalkfactory,项目名称:motocakerteam,代码行数:23,
示例17: CL_PlayBackgroundTrackvoid CL_PlayBackgroundTrack (void){ char name[MAX_QPATH]; int track; //fileHandle_t f; if (!cl.refresh_prepped) return; // using a named audio track intead of numbered if (strlen(cl.configstrings[CS_CDTRACK]) > 2) { sprintf(name, va("music/%s.ogg", cl.configstrings[CS_CDTRACK]) ); if (FS_LoadFile(name, NULL) != -1) { CDAudio_Stop(); S_StartBackgroundTrack(name, name); return; } } track = atoi(cl.configstrings[CS_CDTRACK]); if (track == 0) { // Stop any playing track CDAudio_Stop(); S_StopBackgroundTrack(); return; } // If an OGG file exists play it, otherwise fall back to CD audio sprintf(name, va("music/track%02i.ogg", CL_MissionPackCDTrack(track)) ); if ( (FS_LoadFile(name, NULL) != -1) && cl_ogg_music->value ) S_StartBackgroundTrack(name, name); else CDAudio_Play(track, true);}
开发者ID:ptitSeb,项目名称:gravitybone-pandora,代码行数:37,
示例18: CL_PlayBackgroundTrackvoid CL_PlayBackgroundTrack (void){ CDAudio_Play (atoi(cl.configstrings[CS_CDTRACK]), true);}
开发者ID:qbism,项目名称:Quake2-colored-refsoft,代码行数:4,
示例19: CLQ2_PrepRefresh// Call before entering a new level, or after changing dllsvoid CLQ2_PrepRefresh() { if ( !cl.q2_configstrings[ Q2CS_MODELS + 1 ][ 0 ] ) { return; // no map loaded } // let the render dll load the map char mapname[ 32 ]; String::Cpy( mapname, cl.q2_configstrings[ Q2CS_MODELS + 1 ] + 5 ); // skip "maps/" mapname[ String::Length( mapname ) - 4 ] = 0; // cut off ".bsp" // register models, pics, and skins common->Printf( "Map: %s/r", mapname ); SCR_UpdateScreen(); R_BeginRegistrationAndLoadWorld( mapname ); common->Printf( " /r" ); // precache status bar pics common->Printf( "pics/r" ); SCR_UpdateScreen(); SCRQ2_InitHudShaders(); SCR_TouchPics(); common->Printf( " /r" ); CLQ2_RegisterTEntModels(); clq2_num_weaponmodels = 1; String::Cpy( clq2_weaponmodels[ 0 ], "weapon.md2" ); for ( int i = 1; i < MAX_MODELS_Q2 && cl.q2_configstrings[ Q2CS_MODELS + i ][ 0 ]; i++ ) { char name[ MAX_QPATH ]; String::Cpy( name, cl.q2_configstrings[ Q2CS_MODELS + i ] ); name[ 37 ] = 0; // never go beyond one line if ( name[ 0 ] != '*' ) { common->Printf( "%s/r", name ); } SCR_UpdateScreen(); if ( name[ 0 ] == '#' ) { // special player weapon model if ( clq2_num_weaponmodels < MAX_CLIENTWEAPONMODELS_Q2 ) { String::NCpy( clq2_weaponmodels[ clq2_num_weaponmodels ], cl.q2_configstrings[ Q2CS_MODELS + i ] + 1, sizeof ( clq2_weaponmodels[ clq2_num_weaponmodels ] ) - 1 ); clq2_num_weaponmodels++; } } else { cl.model_draw[ i ] = R_RegisterModel( cl.q2_configstrings[ Q2CS_MODELS + i ] ); if ( name[ 0 ] == '*' ) { cl.model_clip[ i ] = CM_InlineModel( String::Atoi( cl.q2_configstrings[ Q2CS_MODELS + i ] + 1 ) ); } else { cl.model_clip[ i ] = 0; } } if ( name[ 0 ] != '*' ) { common->Printf( " /r" ); } } common->Printf( "images/r" ); SCR_UpdateScreen(); for ( int i = 1; i < MAX_IMAGES_Q2 && cl.q2_configstrings[ Q2CS_IMAGES + i ][ 0 ]; i++ ) { cl.q2_image_precache[ i ] = CLQ2_RegisterPicShader( cl.q2_configstrings[ Q2CS_IMAGES + i ] ); } common->Printf( " /r" ); for ( int i = 0; i < MAX_CLIENTS_Q2; i++ ) { if ( !cl.q2_configstrings[ Q2CS_PLAYERSKINS + i ][ 0 ] ) { continue; } common->Printf( "client %i/r", i ); SCR_UpdateScreen(); CLQ2_ParseClientinfo( i ); common->Printf( " /r" ); } CLQ2_LoadClientinfo( &cl.q2_baseclientinfo, "unnamed//male/grunt" ); // set sky textures and speed common->Printf( "sky/r" ); SCR_UpdateScreen(); float rotate = String::Atof( cl.q2_configstrings[ Q2CS_SKYROTATE ] ); vec3_t axis; sscanf( cl.q2_configstrings[ Q2CS_SKYAXIS ], "%f %f %f", &axis[ 0 ], &axis[ 1 ], &axis[ 2 ] ); R_SetSky( cl.q2_configstrings[ Q2CS_SKY ], rotate, axis ); common->Printf( " /r" ); R_EndRegistration(); // clear any lines of console text Con_ClearNotify(); SCR_UpdateScreen(); cl.q2_refresh_prepped = true; // start the cd track CDAudio_Play( String::Atoi( cl.q2_configstrings[ Q2CS_CDTRACK ] ), true );}
开发者ID:janisl,项目名称:jlquake,代码行数:97,
示例20: CD_fstatic void CD_f (void){ char *command; int ret; int n; if (Cmd_Argc() < 2) return; command = Cmd_Argv (1); if (Q_strcasecmp(command, "on") == 0) { enabled = true; return; } if (Q_strcasecmp(command, "off") == 0) { if (playing) CDAudio_Stop(); enabled = false; return; } if (Q_strcasecmp(command, "reset") == 0) { enabled = true; if (playing) CDAudio_Stop(); for (n = 0; n < 100; n++) remap[n] = n; CDAudio_GetAudioDiskInfo(); return; } if (Q_strcasecmp(command, "remap") == 0) { ret = Cmd_Argc() - 2; if (ret <= 0) { for (n = 1; n < 100; n++) if (remap[n] != n) Con_Printf(" %u -> %u/n", n, remap[n]); return; } for (n = 1; n <= ret; n++) remap[n] = Q_atoi(Cmd_Argv (n+1)); return; } if (Q_strcasecmp(command, "close") == 0) { CDAudio_CloseDoor(); return; } if (!cdValid) { CDAudio_GetAudioDiskInfo(); if (!cdValid) { Con_Printf("No CD in player./n"); return; } } if (Q_strcasecmp(command, "play") == 0) { CDAudio_Play((byte)Q_atoi(Cmd_Argv (2)), false); return; } if (Q_strcasecmp(command, "loop") == 0) { CDAudio_Play((byte)Q_atoi(Cmd_Argv (2)), true); return; } if (Q_strcasecmp(command, "stop") == 0) { CDAudio_Stop(); return; } if (Q_strcasecmp(command, "pause") == 0) { CDAudio_Pause(); return; } if (Q_strcasecmp(command, "resume") == 0) { CDAudio_Resume(); return; } if (Q_strcasecmp(command, "eject") == 0) { if (playing)//.........这里部分代码省略.........
开发者ID:flwh,项目名称:Alcatel_OT_985_kernel,代码行数:101,
示例21: CDAudio_GetAudioDiskInfostatic int CDAudio_GetAudioDiskInfo(void){#if defined(__FreeBSD__) struct ioc_toc_header tochdr;#else struct cdrom_tochdr tochdr;#endif cdValid = false;#if defined(__FreeBSD__) if ( ioctl(cdfile, CDIOREADTOCHEADER, &tochdr) == -1 ) { Com_DPrintf("ioctl cdioreadtocheader failed/n");#else if ( ioctl(cdfile, CDROMREADTOCHDR, &tochdr) == -1 ) { Com_DPrintf("ioctl cdromreadtochdr failed/n");#endif return -1; }#if defined(__FreeBSD__) if (tochdr.starting_track < 1)#else if (tochdr.cdth_trk0 < 1)#endif { Com_DPrintf("CDAudio: no music tracks/n"); return -1; } cdValid = true;#if defined(__FreeBSD__) maxTrack = tochdr.ending_track;#else maxTrack = tochdr.cdth_trk1;#endif return 0;}void CDAudio_Play(int track, qboolean looping){#if defined(__FreeBSD__) struct ioc_read_toc_entry entry; struct cd_toc_entry toc_buffer; struct ioc_play_track ti;#else struct cdrom_tocentry entry; struct cdrom_ti ti;#endif if (cdfile == -1 || !enabled) return; if (!cdValid) { CDAudio_GetAudioDiskInfo(); if (!cdValid) return; } track = remap[track]; if (track < 1 || track > maxTrack) { Com_DPrintf("CDAudio: Bad track number %u./n", track); return; }#if defined(__FreeBSD__) #define CDROM_DATA_TRACK 4 bzero((char *)&toc_buffer, sizeof(toc_buffer)); entry.data_len = sizeof(toc_buffer); entry.data = &toc_buffer; // don't try to play a non-audio track entry.starting_track = track; entry.address_format = CD_MSF_FORMAT; if ( ioctl(cdfile, CDIOREADTOCENTRYS, &entry) == -1 ) { Com_DPrintf("ioctl cdromreadtocentry failed/n"); return; } if (toc_buffer.control == CDROM_DATA_TRACK)#else // don't try to play a non-audio track entry.cdte_track = track; entry.cdte_format = CDROM_LBA; if ( ioctl(cdfile, CDROMREADTOCENTRY, &entry) == -1 ) { Com_DPrintf("ioctl cdromreadtocentry failed/n"); return; } if (entry.cdte_ctrl == CDROM_DATA_TRACK)#endif { Com_Printf("CDAudio: track %i is not audio/n", track); return;//.........这里部分代码省略.........
开发者ID:chrisnew,项目名称:quake2,代码行数:101,
示例22: CL_ParseConfigStringvoidCL_ParseConfigString(void){ int i, length; char *s; char olds[MAX_QPATH]; i = MSG_ReadShort(&net_message); if ((i < 0) || (i >= MAX_CONFIGSTRINGS)) { Com_Error(ERR_DROP, "configstring > MAX_CONFIGSTRINGS"); } s = MSG_ReadString(&net_message); Q_strlcpy(olds, cl.configstrings[i], sizeof(olds)); length = strlen(s); if (length > sizeof(cl.configstrings) - sizeof(cl.configstrings[0])*i - 1) { Com_Error(ERR_DROP, "CL_ParseConfigString: oversize configstring"); } strcpy(cl.configstrings[i], s); /* do something apropriate */ if ((i >= CS_LIGHTS) && (i < CS_LIGHTS + MAX_LIGHTSTYLES)) { CL_SetLightstyle(i - CS_LIGHTS); } else if (i == CS_CDTRACK) { if (cl.refresh_prepped) {#ifdef CDA CDAudio_Play((int)strtol(cl.configstrings[CS_CDTRACK], (char **)NULL, 10), true);#endif#ifdef OGG /* OGG/Vorbis */ if ((int)strtol(cl.configstrings[CS_CDTRACK], (char **)NULL, 10) < 10) { char tmp[3] = "0"; OGG_ParseCmd(strcat(tmp, cl.configstrings[CS_CDTRACK])); } else { OGG_ParseCmd(cl.configstrings[CS_CDTRACK]); }#endif } } else if ((i >= CS_MODELS) && (i < CS_MODELS + MAX_MODELS)) { if (cl.refresh_prepped) { cl.model_draw[i - CS_MODELS] = R_RegisterModel(cl.configstrings[i]); if (cl.configstrings[i][0] == '*') { cl.model_clip[i - CS_MODELS] = CM_InlineModel(cl.configstrings[i]); } else { cl.model_clip[i - CS_MODELS] = NULL; } } } else if ((i >= CS_SOUNDS) && (i < CS_SOUNDS + MAX_MODELS)) { if (cl.refresh_prepped) { cl.sound_precache[i - CS_SOUNDS] = S_RegisterSound(cl.configstrings[i]); } } else if ((i >= CS_IMAGES) && (i < CS_IMAGES + MAX_MODELS)) { if (cl.refresh_prepped) { cl.image_precache[i - CS_IMAGES] = Draw_FindPic(cl.configstrings[i]); } } else if ((i >= CS_PLAYERSKINS) && (i < CS_PLAYERSKINS + MAX_CLIENTS)) { if (cl.refresh_prepped && strcmp(olds, s)) { CL_ParseClientinfo(i - CS_PLAYERSKINS); } }}
开发者ID:Clever-Boy,项目名称:yquake2,代码行数:97,
示例23: CLNQ_ParseServerMessage//.........这里部分代码省略......... Host_Error ("CL_ParseServerMessage: svc_updatefrags > NQ_MAX_CLIENTS"); cl.players[i].frags = MSG_ReadShort(); break; case nq_svc_updatecolors: NQD_ParseUpdatecolors (); break; case nq_svc_particle: CL_ParseParticleEffect (); break; case svc_spawnbaseline: i = MSG_ReadShort (); if (i >= NQ_MAX_EDICTS) Host_Error ("svc_spawnbaseline: ent > MAX_EDICTS"); NQD_BumpEntityCount (i); CL_ParseBaseline (&cl_entities[i].baseline); break; case svc_spawnstatic: CL_ParseStatic (); break; case svc_temp_entity: CL_ParseTEnt (); break; case svc_setpause: if (MSG_ReadByte() != 0) cl.paused |= PAUSED_SERVER; else cl.paused &= ~PAUSED_SERVER; if (cl.paused) CDAudio_Pause (); else CDAudio_Resume (); break; case nq_svc_signonnum: i = MSG_ReadByte (); if (i <= nq_signon) Host_Error ("Received signon %i when at %i", i, nq_signon); nq_signon = i; CLNQ_SignonReply (); break; case svc_killedmonster: cl.stats[STAT_MONSTERS]++; break; case svc_foundsecret: cl.stats[STAT_SECRETS]++; break; case svc_updatestat: i = MSG_ReadByte (); if (i < 0 || i >= MAX_CL_STATS) Sys_Error ("svc_updatestat: %i is invalid", i); cl.stats[i] = MSG_ReadLong ();; break; case svc_spawnstaticsound: CL_ParseStaticSound (); break; case svc_cdtrack: cl.cdtrack = MSG_ReadByte (); MSG_ReadByte(); // loop track (unused) if (nq_forcecdtrack != -1) CDAudio_Play ((byte)nq_forcecdtrack, true); else CDAudio_Play ((byte)cl.cdtrack, true); break; case svc_intermission: cl.intermission = 1; cl.completed_time = cl.time; VectorCopy (nq_last_fixangle, cl.simangles); break; case svc_finale: cl.intermission = 2; cl.completed_time = cl.time; SCR_CenterPrint (MSG_ReadString ()); VectorCopy (nq_last_fixangle, cl.simangles); break; case nq_svc_cutscene: cl.intermission = 3; cl.completed_time = cl.time; SCR_CenterPrint (MSG_ReadString ()); VectorCopy (nq_last_fixangle, cl.simangles); break; case svc_sellscreen: break; } }}
开发者ID:luaman,项目名称:zq,代码行数:101,
示例24: CD_fstatic void CD_f (void){ const char *command; int ret, n; if (Cmd_Argc() < 2) { Con_Printf("commands:"); Con_Printf("on, off, reset, remap, /n"); Con_Printf("play, stop, loop, pause, resume/n"); Con_Printf("eject, info/n"); return; } command = Cmd_Argv (1); if (q_strcasecmp(command, "on") == 0) { enabled = true; return; } if (q_strcasecmp(command, "off") == 0) { if (playing) CDAudio_Stop(); enabled = false; return; } if (q_strcasecmp(command, "reset") == 0) { enabled = true; if (playing) CDAudio_Stop(); for (n = 0; n < 100; n++) remap[n] = n; CDAudio_GetAudioDiskInfo(); return; } if (q_strcasecmp(command, "remap") == 0) { ret = Cmd_Argc () - 2; if (ret <= 0) { for (n = 1; n < 100; n++) if (remap[n] != n) Con_Printf (" %u -> %u/n", n, remap[n]); return; } for (n = 1; n <= ret; n++) remap[n] = atoi(Cmd_Argv (n + 1)); return; } if (!cdValid) { CDAudio_GetAudioDiskInfo (); if (!cdValid) { Con_Printf("No CD in player./n"); return; } } if (q_strcasecmp(command, "play") == 0) { CDAudio_Play((byte)atoi(Cmd_Argv (2)), false); return; } if (q_strcasecmp(command, "loop") == 0) { CDAudio_Play((byte)atoi(Cmd_Argv (2)), true); return; } if (q_strcasecmp(command, "stop") == 0) { CDAudio_Stop(); return; } if (q_strcasecmp(command, "pause") == 0) { CDAudio_Pause(); return; } if (q_strcasecmp(command, "resume") == 0) { CDAudio_Resume(); return; } if (q_strcasecmp(command, "eject") == 0) { if (playing) CDAudio_Stop();//.........这里部分代码省略.........
开发者ID:crutchwalkfactory,项目名称:motocakerteam,代码行数:101,
示例25: PlayingThreadProcstatic unsigned int __stdcall PlayingThreadProc(void *arglist){ struct ThreadArgList_t *tal = arglist; DSBPOSITIONNOTIFY notifies[BUFFER_PARTS]; HANDLE events[BUFFER_PARTS+1]; // +1 for StopEvent HANDLE endevents[2]; char *ptr; int i; DWORD dummy, fillpart; DWORD part_size; HRESULT hr; qboolean more_data; qboolean trackPlayedToEnd = false; CDAudio_WaitForFinish(); ResetEvent(cdPlayingFinishedEvent); ResetEvent(cdStopEvent); part_size = gCDBufSize / BUFFER_PARTS; for (i=0; i<BUFFER_PARTS; i++) { events[i] = CreateEvent(NULL, FALSE, FALSE, NULL); notifies[i].dwOffset = i * part_size; notifies[i].hEventNotify = events[i]; } events[i] = cdStopEvent; pDSBufCD->lpVtbl->GetStatus(pDSBufCD, &dummy); if (dummy & DSBSTATUS_BUFFERLOST) pDSBufCD->lpVtbl->Restore(pDSBufCD); pDSBufCDNotify->lpVtbl->SetNotificationPositions(pDSBufCDNotify, BUFFER_PARTS, notifies); if (FAILED(pDSBufCD->lpVtbl->Lock(pDSBufCD, 0, 0, &ptr, &dummy, NULL, NULL, DSBLOCK_ENTIREBUFFER))) { Con_DPrintf("CDAudio: cannot lock sound buffer./n"); return -1; } if (!PaintSoundOGG(tal, ptr, (BUFFER_PARTS-1)*part_size)) SetEvent(cdStopEvent); pDSBufCD->lpVtbl->Unlock(pDSBufCD, ptr, dummy, NULL, 0); pDSBufCD->lpVtbl->SetCurrentPosition(pDSBufCD, 0); pDSBufCD->lpVtbl->Play(pDSBufCD, 0, 0, DSBPLAY_LOOPING); while(true) { fillpart = WaitForMultipleObjects(BUFFER_PARTS+1, events, FALSE, 2000); if (fillpart >= WAIT_OBJECT_0 && fillpart < WAIT_OBJECT_0 + BUFFER_PARTS) { fillpart = (fillpart - WAIT_OBJECT_0 + BUFFER_PARTS - 1) % BUFFER_PARTS; hr = pDSBufCD->lpVtbl->Lock(pDSBufCD, part_size * fillpart, part_size, &ptr, &dummy, NULL, NULL, 0); if (hr == DSERR_BUFFERLOST) { pDSBufCD->lpVtbl->Restore(pDSBufCD); pDSBufCD->lpVtbl->Lock(pDSBufCD, part_size * fillpart, part_size, &ptr, &dummy, NULL, NULL, 0); } more_data = PaintSoundOGG(tal, ptr, part_size); pDSBufCD->lpVtbl->Unlock(pDSBufCD, ptr, dummy, NULL, 0); if (!more_data) { endevents[0] = events[fillpart]; endevents[1] = cdStopEvent; if (WaitForMultipleObjects(2, endevents, FALSE, 2000) == WAIT_OBJECT_0) trackPlayedToEnd = true; break; } } else break; } pDSBufCD->lpVtbl->Stop(pDSBufCD); pDSBufCDNotify->lpVtbl->SetNotificationPositions(pDSBufCDNotify, 0, NULL); for (i=0; i<BUFFER_PARTS; i++) CloseHandle(events[i]); CloseOGG(tal); playing = false; free(arglist); SetEvent(cdPlayingFinishedEvent); if (trackPlayedToEnd && playLooping) CDAudio_Play(playTrack, true); return 0;}
开发者ID:Azarien,项目名称:SoftQuake,代码行数:93,
示例26: CL_ParseServerMessage//.........这里部分代码省略......... case svc_setpause: cl.paused = MSG_ReadByte(); if (cl.paused) CDAudio_Pause(); else CDAudio_Resume(); break; case svc_signonnum: signon = MSG_ReadByte(); if (signon <= cls.signon) Host_Error("Received signon %d when at %d", signon, cls.signon); cls.signon = signon; CL_SignonReply(); break; case svc_killedmonster: cl.stats[STAT_MONSTERS]++; break; case svc_foundsecret: cl.stats[STAT_SECRETS]++; break; case svc_updatestat: statnum = MSG_ReadByte(); if (statnum < 0 || statnum >= MAX_CL_STATS) Sys_Error("svc_updatestat: %d is invalid", statnum); cl.stats[statnum] = MSG_ReadLong(); break; case svc_spawnstaticsound: CL_ParseStaticSound(); break; case svc_fitz_spawnstaticsound2: /* FIXME - check here that protocol is FITZ? => Host_Error() */ CL_ParseFitzStaticSound2(); break; case svc_cdtrack: cl.cdtrack = MSG_ReadByte(); cl.looptrack = MSG_ReadByte(); if ((cls.demoplayback || cls.demorecording) && (cls.forcetrack != -1)) CDAudio_Play((byte)cls.forcetrack, true); else CDAudio_Play((byte)cl.cdtrack, true); break; case svc_intermission: cl.intermission = 1; cl.completed_time = cl.time; vid.recalc_refdef = true; // go to full screen break; case svc_finale: cl.intermission = 2; cl.completed_time = cl.time; vid.recalc_refdef = true; // go to full screen SCR_CenterPrint(MSG_ReadString()); break; case svc_cutscene: cl.intermission = 3; cl.completed_time = cl.time; vid.recalc_refdef = true; // go to full screen SCR_CenterPrint(MSG_ReadString()); break; case svc_sellscreen: Cmd_ExecuteString("help", src_command); break; /* Various FITZ protocol messages - FIXME - !protocol => Host_Error */ case svc_fitz_skybox: MSG_ReadString(); // FIXME - TODO break; case svc_fitz_bf: Cmd_ExecuteString("bf", src_command); break; case svc_fitz_fog: /* FIXME - TODO */ MSG_ReadByte(); // density MSG_ReadByte(); // red MSG_ReadByte(); // green MSG_ReadByte(); // blue MSG_ReadShort(); // time break; default: Host_Error("%s: Illegible server message. Previous was %s", __func__, svc_strings[prevcmd]); } prevcmd = cmd; }}
开发者ID:RetroPie,项目名称:tyrquake,代码行数:101,
示例27: CL_ParseServerMessage//.........这里部分代码省略......... case svc_particle: R_ParseParticleEffect (); break; case svc_spawnbaseline: i = MSG_ReadShort (); // must use CL_EntityNum() to force cl.num_entities up CL_ParseBaseline (CL_EntityNum(i)); break; case svc_spawnstatic: CL_ParseStatic (); break; case svc_temp_entity: CL_ParseTEnt (); break; case svc_setpause: { cl.paused = MSG_ReadByte (); if (cl.paused) { CDAudio_Pause ();#ifdef _WIN32 VID_HandlePause (true);#endif } else { CDAudio_Resume ();#ifdef _WIN32 VID_HandlePause (false);#endif } } break; case svc_signonnum: i = MSG_ReadByte (); if (i <= cls.signon) Host_Error ("Received signon %i when at %i", i, cls.signon); cls.signon = i; CL_SignonReply (); break; case svc_killedmonster: cl.stats[STAT_MONSTERS]++; break; case svc_foundsecret: cl.stats[STAT_SECRETS]++; break; case svc_updatestat: i = MSG_ReadByte (); if (i < 0 || i >= MAX_CL_STATS) Sys_Error ("svc_updatestat: %i is invalid", i); cl.stats[i] = MSG_ReadLong ();; break; case svc_spawnstaticsound: CL_ParseStaticSound (); break; case svc_cdtrack: cl.cdtrack = MSG_ReadByte (); cl.looptrack = MSG_ReadByte (); if ( (cls.demoplayback || cls.demorecording) && (cls.forcetrack != -1) ) CDAudio_Play ((byte)cls.forcetrack, true); else CDAudio_Play ((byte)cl.cdtrack, true); break; case svc_intermission: cl.intermission = 1; cl.completed_time = (int) cl.time; vid.recalc_refdef = true; // go to full screen break; case svc_finale: cl.intermission = 2; cl.completed_time = (int) cl.time; vid.recalc_refdef = true; // go to full screen SCR_CenterPrint (MSG_ReadString ()); break; case svc_cutscene: cl.intermission = 3; cl.completed_time = (int) cl.time; vid.recalc_refdef = true; // go to full screen SCR_CenterPrint (MSG_ReadString ()); break; case svc_sellscreen: Cmd_ExecuteString2 ("help", src_command); break; } }}
开发者ID:flwh,项目名称:Alcatel_OT_985_kernel,代码行数:101,
示例28: CDAudio_Updatevoid CDAudio_Update(void){#if defined(__FreeBSD__) struct ioc_read_subchannel subchnl; struct cd_sub_channel_info data;#else struct cdrom_subchnl subchnl;#endif static time_t lastchk; if (cdfile == -1 || !enabled) return; if (cd_volume && cd_volume->value != cdvolume) { if (cdvolume) { Cvar_SetValue ("cd_volume", 0.0); cdvolume = cd_volume->value; CDAudio_Pause (); } else { Cvar_SetValue ("cd_volume", 1.0); cdvolume = cd_volume->value; CDAudio_Resume (); } } if (playing && lastchk < time(NULL)) { lastchk = time(NULL) + 2; //two seconds between chks#if defined(__FreeBSD__) subchnl.address_format = CD_MSF_FORMAT; subchnl.data_format = CD_CURRENT_POSITION; subchnl.data_len = sizeof(data); subchnl.track = playTrack; subchnl.data = &data; if (ioctl(cdfile, CDIOCREADSUBCHANNEL, &subchnl) == -1 ) { Com_DPrintf("ioctl cdiocreadsubchannel failed/n"); playing = false; return; } if (subchnl.data->header.audio_status != CD_AS_PLAY_IN_PROGRESS && subchnl.data->header.audio_status != CD_AS_PLAY_PAUSED) { playing = false; if (playLooping) CDAudio_Play(playTrack, true); }#else subchnl.cdsc_format = CDROM_MSF; if (ioctl(cdfile, CDROMSUBCHNL, &subchnl) == -1 ) { Com_DPrintf("ioctl cdromsubchnl failed/n"); playing = false; return; } if (subchnl.cdsc_audiostatus != CDROM_AUDIO_PLAY && subchnl.cdsc_audiostatus != CDROM_AUDIO_PAUSED) { playing = false; if (playLooping) CDAudio_Play(playTrack, true); }#endif }}
开发者ID:chrisnew,项目名称:quake2,代码行数:64,
示例29: CL_ParseConfigString/*================CL_ParseConfigString================*/void CL_ParseConfigString (void){ size_t length; int i; char *s; char olds[MAX_QPATH]; i = MSG_ReadShort (&net_message); if (i < 0 || i >= MAX_CONFIGSTRINGS) Com_Error (ERR_DROP, "CL_ParseConfigString: configstring %d >= MAX_CONFIGSTRINGS", i); s = MSG_ReadString(&net_message); Q_strncpy (olds, cl.configstrings[i], sizeof(olds)-1); //Com_Printf ("cs: %i=%s/n", LOG_GENERAL, i, MakePrintable (s)); //r1ch: only allow statusbar to overflow /*if (i >= CS_STATUSBAR && i < CS_AIRACCEL) strncpy (cl.configstrings[i], s, (sizeof(cl.configstrings[i]) * (CS_AIRACCEL - i))-1); else Q_strncpy (cl.configstrings[i], s, sizeof(cl.configstrings[i])-1);*/ //r1: overflow may be desired by some mods in stats programs for example. who knows. length = strlen(s); if (length >= (sizeof(cl.configstrings[0]) * (MAX_CONFIGSTRINGS-i)) - 1) Com_Error (ERR_DROP, "CL_ParseConfigString: configstring %d exceeds available space", i); //r1: don't allow basic things to overflow if (i != CS_NAME && i < CS_GENERAL) { if (i >= CS_STATUSBAR && i < CS_AIRACCEL) { strncpy (cl.configstrings[i], s, (sizeof(cl.configstrings[i]) * (CS_AIRACCEL - i))-1); } else { if (length >= MAX_QPATH) Com_Printf ("WARNING: Configstring %d of length %d exceeds MAX_QPATH./n", LOG_CLIENT|LOG_WARNING, i, (int)length); Q_strncpy (cl.configstrings[i], s, sizeof(cl.configstrings[i])-1); } } else { strcpy (cl.configstrings[i], s); } // do something apropriate if (i == CS_AIRACCEL) { pm_airaccelerate = (qboolean)atoi(cl.configstrings[CS_AIRACCEL]); } else if (i >= CS_LIGHTS && i < CS_LIGHTS+MAX_LIGHTSTYLES) { CL_SetLightstyle (i - CS_LIGHTS); }#ifdef CD_AUDIO else if (i == CS_CDTRACK) { if (cl.refresh_prepped) CDAudio_Play (atoi(cl.configstrings[CS_CDTRACK]), true); }#endif else if (i >= CS_MODELS && i < CS_MODELS+MAX_MODELS) { if (cl.refresh_prepped) { cl.model_draw[i-CS_MODELS] = re.RegisterModel (cl.configstrings[i]); if (cl.configstrings[i][0] == '*') cl.model_clip[i-CS_MODELS] = CM_InlineModel (cl.configstrings[i]); else cl.model_clip[i-CS_MODELS] = NULL; } //r1: load map whilst connecting to save a bit of time /*if (i == CS_MODELS + 1) { CM_LoadMap (cl.configstrings[CS_MODELS+1], true, &i); if (i && i != atoi(cl.configstrings[CS_MAPCHECKSUM])) Com_Error (ERR_DROP, "Local map version differs from server: 0x%.8x != 0x%.8x/n", i, atoi(cl.configstrings[CS_MAPCHECKSUM])); }*/ } else if (i >= CS_SOUNDS && i < CS_SOUNDS+MAX_MODELS) { if (cl.refresh_prepped) cl.sound_precache[i-CS_SOUNDS] = S_RegisterSound (cl.configstrings[i]); } else if (i >= CS_IMAGES && i < CS_IMAGES+MAX_MODELS) { if (cl.refresh_prepped) re.RegisterPic (cl.configstrings[i]); } else if (i == CS_MAXCLIENTS) {//.........这里部分代码省略.........
开发者ID:Slipyx,项目名称:r1q2,代码行数:101,
示例30: CD_fstatic void CD_f(){ char *command; int cdstate; if(Cmd_Argc() < 2) return; command = Cmd_Argv(1); if(!Q_strcasecmp(command,"on")) { enabled = true; } if(!Q_strcasecmp(command,"off")) { if(!cd_id) return; cdstate = SDL_CDStatus(cd_id); if((cdstate == CD_PLAYING) || (cdstate == CD_PAUSED)) CDAudio_Stop(); enabled = false; return; } if(!Q_strcasecmp(command,"play")) { CDAudio_Play((byte)atoi(Cmd_Argv(2)),false); return; } if(!Q_strcasecmp(command,"loop")) { CDAudio_Play((byte)atoi(Cmd_Argv(2)),true); return; } if(!Q_strcasecmp(command,"stop")) { CDAudio_Stop(); return; } if(!Q_strcasecmp(command,"pause")) { CDAudio_Pause(); return; } if(!Q_strcasecmp(command,"resume")) { CDAudio_Resume(); return; } if(!Q_strcasecmp(command,"eject")) { CDAudio_Eject(); return; } if(!Q_strcasecmp(command,"info")) { if(!cd_id) return; cdstate = SDL_CDStatus(cd_id); Com_Printf("%d tracks/n",cd_id->numtracks); if(cdstate == CD_PLAYING) Com_Printf("Currently %s track %d/n", playLooping ? "looping" : "playing", cd_id->cur_track+1); else if(cdstate == CD_PAUSED) Com_Printf("Paused %s track %d/n", playLooping ? "looping" : "playing", cd_id->cur_track+1); return; }}
开发者ID:AJenbo,项目名称:Quake-2,代码行数:67,
注:本文中的CDAudio_Play函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ CDAudio_Resume函数代码示例 C++ CDAudio_GetAudioDiskInfo函数代码示例 |