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

Commit c2daea21 authored by Gloria Wang's avatar Gloria Wang Committed by Android (Google) Code Review
Browse files

Merge "Add support for WV DRM"

parents a3d7a317 b371426c
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -44,6 +44,8 @@ extern const char *MEDIA_MIMETYPE_CONTAINER_OGG;
extern const char *MEDIA_MIMETYPE_CONTAINER_MATROSKA;
extern const char *MEDIA_MIMETYPE_CONTAINER_MPEG2TS;

extern const char *MEDIA_MIMETYPE_CONTAINER_WVM;

}  // namespace android

#endif  // MEDIA_DEFS_H_
+1 −0
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ LOCAL_SRC_FILES:= \
        TimedEventQueue.cpp               \
        Utils.cpp                         \
        WAVExtractor.cpp                  \
        WVMExtractor.cpp                  \
        avc_utils.cpp                     \
        string.cpp

+10 −3
Original line number Diff line number Diff line
@@ -416,6 +416,7 @@ void AwesomePlayer::reset_l() {
    if (mDecryptHandle != NULL) {
            mDrmManagerClient->setPlaybackStatus(mDecryptHandle,
                    Playback::STOP, 0);
            mDrmManagerClient->closeDecryptSession(mDecryptHandle);
            mDecryptHandle = NULL;
            mDrmManagerClient = NULL;
    }
@@ -1667,10 +1668,16 @@ status_t AwesomePlayer::finishSetDataSource_l() {
    }

    dataSource->getDrmInfo(&mDecryptHandle, &mDrmManagerClient);
    if (mDecryptHandle != NULL
            && RightsStatus::RIGHTS_VALID != mDecryptHandle->status) {
    if (mDecryptHandle != NULL) {
        if (RightsStatus::RIGHTS_VALID == mDecryptHandle->status) {
            if (DecryptApiType::WV_BASED == mDecryptHandle->decryptApiType) {
                LOGD("Setting mCachedSource to NULL for WVM\n");
                mCachedSource.clear();
            }
        } else {
            notifyListener_l(MEDIA_ERROR, MEDIA_ERROR_UNKNOWN, ERROR_NO_LICENSE);
        }
    }

    return setDataSource_l(extractor);
}
+9 −4
Original line number Diff line number Diff line
@@ -280,18 +280,23 @@ bool SniffDRM(
        if (gDrmManagerClient == NULL) {
            gDrmManagerClient = new DrmManagerClient();
        }

        if (gDrmManagerClient == NULL) {
            return false;
        }
    }

    DecryptHandle *decryptHandle = source->DrmInitialization(gDrmManagerClient);

    if (decryptHandle != NULL) {
        if (decryptHandle->decryptApiType == DecryptApiType::CONTAINER_BASED) {
            *mimeType = String8("drm+container_based+");
            *mimeType = String8("drm+container_based+") + decryptHandle->mimeType;
        } else if (decryptHandle->decryptApiType == DecryptApiType::ELEMENTARY_STREAM_BASED) {
            *mimeType = String8("drm+es_based+");
            *mimeType = String8("drm+es_based+") + decryptHandle->mimeType;
        } else if (decryptHandle->decryptApiType == DecryptApiType::WV_BASED) {
            *mimeType = MEDIA_MIMETYPE_CONTAINER_WVM;
            LOGW("SniffWVM: found match\n");
        }

        *mimeType += decryptHandle->mimeType;
        *confidence = 10.0f;

        return true;
+4 −3
Original line number Diff line number Diff line
@@ -55,9 +55,6 @@ FileSource::~FileSource() {
        delete[] mDrmBuf;
        mDrmBuf = NULL;
    }
    if (mDecryptHandle != NULL) {
        mDrmManagerClient->closeDecryptSession(mDecryptHandle);
    }
}

status_t FileSource::initCheck() const {
@@ -113,7 +110,11 @@ status_t FileSource::getSize(off_t *size) {
}

DecryptHandle* FileSource::DrmInitialization(DrmManagerClient* client) {
    if (client == NULL) {
        return NULL;
    }
    mDrmManagerClient = client;

    if (mDecryptHandle == NULL) {
        mDecryptHandle = mDrmManagerClient->openDecryptSession(
                mFd, mOffset, mLength);
Loading