Applied the ogg123 patch and some minor fixes. Alex
[terminatorX.git] / src / tX_audiofile.cc
index af0b458a5f060363c783c12d93f7e9fcc85cfe6a..06f04c8b045bf741148e319e6ef6a0940ffc77ba 100644 (file)
@@ -57,7 +57,8 @@ void tx_audiofile :: figure_file_type()
                {
                        ext++;
                        if (!strcasecmp("wav", ext)) file_type=TX_FILE_WAV;
-                       else if (!strncasecmp("mp", ext, 2)) file_type=TX_FILE_MPG123;                  
+                       else if (!strncasecmp("mp", ext, 2)) file_type=TX_FILE_MPG123;
+                       else if (!strncasecmp("ogg", ext, 2)) file_type=TX_FILE_OGG123;
                }
        }
 }
@@ -87,6 +88,14 @@ int tx_audiofile :: load(char *p_file_name)
        }
 #endif 
 
+#ifdef USE_OGG123_INPUT
+       if ((load_err) && (file_type==TX_FILE_OGG123))
+       {
+               load_err=load_ogg123();
+               return(load_err);
+       }
+#endif
+
 #ifdef USE_SOX_INPUT
        if (load_err)
        {
@@ -266,6 +275,20 @@ int tx_audiofile :: load_mpg123()
 }
 #endif 
 
+#ifdef USE_OGG123_INPUT
+int tx_audiofile :: load_ogg123()
+{
+       char command[PATH_MAX*2];
+
+       sprintf(command, OGG123_STR, filename);
+       file = popen(command, "r");
+
+       if (!file) return TX_AUDIO_ERR_OGG123;
+
+       return load_piped();
+}
+#endif
+
 #ifdef USE_BUILTIN_WAV
 #define min(a,b) ((a) < (b) ? (a) : (b))
 int tx_audiofile :: load_wav()