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

Commit 963fd0bd authored by Arun Johnson's avatar Arun Johnson Committed by Automerger Merge Worker
Browse files

Merge "Improve error reporting in MediaCodec" am: 4d0d3f9f am: d1be6f1f

parents 64a546cf d1be6f1f
Loading
Loading
Loading
Loading
+3 −2
Original line number Original line Diff line number Diff line
@@ -3009,8 +3009,9 @@ void MediaCodec::onMessageReceived(const sp<AMessage> &msg) {
                    CHECK(msg->findInt32("err", &err));
                    CHECK(msg->findInt32("err", &err));
                    CHECK(msg->findInt32("actionCode", &actionCode));
                    CHECK(msg->findInt32("actionCode", &actionCode));


                    ALOGE("Codec reported err %#x, actionCode %d, while in state %d/%s",
                    ALOGE("Codec reported err %#x/%s, actionCode %d, while in state %d/%s",
                            err, actionCode, mState, stateString(mState).c_str());
                                              err, StrMediaError(err).c_str(), actionCode,
                                              mState, stateString(mState).c_str());
                    if (err == DEAD_OBJECT) {
                    if (err == DEAD_OBJECT) {
                        mFlags |= kFlagSawMediaServerDie;
                        mFlags |= kFlagSawMediaServerDie;
                        mFlags &= ~kFlagIsComponentAllocated;
                        mFlags &= ~kFlagIsComponentAllocated;
+19 −2
Original line number Original line Diff line number Diff line
@@ -163,11 +163,28 @@ static inline bool isCryptoError(status_t err) {
            || (ERROR_DRM_VENDOR_MIN <= err && err <= ERROR_DRM_VENDOR_MAX);
            || (ERROR_DRM_VENDOR_MIN <= err && err <= ERROR_DRM_VENDOR_MAX);
}
}


static inline std::string StrCryptoError(status_t err) {
#define STATUS_CASE(STATUS) \
#define STATUS_CASE(STATUS) \
    case STATUS:            \
    case STATUS:            \
        return #STATUS
        return #STATUS


static inline std::string StrMediaError(status_t err) {
    switch(err) {
        STATUS_CASE(ERROR_ALREADY_CONNECTED);
        STATUS_CASE(ERROR_NOT_CONNECTED);
        STATUS_CASE(ERROR_UNKNOWN_HOST);
        STATUS_CASE(ERROR_CANNOT_CONNECT);
        STATUS_CASE(ERROR_IO);
        STATUS_CASE(ERROR_CONNECTION_LOST);
        STATUS_CASE(ERROR_MALFORMED);
        STATUS_CASE(ERROR_OUT_OF_RANGE);
        STATUS_CASE(ERROR_BUFFER_TOO_SMALL);
        STATUS_CASE(ERROR_UNSUPPORTED);
        STATUS_CASE(ERROR_END_OF_STREAM);
    }
    return statusToString(err);
}

static inline std::string StrCryptoError(status_t err) {
    switch (err) {
    switch (err) {
        STATUS_CASE(ERROR_DRM_UNKNOWN);
        STATUS_CASE(ERROR_DRM_UNKNOWN);
        STATUS_CASE(ERROR_DRM_NO_LICENSE);
        STATUS_CASE(ERROR_DRM_NO_LICENSE);
@@ -209,10 +226,10 @@ static inline std::string StrCryptoError(status_t err) {
        STATUS_CASE(ERROR_DRM_STORAGE_READ);
        STATUS_CASE(ERROR_DRM_STORAGE_READ);
        STATUS_CASE(ERROR_DRM_STORAGE_WRITE);
        STATUS_CASE(ERROR_DRM_STORAGE_WRITE);
        STATUS_CASE(ERROR_DRM_ZERO_SUBSAMPLES);
        STATUS_CASE(ERROR_DRM_ZERO_SUBSAMPLES);
#undef STATUS_CASE
    }
    }
    return statusToString(err);
    return statusToString(err);
}
}
#undef STATUS_CASE


}  // namespace android
}  // namespace android


+2 −2
Original line number Original line Diff line number Diff line
@@ -256,8 +256,8 @@ void CodecHandler::onMessageReceived(const sp<AMessage> &msg) {
                         break;
                         break;
                     }
                     }
                     msg->findString("detail", &detail);
                     msg->findString("detail", &detail);
                     ALOGE("Codec reported error(0x%x), actionCode(%d), detail(%s)",
                     ALOGE("Codec reported error(0x%x/%s), actionCode(%d), detail(%s)",
                           err, actionCode, detail.c_str());
                           err, StrMediaError(err).c_str(), actionCode, detail.c_str());


                     Mutex::Autolock _l(mCodec->mAsyncCallbackLock);
                     Mutex::Autolock _l(mCodec->mAsyncCallbackLock);
                     if (mCodec->mAsyncCallback.onAsyncError != NULL) {
                     if (mCodec->mAsyncCallback.onAsyncError != NULL) {