diff --git a/media/java/android/media/MediaScanner.java b/media/java/android/media/MediaScanner.java
index fcc76ca5..f6d30e0 100644
--- a/media/java/android/media/MediaScanner.java
+++ b/media/java/android/media/MediaScanner.java
@@ -493,6 +493,22 @@
             doScanFile(path, mimeType, lastModified, fileSize, false);
         }
 
+        private boolean isMetadataSupported(int fileType) {
+            if (mFileType == MediaFile.FILE_TYPE_MP3 ||
+                    mFileType == MediaFile.FILE_TYPE_MP4 ||
+                    mFileType == MediaFile.FILE_TYPE_M4A ||
+                    mFileType == MediaFile.FILE_TYPE_3GPP ||
+                    mFileType == MediaFile.FILE_TYPE_3GPP2 ||
+                    mFileType == MediaFile.FILE_TYPE_OGG ||
+                    mFileType == MediaFile.FILE_TYPE_AAC ||
+                    mFileType == MediaFile.FILE_TYPE_MID ||
+                    mFileType == MediaFile.FILE_TYPE_WMA) {
+                // we only extract metadata from MP3, M4A, OGG, MID, AAC and WMA files.
+                // check MP4 files, to determine if they contain only audio.
+                return true;
+            }
+            return false;
+        }
         public Uri doScanFile(String path, String mimeType, long lastModified, long fileSize, boolean scanAlways) {
             Uri result = null;
 //            long t1 = System.currentTimeMillis();
@@ -508,16 +524,7 @@
                     boolean music = (lowpath.indexOf(MUSIC_DIR) > 0) ||
                         (!ringtones && !notifications && !alarms && !podcasts);
 
-                    if (mFileType == MediaFile.FILE_TYPE_MP3 ||
-                            mFileType == MediaFile.FILE_TYPE_MP4 ||
-                            mFileType == MediaFile.FILE_TYPE_M4A ||
-                            mFileType == MediaFile.FILE_TYPE_3GPP ||
-                            mFileType == MediaFile.FILE_TYPE_3GPP2 ||
-                            mFileType == MediaFile.FILE_TYPE_OGG ||
-                            mFileType == MediaFile.FILE_TYPE_MID ||
-                            mFileType == MediaFile.FILE_TYPE_WMA) {
-                        // we only extract metadata from MP3, M4A, OGG, MID and WMA files.
-                        // check MP4 files, to determine if they contain only audio.
+                    if( isMetadataSupported(mFileType) ) {
                         processFile(path, mimeType, this);
                     } else if (MediaFile.isImageFileType(mFileType)) {
                         // we used to compute the width and height but it's not worth it
