diff --git a/common_types.h b/common_types.h
index ac5c2e2..868bee4 100644
--- a/common_types.h
+++ b/common_types.h
@@ -142,7 +142,8 @@
   kFileFormatPreencodedFile = 4,
   kFileFormatPcm16kHzFile = 7,
   kFileFormatPcm8kHzFile = 8,
-  kFileFormatPcm32kHzFile = 9
+  kFileFormatPcm32kHzFile = 9,
+  kFileFormatPcm48kHzFile = 10
 };
 
 enum FrameType {
diff --git a/modules/media_file/media_file_impl.cc b/modules/media_file/media_file_impl.cc
index a869625..a43769d 100644
--- a/modules/media_file/media_file_impl.cc
+++ b/modules/media_file/media_file_impl.cc
@@ -125,6 +125,7 @@
 
         switch(_fileFormat)
         {
+            case kFileFormatPcm48kHzFile:
             case kFileFormatPcm32kHzFile:
             case kFileFormatPcm16kHzFile:
             case kFileFormatPcm8kHzFile:
@@ -450,6 +451,7 @@
         case kFileFormatPcm8kHzFile:
         case kFileFormatPcm16kHzFile:
         case kFileFormatPcm32kHzFile:
+        case kFileFormatPcm48kHzFile:
         {
             // ValidFileFormat() called in the beginneing of this function
             // prevents codecInst from being NULL here.
@@ -593,6 +595,7 @@
                 case kFileFormatPcm8kHzFile:
                 case kFileFormatPcm16kHzFile:
                 case kFileFormatPcm32kHzFile:
+                case kFileFormatPcm48kHzFile:
                     bytesWritten = _ptrFileUtilityObj->WritePCMData(
                         *_ptrOutStream,
                         buffer,
@@ -795,12 +798,14 @@
         }
         case kFileFormatPcm8kHzFile:
         case kFileFormatPcm16kHzFile:
+        case kFileFormatPcm32kHzFile:
+        case kFileFormatPcm48kHzFile:
         {
             if(!ValidFrequency(codecInst.plfreq) ||
                _ptrFileUtilityObj->InitPCMWriting(stream, codecInst.plfreq) ==
                -1)
             {
-                LOG(LS_ERROR) << "Failed to initialize 8 or 16KHz PCM file!";
+                LOG(LS_ERROR) << "Failed to initialize PCM file!";
                 delete _ptrFileUtilityObj;
                 _ptrFileUtilityObj = NULL;
                 return -1;
@@ -1010,7 +1015,8 @@
         if(format == kFileFormatPreencodedFile ||
            format == kFileFormatPcm8kHzFile    ||
            format == kFileFormatPcm16kHzFile   ||
-           format == kFileFormatPcm32kHzFile)
+           format == kFileFormatPcm32kHzFile   ||
+           format == kFileFormatPcm48kHzFile)
         {
             LOG(LS_ERROR) << "Codec info required for file format specified!";
             return false;
@@ -1052,11 +1058,12 @@
 
 bool MediaFileImpl::ValidFrequency(const uint32_t frequency)
 {
-    if((frequency == 8000) || (frequency == 16000)|| (frequency == 32000))
+    if((frequency == 8000) || (frequency == 16000)|| (frequency == 32000) ||
+       (frequency == 48000))
     {
         return true;
     }
-    LOG(LS_ERROR) << "Frequency should be 8000, 16000 or 32000 (Hz)";
+    LOG(LS_ERROR) << "Frequency should be 8000, 16000, 32000, or 48000 (Hz)";
     return false;
 }
 }  // namespace webrtc
diff --git a/modules/media_file/media_file_utility.cc b/modules/media_file/media_file_utility.cc
index 883f177..8b0f22d 100644
--- a/modules/media_file/media_file_utility.cc
+++ b/modules/media_file/media_file_utility.cc
@@ -1128,6 +1128,16 @@
         codec_info_.rate     = 512000;
         _codecId = kCodecL16_32Khz;
     }
+    else if(freq == 48000)
+    {
+        strcpy(codec_info_.plname, "L16");
+        codec_info_.pltype   = -1;
+        codec_info_.plfreq   = 48000;
+        codec_info_.pacsize  = 480;
+        codec_info_.channels = 1;
+        codec_info_.rate     = 768000;
+        _codecId = kCodecL16_48Khz;
+    }
 
     // Readsize for 10ms of audio data (2 bytes per sample).
     _readSizeBytes = 2 * codec_info_. plfreq / 100;
@@ -1261,11 +1271,23 @@
 
         _codecId = kCodecL16_32Khz;
     }
+    else if(freq == 48000)
+    {
+        strcpy(codec_info_.plname, "L16");
+        codec_info_.pltype   = -1;
+        codec_info_.plfreq   = 48000;
+        codec_info_.pacsize  = 480;
+        codec_info_.channels = 1;
+        codec_info_.rate     = 768000;
+
+        _codecId = kCodecL16_48Khz;
+    }
     if((_codecId != kCodecL16_8Khz) &&
        (_codecId != kCodecL16_16kHz) &&
-       (_codecId != kCodecL16_32Khz))
+       (_codecId != kCodecL16_32Khz) &&
+       (_codecId != kCodecL16_48Khz))
     {
-        LOG(LS_ERROR) << "CodecInst is not 8KHz PCM or 16KHz PCM!";
+        LOG(LS_ERROR) << "CodecInst is not 8KHz, 16KHz, 32kHz or 48kHz PCM!";
         return -1;
     }
     _writing = true;
@@ -1335,6 +1357,10 @@
         {
             _codecId = kCodecL16_32Khz;
         }
+        else if(codecInst.plfreq == 48000)
+        {
+            _codecId = kCodecL16_48Khz;
+        }
     }
 #ifdef WEBRTC_CODEC_ILBC
     else if(STR_CASE_CMP(codecInst.plname, "ilbc") == 0)
