summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/MediaCodec.cpp
diff options
context:
space:
mode:
authorChong Zhang <chz@google.com>2014-09-30 13:12:22 -0700
committerChong Zhang <chz@google.com>2014-10-02 15:15:44 -0700
commite47d44486f0a9f9b828b01d0fbaf84f5573f0aa2 (patch)
tree54b690557226ac4725e32f4ac2538aedda1da8b1 /media/libstagefright/MediaCodec.cpp
parentd8b03abf1d003e2940a19f0071ea2892689dd10e (diff)
downloadframeworks_av-e47d44486f0a9f9b828b01d0fbaf84f5573f0aa2.zip
frameworks_av-e47d44486f0a9f9b828b01d0fbaf84f5573f0aa2.tar.gz
frameworks_av-e47d44486f0a9f9b828b01d0fbaf84f5573f0aa2.tar.bz2
send available codec buffer count with codec notification
Bug: 14679336 Change-Id: Id927c96a9a14dd6ecd72540f0037d5841aa32154
Diffstat (limited to 'media/libstagefright/MediaCodec.cpp')
-rw-r--r--media/libstagefright/MediaCodec.cpp17
1 files changed, 15 insertions, 2 deletions
diff --git a/media/libstagefright/MediaCodec.cpp b/media/libstagefright/MediaCodec.cpp
index b56819c..b568063 100644
--- a/media/libstagefright/MediaCodec.cpp
+++ b/media/libstagefright/MediaCodec.cpp
@@ -2141,11 +2141,24 @@ void MediaCodec::postActivityNotificationIfPossible() {
return;
}
- if ((mFlags & (kFlagStickyError
+ bool isErrorOrOutputChanged =
+ (mFlags & (kFlagStickyError
| kFlagOutputBuffersChanged
- | kFlagOutputFormatChanged))
+ | kFlagOutputFormatChanged));
+
+ if (isErrorOrOutputChanged
|| !mAvailPortBuffers[kPortIndexInput].empty()
|| !mAvailPortBuffers[kPortIndexOutput].empty()) {
+ mActivityNotify->setInt32("input-buffers",
+ mAvailPortBuffers[kPortIndexInput].size());
+
+ if (isErrorOrOutputChanged) {
+ // we want consumer to dequeue as many times as it can
+ mActivityNotify->setInt32("output-buffers", INT32_MAX);
+ } else {
+ mActivityNotify->setInt32("output-buffers",
+ mAvailPortBuffers[kPortIndexOutput].size());
+ }
mActivityNotify->post();
mActivityNotify.clear();
}