Loading include/ndk/NdkMediaFormat.h +4 −2 Original line number Diff line number Diff line Loading @@ -40,7 +40,8 @@ AMediaFormat *AMediaFormat_new(); int AMediaFormat_delete(AMediaFormat*); /** * Debug string. Caller must free. * Human readable representation of the format. The returned string is owned by the format, * and remains valid until the next call to toString, or until the format is deleted. */ const char* AMediaFormat_toString(AMediaFormat*); Loading @@ -50,7 +51,8 @@ bool AMediaFormat_getFloat(AMediaFormat*, const char *name, float *out); bool AMediaFormat_getDouble(AMediaFormat*, const char *name, double *out); bool AMediaFormat_getSize(AMediaFormat*, const char *name, size_t *out); /** * Caller must free the returned string * The returned string is owned by the format, and remains valid until the next call to getString, * or until the format is deleted. */ bool AMediaFormat_getString(AMediaFormat*, const char *name, const char **out); Loading media/ndk/NdkMediaFormat.cpp +15 −2 Original line number Diff line number Diff line Loading @@ -34,6 +34,8 @@ using namespace android; struct AMediaFormat { sp<AMessage> mFormat; String8 mDebug; KeyedVector<String8, String8> mStringCache; }; extern "C" { Loading Loading @@ -135,7 +137,8 @@ const char* AMediaFormat_toString(AMediaFormat *mData) { } } ret.append("}"); return strdup(ret.string()); mData->mDebug = ret; return mData->mDebug.string(); } bool AMediaFormat_getInt32(AMediaFormat* mData, const char *name, int32_t *out) { Loading @@ -159,9 +162,19 @@ bool AMediaFormat_getSize(AMediaFormat* mData, const char *name, size_t *out) { } bool AMediaFormat_getString(AMediaFormat* mData, const char *name, const char **out) { for (size_t i = 0; i < mData->mStringCache.size(); i++) { if (strcmp(mData->mStringCache.keyAt(i).string(), name) == 0) { mData->mStringCache.removeItemsAt(i, 1); break; } } AString tmp; if (mData->mFormat->findString(name, &tmp)) { *out = strdup(tmp.c_str()); String8 ret(tmp.c_str()); mData->mStringCache.add(String8(name), ret); *out = ret.string(); return true; } return false; Loading Loading
include/ndk/NdkMediaFormat.h +4 −2 Original line number Diff line number Diff line Loading @@ -40,7 +40,8 @@ AMediaFormat *AMediaFormat_new(); int AMediaFormat_delete(AMediaFormat*); /** * Debug string. Caller must free. * Human readable representation of the format. The returned string is owned by the format, * and remains valid until the next call to toString, or until the format is deleted. */ const char* AMediaFormat_toString(AMediaFormat*); Loading @@ -50,7 +51,8 @@ bool AMediaFormat_getFloat(AMediaFormat*, const char *name, float *out); bool AMediaFormat_getDouble(AMediaFormat*, const char *name, double *out); bool AMediaFormat_getSize(AMediaFormat*, const char *name, size_t *out); /** * Caller must free the returned string * The returned string is owned by the format, and remains valid until the next call to getString, * or until the format is deleted. */ bool AMediaFormat_getString(AMediaFormat*, const char *name, const char **out); Loading
media/ndk/NdkMediaFormat.cpp +15 −2 Original line number Diff line number Diff line Loading @@ -34,6 +34,8 @@ using namespace android; struct AMediaFormat { sp<AMessage> mFormat; String8 mDebug; KeyedVector<String8, String8> mStringCache; }; extern "C" { Loading Loading @@ -135,7 +137,8 @@ const char* AMediaFormat_toString(AMediaFormat *mData) { } } ret.append("}"); return strdup(ret.string()); mData->mDebug = ret; return mData->mDebug.string(); } bool AMediaFormat_getInt32(AMediaFormat* mData, const char *name, int32_t *out) { Loading @@ -159,9 +162,19 @@ bool AMediaFormat_getSize(AMediaFormat* mData, const char *name, size_t *out) { } bool AMediaFormat_getString(AMediaFormat* mData, const char *name, const char **out) { for (size_t i = 0; i < mData->mStringCache.size(); i++) { if (strcmp(mData->mStringCache.keyAt(i).string(), name) == 0) { mData->mStringCache.removeItemsAt(i, 1); break; } } AString tmp; if (mData->mFormat->findString(name, &tmp)) { *out = strdup(tmp.c_str()); String8 ret(tmp.c_str()); mData->mStringCache.add(String8(name), ret); *out = ret.string(); return true; } return false; Loading