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;
+}
+