transcoding: post progress update to client
bug: 160277443
bug: 154733526
test: unit tests
Change-Id: I04cd198d5fb1e83b1d256e4968fb3685c16b7a55
diff --git a/media/libmediatranscoding/TranscoderWrapper.cpp b/media/libmediatranscoding/TranscoderWrapper.cpp
index aaa15c4..bd03671 100644
--- a/media/libmediatranscoding/TranscoderWrapper.cpp
+++ b/media/libmediatranscoding/TranscoderWrapper.cpp
@@ -103,6 +103,8 @@
return "Finish";
case Event::Error:
return "Error";
+ case Event::Progress:
+ return "Progress";
default:
break;
}
@@ -132,8 +134,10 @@
virtual void onProgressUpdate(const MediaTranscoder* transcoder __unused,
int32_t progress) override {
- ALOGV("%s: job {%lld, %d}, progress %d", __FUNCTION__, (long long)mClientId, mJobId,
- progress);
+ auto owner = mOwner.lock();
+ if (owner != nullptr) {
+ owner->onProgress(mClientId, mJobId, progress);
+ }
}
virtual void onCodecResourceLost(const MediaTranscoder* transcoder __unused,
@@ -261,6 +265,15 @@
});
}
+void TranscoderWrapper::onProgress(ClientIdType clientId, JobIdType jobId, int32_t progress) {
+ queueEvent(Event::Progress, clientId, jobId, [=] {
+ auto callback = mCallback.lock();
+ if (callback != nullptr) {
+ callback->onProgressUpdate(clientId, jobId, progress);
+ }
+ });
+}
+
TranscodingErrorCode TranscoderWrapper::setupTranscoder(
ClientIdType clientId, JobIdType jobId, const TranscodingRequestParcel& request,
const std::shared_ptr<ITranscodingClientCallback>& clientCb,