From 0073f2b8befc6163f2970cb7a01e75fffc95994e Mon Sep 17 00:00:00 2001 From: Takamichi Horikawa Date: Mon, 27 Mar 2017 23:32:18 +0900 Subject: refactor common file loading functions --- common/fmplayer_file.h | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 common/fmplayer_file.h (limited to 'common/fmplayer_file.h') diff --git a/common/fmplayer_file.h b/common/fmplayer_file.h new file mode 100644 index 0000000..fd7c53e --- /dev/null +++ b/common/fmplayer_file.h @@ -0,0 +1,52 @@ +#ifndef MYON_FMPLAYER_FILE_H_INCLUDED +#define MYON_FMPLAYER_FILE_H_INCLUDED + +#include +#include "fmdriver/fmdriver.h" +#include "fmdriver/fmdriver_pmd.h" +#include "fmdriver/fmdriver_fmp.h" + +enum fmplayer_file_type { + FMPLAYER_FILE_TYPE_PMD, + FMPLAYER_FILE_TYPE_FMP +}; + +enum fmplayer_file_error { + FMPLAYER_FILE_ERR_OK, + FMPLAYER_FILE_ERR_NOMEM, + FMPLAYER_FILE_ERR_FILEIO, + FMPLAYER_FILE_ERR_BADFILE_SIZE, + FMPLAYER_FILE_ERR_BADFILE, + FMPLAYER_FILE_ERR_COUNT +}; + +struct fmplayer_file { + void *path; + enum fmplayer_file_type type; + union { + struct driver_pmd pmd; + struct driver_fmp fmp; + } driver; + bool pmd_ppc_err; + bool pmd_ppz_err; + bool fmp_pvi_err; + bool fmp_ppz_err; + void *buf; + void *ppzbuf[2]; +}; +struct fmplayer_file *fmplayer_file_alloc(const void *path, enum fmplayer_file_error *error); +void fmplayer_file_free(const struct fmplayer_file *fmfile); +void fmplayer_file_load(struct fmdriver_work *work, struct fmplayer_file *fmfile); + +const char *fmplayer_file_strerror(enum fmplayer_file_error error); +const wchar_t *fmplayer_file_strerror_w(enum fmplayer_file_error error); + +// path: wchar_t* on windows, else char* +// examples: +// fmplayer_fileread("/home/foo/bar.mz", 0, 0, &filesize); +// fmplayer_fileread("/home/foo/bar.mz", "BAZ", ".PVI", &filesize); +void *fmplayer_fileread(const void *path, const char *pcmname, const char *extension, size_t maxsize, size_t *filesize, enum fmplayer_file_error *error); + +void *fmplayer_path_dup(const void *path); + +#endif // MYON_FMPLAYER_FILE_H_INCLUDED -- cgit v1.2.3