Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4bc8bfaf authored by Andreas Huber's avatar Andreas Huber Committed by Android (Google) Code Review
Browse files

Merge "The software AAC encoder is now an OMX component."

parents 23fb7dc7 afe02df4
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -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:
@@ -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);
+1 −0
Original line number Original line Diff line number Diff line
@@ -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;
+0 −1
Original line number Original line Diff line number Diff line
@@ -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 \
+5 −7
Original line number Original line Diff line number Diff line
@@ -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"
@@ -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)


@@ -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)
    };
    };
@@ -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" },
@@ -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),
@@ -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);
@@ -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);
                }
                }
@@ -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);
        }
        }


+26 −0
Original line number Original line Diff line number Diff line
@@ -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