Add file record and play functions to voe_cmd_test, fix Play local file (path was incorrect)
Fixed:
	24. Play local file (audio_long16.pcm) 
New:
	34. Record a PCM file 
	35. Play a previously recorded PCM file locally 
	36. Play a previously recorded PCM file as microphone 
Review URL: http://webrtc-codereview.appspot.com/209001

git-svn-id: http://webrtc.googlecode.com/svn/trunk@729 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/src/voice_engine/main/test/cmd_test/voe_cmd_test.cc b/src/voice_engine/main/test/cmd_test/voe_cmd_test.cc
index f0a8e83..3720d4d 100644
--- a/src/voice_engine/main/test/cmd_test/voe_cmd_test.cc
+++ b/src/voice_engine/main/test/cmd_test/voe_cmd_test.cc
@@ -90,6 +90,27 @@
 my_transportation my_transport;
 
 #endif
+// TODO(amyfong): we should share this with autotest in a common place.
+#if defined(MAC_IPHONE)
+char micFile[256] = {0}; // Filename copied to buffer in code
+#elif defined(WEBRTC_MAC) && !defined(WEBRTC_MAC_INTEL)
+const char* micFile = "audio_long16bigendian.pcm";
+#elif defined(WEBRTC_ANDROID)
+const char* micFile = "/sdcard/audio_long16.pcm";
+#elif defined(_WIN32)
+// File path is relative to the location of 'voice_engine.gyp'.
+const char* micFile = "../../test/data/voice_engine/audio_long16.pcm";
+#elif defined(WEBRTC_LINUX)
+// Assumes launch from command line: 
+// $ ./out/<Debug><Release>/audio_device_test_func
+const char* micFile = "./test/data/voice_engine/audio_long16.pcm";
+#elif (defined(WEBRTC_MAC_INTEL) || defined(WEBRTC_MAC))
+// Assumes that the working directory in Xcode 
+// is set to <path-to-src>/xcodebuild/<Debug><Release>.
+const char* micFile = "../../test/data/voice_engine/audio_long16.pcm";
+#else
+const char* micFile = "audio_long16.pcm";
+#endif
 
 class MyObserver : public VoiceEngineObserver {
  public:
@@ -463,7 +484,7 @@
       i++;
       printf("\t%i. Set microphone volume\n", i);
       i++;
-      printf("\t%i. Play local file \n", i);
+      printf("\t%i. Play local file (audio_long16.pcm) \n", i);
       i++;
       printf("\t%i. Change Playout Device \n", i);
       i++;
@@ -483,8 +504,12 @@
       i++;
       printf("\t%i. Toggle typing detection(for Mac/Windows only) \n", i);
       i++;
-
-
+      printf("\t%i. Record a PCM file \n", i);
+      i++;
+      printf("\t%i. Play a previously recorded PCM file locally \n", i);
+      i++;
+      printf("\t%i. Play a previously recorded PCM file as microphone \n", i);
+      i++;
       printf("\t%i. Stop call \n", i);
 
       printf("Select action or %i to stop the call: ", i);
@@ -577,7 +602,7 @@
         VALIDATE;
       }
       else if (codecinput == (noCodecs + 11)) {
-        file->StartPlayingFileLocally(0, "../auto_test/audio_long16.pcm");
+        file->StartPlayingFileLocally(0, micFile);
       }
       else if (codecinput == (noCodecs + 12)) {
         // change the playout device with current call
@@ -684,16 +709,102 @@
         int err_code = 0;
         err_code = base1->LastError();
         if (err_code != -1)
-          printf("\n The last error code was %i. \n", err_code);
+          printf("\n The last error code was %i.\n", err_code);
       }
       else if (codecinput == (noCodecs + 20)) {
-         typing_detection= !typing_detection;
+        typing_detection= !typing_detection;
         res = apm->SetTypingDetectionStatus(typing_detection);
         VALIDATE;
         if (typing_detection)
-          printf("\n Typing detection is now on! \n");
+          printf("\n Typing detection is now on!\n");
         else
-          printf("\n Typing detection is now off! \n");
+          printf("\n Typing detection is now off!\n");
+      }
+      else if (codecinput == (noCodecs + 21)) {
+        int stop_record = 1;
+        int file_source = 1;
+        printf("\n Select source of recorded file. ");
+        printf("\n 1. Record from microphone to file ");
+        printf("\n 2. Record from playout to file ");
+        printf("\n Enter your selection: \n");
+        ASSERT_EQ(1, scanf("%i", &file_source));
+        if (file_source == 1) {
+          printf("\n Start recording microphone as recordedmic.pcm \n");
+          res = file->StartRecordingMicrophone("recordedmic.pcm");
+          VALIDATE;
+        } 
+        else {
+          printf("\n Start recording playout as recordedplayout.pcm \n");
+          res = file->StartRecordingPlayout(chan, "recordedplayout.pcm");
+          VALIDATE;
+        } 
+        while (stop_record != 0) {
+          printf("\n Type 0 to stop recording file \n");
+          ASSERT_EQ(1, scanf("%i", &stop_record));
+        }
+        if (file_source == 1) {
+          res = file->StopRecordingMicrophone();
+          VALIDATE;
+        }          
+        else {
+          res = file->StopRecordingPlayout(chan);
+          VALIDATE;
+        }
+        printf("\n File finished recording \n");
+      }
+      else if (codecinput == (noCodecs + 22)) {
+        int file_type = 1;
+        int stop_play = 1;
+        printf("\n Select a file to play locally in a loop.");
+        printf("\n 1. Play recordedmic.pcm");
+        printf("\n 2. Play recordedplayout.pcm");
+        printf("\n Enter your selection\n");
+        ASSERT_EQ(1, scanf("%i", &file_type));
+        if (file_type == 1)  {
+          printf("\n Start playing recordedmic.pcm locally in a loop\n");
+          res = file->StartPlayingFileLocally(chan, 
+                                              "recordedmic.pcm", true);
+          VALIDATE;
+        }
+        else { 
+          printf("\n Start playing recordedplayout.pcm locally in a loop\n");
+          res = file->StartPlayingFileLocally(chan, 
+                                              "recordedplayout.pcm", true);
+          VALIDATE;
+        }
+        while (stop_play != 0) {
+          printf("\n Type 0 to stop playing file\n");
+          ASSERT_EQ(1, scanf("%i", &stop_play));
+        }
+        res = file->StopPlayingFileLocally(chan);
+        VALIDATE;
+      }
+      else if (codecinput == (noCodecs + 23)) {
+        int file_type = 1;
+        int stop_play = 1;
+        printf("\n Select a file to play as microphone in a loop.");
+        printf("\n 1. Play recordedmic.pcm");
+        printf("\n 2. Play recordedplayout.pcm");
+        printf("\n Enter your selection\n");
+        ASSERT_EQ(1, scanf("%i", &file_type));
+        if (file_type == 1)  {
+          printf("\n Start playing recordedmic.pcm as mic in a loop\n");
+          res = file->StartPlayingFileAsMicrophone(chan,
+                                                   "recordedmic.pcm", true);
+          VALIDATE;
+        }
+        else {
+          printf("\n Start playing recordedplayout.pcm as mic in a loop\n");
+          res = file->StartPlayingFileAsMicrophone(chan,
+                                                   "recordedplayout.pcm", true);
+          VALIDATE;
+        }
+        while (stop_play != 0) {
+          printf("\n Type 0 to stop playing file\n");
+          ASSERT_EQ(1, scanf("%i", &stop_play));
+        }
+        res = file->StopPlayingFileAsMicrophone(chan);
+        VALIDATE;
       }
       else
         break;