Wrong format used in seamless check
The targetFormat that is sent to supportsSeamlessFormatChange
function corresponds to the data in mInputFormat but the format
provided is the output format, so the check will always return
false.
Use the input format instead.
Bug: 18821145
Change-Id: Iea3cbd59e423da5f2f813e98505b40dc341061b8
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp
index 2abd9d6..5d98d98 100644
--- a/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp
+++ b/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp
@@ -823,7 +823,7 @@
const char * keys[] = { "channel-count", "sample-rate", "is-adts" };
for (unsigned int i = 0; i < sizeof(keys) / sizeof(keys[0]); i++) {
int32_t oldVal, newVal;
- if (!mOutputFormat->findInt32(keys[i], &oldVal) ||
+ if (!mInputFormat->findInt32(keys[i], &oldVal) ||
!targetFormat->findInt32(keys[i], &newVal) ||
oldVal != newVal) {
return false;
@@ -831,7 +831,7 @@
}
sp<ABuffer> oldBuf, newBuf;
- if (mOutputFormat->findBuffer("csd-0", &oldBuf) &&
+ if (mInputFormat->findBuffer("csd-0", &oldBuf) &&
targetFormat->findBuffer("csd-0", &newBuf)) {
if (oldBuf->size() != newBuf->size()) {
return false;
@@ -843,7 +843,7 @@
}
bool NuPlayer::Decoder::supportsSeamlessFormatChange(const sp<AMessage> &targetFormat) const {
- if (mOutputFormat == NULL) {
+ if (mInputFormat == NULL) {
return false;
}
@@ -852,7 +852,7 @@
}
AString oldMime, newMime;
- if (!mOutputFormat->findString("mime", &oldMime)
+ if (!mInputFormat->findString("mime", &oldMime)
|| !targetFormat->findString("mime", &newMime)
|| !(oldMime == newMime)) {
return false;