Loading media/java/android/media/MediaFile.java +12 −0 Original line number Diff line number Diff line Loading @@ -83,6 +83,11 @@ public class MediaFile { private static final int FIRST_PLAYLIST_FILE_TYPE = FILE_TYPE_M3U; private static final int LAST_PLAYLIST_FILE_TYPE = FILE_TYPE_WPL; // Drm file types public static final int FILE_TYPE_FL = 51; private static final int FIRST_DRM_FILE_TYPE = FILE_TYPE_FL; private static final int LAST_DRM_FILE_TYPE = FILE_TYPE_FL; // Other popular file types public static final int FILE_TYPE_TEXT = 100; public static final int FILE_TYPE_HTML = 101; Loading Loading @@ -189,6 +194,8 @@ public class MediaFile { addFileType("PLS", FILE_TYPE_PLS, "audio/x-scpls", MtpConstants.FORMAT_PLS_PLAYLIST); addFileType("WPL", FILE_TYPE_WPL, "application/vnd.ms-wpl", MtpConstants.FORMAT_WPL_PLAYLIST); addFileType("FL", FILE_TYPE_FL, "application/x-android-drm-fl"); addFileType("TXT", FILE_TYPE_TEXT, "text/plain", MtpConstants.FORMAT_TEXT); addFileType("HTM", FILE_TYPE_HTML, "text/html", MtpConstants.FORMAT_HTML); addFileType("HTML", FILE_TYPE_HTML, "text/html", MtpConstants.FORMAT_HTML); Loading Loading @@ -222,6 +229,11 @@ public class MediaFile { fileType <= LAST_PLAYLIST_FILE_TYPE); } public static boolean isDrmFileType(int fileType) { return (fileType >= FIRST_DRM_FILE_TYPE && fileType <= LAST_DRM_FILE_TYPE); } public static MediaFileType getFileType(String path) { int lastDot = path.lastIndexOf("."); if (lastDot < 0) Loading media/java/android/media/MediaScanner.java +28 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.content.Context; import android.content.IContentProvider; import android.database.Cursor; import android.database.SQLException; import android.drm.DrmManagerClient; import android.graphics.BitmapFactory; import android.net.Uri; import android.os.Process; Loading Loading @@ -360,6 +361,7 @@ public class MediaScanner private ArrayList<FileCacheEntry> mPlayLists; private HashMap<String, Uri> mGenreCache; private DrmManagerClient mDrmManagerClient = null; public MediaScanner(Context c) { native_setup(); Loading Loading @@ -447,6 +449,11 @@ public class MediaScanner } } if (System.getProperty("drm.service.enabled").equals("true") && MediaFile.isDrmFileType(mFileType)) { mFileType = getFileTypeFromDrm(path); } String key = path; if (mCaseInsensitivePaths) { key = path.toLowerCase(); Loading Loading @@ -874,6 +881,27 @@ public class MediaScanner } } private int getFileTypeFromDrm(String path) { if (!System.getProperty("drm.service.enabled").equals("true")) { return 0; } int resultFileType = 0; if (mDrmManagerClient == null) { mDrmManagerClient = new DrmManagerClient(mContext); } if (mDrmManagerClient.canHandle(path, null)) { String drmMimetype = mDrmManagerClient.getOriginalMimeType(path); if (drmMimetype != null) { mMimeType = drmMimetype; resultFileType = MediaFile.getFileTypeForMimeType(drmMimetype); } } return resultFileType; } }; // end of anonymous MediaScannerClient instance private void prescan(String filePath, boolean prescanFiles) throws RemoteException { Loading media/libstagefright/StagefrightMediaScanner.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -39,7 +39,7 @@ static bool FileHasAcceptableExtension(const char *extension) { ".mp3", ".mp4", ".m4a", ".3gp", ".3gpp", ".3g2", ".3gpp2", ".mpeg", ".ogg", ".mid", ".smf", ".imy", ".wma", ".aac", ".wav", ".amr", ".midi", ".xmf", ".rtttl", ".rtx", ".ota", ".mkv", ".mka", ".webm", ".ts" ".mkv", ".mka", ".webm", ".ts", ".fl" }; static const size_t kNumValidExtensions = sizeof(kValidExtensions) / sizeof(kValidExtensions[0]); Loading Loading
media/java/android/media/MediaFile.java +12 −0 Original line number Diff line number Diff line Loading @@ -83,6 +83,11 @@ public class MediaFile { private static final int FIRST_PLAYLIST_FILE_TYPE = FILE_TYPE_M3U; private static final int LAST_PLAYLIST_FILE_TYPE = FILE_TYPE_WPL; // Drm file types public static final int FILE_TYPE_FL = 51; private static final int FIRST_DRM_FILE_TYPE = FILE_TYPE_FL; private static final int LAST_DRM_FILE_TYPE = FILE_TYPE_FL; // Other popular file types public static final int FILE_TYPE_TEXT = 100; public static final int FILE_TYPE_HTML = 101; Loading Loading @@ -189,6 +194,8 @@ public class MediaFile { addFileType("PLS", FILE_TYPE_PLS, "audio/x-scpls", MtpConstants.FORMAT_PLS_PLAYLIST); addFileType("WPL", FILE_TYPE_WPL, "application/vnd.ms-wpl", MtpConstants.FORMAT_WPL_PLAYLIST); addFileType("FL", FILE_TYPE_FL, "application/x-android-drm-fl"); addFileType("TXT", FILE_TYPE_TEXT, "text/plain", MtpConstants.FORMAT_TEXT); addFileType("HTM", FILE_TYPE_HTML, "text/html", MtpConstants.FORMAT_HTML); addFileType("HTML", FILE_TYPE_HTML, "text/html", MtpConstants.FORMAT_HTML); Loading Loading @@ -222,6 +229,11 @@ public class MediaFile { fileType <= LAST_PLAYLIST_FILE_TYPE); } public static boolean isDrmFileType(int fileType) { return (fileType >= FIRST_DRM_FILE_TYPE && fileType <= LAST_DRM_FILE_TYPE); } public static MediaFileType getFileType(String path) { int lastDot = path.lastIndexOf("."); if (lastDot < 0) Loading
media/java/android/media/MediaScanner.java +28 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.content.Context; import android.content.IContentProvider; import android.database.Cursor; import android.database.SQLException; import android.drm.DrmManagerClient; import android.graphics.BitmapFactory; import android.net.Uri; import android.os.Process; Loading Loading @@ -360,6 +361,7 @@ public class MediaScanner private ArrayList<FileCacheEntry> mPlayLists; private HashMap<String, Uri> mGenreCache; private DrmManagerClient mDrmManagerClient = null; public MediaScanner(Context c) { native_setup(); Loading Loading @@ -447,6 +449,11 @@ public class MediaScanner } } if (System.getProperty("drm.service.enabled").equals("true") && MediaFile.isDrmFileType(mFileType)) { mFileType = getFileTypeFromDrm(path); } String key = path; if (mCaseInsensitivePaths) { key = path.toLowerCase(); Loading Loading @@ -874,6 +881,27 @@ public class MediaScanner } } private int getFileTypeFromDrm(String path) { if (!System.getProperty("drm.service.enabled").equals("true")) { return 0; } int resultFileType = 0; if (mDrmManagerClient == null) { mDrmManagerClient = new DrmManagerClient(mContext); } if (mDrmManagerClient.canHandle(path, null)) { String drmMimetype = mDrmManagerClient.getOriginalMimeType(path); if (drmMimetype != null) { mMimeType = drmMimetype; resultFileType = MediaFile.getFileTypeForMimeType(drmMimetype); } } return resultFileType; } }; // end of anonymous MediaScannerClient instance private void prescan(String filePath, boolean prescanFiles) throws RemoteException { Loading
media/libstagefright/StagefrightMediaScanner.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -39,7 +39,7 @@ static bool FileHasAcceptableExtension(const char *extension) { ".mp3", ".mp4", ".m4a", ".3gp", ".3gpp", ".3g2", ".3gpp2", ".mpeg", ".ogg", ".mid", ".smf", ".imy", ".wma", ".aac", ".wav", ".amr", ".midi", ".xmf", ".rtttl", ".rtx", ".ota", ".mkv", ".mka", ".webm", ".ts" ".mkv", ".mka", ".webm", ".ts", ".fl" }; static const size_t kNumValidExtensions = sizeof(kValidExtensions) / sizeof(kValidExtensions[0]); Loading