Loading media/ndk/NdkMediaFormat.cpp +96 −1 Original line number Diff line number Diff line Loading @@ -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(); Loading @@ -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); Loading @@ -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); Loading media/ndk/tests/NdkMediaFormat_test.cpp +45 −0 Original line number Diff line number Diff line Loading @@ -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); } Loading @@ -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); } Loading @@ -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); } Loading @@ -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); } Loading @@ -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); } Loading @@ -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); } Loading Loading
media/ndk/NdkMediaFormat.cpp +96 −1 Original line number Diff line number Diff line Loading @@ -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(); Loading @@ -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); Loading @@ -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); Loading
media/ndk/tests/NdkMediaFormat_test.cpp +45 −0 Original line number Diff line number Diff line Loading @@ -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); } Loading @@ -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); } Loading @@ -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); } Loading @@ -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); } Loading @@ -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); } Loading @@ -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); } Loading