[Julius-cvs 404] CVS update: julius4/libjulius/src

Back to archive index

sumom****@users***** sumom****@users*****
2009年 3月 18日 (水) 16:05:30 JST


Index: julius4/libjulius/src/jfunc.c
diff -u julius4/libjulius/src/jfunc.c:1.5 julius4/libjulius/src/jfunc.c:1.6
--- julius4/libjulius/src/jfunc.c:1.5	Fri Dec 12 16:14:57 2008
+++ julius4/libjulius/src/jfunc.c	Wed Mar 18 16:05:30 2009
@@ -19,7 +19,7 @@
  * @author Akinobu Lee
  * @date   Wed Aug  8 15:04:28 2007
  *
- * $Revision: 1.5 $
+ * $Revision: 1.6 $
  * 
  */
 /*
@@ -561,28 +561,45 @@
 
 /** 
  * <EN>
- * Return current input speech file name.
- * Invalid when MFCC input.
+ * Return current input speech file name.  return NULL if the current
+ * input device does not support this function.
  * </EN>
  * <JA>
- * 現在の入力ファイル名を返す.
- * MFCC入力時は使えない. 
+ * 現在の入力ファイル名を返す.現在の入力デバイスがこの機能をサポート
+ * していない場合は NULL を返す.
  * </JA>
  * 
- * @return the file name.
+ * @param recog [in] engine instance
+ * 
+ * @return the file name, or NULL when this function is not available on
+ * the current input device.
  * 
  * @callgraph
  * @callergraph
  * @ingroup engine
  */
 char *
-j_get_current_filename()
+j_get_current_filename(Recog *recog)
 {
-#ifdef HAVE_LIBSNDFILE
-  return(adin_sndfile_get_current_filename());
-#else
-  return(adin_file_get_current_filename());
-#endif
+  char *p;
+  p = NULL;
+  if (recog->jconf->input.type == INPUT_WAVEFORM) {
+    /* adin function input */
+    if (recog->adin->ad_input_name != NULL) {
+      p = recog->adin->ad_input_name();
+    }
+  } else {
+    switch(recog->jconf->input.speech_input) {
+    case SP_MFCMODULE:
+      p = mfc_module_input_name(recog->mfcclist);
+      break;
+    case SP_MFCFILE:
+      /* already assigned */
+      p = recog->adin->current_input_name;
+      break;
+    }
+  }
+  return p;
 }
 
 
Index: julius4/libjulius/src/m_adin.c
diff -u julius4/libjulius/src/m_adin.c:1.7 julius4/libjulius/src/m_adin.c:1.8
--- julius4/libjulius/src/m_adin.c:1.7	Thu Sep 25 14:00:06 2008
+++ julius4/libjulius/src/m_adin.c	Wed Mar 18 16:05:30 2009
@@ -12,7 +12,7 @@
  * @author Akinobu LEE
  * @date   Fri Mar 18 16:17:23 2005
  *
- * $Revision: 1.7 $
+ * $Revision: 1.8 $
  * 
  */
 /*
@@ -47,6 +47,7 @@
     a->ad_pause 	   = NULL;
     a->ad_terminate 	   = NULL;
     a->ad_read 		   = adin_sndfile_read;
+    a->ad_input_name	   = adin_sndfile_get_current_filename;
     a->silence_cut_default = FALSE;
     a->enable_thread 	   = FALSE;
 #else  /* ~HAVE_LIBSNDFILE */
@@ -58,6 +59,7 @@
     a->ad_pause 	   = NULL;
     a->ad_terminate 	   = NULL;
     a->ad_read 		   = adin_file_read;
+    a->ad_input_name	   = adin_file_get_current_filename;
     a->silence_cut_default = FALSE;
     a->enable_thread 	   = FALSE;
 #endif
@@ -76,6 +78,7 @@
       a->ad_begin 	     = adin_mic_begin;
       a->ad_end 	     = adin_mic_end;
       a->ad_read 	     = adin_mic_read;
+      a->ad_input_name	     = adin_mic_input_name;
       break;
 #ifdef HAS_ALSA
     case SP_INPUT_ALSA:
@@ -83,6 +86,7 @@
       a->ad_begin 	     = adin_alsa_begin;
       a->ad_end 	     = adin_alsa_end;
       a->ad_read 	     = adin_alsa_read;
+      a->ad_input_name	     = adin_alsa_input_name;
       break;
 #endif
 #ifdef HAS_OSS
@@ -91,6 +95,7 @@
       a->ad_begin 	     = adin_oss_begin;
       a->ad_end 	     = adin_oss_end;
       a->ad_read 	     = adin_oss_read;
+      a->ad_input_name	     = adin_oss_input_name;
       break;
 #endif
 #ifdef HAS_ESD
@@ -99,6 +104,7 @@
       a->ad_begin 	     = adin_esd_begin;
       a->ad_end 	     = adin_esd_end;
       a->ad_read 	     = adin_esd_read;
+      a->ad_input_name	     = adin_esd_input_name;
       break;
 #endif
     default:
@@ -116,6 +122,7 @@
     a->ad_pause 	   = NULL;
     a->ad_terminate 	   = NULL;
     a->ad_read 		   = adin_netaudio_read;
