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

Commit 596187ec authored by Wonsik Kim's avatar Wonsik Kim
Browse files

stagefright: remove ACodecBufferChannel dependency from MediaFilter

Bug: 136290435
Test: adb shell mediafilter -zR /sdcard/a.mp4
Change-Id: I70a39be8dba52821a57c72c71004d59455eb6d5c
parent 0564f530
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -1670,6 +1670,14 @@ void CCodecBufferChannel::setMetaMode(MetaMode mode) {
    mMetaMode = mode;
}

void CCodecBufferChannel::setCrypto(const sp<ICrypto> &crypto) {
    mCrypto = crypto;
}

void CCodecBufferChannel::setDescrambler(const sp<IDescrambler> &descrambler) {
    mDescrambler = descrambler;
}

status_t toStatusT(c2_status_t c2s, c2_operation_t c2op) {
    // C2_OK is always translated to OK.
    if (c2s == C2_OK) {
+6 −0
Original line number Diff line number Diff line
@@ -56,6 +56,9 @@ public:
    virtual ~CCodecBufferChannel();

    // BufferChannelBase interface
    void setCrypto(const sp<ICrypto> &crypto) override;
    void setDescrambler(const sp<IDescrambler> &descrambler) override;

    virtual status_t queueInputBuffer(const sp<MediaCodecBuffer> &buffer) override;
    virtual status_t queueSecureInputBuffer(
            const sp<MediaCodecBuffer> &buffer,
@@ -318,6 +321,9 @@ private:
    std::atomic_bool mInputMetEos;
    std::once_flag mRenderWarningFlag;

    sp<ICrypto> mCrypto;
    sp<IDescrambler> mDescrambler;

    inline bool hasCryptoOrDescrambler() {
        return mCrypto != nullptr || mDescrambler != nullptr;
    }
+8 −0
Original line number Diff line number Diff line
@@ -433,4 +433,12 @@ void ACodecBufferChannel::drainThisBuffer(
            it->mClientBuffer);
}

void ACodecBufferChannel::setCrypto(const sp<ICrypto> &crypto) {
    mCrypto = crypto;
}

void ACodecBufferChannel::setDescrambler(const sp<IDescrambler> &descrambler) {
    mDescrambler = descrambler;
}

}  // namespace android
+0 −8
Original line number Diff line number Diff line
@@ -26,14 +26,6 @@

namespace android {

void BufferChannelBase::setCrypto(const sp<ICrypto> &crypto) {
    mCrypto = crypto;
}

void BufferChannelBase::setDescrambler(const sp<IDescrambler> &descrambler) {
    mDescrambler = descrambler;
}

void BufferChannelBase::IMemoryToSharedBuffer(
        const sp<IMemory> &memory,
        int32_t heapSeqNum,
+42 −34
Original line number Diff line number Diff line
@@ -955,6 +955,8 @@ status_t MediaCodec::init(const AString &name) {
    mCodecInfo.clear();

    bool secureCodec = false;
    const char *owner = "";
    if (!name.startsWith("android.filter.")) {
        AString tmp = name;
        if (tmp.endsWith(".secure")) {
            secureCodec = true;
@@ -984,8 +986,10 @@ status_t MediaCodec::init(const AString &name) {
        if (mCodecInfo == nullptr) {
            return NAME_NOT_FOUND;
        }
        owner = mCodecInfo->getOwnerName();
    }

    mCodec = GetCodecBase(name, mCodecInfo->getOwnerName());
    mCodec = GetCodecBase(name, owner);
    if (mCodec == NULL) {
        return NAME_NOT_FOUND;
    }
@@ -1014,9 +1018,11 @@ status_t MediaCodec::init(const AString &name) {
                    new BufferCallback(new AMessage(kWhatCodecNotify, this))));

    sp<AMessage> msg = new AMessage(kWhatInit, this);
    if (mCodecInfo) {
        msg->setObject("codecInfo", mCodecInfo);
        // name may be different from mCodecInfo->getCodecName() if we stripped
        // ".secure"
    }
    msg->setString("name", name);

    if (mMetricsHandle != 0) {
@@ -2070,9 +2076,9 @@ void MediaCodec::onMessageReceived(const sp<AMessage> &msg) {
                                                mComponentName.c_str());
                    }

                    const char *owner = mCodecInfo->getOwnerName();
                    const char *owner = mCodecInfo ? mCodecInfo->getOwnerName() : "";
                    if (mComponentName.startsWith("OMX.google.")
                            && (owner == nullptr || strncmp(owner, "default", 8) == 0)) {
                            && strncmp(owner, "default", 8) == 0) {
                        mFlags |= kFlagUsesSoftwareRenderer;
                    } else {
                        mFlags &= ~kFlagUsesSoftwareRenderer;
@@ -2480,12 +2486,14 @@ void MediaCodec::onMessageReceived(const sp<AMessage> &msg) {
            setState(INITIALIZING);

            sp<RefBase> codecInfo;
            CHECK(msg->findObject("codecInfo", &codecInfo));
            (void)msg->findObject("codecInfo", &codecInfo);
            AString name;
            CHECK(msg->findString("name", &name));

            sp<AMessage> format = new AMessage;
            if (codecInfo) {
                format->setObject("codecInfo", codecInfo);
            }
            format->setString("componentName", name);

            mCodec->initiateAllocateComponent(format);
Loading