summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorMike Lockwood <lockwood@google.com>2014-03-13 14:51:29 -0700
committerMike Lockwood <lockwood@google.com>2014-03-13 15:15:26 -0700
commit92b53bc2dd42a3c1d2d7708145099da2a5fe541e (patch)
tree2968923c902f4095152b8e6e66aa9c267bbd4ce8 /media
parente97b62ed0d4050acacbf54781435686ea28edd73 (diff)
downloadframeworks_base-92b53bc2dd42a3c1d2d7708145099da2a5fe541e.zip
frameworks_base-92b53bc2dd42a3c1d2d7708145099da2a5fe541e.tar.gz
frameworks_base-92b53bc2dd42a3c1d2d7708145099da2a5fe541e.tar.bz2
MTP: Add support for some audio specific object properties
This stops Windows 7 from putting up the "Your device might not be able to play or view this file" dialog when copying MP3 files to the device. Bug: 3195286 Change-Id: Ic5b3fb75309893caae1a4f4b56068a543847f1f7
Diffstat (limited to 'media')
-rwxr-xr-xmedia/java/android/mtp/MtpDatabase.java5
-rw-r--r--media/jni/android_mtp_MtpDatabase.cpp33
2 files changed, 38 insertions, 0 deletions
diff --git a/media/java/android/mtp/MtpDatabase.java b/media/java/android/mtp/MtpDatabase.java
index 2ddbb7d..15ae238 100755
--- a/media/java/android/mtp/MtpDatabase.java
+++ b/media/java/android/mtp/MtpDatabase.java
@@ -596,6 +596,11 @@ public class MtpDatabase {
MtpConstants.PROPERTY_DURATION,
MtpConstants.PROPERTY_GENRE,
MtpConstants.PROPERTY_COMPOSER,
+ MtpConstants.PROPERTY_AUDIO_WAVE_CODEC,
+ MtpConstants.PROPERTY_BITRATE_TYPE,
+ MtpConstants.PROPERTY_AUDIO_BITRATE,
+ MtpConstants.PROPERTY_NUMBER_OF_CHANNELS,
+ MtpConstants.PROPERTY_SAMPLE_RATE,
};
static final int[] VIDEO_PROPERTIES = {
diff --git a/media/jni/android_mtp_MtpDatabase.cpp b/media/jni/android_mtp_MtpDatabase.cpp
index ea75a18..82c6a80 100644
--- a/media/jni/android_mtp_MtpDatabase.cpp
+++ b/media/jni/android_mtp_MtpDatabase.cpp
@@ -1000,6 +1000,22 @@ MtpResponseCode MyMtpDatabase::setObjectReferences(MtpObjectHandle handle,
MtpProperty* MyMtpDatabase::getObjectPropertyDesc(MtpObjectProperty property,
MtpObjectFormat format) {
+ static const int channelEnum[] = {
+ 1, // mono
+ 2, // stereo
+ 3, // 2.1
+ 4, // 3
+ 5, // 3.1
+ 6, // 4
+ 7, // 4.1
+ 8, // 5
+ 9, // 5.1
+ };
+ static const int bitrateEnum[] = {
+ 1, // fixed rate
+ 2, // variable rate
+ };
+
MtpProperty* result = NULL;
switch (property) {
case MTP_PROPERTY_OBJECT_FORMAT:
@@ -1013,6 +1029,7 @@ MtpProperty* MyMtpDatabase::getObjectPropertyDesc(MtpObjectProperty property,
case MTP_PROPERTY_STORAGE_ID:
case MTP_PROPERTY_PARENT_OBJECT:
case MTP_PROPERTY_DURATION:
+ case MTP_PROPERTY_AUDIO_WAVE_CODEC:
result = new MtpProperty(property, MTP_TYPE_UINT32);
break;
case MTP_PROPERTY_OBJECT_SIZE:
@@ -1041,6 +1058,22 @@ MtpProperty* MyMtpDatabase::getObjectPropertyDesc(MtpObjectProperty property,
// We allow renaming files and folders
result = new MtpProperty(property, MTP_TYPE_STR, true);
break;
+ case MTP_PROPERTY_BITRATE_TYPE:
+ result = new MtpProperty(property, MTP_TYPE_UINT16);
+ result->setFormEnum(bitrateEnum, sizeof(bitrateEnum)/sizeof(bitrateEnum[0]));
+ break;
+ case MTP_PROPERTY_AUDIO_BITRATE:
+ result = new MtpProperty(property, MTP_TYPE_UINT32);
+ result->setFormRange(1, 1536000, 1);
+ break;
+ case MTP_PROPERTY_NUMBER_OF_CHANNELS:
+ result = new MtpProperty(property, MTP_TYPE_UINT16);
+ result->setFormEnum(channelEnum, sizeof(channelEnum)/sizeof(channelEnum[0]));
+ break;
+ case MTP_PROPERTY_SAMPLE_RATE:
+ result = new MtpProperty(property, MTP_TYPE_UINT32);
+ result->setFormRange(8000, 48000, 1);
+ break;
}
return result;