+    a->ad_input_name	   = adin_netaudio_input_name;
     a->silence_cut_default = TRUE;
     a->enable_thread 	   = TRUE;
     break;
@@ -129,6 +136,7 @@
     a->ad_pause		   = adin_tcpip_send_pause;
     a->ad_terminate	   = adin_tcpip_send_terminate;
     a->ad_read 		   = adin_tcpip_read;
+    a->ad_input_name	   = adin_tcpip_input_name;
     a->silence_cut_default = FALSE;
     a->enable_thread 	   = FALSE;
     break;
@@ -141,6 +149,7 @@
     a->ad_pause 	   = NULL;
     a->ad_terminate 	   = NULL;
     a->ad_read 		   = adin_stdin_read;
+    a->ad_input_name	   = adin_stdin_input_name;
     a->silence_cut_default = FALSE;
     a->enable_thread 	   = FALSE;
     break;
@@ -260,6 +269,7 @@
     adin->ad_pause 	   = (boolean (*)()) plugin_get_func(sid, "adin_pause");
     adin->ad_terminate 	   = (boolean (*)()) plugin_get_func(sid, "adin_terminate");
     adin->ad_read 	   = (int (*)(SP16 *, int)) plugin_get_func(sid, "adin_read");
+    adin->ad_input_name	   = (char (*)()) plugin_get_func(sid, "adin_input_name");
     if (adin->ad_read == NULL) {
       jlog("ERROR: m_adin: selected plugin has no function adin_read()\n");
       return FALSE;
Index: julius4/libjulius/src/plugin.c
diff -u julius4/libjulius/src/plugin.c:1.1 julius4/libjulius/src/plugin.c:1.2
--- julius4/libjulius/src/plugin.c:1.1	Thu Sep 25 14:00:06 2008
+++ julius4/libjulius/src/plugin.c	Wed Mar 18 16:05:30 2009
@@ -12,7 +12,7 @@
  * @author Akinobu Lee
  * @date   Sat Aug  2 09:46:09 2008
  * 
- * $Revision: 1.1 $
+ * $Revision: 1.2 $
  * 
  */
 /*
@@ -492,6 +492,7 @@
   mfcc->func.fv_resume   = (boolean (*)()) plugin_get_func(mfcc->plugin_source, "fvin_resume");
   mfcc->func.fv_pause    = (boolean (*)()) plugin_get_func(mfcc->plugin_source, "fvin_pause");
   mfcc->func.fv_terminate= (boolean (*)()) plugin_get_func(mfcc->plugin_source, "fvin_terminate");
+  mfcc->func.fv_input_name= (char * (*)()) plugin_get_func(mfcc->plugin_source, "fvin_input_name");
 
   if (mfcc->func.fv_read == NULL) {
     jlog("ERROR: FEATURE_INPUT plugin: fvin_read() not found!\n");
@@ -602,6 +603,15 @@
   return 0;
 }  
 
+char *
+mfc_module_input_name(MFCCCalc *mfcc)
+{
+  int ret;
+
+  if (mfcc->func.fv_input_name) return(mfcc->func.fv_input_name());
+  return NULL;
+}
+
 #endif /* ENABLE_PLUGIN */
 
 /* end of file */
Index: julius4/libjulius/src/recogmain.c
diff -u julius4/libjulius/src/recogmain.c:1.11 julius4/libjulius/src/recogmain.c:1.12
--- julius4/libjulius/src/recogmain.c:1.11	Sat Jan 17 16:53:47 2009
+++ julius4/libjulius/src/recogmain.c	Wed Mar 18 16:05:30 2009
@@ -12,7 +12,7 @@
  * @author Akinobu Lee
  * @date   Wed Aug  8 14:53:53 2007
  *
- * $Revision: 1.11 $
+ * $Revision: 1.12 $
  * 
  */
 
@@ -493,6 +493,7 @@
 j_open_stream(Recog *recog, char *file_or_dev_name)
 {
   Jconf *jconf;
+  char *p;
 
   jconf = recog->jconf;
 
@@ -509,11 +510,13 @@
       }
     }
 #endif
+    /* when using adin func, input name should be obtained when called */
   } else {
     switch(jconf->input.speech_input) {
     case SP_MFCMODULE:
       param_init_content(recog->mfcclist->param);
       if (mfc_module_begin(recog->mfcclist) == FALSE) return -2;
+      /* when using mfc module func, input name should be obtained when called */
       break;
     case SP_MFCFILE:
       /* read parameter file */
@@ -528,12 +531,24 @@
       }
       /* output frame length */
       callback_exec(CALLBACK_STATUS_PARAM, recog);
+      /* store the input filename here */
+      strncpy(recog->adin->current_input_name, file_or_dev_name, MAXPATHLEN);
       break;
     default:
       jlog("ERROR: j_open_stream: none of SP_MFC_*??\n");
       return -1;
     }
   }
+
+  if (jconf->input.speech_input != SP_MFCFILE) {
+    /* store current input name using input source specific function */
+    p = j_get_current_filename(recog);
+    if (p) {
+      strncpy(recog->adin->current_input_name, p, MAXPATHLEN);
+    } else {
+      recog->adin->current_input_name[0] = '\0';
+    }
+  }
       
   return 0;
 



Julius-cvs メーリングリストの案内
Back to archive index