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

Commit 15ff7818 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "set the metrics handle correctly on error" into main

parents 462ad0cd 94ea480a
Loading
Loading
Loading
Loading
+12 −4
Original line number Diff line number Diff line
@@ -2256,7 +2256,10 @@ static const char enableMediaFormatShapingProperty[] = "debug.stagefright.enable
static void mapFormat(AString componentName, const sp<AMessage> &format, const char *kind,
                      bool reverse);

mediametrics_handle_t MediaCodec::createMediaMetrics(const sp<AMessage>& format, uint32_t flags) {
mediametrics_handle_t MediaCodec::createMediaMetrics(const sp<AMessage>& format,
                                                     uint32_t flags,
                                                     status_t* err) {
    *err = OK;
    mediametrics_handle_t nextMetricsHandle = mediametrics_create(kCodecKeyName);
    bool isEncoder = (flags & CONFIGURE_FLAG_ENCODE);

@@ -2336,7 +2339,9 @@ mediametrics_handle_t MediaCodec::createMediaMetrics(const sp<AMessage>& format,
            mErrorLog.log(LOG_TAG, base::StringPrintf(
                    "Invalid size(s), width=%d, height=%d", mWidth, mHeight));
            mediametrics_delete(nextMetricsHandle);
            return BAD_VALUE;
            // Set the error code and return null handle.
            *err = BAD_VALUE;
            return 0;
        }

    } else {
@@ -2419,7 +2424,11 @@ status_t MediaCodec::configure(
    updateCodecImportance(format);

    // Create and set up metrics for this codec.
    mediametrics_handle_t nextMetricsHandle = createMediaMetrics(format, flags);
    status_t err = OK;
    mediametrics_handle_t nextMetricsHandle = createMediaMetrics(format, flags, &err);
    if (err != OK) {
        return err;
    }

    sp<AMessage> msg = new AMessage(kWhatConfigure, this);
    msg->setMessage("format", format);
@@ -2454,7 +2463,6 @@ status_t MediaCodec::configure(

    sp<AMessage> callback = mCallback;

    status_t err;
    std::vector<MediaResourceParcel> resources;
    resources.push_back(MediaResource::CodecResource(mFlags & kFlagIsSecure,
            toMediaResourceSubType(mIsHardware, mDomain)));
+4 −1
Original line number Diff line number Diff line
@@ -331,7 +331,10 @@ private:
    friend struct ResourceManagerClient;

    // to create the metrics associated with this codec.
    mediametrics_handle_t createMediaMetrics(const sp<AMessage>& format, uint32_t flags);
    // Any error in this function will be captured by the output argument err.
    mediametrics_handle_t createMediaMetrics(const sp<AMessage>& format,
                                             uint32_t flags,
                                             status_t* err);

private:
    enum State {