Loading media/libstagefright/MPEG4Writer.cpp +8 −0 Original line number Diff line number Diff line Loading @@ -1542,6 +1542,14 @@ MPEG4Writer::Track::Track( mIsMPEG4 = !strcasecmp(mime, MEDIA_MIMETYPE_VIDEO_MPEG4) || !strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_AAC); // store temporal layer count if (!mIsAudio) { int32_t count; if (mMeta->findInt32(kKeyTemporalLayerCount, &count) && count > 1) { mOwner->setTemporalLayerCount(count); } } setTimeScale(); } Loading media/libstagefright/Utils.cpp +14 −0 Original line number Diff line number Diff line Loading @@ -1317,6 +1317,20 @@ void convertMessageToMetaData(const sp<AMessage> &msg, sp<MetaData> &meta) { } convertMessageToMetaDataColorAspects(msg, meta); AString tsSchema; if (msg->findString("ts-schema", &tsSchema)) { unsigned int numLayers = 0; unsigned int numBLayers = 0; char dummy; int tags = sscanf(tsSchema.c_str(), "android.generic.%u%c%u%c", &numLayers, &dummy, &numBLayers, &dummy); if ((tags == 1 || (tags == 3 && dummy == '+')) && numLayers > 0 && numLayers < UINT32_MAX - numBLayers && numLayers + numBLayers <= INT32_MAX) { meta->setInt32(kKeyTemporalLayerCount, numLayers + numBLayers); } } } else if (mime.startsWith("audio/")) { int32_t numChannels; if (msg->findInt32("channel-count", &numChannels)) { Loading Loading
media/libstagefright/MPEG4Writer.cpp +8 −0 Original line number Diff line number Diff line Loading @@ -1542,6 +1542,14 @@ MPEG4Writer::Track::Track( mIsMPEG4 = !strcasecmp(mime, MEDIA_MIMETYPE_VIDEO_MPEG4) || !strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_AAC); // store temporal layer count if (!mIsAudio) { int32_t count; if (mMeta->findInt32(kKeyTemporalLayerCount, &count) && count > 1) { mOwner->setTemporalLayerCount(count); } } setTimeScale(); } Loading
media/libstagefright/Utils.cpp +14 −0 Original line number Diff line number Diff line Loading @@ -1317,6 +1317,20 @@ void convertMessageToMetaData(const sp<AMessage> &msg, sp<MetaData> &meta) { } convertMessageToMetaDataColorAspects(msg, meta); AString tsSchema; if (msg->findString("ts-schema", &tsSchema)) { unsigned int numLayers = 0; unsigned int numBLayers = 0; char dummy; int tags = sscanf(tsSchema.c_str(), "android.generic.%u%c%u%c", &numLayers, &dummy, &numBLayers, &dummy); if ((tags == 1 || (tags == 3 && dummy == '+')) && numLayers > 0 && numLayers < UINT32_MAX - numBLayers && numLayers + numBLayers <= INT32_MAX) { meta->setInt32(kKeyTemporalLayerCount, numLayers + numBLayers); } } } else if (mime.startsWith("audio/")) { int32_t numChannels; if (msg->findInt32("channel-count", &numChannels)) { Loading