Mercurial > mplayer.hg
diff libmpdemux/extension.c @ 9006:d00997f12257
extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
inspired by patch by Fabian Franz <FabianFranz@gmx.de>
author | arpi |
---|---|
date | Sun, 19 Jan 2003 00:21:54 +0000 |
parents | |
children | 654bc667a450 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libmpdemux/extension.c Sun Jan 19 00:21:54 2003 +0000 @@ -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; +} +