diff --git a/modules/media_file/media_file_utility.h b/modules/media_file/media_file_utility.h
index 8139a7c..b339af7 100644
--- a/modules/media_file/media_file_utility.h
+++ b/modules/media_file/media_file_utility.h
@@ -228,6 +228,7 @@
         kCodecL16_8Khz,
         kCodecL16_16kHz,
         kCodecL16_32Khz,
+        kCodecL16_48Khz,
         kCodecPcmu,
         kCodecPcma,
         kCodecIlbc20Ms,
diff --git a/voice_engine/file_player.cc b/voice_engine/file_player.cc
index 6d9aaae..8c5824d 100644
--- a/voice_engine/file_player.cc
+++ b/voice_engine/file_player.cc
@@ -100,7 +100,7 @@
   } else if (_codec.plfreq == 44000) {
     return 32000;
   } else if (_codec.plfreq == 48000) {
-    return 32000;
+    return 48000;
   } else {
     return _codec.plfreq;
   }
@@ -220,16 +220,18 @@
       codecInstL16.rate = 128000;
       codecInstL16.plfreq = 8000;
       codecInstL16.pacsize = 80;
-
     } else if (_fileFormat == kFileFormatPcm16kHzFile) {
       codecInstL16.rate = 256000;
       codecInstL16.plfreq = 16000;
       codecInstL16.pacsize = 160;
-
     } else if (_fileFormat == kFileFormatPcm32kHzFile) {
       codecInstL16.rate = 512000;
       codecInstL16.plfreq = 32000;
-      codecInstL16.pacsize = 160;
+      codecInstL16.pacsize = 320;
+    } else if (_fileFormat == kFileFormatPcm48kHzFile) {
+      codecInstL16.rate = 768000;
+      codecInstL16.plfreq = 48000;
+      codecInstL16.pacsize = 480;
     } else {
       LOG(LS_ERROR) << "StartPlayingFile() sample frequency not "
                     << "supported for PCM format.";
@@ -277,7 +279,8 @@
                                          const CodecInst* codecInst) {
   if (_fileFormat == kFileFormatPcm16kHzFile ||
       _fileFormat == kFileFormatPcm32kHzFile ||
-      _fileFormat == kFileFormatPcm8kHzFile) {
+      _fileFormat == kFileFormatPcm8kHzFile ||
+      _fileFormat == kFileFormatPcm48kHzFile) {
     CodecInst codecInstL16;
     strncpy(codecInstL16.plname, "L16", 32);
     codecInstL16.pltype = 93;
@@ -287,16 +290,18 @@
       codecInstL16.rate = 128000;
       codecInstL16.plfreq = 8000;
       codecInstL16.pacsize = 80;
-
     } else if (_fileFormat == kFileFormatPcm16kHzFile) {
       codecInstL16.rate = 256000;
       codecInstL16.plfreq = 16000;
       codecInstL16.pacsize = 160;
-
     } else if (_fileFormat == kFileFormatPcm32kHzFile) {
       codecInstL16.rate = 512000;
       codecInstL16.plfreq = 32000;
-      codecInstL16.pacsize = 160;
+      codecInstL16.pacsize = 320;
+    } else if (_fileFormat == kFileFormatPcm48kHzFile) {
+      codecInstL16.rate = 768000;
+      codecInstL16.plfreq = 48000;
+      codecInstL16.pacsize = 480;
     } else {
       LOG(LS_ERROR) << "StartPlayingFile() sample frequency not "
                     << "supported for PCM format.";
@@ -379,6 +384,7 @@
     case kFileFormatPcm16kHzFile:
     case kFileFormatPcm8kHzFile:
     case kFileFormatPcm32kHzFile:
+    case kFileFormatPcm48kHzFile:
       // audio formats
       return std::unique_ptr<FilePlayer>(
           new FilePlayerImpl(instanceID, fileFormat));
diff --git a/voice_engine/file_player.h b/voice_engine/file_player.h
index 956016f..cb14c8f 100644
--- a/voice_engine/file_player.h
+++ b/voice_engine/file_player.h
@@ -23,8 +23,8 @@
 
 class FilePlayer {
  public:
-  // The largest decoded frame size in samples (60ms with 32kHz sample rate).
-  enum { MAX_AUDIO_BUFFER_IN_SAMPLES = 60 * 32 };
+  // The largest decoded frame size in samples (60ms with 48kHz sample rate).
+  enum { MAX_AUDIO_BUFFER_IN_SAMPLES = 60 * 48 };
   enum { MAX_AUDIO_BUFFER_IN_BYTES = MAX_AUDIO_BUFFER_IN_SAMPLES * 2 };
 
   // Note: will return NULL for unsupported formats.
