diff --git a/source/flac.c b/source/flac.c index 49f922c..7c5b933 100644 --- a/source/flac.c +++ b/source/flac.c @@ -75,3 +75,21 @@ void exitFlac(void) { drflac_close(pFlac); } + +/** + * Checks if the input file is Flac + * + * \param in Input file. + * \return 0 if Flac file, else not or failure. + */ +int isFlac(const char* in) +{ + int err = -1; + drflac* pFlac = drflac_open_file(in); + + if(pFlac != NULL) + err = 0; + + drflac_close(pFlac); + return err; +} diff --git a/source/flac.h b/source/flac.h index 5da31ec..473cc1e 100644 --- a/source/flac.h +++ b/source/flac.h @@ -41,3 +41,11 @@ uint64_t decodeFlac(void* buffer); * Free Flac decoder. */ void exitFlac(void); + +/** + * Checks if the input file is Flac + * + * \param in Input file. + * \return 0 if Flac file, else not or failure. + */ +int isFlac(const char* in); diff --git a/source/playback.c b/source/playback.c index 32199ee..06c3f5d 100644 --- a/source/playback.c +++ b/source/playback.c @@ -87,6 +87,8 @@ int getFileType(const char *file) case 0x5367674F: if(isOpus(file) == 0) file_type = FILE_TYPE_OPUS; + else if(isFlac(file) == 0) + file_type = FILE_TYPE_FLAC; else { //file_type = FILE_TYPE_OGG;