From c40c77ef0d5e7d2075abf12dd47ac6ad4b75e954 Mon Sep 17 00:00:00 2001 From: Sungtak Lee Date: Wed, 8 Aug 2018 17:24:34 -0700 Subject: [PATCH] Update android.hardware.media.bufferpool@2.0 HAL Add buffer invalidation message for bufferpool@2.0 Bug: 112203066 Change-Id: Ia1fca213c7e663f619e2061dd0055228aecbf15c --- media/bufferpool/2.0/IAccessor.hal | 10 +++++++--- media/bufferpool/2.0/types.hal | 16 ++++++++++++++++ 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/media/bufferpool/2.0/IAccessor.hal b/media/bufferpool/2.0/IAccessor.hal index 07ea99dead..bd7094594e 100644 --- a/media/bufferpool/2.0/IAccessor.hal +++ b/media/bufferpool/2.0/IAccessor.hal @@ -59,10 +59,14 @@ interface IAccessor { * to get shared buffers from the buffer pool. * @return connectionId Id of IConnection. The Id identifies * sender and receiver in FMQ messages during buffer transfer. - * @return mqDesc FMQ descriptor. The descriptor can be used to - * send/receive FMQ messages. + * @return toFmqDesc FMQ descriptor. The descriptor is used to + * post buffer status messages. + * @return fromFmqDesc FMQ descriptor. The descriptor is used to + * receive buffer invalidation messages from the buffer pool. */ connect() generates (ResultStatus status, IConnection connection, - int64_t connectionId, fmq_sync mqDesc); + int64_t connectionId, + fmq_sync toFmqDesc, + fmq_sync fromFmqDesc); }; diff --git a/media/bufferpool/2.0/types.hal b/media/bufferpool/2.0/types.hal index d5b393778e..7ce53b18bf 100644 --- a/media/bufferpool/2.0/types.hal +++ b/media/bufferpool/2.0/types.hal @@ -91,3 +91,19 @@ struct BufferStatusMessage { */ int64_t timestampUs; }; + +/* + * Buffer pool sends a buffer invalidation message to clients in order to + * ensure fast reclamation of the buffers. Clients must free the invalidated + * buffers as soon as possible upon receiving the message. + */ +struct BufferInvalidationMessage { + /** + * Buffers from fromBufferId to toBufferId must be invalidated. + * Both of fromBufferId and toBufferId are inclusive. + * If fromBufferId > toBufferID, wrap happens. In that case + * the wrap is based on UINT32_MAX. + */ + uint32_t fromBufferId; + uint32_t toBufferId; +};