void DRV_AviSoundUpdate(void* soundData, int soundLen) { if(!AVI_IsRecording() || !avi_file->sound_added) return; const int audioSegmentSize = avi_audiosegment_size(avi_file); const int samplesPerSegment = audioSegmentSize / avi_file->wave_format.nBlockAlign; const int soundSize = soundLen * avi_file->wave_format.nBlockAlign; int nBytes = soundSize; while (avi_file->audio_buffer_pos + nBytes > audioSegmentSize) { const int bytesToTransfer = audioSegmentSize - avi_file->audio_buffer_pos; memcpy(&avi_file->audio_buffer[avi_file->audio_buffer_pos], &((u8*)soundData)[soundSize - nBytes], bytesToTransfer); nBytes -= bytesToTransfer; if(FAILED(AVIStreamWrite(avi_file->compressed_streams[AUDIO_STREAM], avi_file->sound_samples, samplesPerSegment, avi_file->audio_buffer, audioSegmentSize, 0, NULL, &avi_file->ByteBuffer))) { avi_file->valid = 0; return; } avi_file->sound_samples += samplesPerSegment; avi_file->tBytes += avi_file->ByteBuffer; avi_file->audio_buffer_pos = 0; } memcpy(&avi_file->audio_buffer[avi_file->audio_buffer_pos], &((u8*)soundData)[soundSize - nBytes], nBytes); avi_file->audio_buffer_pos += nBytes; }
void HK_RecordAVI(int, bool justPressed) { if (AVI_IsRecording()) AviEnd(); else AviRecordTo(); }