diff options
author | Andreas Huber <andih@google.com> | 2013-06-12 10:26:19 -0700 |
---|---|---|
committer | Andreas Huber <andih@google.com> | 2013-06-12 11:01:58 -0700 |
commit | 9fef8d453b15a91a2b748faac2bfaff713bcf1e1 (patch) | |
tree | 4e5095d5a9dcc55cf4a69b9a68e9fc88620c3700 /media/libstagefright/wifi-display/source/Converter.cpp | |
parent | 63e9f73c2db01fec30246adbcfea2880671e2108 (diff) | |
download | frameworks_av-9fef8d453b15a91a2b748faac2bfaff713bcf1e1.zip frameworks_av-9fef8d453b15a91a2b748faac2bfaff713bcf1e1.tar.gz frameworks_av-9fef8d453b15a91a2b748faac2bfaff713bcf1e1.tar.bz2 |
Converter now takes the desired _output_ format instead of the
input format, allowing control over the type of encoding.
Change-Id: Iaaa1a825f447ea130e373bbd8e5dc96f2762db18
Diffstat (limited to 'media/libstagefright/wifi-display/source/Converter.cpp')
-rw-r--r-- | media/libstagefright/wifi-display/source/Converter.cpp | 47 |
1 files changed, 19 insertions, 28 deletions
diff --git a/media/libstagefright/wifi-display/source/Converter.cpp b/media/libstagefright/wifi-display/source/Converter.cpp index e62505d..0214520 100644 --- a/media/libstagefright/wifi-display/source/Converter.cpp +++ b/media/libstagefright/wifi-display/source/Converter.cpp @@ -40,14 +40,13 @@ namespace android { Converter::Converter( const sp<AMessage> ¬ify, const sp<ALooper> &codecLooper, - const sp<AMessage> &format, - bool usePCMAudio) + const sp<AMessage> &outputFormat) : mInitCheck(NO_INIT), mNotify(notify), mCodecLooper(codecLooper), - mInputFormat(format), + mOutputFormat(outputFormat), mIsVideo(false), - mIsPCMAudio(usePCMAudio), + mIsPCMAudio(false), mNeedToManuallyPrependSPSPPS(false), mDoMoreWorkPending(false) #if ENABLE_SILENCE_DETECTION @@ -58,14 +57,14 @@ Converter::Converter( ,mNumFramesToDrop(0) { AString mime; - CHECK(mInputFormat->findString("mime", &mime)); + CHECK(mOutputFormat->findString("mime", &mime)); if (!strncasecmp("video/", mime.c_str(), 6)) { mIsVideo = true; + } else if (!strcasecmp(MEDIA_MIMETYPE_AUDIO_RAW, mime.c_str())) { + mIsPCMAudio = true; } - CHECK(!usePCMAudio || !mIsVideo); - mInitCheck = initEncoder(); if (mInitCheck != OK) { @@ -152,23 +151,10 @@ int32_t Converter::GetInt32Property( } status_t Converter::initEncoder() { - AString inputMIME; - CHECK(mInputFormat->findString("mime", &inputMIME)); - AString outputMIME; - bool isAudio = false; - if (!strcasecmp(inputMIME.c_str(), MEDIA_MIMETYPE_AUDIO_RAW)) { - if (mIsPCMAudio) { - outputMIME = MEDIA_MIMETYPE_AUDIO_RAW; - } else { - outputMIME = MEDIA_MIMETYPE_AUDIO_AAC; - } - isAudio = true; - } else if (!strcasecmp(inputMIME.c_str(), MEDIA_MIMETYPE_VIDEO_RAW)) { - outputMIME = MEDIA_MIMETYPE_VIDEO_AVC; - } else { - TRESPASS(); - } + CHECK(mOutputFormat->findString("mime", &outputMIME)); + + bool isAudio = !strncasecmp(outputMIME.c_str(), "audio/", 6); if (!mIsPCMAudio) { mEncoder = MediaCodec::CreateByType( @@ -179,14 +165,10 @@ status_t Converter::initEncoder() { } } - mOutputFormat = mInputFormat->dup(); - if (mIsPCMAudio) { return OK; } - mOutputFormat->setString("mime", outputMIME.c_str()); - int32_t audioBitrate = GetInt32Property("media.wfd.audio-bitrate", 128000); int32_t videoBitrate = GetInt32Property("media.wfd.video-bitrate", 5000000); mPrevVideoBitrate = videoBitrate; @@ -427,7 +409,7 @@ void Converter::onMessageReceived(const sp<AMessage> &msg) { releaseEncoder(); AString mime; - CHECK(mInputFormat->findString("mime", &mime)); + CHECK(mOutputFormat->findString("mime", &mime)); ALOGI("encoder (%s) shut down.", mime.c_str()); break; } @@ -679,6 +661,15 @@ status_t Converter::doMoreWork() { notify->setInt32("what", kWhatEOS); notify->post(); } else { +#if 0 + if (mIsVideo) { + int32_t videoBitrate = GetInt32Property( + "media.wfd.video-bitrate", 5000000); + + setVideoBitrate(videoBitrate); + } +#endif + sp<ABuffer> buffer; sp<ABuffer> outbuf = mEncoderOutputBuffers.itemAt(bufferIndex); |