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

Commit 4de6996f authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "NdkMediaFormat_*() parameter checking" am: a148102f am: e9c592c3 am: d58759ff

parents bb729dce d58759ff
Loading
Loading
Loading
Loading
+96 −1
Original line number Diff line number Diff line
@@ -147,38 +147,80 @@ const char* AMediaFormat_toString(AMediaFormat *mData) {

EXPORT
bool AMediaFormat_getInt32(AMediaFormat* format, const char *name, int32_t *out) {
    if (format == nullptr) {
        return false;
    }
    if (name == nullptr) {
        return false;
    }
    return format->mFormat->findInt32(name, out);
}

EXPORT
bool AMediaFormat_getInt64(AMediaFormat* format, const char *name, int64_t *out) {
    if (format == nullptr) {
        return false;
    }
    if (name == nullptr) {
        return false;
    }
    return format->mFormat->findInt64(name, out);
}

EXPORT
bool AMediaFormat_getFloat(AMediaFormat* format, const char *name, float *out) {
    if (format == nullptr) {
        return false;
    }
    if (name == nullptr) {
        return false;
    }
    return format->mFormat->findFloat(name, out);
}

EXPORT
bool AMediaFormat_getDouble(AMediaFormat* format, const char *name, double *out) {
    if (format == nullptr) {
        return false;
    }
    if (name == nullptr) {
        return false;
    }
    return format->mFormat->findDouble(name, out);
}

EXPORT
bool AMediaFormat_getSize(AMediaFormat* format, const char *name, size_t *out) {
    if (format == nullptr) {
        return false;
    }
    if (name == nullptr) {
        return false;
    }
    return format->mFormat->findSize(name, out);
}

EXPORT
bool AMediaFormat_getRect(AMediaFormat* format, const char *name,
                          int32_t *left, int32_t *top, int32_t *right, int32_t *bottom) {
    if (format == nullptr) {
        return false;
    }
    if (name == nullptr) {
        return false;
    }
    return format->mFormat->findRect(name, left, top, right, bottom);
}

EXPORT
bool AMediaFormat_getBuffer(AMediaFormat* format, const char *name, void** data, size_t *outsize) {
    sp<ABuffer> buf;
    if (format == nullptr) {
        return false;
    }
    if (name == nullptr) {
        return false;
    }
    if (format->mFormat->findBuffer(name, &buf)) {
        *data = buf->data() + buf->offset();
        *outsize = buf->size();
@@ -189,7 +231,12 @@ bool AMediaFormat_getBuffer(AMediaFormat* format, const char *name, void** data,

EXPORT
bool AMediaFormat_getString(AMediaFormat* mData, const char *name, const char **out) {

    if (mData == nullptr) {
        return false;
    }
    if (name == nullptr) {
        return false;
    }
    for (size_t i = 0; i < mData->mStringCache.size(); i++) {
        if (strcmp(mData->mStringCache.keyAt(i).string(), name) == 0) {
            mData->mStringCache.removeItemsAt(i, 1);
@@ -212,43 +259,91 @@ bool AMediaFormat_getString(AMediaFormat* mData, const char *name, const char **

EXPORT
void AMediaFormat_setInt32(AMediaFormat* format, const char *name, int32_t value) {
    if (format == nullptr) {
        return;
    }
    if (name == nullptr) {
        return;
    }
    format->mFormat->setInt32(name, value);
}

EXPORT
void AMediaFormat_setInt64(AMediaFormat* format, const char *name, int64_t value) {
    if (format == nullptr) {
        return;
    }
    if (name == nullptr) {
        return;
    }
    format->mFormat->setInt64(name, value);
}

EXPORT
void AMediaFormat_setFloat(AMediaFormat* format, const char* name, float value) {
    if (format == nullptr) {
        return;
    }
    if (name == nullptr) {
        return;
    }
    format->mFormat->setFloat(name, value);
}

EXPORT
void AMediaFormat_setDouble(AMediaFormat* format, const char* name, double value) {
    if (format == nullptr) {
        return;
    }
    if (name == nullptr) {
        return;
    }
    format->mFormat->setDouble(name, value);
}

EXPORT
void AMediaFormat_setSize(AMediaFormat* format, const char* name, size_t value) {
    if (format == nullptr) {
        return;
    }
    if (name == nullptr) {
        return;
    }
    format->mFormat->setSize(name, value);
}

EXPORT
void AMediaFormat_setRect(AMediaFormat* format, const char *name,
                          int32_t left, int32_t top, int32_t right, int32_t bottom) {
    if (format == nullptr) {
        return;
    }
    if (name == nullptr) {
        return;
    }
    format->mFormat->setRect(name, left, top, right, bottom);
}

EXPORT
void AMediaFormat_setString(AMediaFormat* format, const char* name, const char* value) {
    if (format == nullptr) {
        return;
    }
    if (name == nullptr) {
        return;
    }
    // AMessage::setString() makes a copy of the string
    format->mFormat->setString(name, value, strlen(value));
}

EXPORT
void AMediaFormat_setBuffer(AMediaFormat* format, const char* name, const void* data, size_t size) {
    if (format == nullptr) {
        return;
    }
    if (name == nullptr) {
        return;
    }
    // the ABuffer(void*, size_t) constructor doesn't take ownership of the data, so create
    // a new buffer and copy the data into it
    sp<ABuffer> buf = new ABuffer(size);
+45 −0
Original line number Diff line number Diff line
@@ -51,6 +51,13 @@ TEST(NdkMediaFormat_tests, test_int32) {
   EXPECT_FALSE(AMediaFormat_getInt64(fmt1, "five", &i64));
   EXPECT_EQ(i32, 5);

   // verify detecting some bad parameters.
   AMediaFormat_setInt32(nullptr, "whatever", 6);
   AMediaFormat_setInt32(fmt1, nullptr, 6);

   EXPECT_FALSE(AMediaFormat_getInt32(nullptr, "whatever", &i32));
   EXPECT_FALSE(AMediaFormat_getInt32(fmt1, nullptr, &i32));

   AMediaFormat_delete(fmt1);
}

@@ -67,6 +74,13 @@ TEST(NdkMediaFormat_tests, test_int64) {
   EXPECT_FALSE(AMediaFormat_getInt64(fmt1, "five", &i64));
   EXPECT_EQ(i64, -1);

   // verify detecting some bad parameters.
   AMediaFormat_setInt64(nullptr, "whatever", 6);
   AMediaFormat_setInt64(fmt1, nullptr, 6);

   EXPECT_FALSE(AMediaFormat_getInt64(nullptr, "whatever", &i64));
   EXPECT_FALSE(AMediaFormat_getInt64(fmt1, nullptr, &i64));

   AMediaFormat_delete(fmt1);
}

@@ -80,6 +94,13 @@ TEST(NdkMediaFormat_tests, test_size) {
   EXPECT_TRUE(AMediaFormat_getSize(fmt1, "medium", &size));
   EXPECT_EQ(size, 10);

   // verify detecting some bad parameters.
   AMediaFormat_setSize(nullptr, "whatever", 6);
   AMediaFormat_setSize(fmt1, nullptr, 6);

   EXPECT_FALSE(AMediaFormat_getSize(nullptr, "whatever", &size));
   EXPECT_FALSE(AMediaFormat_getSize(fmt1, nullptr, &size));

   AMediaFormat_delete(fmt1);
}

@@ -90,6 +111,14 @@ TEST(NdkMediaFormat_tests, test_float) {
   AMediaFormat_setFloat(fmt1, "ship", 0.5);
   EXPECT_TRUE(AMediaFormat_getFloat(fmt1, "boat", &f));
   EXPECT_EQ(f, 1.5);

   // verify detecting some bad parameters.
   AMediaFormat_setFloat(nullptr, "whatever", 1.5);
   AMediaFormat_setFloat(fmt1, nullptr, 1.5);

   EXPECT_FALSE(AMediaFormat_getFloat(nullptr, "whatever", &f));
   EXPECT_FALSE(AMediaFormat_getFloat(fmt1, nullptr, &f));

   AMediaFormat_delete(fmt1);
}

@@ -100,6 +129,14 @@ TEST(NdkMediaFormat_tests, test_double) {
   AMediaFormat_setDouble(fmt1, "dip", 0.5);
   EXPECT_TRUE(AMediaFormat_getDouble(fmt1, "trouble", &d));
   EXPECT_EQ(d, 100.5);

   // verify detecting some bad parameters.
   AMediaFormat_setDouble(nullptr, "whatever", 1.5);
   AMediaFormat_setDouble(fmt1, nullptr, 1.5);

   EXPECT_FALSE(AMediaFormat_getDouble(nullptr, "whatever", &d));
   EXPECT_FALSE(AMediaFormat_getDouble(fmt1, nullptr, &d));

   AMediaFormat_delete(fmt1);
}

@@ -111,8 +148,16 @@ TEST(NdkMediaFormat_tests, test_string) {
   AMediaFormat_setString(fmt1, "stringtheory", content);
   EXPECT_TRUE(AMediaFormat_getString(fmt1, "stringtheory", &out));
   EXPECT_NE(out, nullptr);
   EXPECT_NE(out, content);     // should not be the original
   EXPECT_EQ(strcmp(out,content), 0);

   // verify detecting some bad parameters.
   AMediaFormat_setString(nullptr, "whatever", content);
   AMediaFormat_setString(fmt1, nullptr, content);

   EXPECT_FALSE(AMediaFormat_getString(nullptr, "whatever", &out));
   EXPECT_FALSE(AMediaFormat_getString(fmt1, nullptr, &out));

   AMediaFormat_delete(fmt1);
}