Changeset 4908:1268f8d7b740 in roaraudio
- Timestamp:
- 05/07/11 16:37:01 (12 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
roarfish/play.c
r4708 r4908 27 27 28 28 struct roarfish_play_inst { 29 int roarfh; 30 int begun; 29 roar_vs_t * vss; 30 int _roarfh; 31 int _begun; 31 32 FishSoundInfo fsinfo; 32 33 FishSound * fsound; … … 37 38 int16_t * data; 38 39 int i; 39 doubles;40 float s; 40 41 41 if ( !inst->begun) {42 if (inst->vss == NULL) { 42 43 fish_sound_command (fsound, FISH_SOUND_GET_INFO, &(inst->fsinfo), 43 44 sizeof (FishSoundInfo)); 44 if ( (inst->roarfh = roar_simple_play(inst->fsinfo.samplerate, inst->fsinfo.channels, 45 16, ROAR_CODEC_NATIVE, NULL, "roarfish")) == -1 ) { 45 46 if ( (inst->vss = roar_vs_new_playback(NULL, "roarfish", inst->fsinfo.samplerate, inst->fsinfo.channels, 47 ROAR_CODEC_DEFAULT, 16, NULL)) == NULL ) { 46 48 return -1; 47 49 } 48 inst->begun = 1;49 50 } 50 51 51 if ( (data = malloc(frames*2*inst->fsinfo.channels)) == NULL ) {52 if ( (data = roar_mm_malloc(frames*2*inst->fsinfo.channels)) == NULL ) { 52 53 return -1; 53 54 } … … 57 58 for (i = 0; i < frames; i++) { 58 59 s = ((float*)pcm)[i]; 59 s *= 32767 ;60 s *= 32767.f; 60 61 data[i] = s; 61 62 } 62 63 63 64 64 write(inst->roarfh, (char*)data, frames * 2);65 roar_vs_write(inst->vss, (char*)data, frames * 2, NULL); 65 66 66 67 67 free(data);68 roar_mm_free(data); 68 69 69 70 return 0; … … 83 84 struct roarfish_play_inst inst; 84 85 85 inst.roarfh = -1; 86 inst.begun = 0; 86 inst.vss = NULL; 87 87 88 88 inst.fsound = fish_sound_new(FISH_SOUND_DECODE, &inst.fsinfo); … … 105 105 fish_sound_delete(inst.fsound); 106 106 107 return -1; 107 if ( inst.vss != NULL ) 108 roar_vs_close(inst.vss, ROAR_VS_FALSE, NULL); 109 110 return 0; 108 111 } 109 112
Note: See TracChangeset
for help on using the changeset viewer.