123456789101112131415161718192021222324252627282930313233343536373839404142 |
- #include "precompile.h"
- #include "audiofile.h"
- #include "audiolog.h"
- apr_status_t audiofile_init(apr_pool_t *pool,
- audioengine_t *engine,
- const char *file,
- int opt,
- audiofile_t *audiofile)
- {
- audiofile->file = apr_pstrdup(pool, file);
- audiostream_init(engine, NULL, &audiofile->base);
- audiofile->base.direction = (opt & AUDIO_FILE_OPT_PLAY) ? STREAM_DIR_READ: STREAM_DIR_WRITE;
- audiofile->opt = opt;
- if (opt & AUDIO_FILE_OPT_RECORD) {
- audiofile->file_handle = CreateFileA(file, GENERIC_WRITE, FILE_SHARE_READ,
- NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
- if (audiofile->file_handle)
- SetEndOfFile(audiofile->file_handle);
- } else if (opt & AUDIO_FILE_OPT_PLAY) {
- audiofile->file_handle = CreateFileA(file, GENERIC_READ, FILE_SHARE_READ,
- NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
- } else {
- return APR_EGENERAL;
- }
- if (audiofile->file_handle == INVALID_HANDLE_VALUE) {
- audio_log_v(AUDIO_LOG_LEVEL_ERROR,"create file %s failed", file);
- return apr_get_os_error();
- }
- return APR_SUCCESS;
- }
- void audiofile_term(audiofile_t *audiofile)
- {
- if (audiofile->file_handle != INVALID_HANDLE_VALUE) {
- CloseHandle(audiofile->file_handle);
- audiofile->file_handle = INVALID_HANDLE_VALUE;
- }
- }
|