mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 05:49:27 +00:00
media.bufferpool2: Support receiver side initated buffer transfer
Bug: 254050314 Change-Id: I4c1b49e3bb99b8dbdccc44e5e1562833a585d454
This commit is contained in:
@@ -35,6 +35,7 @@ package android.hardware.media.bufferpool2;
|
|||||||
@VintfStability
|
@VintfStability
|
||||||
interface IClientManager {
|
interface IClientManager {
|
||||||
android.hardware.media.bufferpool2.IClientManager.Registration registerSender(in android.hardware.media.bufferpool2.IAccessor bufferPool);
|
android.hardware.media.bufferpool2.IClientManager.Registration registerSender(in android.hardware.media.bufferpool2.IAccessor bufferPool);
|
||||||
|
android.hardware.media.bufferpool2.IClientManager.Registration registerPassiveSender(in android.hardware.media.bufferpool2.IAccessor bufferPool);
|
||||||
@VintfStability
|
@VintfStability
|
||||||
parcelable Registration {
|
parcelable Registration {
|
||||||
long connectionId;
|
long connectionId;
|
||||||
|
|||||||
@@ -40,7 +40,8 @@ interface IClientManager {
|
|||||||
/**
|
/**
|
||||||
* Sets up a buffer receiving communication node for the specified
|
* Sets up a buffer receiving communication node for the specified
|
||||||
* buffer pool. A manager must create a IConnection to the buffer
|
* buffer pool. A manager must create a IConnection to the buffer
|
||||||
* pool if it does not already have a connection.
|
* pool if it does not already have a connection. To transfer buffers
|
||||||
|
* using the interface, the sender must initiates transfer.
|
||||||
*
|
*
|
||||||
* @param bufferPool a buffer pool which is specified with the IAccessor.
|
* @param bufferPool a buffer pool which is specified with the IAccessor.
|
||||||
* The specified buffer pool is the owner of received buffers.
|
* The specified buffer pool is the owner of received buffers.
|
||||||
@@ -52,4 +53,21 @@ interface IClientManager {
|
|||||||
* ResultStatus::CRITICAL_ERROR - Other errors.
|
* ResultStatus::CRITICAL_ERROR - Other errors.
|
||||||
*/
|
*/
|
||||||
Registration registerSender(in IAccessor bufferPool);
|
Registration registerSender(in IAccessor bufferPool);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets up a buffer receiving communication node for the specified
|
||||||
|
* buffer pool. A manager must create a IConnection to the buffer
|
||||||
|
* pool if it does not already have a connection. To transfer buffers
|
||||||
|
* using the interface, the receiver must initiates transfer(on demand).
|
||||||
|
*
|
||||||
|
* @param bufferPool a buffer pool which is specified with the IAccessor.
|
||||||
|
* The specified buffer pool is the owner of received buffers.
|
||||||
|
* @return the Id of the communication node to the buffer pool.
|
||||||
|
* This id is used in FMQ to notify IAccessor that a buffer has been
|
||||||
|
* sent to that connection during transfers.
|
||||||
|
* @throws ServiceSpecificException with one of the following values:
|
||||||
|
* ResultStatus::NO_MEMORY - Memory allocation failure occurred.
|
||||||
|
* ResultStatus::CRITICAL_ERROR - Other errors.
|
||||||
|
*/
|
||||||
|
Registration registerPassiveSender(in IAccessor bufferPool);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -422,6 +422,14 @@ void ClientManager::Impl::cleanUp(bool clearCache) {
|
|||||||
return ::ndk::ScopedAStatus::ok();
|
return ::ndk::ScopedAStatus::ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
::ndk::ScopedAStatus ClientManager::registerPassiveSender(
|
||||||
|
const std::shared_ptr<IAccessor>& in_bufferPool, Registration* _aidl_return) {
|
||||||
|
// TODO
|
||||||
|
(void) in_bufferPool;
|
||||||
|
(void) _aidl_return;
|
||||||
|
return ::ndk::ScopedAStatus::fromServiceSpecificError(ResultStatus::NOT_FOUND);
|
||||||
|
}
|
||||||
|
|
||||||
// Methods for local use.
|
// Methods for local use.
|
||||||
std::shared_ptr<ClientManager> ClientManager::sInstance;
|
std::shared_ptr<ClientManager> ClientManager::sInstance;
|
||||||
std::mutex ClientManager::sInstanceLock;
|
std::mutex ClientManager::sInstanceLock;
|
||||||
|
|||||||
@@ -34,6 +34,11 @@ struct ClientManager : public BnClientManager {
|
|||||||
::aidl::android::hardware::media::bufferpool2::IClientManager::Registration* _aidl_return)
|
::aidl::android::hardware::media::bufferpool2::IClientManager::Registration* _aidl_return)
|
||||||
override;
|
override;
|
||||||
|
|
||||||
|
::ndk::ScopedAStatus registerPassiveSender(
|
||||||
|
const std::shared_ptr<IAccessor>& in_bufferPool,
|
||||||
|
::aidl::android::hardware::media::bufferpool2::IClientManager::Registration* _aidl_return)
|
||||||
|
override;
|
||||||
|
|
||||||
/** Gets an instance. */
|
/** Gets an instance. */
|
||||||
static std::shared_ptr<ClientManager> getInstance();
|
static std::shared_ptr<ClientManager> getInstance();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user