MediaUtils: Use delayed / lazy library loading

Postpone loading libutilscallstack until needed
to save memory.

Test: atest library_tests
Test: adb shell 'showmap $(pgrep mediametrics)'
Bug: 227536784
Change-Id: I3d4c9e9b6d854b013185e18fc20d4bec320df14e
diff --git a/media/utils/TimerThread.cpp b/media/utils/TimerThread.cpp
index 3556d7d..6de6b13 100644
--- a/media/utils/TimerThread.cpp
+++ b/media/utils/TimerThread.cpp
@@ -21,8 +21,8 @@
 #include <unistd.h>
 #include <vector>
 
+#include <mediautils/MediaUtilsDelayed.h>
 #include <mediautils/TimerThread.h>
-#include <utils/CallStack.h>
 #include <utils/ThreadDefs.h>
 
 namespace android::mediautils {
@@ -73,13 +73,13 @@
     if (analysis.timeoutTid != -1) {
         timeoutStack = std::string("\ntimeout(")
                 .append(std::to_string(analysis.timeoutTid)).append(") callstack [\n")
-                .append(tidCallStackString(analysis.timeoutTid)).append("]");
+                .append(getCallStackStringForTid(analysis.timeoutTid)).append("]");
     }
     std::string blockedStack;
     if (analysis.HALBlockedTid != -1) {
         blockedStack = std::string("\nblocked(")
                 .append(std::to_string(analysis.HALBlockedTid)).append(")  callstack [\n")
-                .append(tidCallStackString(analysis.HALBlockedTid)).append("]");
+                .append(getCallStackStringForTid(analysis.HALBlockedTid)).append("]");
     }
 
     return std::string("now ")
@@ -213,13 +213,6 @@
     return requestsToString(timeoutRequests);
 }
 
-/* static */
-std::string TimerThread::tidCallStackString(pid_t tid) {
-    CallStack cs{};
-    cs.update(0 /* ignoreDepth */, tid);
-    return cs.toString().c_str();
-}
-
 std::string TimerThread::Request::toString() const {
     const auto scheduledString = formatTime(scheduled);
     const auto deadlineString = formatTime(deadline);