Loading cmds/stagefright/record.cpp +2 −2 Original line number Original line Diff line number Diff line Loading @@ -38,7 +38,7 @@ static const int32_t kVideoBitRate = 512 * 1024; static const int32_t kAudioBitRate = 12200; static const int32_t kAudioBitRate = 12200; static const int64_t kDurationUs = 10000000LL; // 10 seconds static const int64_t kDurationUs = 10000000LL; // 10 seconds #if 1 #if 0 class DummySource : public MediaSource { class DummySource : public MediaSource { public: public: Loading Loading @@ -318,7 +318,7 @@ int main(int argc, char **argv) { sp<MetaData> encMeta = new MetaData; sp<MetaData> encMeta = new MetaData; encMeta->setCString(kKeyMIMEType, encMeta->setCString(kKeyMIMEType, 1 ? MEDIA_MIMETYPE_AUDIO_AMR_WB : MEDIA_MIMETYPE_AUDIO_AAC); 0 ? MEDIA_MIMETYPE_AUDIO_AMR_WB : MEDIA_MIMETYPE_AUDIO_AAC); encMeta->setInt32(kKeySampleRate, kSampleRate); encMeta->setInt32(kKeySampleRate, kSampleRate); encMeta->setInt32(kKeyChannelCount, kNumChannels); encMeta->setInt32(kKeyChannelCount, kNumChannels); encMeta->setInt32(kKeyMaxInputSize, 8192); encMeta->setInt32(kKeyMaxInputSize, 8192); Loading include/media/stagefright/OMXCodec.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -172,6 +172,7 @@ private: uint32_t mFlags; uint32_t mFlags; bool mIsEncoder; bool mIsEncoder; bool mIsVideo; char *mMIME; char *mMIME; char *mComponentName; char *mComponentName; sp<MetaData> mOutputFormat; sp<MetaData> mOutputFormat; Loading media/libstagefright/Android.mk +0 −1 Original line number Original line Diff line number Diff line Loading @@ -77,7 +77,6 @@ LOCAL_SHARED_LIBRARIES := \ LOCAL_STATIC_LIBRARIES := \ LOCAL_STATIC_LIBRARIES := \ libstagefright_color_conversion \ libstagefright_color_conversion \ libstagefright_aacenc \ libstagefright_amrnbenc \ libstagefright_amrnbenc \ libstagefright_amrwbenc \ libstagefright_amrwbenc \ libstagefright_avcenc \ libstagefright_avcenc \ Loading media/libstagefright/OMXCodec.cpp +5 −7 Original line number Original line Diff line number Diff line Loading @@ -18,7 +18,6 @@ #define LOG_TAG "OMXCodec" #define LOG_TAG "OMXCodec" #include <utils/Log.h> #include <utils/Log.h> #include "include/AACEncoder.h" #include "include/AMRNBEncoder.h" #include "include/AMRNBEncoder.h" #include "include/AMRWBEncoder.h" #include "include/AMRWBEncoder.h" #include "include/AVCEncoder.h" #include "include/AVCEncoder.h" Loading Loading @@ -73,7 +72,6 @@ static sp<MediaSource> Make##name(const sp<MediaSource> &source, const sp<MetaDa FACTORY_CREATE_ENCODER(AMRNBEncoder) FACTORY_CREATE_ENCODER(AMRNBEncoder) FACTORY_CREATE_ENCODER(AMRWBEncoder) FACTORY_CREATE_ENCODER(AMRWBEncoder) FACTORY_CREATE_ENCODER(AACEncoder) FACTORY_CREATE_ENCODER(AVCEncoder) FACTORY_CREATE_ENCODER(AVCEncoder) FACTORY_CREATE_ENCODER(M4vH263Encoder) FACTORY_CREATE_ENCODER(M4vH263Encoder) Loading @@ -88,7 +86,6 @@ static sp<MediaSource> InstantiateSoftwareEncoder( static const FactoryInfo kFactoryInfo[] = { static const FactoryInfo kFactoryInfo[] = { FACTORY_REF(AMRNBEncoder) FACTORY_REF(AMRNBEncoder) FACTORY_REF(AMRWBEncoder) FACTORY_REF(AMRWBEncoder) FACTORY_REF(AACEncoder) FACTORY_REF(AVCEncoder) FACTORY_REF(AVCEncoder) FACTORY_REF(M4vH263Encoder) FACTORY_REF(M4vH263Encoder) }; }; Loading Loading @@ -153,7 +150,7 @@ static const CodecInfo kEncoderInfo[] = { { MEDIA_MIMETYPE_AUDIO_AMR_WB, "OMX.TI.WBAMR.encode" }, { MEDIA_MIMETYPE_AUDIO_AMR_WB, "OMX.TI.WBAMR.encode" }, { MEDIA_MIMETYPE_AUDIO_AMR_WB, "AMRWBEncoder" }, { MEDIA_MIMETYPE_AUDIO_AMR_WB, "AMRWBEncoder" }, { MEDIA_MIMETYPE_AUDIO_AAC, "OMX.TI.AAC.encode" }, { MEDIA_MIMETYPE_AUDIO_AAC, "OMX.TI.AAC.encode" }, { MEDIA_MIMETYPE_AUDIO_AAC, "AACEncoder" }, { MEDIA_MIMETYPE_AUDIO_AAC, "OMX.google.aac.encoder" }, { MEDIA_MIMETYPE_VIDEO_MPEG4, "OMX.TI.DUCATI1.VIDEO.MPEG4E" }, { MEDIA_MIMETYPE_VIDEO_MPEG4, "OMX.TI.DUCATI1.VIDEO.MPEG4E" }, { MEDIA_MIMETYPE_VIDEO_MPEG4, "OMX.qcom.7x30.video.encoder.mpeg4" }, { MEDIA_MIMETYPE_VIDEO_MPEG4, "OMX.qcom.7x30.video.encoder.mpeg4" }, { MEDIA_MIMETYPE_VIDEO_MPEG4, "OMX.qcom.video.encoder.mpeg4" }, { MEDIA_MIMETYPE_VIDEO_MPEG4, "OMX.qcom.video.encoder.mpeg4" }, Loading Loading @@ -1487,6 +1484,7 @@ OMXCodec::OMXCodec( mQuirks(quirks), mQuirks(quirks), mFlags(flags), mFlags(flags), mIsEncoder(isEncoder), mIsEncoder(isEncoder), mIsVideo(!strncasecmp("video/", mime, 6)), mMIME(strdup(mime)), mMIME(strdup(mime)), mComponentName(strdup(componentName)), mComponentName(strdup(componentName)), mSource(source), mSource(source), Loading Loading @@ -2192,7 +2190,7 @@ error: } } int64_t OMXCodec::retrieveDecodingTimeUs(bool isCodecSpecific) { int64_t OMXCodec::retrieveDecodingTimeUs(bool isCodecSpecific) { CHECK(mIsEncoder); CHECK(mIsEncoder && mIsVideo); if (mDecodingTimeList.empty()) { if (mDecodingTimeList.empty()) { CHECK(mSignalledEOS || mNoMoreOutputData); CHECK(mSignalledEOS || mNoMoreOutputData); Loading Loading @@ -2387,7 +2385,7 @@ void OMXCodec::on_message(const omx_message &msg) { mNoMoreOutputData = true; mNoMoreOutputData = true; } } if (mIsEncoder) { if (mIsEncoder && mIsVideo) { int64_t decodingTimeUs = retrieveDecodingTimeUs(isCodecSpecific); int64_t decodingTimeUs = retrieveDecodingTimeUs(isCodecSpecific); buffer->meta_data()->setInt64(kKeyDecodingTime, decodingTimeUs); buffer->meta_data()->setInt64(kKeyDecodingTime, decodingTimeUs); } } Loading Loading @@ -3249,7 +3247,7 @@ bool OMXCodec::drainInputBuffer(BufferInfo *info) { int64_t lastBufferTimeUs; int64_t lastBufferTimeUs; CHECK(srcBuffer->meta_data()->findInt64(kKeyTime, &lastBufferTimeUs)); CHECK(srcBuffer->meta_data()->findInt64(kKeyTime, &lastBufferTimeUs)); CHECK(lastBufferTimeUs >= 0); CHECK(lastBufferTimeUs >= 0); if (mIsEncoder) { if (mIsEncoder && mIsVideo) { mDecodingTimeList.push_back(lastBufferTimeUs); mDecodingTimeList.push_back(lastBufferTimeUs); } } Loading media/libstagefright/codecs/aacenc/Android.mk +26 −0 Original line number Original line Diff line number Diff line Loading @@ -85,3 +85,29 @@ LOCAL_C_INCLUDES += $(LOCAL_PATH)/src/asm/ARMV7 endif endif include $(BUILD_STATIC_LIBRARY) include $(BUILD_STATIC_LIBRARY) ################################################################################ include $(CLEAR_VARS) LOCAL_SRC_FILES := \ SoftAACEncoder.cpp LOCAL_C_INCLUDES := \ frameworks/base/media/libstagefright/include \ frameworks/base/include/media/stagefright/openmax \ frameworks/base/media/libstagefright/codecs/common/include \ LOCAL_CFLAGS := -DOSCL_IMPORT_REF= LOCAL_STATIC_LIBRARIES := \ libstagefright_aacenc LOCAL_SHARED_LIBRARIES := \ libstagefright_omx libstagefright_foundation libutils \ libstagefright_enc_common LOCAL_MODULE := libstagefright_soft_aacenc LOCAL_MODULE_TAGS := optional include $(BUILD_SHARED_LIBRARY) Loading
cmds/stagefright/record.cpp +2 −2 Original line number Original line Diff line number Diff line Loading @@ -38,7 +38,7 @@ static const int32_t kVideoBitRate = 512 * 1024; static const int32_t kAudioBitRate = 12200; static const int32_t kAudioBitRate = 12200; static const int64_t kDurationUs = 10000000LL; // 10 seconds static const int64_t kDurationUs = 10000000LL; // 10 seconds #if 1 #if 0 class DummySource : public MediaSource { class DummySource : public MediaSource { public: public: Loading Loading @@ -318,7 +318,7 @@ int main(int argc, char **argv) { sp<MetaData> encMeta = new MetaData; sp<MetaData> encMeta = new MetaData; encMeta->setCString(kKeyMIMEType, encMeta->setCString(kKeyMIMEType, 1 ? MEDIA_MIMETYPE_AUDIO_AMR_WB : MEDIA_MIMETYPE_AUDIO_AAC); 0 ? MEDIA_MIMETYPE_AUDIO_AMR_WB : MEDIA_MIMETYPE_AUDIO_AAC); encMeta->setInt32(kKeySampleRate, kSampleRate); encMeta->setInt32(kKeySampleRate, kSampleRate); encMeta->setInt32(kKeyChannelCount, kNumChannels); encMeta->setInt32(kKeyChannelCount, kNumChannels); encMeta->setInt32(kKeyMaxInputSize, 8192); encMeta->setInt32(kKeyMaxInputSize, 8192); Loading
include/media/stagefright/OMXCodec.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -172,6 +172,7 @@ private: uint32_t mFlags; uint32_t mFlags; bool mIsEncoder; bool mIsEncoder; bool mIsVideo; char *mMIME; char *mMIME; char *mComponentName; char *mComponentName; sp<MetaData> mOutputFormat; sp<MetaData> mOutputFormat; Loading
media/libstagefright/Android.mk +0 −1 Original line number Original line Diff line number Diff line Loading @@ -77,7 +77,6 @@ LOCAL_SHARED_LIBRARIES := \ LOCAL_STATIC_LIBRARIES := \ LOCAL_STATIC_LIBRARIES := \ libstagefright_color_conversion \ libstagefright_color_conversion \ libstagefright_aacenc \ libstagefright_amrnbenc \ libstagefright_amrnbenc \ libstagefright_amrwbenc \ libstagefright_amrwbenc \ libstagefright_avcenc \ libstagefright_avcenc \ Loading
media/libstagefright/OMXCodec.cpp +5 −7 Original line number Original line Diff line number Diff line Loading @@ -18,7 +18,6 @@ #define LOG_TAG "OMXCodec" #define LOG_TAG "OMXCodec" #include <utils/Log.h> #include <utils/Log.h> #include "include/AACEncoder.h" #include "include/AMRNBEncoder.h" #include "include/AMRNBEncoder.h" #include "include/AMRWBEncoder.h" #include "include/AMRWBEncoder.h" #include "include/AVCEncoder.h" #include "include/AVCEncoder.h" Loading Loading @@ -73,7 +72,6 @@ static sp<MediaSource> Make##name(const sp<MediaSource> &source, const sp<MetaDa FACTORY_CREATE_ENCODER(AMRNBEncoder) FACTORY_CREATE_ENCODER(AMRNBEncoder) FACTORY_CREATE_ENCODER(AMRWBEncoder) FACTORY_CREATE_ENCODER(AMRWBEncoder) FACTORY_CREATE_ENCODER(AACEncoder) FACTORY_CREATE_ENCODER(AVCEncoder) FACTORY_CREATE_ENCODER(AVCEncoder) FACTORY_CREATE_ENCODER(M4vH263Encoder) FACTORY_CREATE_ENCODER(M4vH263Encoder) Loading @@ -88,7 +86,6 @@ static sp<MediaSource> InstantiateSoftwareEncoder( static const FactoryInfo kFactoryInfo[] = { static const FactoryInfo kFactoryInfo[] = { FACTORY_REF(AMRNBEncoder) FACTORY_REF(AMRNBEncoder) FACTORY_REF(AMRWBEncoder) FACTORY_REF(AMRWBEncoder) FACTORY_REF(AACEncoder) FACTORY_REF(AVCEncoder) FACTORY_REF(AVCEncoder) FACTORY_REF(M4vH263Encoder) FACTORY_REF(M4vH263Encoder) }; }; Loading Loading @@ -153,7 +150,7 @@ static const CodecInfo kEncoderInfo[] = { { MEDIA_MIMETYPE_AUDIO_AMR_WB, "OMX.TI.WBAMR.encode" }, { MEDIA_MIMETYPE_AUDIO_AMR_WB, "OMX.TI.WBAMR.encode" }, { MEDIA_MIMETYPE_AUDIO_AMR_WB, "AMRWBEncoder" }, { MEDIA_MIMETYPE_AUDIO_AMR_WB, "AMRWBEncoder" }, { MEDIA_MIMETYPE_AUDIO_AAC, "OMX.TI.AAC.encode" }, { MEDIA_MIMETYPE_AUDIO_AAC, "OMX.TI.AAC.encode" }, { MEDIA_MIMETYPE_AUDIO_AAC, "AACEncoder" }, { MEDIA_MIMETYPE_AUDIO_AAC, "OMX.google.aac.encoder" }, { MEDIA_MIMETYPE_VIDEO_MPEG4, "OMX.TI.DUCATI1.VIDEO.MPEG4E" }, { MEDIA_MIMETYPE_VIDEO_MPEG4, "OMX.TI.DUCATI1.VIDEO.MPEG4E" }, { MEDIA_MIMETYPE_VIDEO_MPEG4, "OMX.qcom.7x30.video.encoder.mpeg4" }, { MEDIA_MIMETYPE_VIDEO_MPEG4, "OMX.qcom.7x30.video.encoder.mpeg4" }, { MEDIA_MIMETYPE_VIDEO_MPEG4, "OMX.qcom.video.encoder.mpeg4" }, { MEDIA_MIMETYPE_VIDEO_MPEG4, "OMX.qcom.video.encoder.mpeg4" }, Loading Loading @@ -1487,6 +1484,7 @@ OMXCodec::OMXCodec( mQuirks(quirks), mQuirks(quirks), mFlags(flags), mFlags(flags), mIsEncoder(isEncoder), mIsEncoder(isEncoder), mIsVideo(!strncasecmp("video/", mime, 6)), mMIME(strdup(mime)), mMIME(strdup(mime)), mComponentName(strdup(componentName)), mComponentName(strdup(componentName)), mSource(source), mSource(source), Loading Loading @@ -2192,7 +2190,7 @@ error: } } int64_t OMXCodec::retrieveDecodingTimeUs(bool isCodecSpecific) { int64_t OMXCodec::retrieveDecodingTimeUs(bool isCodecSpecific) { CHECK(mIsEncoder); CHECK(mIsEncoder && mIsVideo); if (mDecodingTimeList.empty()) { if (mDecodingTimeList.empty()) { CHECK(mSignalledEOS || mNoMoreOutputData); CHECK(mSignalledEOS || mNoMoreOutputData); Loading Loading @@ -2387,7 +2385,7 @@ void OMXCodec::on_message(const omx_message &msg) { mNoMoreOutputData = true; mNoMoreOutputData = true; } } if (mIsEncoder) { if (mIsEncoder && mIsVideo) { int64_t decodingTimeUs = retrieveDecodingTimeUs(isCodecSpecific); int64_t decodingTimeUs = retrieveDecodingTimeUs(isCodecSpecific); buffer->meta_data()->setInt64(kKeyDecodingTime, decodingTimeUs); buffer->meta_data()->setInt64(kKeyDecodingTime, decodingTimeUs); } } Loading Loading @@ -3249,7 +3247,7 @@ bool OMXCodec::drainInputBuffer(BufferInfo *info) { int64_t lastBufferTimeUs; int64_t lastBufferTimeUs; CHECK(srcBuffer->meta_data()->findInt64(kKeyTime, &lastBufferTimeUs)); CHECK(srcBuffer->meta_data()->findInt64(kKeyTime, &lastBufferTimeUs)); CHECK(lastBufferTimeUs >= 0); CHECK(lastBufferTimeUs >= 0); if (mIsEncoder) { if (mIsEncoder && mIsVideo) { mDecodingTimeList.push_back(lastBufferTimeUs); mDecodingTimeList.push_back(lastBufferTimeUs); } } Loading
media/libstagefright/codecs/aacenc/Android.mk +26 −0 Original line number Original line Diff line number Diff line Loading @@ -85,3 +85,29 @@ LOCAL_C_INCLUDES += $(LOCAL_PATH)/src/asm/ARMV7 endif endif include $(BUILD_STATIC_LIBRARY) include $(BUILD_STATIC_LIBRARY) ################################################################################ include $(CLEAR_VARS) LOCAL_SRC_FILES := \ SoftAACEncoder.cpp LOCAL_C_INCLUDES := \ frameworks/base/media/libstagefright/include \ frameworks/base/include/media/stagefright/openmax \ frameworks/base/media/libstagefright/codecs/common/include \ LOCAL_CFLAGS := -DOSCL_IMPORT_REF= LOCAL_STATIC_LIBRARIES := \ libstagefright_aacenc LOCAL_SHARED_LIBRARIES := \ libstagefright_omx libstagefright_foundation libutils \ libstagefright_enc_common LOCAL_MODULE := libstagefright_soft_aacenc LOCAL_MODULE_TAGS := optional include $(BUILD_SHARED_LIBRARY)