Merge changes Ib249b276,Ica1d0286,If4914340
* changes:
LOCAL_CLANG := true is now the default
stagefright: move several static methods out of ACodec
stagefright: move MediaDefs from libstagefright to libmedia
diff --git a/drm/mediadrm/plugins/mock/MockDrmCryptoPlugin.cpp b/drm/mediadrm/plugins/mock/MockDrmCryptoPlugin.cpp
index a38cca9..9bdb194 100644
--- a/drm/mediadrm/plugins/mock/MockDrmCryptoPlugin.cpp
+++ b/drm/mediadrm/plugins/mock/MockDrmCryptoPlugin.cpp
@@ -791,8 +791,9 @@
}
ssize_t
- MockCryptoPlugin::decrypt(bool secure, const uint8_t key[16], const uint8_t iv[16],
- Mode mode, const Pattern &pattern, const void *srcPtr,
+ MockCryptoPlugin::decrypt(bool secure, const uint8_t key[DECRYPT_KEY_SIZE],
+ const uint8_t iv[DECRYPT_KEY_SIZE], Mode mode,
+ const Pattern &pattern, const void *srcPtr,
const SubSample *subSamples, size_t numSubSamples,
void *dstPtr, AString * /* errorDetailMsg */)
{
@@ -800,8 +801,8 @@
"pattern:{encryptBlocks=%d, skipBlocks=%d} src=%p, "
"subSamples=%s, dst=%p)",
(int)secure,
- arrayToString(key, sizeof(key)).string(),
- arrayToString(iv, sizeof(iv)).string(),
+ arrayToString(key, DECRYPT_KEY_SIZE).string(),
+ arrayToString(iv, DECRYPT_KEY_SIZE).string(),
(int)mode, pattern.mEncryptBlocks, pattern.mSkipBlocks, srcPtr,
subSamplesToString(subSamples, numSubSamples).string(),
dstPtr);
diff --git a/drm/mediadrm/plugins/mock/MockDrmCryptoPlugin.h b/drm/mediadrm/plugins/mock/MockDrmCryptoPlugin.h
index 98bdd69..c84046d 100644
--- a/drm/mediadrm/plugins/mock/MockDrmCryptoPlugin.h
+++ b/drm/mediadrm/plugins/mock/MockDrmCryptoPlugin.h
@@ -157,9 +157,12 @@
bool requiresSecureDecoderComponent(const char *mime) const;
+ static constexpr size_t DECRYPT_KEY_SIZE = 16;
+
ssize_t decrypt(bool secure,
- const uint8_t key[16], const uint8_t iv[16],
- Mode mode, const Pattern &pattern, const void *srcPtr,
+ const uint8_t key[DECRYPT_KEY_SIZE],
+ const uint8_t iv[DECRYPT_KEY_SIZE], Mode mode,
+ const Pattern &pattern, const void *srcPtr,
const SubSample *subSamples, size_t numSubSamples,
void *dstPtr, AString *errorDetailMsg);
private:
diff --git a/media/mtp/MtpServer.cpp b/media/mtp/MtpServer.cpp
index b4947f8..b773e8a 100644
--- a/media/mtp/MtpServer.cpp
+++ b/media/mtp/MtpServer.cpp
@@ -25,6 +25,7 @@
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/stat.h>
+#include <sys/time.h>
#define LOG_TAG "MtpServer"
@@ -113,7 +114,8 @@
mSessionOpen(false),
mSendObjectHandle(kInvalidObjectHandle),
mSendObjectFormat(0),
- mSendObjectFileSize(0)
+ mSendObjectFileSize(0),
+ mSendObjectModifiedTime(0)
{
}
@@ -999,6 +1001,7 @@
// save the handle for the SendObject call, which should follow
mSendObjectHandle = handle;
mSendObjectFormat = format;
+ mSendObjectModifiedTime = modifiedTime;
}
mResponse.setParameter(1, storageID);
@@ -1072,6 +1075,17 @@
}
}
}
+
+ if (mSendObjectModifiedTime) {
+ struct timespec newTime[2];
+ newTime[0].tv_nsec = UTIME_NOW;
+ newTime[1].tv_sec = mSendObjectModifiedTime;
+ newTime[1].tv_nsec = 0;
+ if (futimens(mfr.fd, newTime) < 0) {
+ ALOGW("changing modified time failed, %s", strerror(errno));
+ }
+ }
+
fstat(mfr.fd, &sstat);
close(mfr.fd);
@@ -1092,6 +1106,7 @@
result == MTP_RESPONSE_OK);
mSendObjectHandle = kInvalidObjectHandle;
mSendObjectFormat = 0;
+ mSendObjectModifiedTime = 0;
auto end = std::chrono::steady_clock::now();
std::chrono::duration<double> diff = end - start;
diff --git a/media/mtp/MtpServer.h b/media/mtp/MtpServer.h
index 64d1b72..08a9e4a 100644
--- a/media/mtp/MtpServer.h
+++ b/media/mtp/MtpServer.h
@@ -78,6 +78,7 @@
MtpObjectFormat mSendObjectFormat;
MtpString mSendObjectFilePath;
size_t mSendObjectFileSize;
+ time_t mSendObjectModifiedTime;
Mutex mMutex;