diff options
author | Chong Zhang <chz@google.com> | 2014-09-30 13:12:22 -0700 |
---|---|---|
committer | Chong Zhang <chz@google.com> | 2014-10-02 15:15:44 -0700 |
commit | e47d44486f0a9f9b828b01d0fbaf84f5573f0aa2 (patch) | |
tree | 54b690557226ac4725e32f4ac2538aedda1da8b1 /media/libstagefright/MediaCodec.cpp | |
parent | d8b03abf1d003e2940a19f0071ea2892689dd10e (diff) | |
download | frameworks_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.cpp | 17 |
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(); } |