diff options
author | arpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2003-01-19 00:21:54 +0000 |
---|---|---|
committer | arpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2003-01-19 00:21:54 +0000 |
commit | 970435ce12de15022db3f920b293799462dd7518 (patch) | |
tree | 61d49faf24e71afdf7b097ba2431cbe7bb4974b8 /libmpdemux/extension.c | |
parent | 721a0b6362bd129bfccc9541030df14abe86405a (diff) | |
download | mpv-970435ce12de15022db3f920b293799462dd7518.tar.bz2 mpv-970435ce12de15022db3f920b293799462dd7518.tar.xz |
extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
inspired by patch by Fabian Franz <FabianFranz@gmx.de>
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@9007 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux/extension.c')
-rw-r--r-- | libmpdemux/extension.c | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/libmpdemux/extension.c b/libmpdemux/extension.c new file mode 100644 index 0000000000..467df40f11 --- /dev/null +++ b/libmpdemux/extension.c @@ -0,0 +1,56 @@ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "config.h" + +#include "stream.h" +#include "demuxer.h" + +/* + * An autodetection based on the extension is not a good idea, but we don't care ;-) + */ +static struct { + char *extension; + int demuxer_type; +} extensions_table[] = { + { "mpeg", DEMUXER_TYPE_MPEG_PS }, + { "mpg", DEMUXER_TYPE_MPEG_PS }, + { "mpe", DEMUXER_TYPE_MPEG_ES }, + { "avi", DEMUXER_TYPE_AVI }, + { "mov", DEMUXER_TYPE_MOV }, + { "qt", DEMUXER_TYPE_MOV }, + { "asx", DEMUXER_TYPE_ASF }, + { "asf", DEMUXER_TYPE_ASF }, + { "wmv", DEMUXER_TYPE_ASF }, + { "wma", DEMUXER_TYPE_ASF }, + { "viv", DEMUXER_TYPE_VIVO }, + { "rm", DEMUXER_TYPE_REAL }, + { "ra", DEMUXER_TYPE_REAL }, + { "y4m", DEMUXER_TYPE_Y4M }, + { "mp3", DEMUXER_TYPE_AUDIO }, + { "ogg", DEMUXER_TYPE_OGG }, + { "wav", DEMUXER_TYPE_AUDIO }, + { "pls", DEMUXER_TYPE_PLAYLIST }, + { "m3u", DEMUXER_TYPE_PLAYLIST } +}; + +int demuxer_type_by_filename(char* filename){ + int i; + char* extension=strrchr(filename,'.'); + printf("Searching demuxer type for filename %s ext: %s\n",filename,extension); + if(extension) { + ++extension; +// mp_msg(MSGT_CPLAYER,MSGL_DBG2,"Extension: %s\n", extension ); + // Look for the extension in the extensions table + for( i=0 ; i<(sizeof(extensions_table)/sizeof(extensions_table[0])) ; i++ ) { + if( !strcasecmp(extension, extensions_table[i].extension) ) { + printf("\n!!! trying demuxer %d based on filename extension\n",extensions_table[i].demuxer_type); + return extensions_table[i].demuxer_type; + } + } + } + return DEMUXER_TYPE_UNKNOWN; +} + |