update new sdk
This commit is contained in:
parent
f33907443a
commit
744c72c133
1643 changed files with 83006 additions and 28021 deletions
55
android/frameworks/av/services/oboeservice/AAudioServiceStreamMMAP.cpp
Normal file → Executable file
55
android/frameworks/av/services/oboeservice/AAudioServiceStreamMMAP.cpp
Normal file → Executable file
|
@ -70,14 +70,19 @@ aaudio_result_t AAudioServiceStreamMMAP::open(const aaudio::AAudioStreamRequest
|
|||
return result;
|
||||
}
|
||||
|
||||
result = mServiceEndpoint->registerStream(keep);
|
||||
sp<AAudioServiceEndpoint> endpoint = mServiceEndpointWeak.promote();
|
||||
if (endpoint == nullptr) {
|
||||
ALOGE("%s() has no endpoint", __func__);
|
||||
return AAUDIO_ERROR_INVALID_STATE;
|
||||
}
|
||||
|
||||
result = endpoint->registerStream(keep);
|
||||
if (result != AAUDIO_OK) {
|
||||
goto error;
|
||||
return result;
|
||||
}
|
||||
|
||||
setState(AAUDIO_STREAM_STATE_OPEN);
|
||||
|
||||
error:
|
||||
return AAUDIO_OK;
|
||||
}
|
||||
|
||||
|
@ -122,21 +127,37 @@ aaudio_result_t AAudioServiceStreamMMAP::stop() {
|
|||
|
||||
aaudio_result_t AAudioServiceStreamMMAP::startClient(const android::AudioClient& client,
|
||||
audio_port_handle_t *clientHandle) {
|
||||
sp<AAudioServiceEndpoint> endpoint = mServiceEndpointWeak.promote();
|
||||
if (endpoint == nullptr) {
|
||||
ALOGE("%s() has no endpoint", __func__);
|
||||
return AAUDIO_ERROR_INVALID_STATE;
|
||||
}
|
||||
// Start the client on behalf of the application. Generate a new porthandle.
|
||||
aaudio_result_t result = mServiceEndpoint->startClient(client, clientHandle);
|
||||
aaudio_result_t result = endpoint->startClient(client, clientHandle);
|
||||
return result;
|
||||
}
|
||||
|
||||
aaudio_result_t AAudioServiceStreamMMAP::stopClient(audio_port_handle_t clientHandle) {
|
||||
aaudio_result_t result = mServiceEndpoint->stopClient(clientHandle);
|
||||
sp<AAudioServiceEndpoint> endpoint = mServiceEndpointWeak.promote();
|
||||
if (endpoint == nullptr) {
|
||||
ALOGE("%s() has no endpoint", __func__);
|
||||
return AAUDIO_ERROR_INVALID_STATE;
|
||||
}
|
||||
aaudio_result_t result = endpoint->stopClient(clientHandle);
|
||||
return result;
|
||||
}
|
||||
|
||||
// Get free-running DSP or DMA hardware position from the HAL.
|
||||
aaudio_result_t AAudioServiceStreamMMAP::getFreeRunningPosition(int64_t *positionFrames,
|
||||
int64_t *timeNanos) {
|
||||
sp<AAudioServiceEndpointMMAP> serviceEndpointMMAP{
|
||||
static_cast<AAudioServiceEndpointMMAP *>(mServiceEndpoint.get())};
|
||||
sp<AAudioServiceEndpoint> endpoint = mServiceEndpointWeak.promote();
|
||||
if (endpoint == nullptr) {
|
||||
ALOGE("%s() has no endpoint", __func__);
|
||||
return AAUDIO_ERROR_INVALID_STATE;
|
||||
}
|
||||
sp<AAudioServiceEndpointMMAP> serviceEndpointMMAP =
|
||||
static_cast<AAudioServiceEndpointMMAP *>(endpoint.get());
|
||||
|
||||
aaudio_result_t result = serviceEndpointMMAP->getFreeRunningPosition(positionFrames, timeNanos);
|
||||
if (result == AAUDIO_OK) {
|
||||
Timestamp timestamp(*positionFrames, *timeNanos);
|
||||
|
@ -152,8 +173,15 @@ aaudio_result_t AAudioServiceStreamMMAP::getFreeRunningPosition(int64_t *positio
|
|||
// Get timestamp that was written by getFreeRunningPosition()
|
||||
aaudio_result_t AAudioServiceStreamMMAP::getHardwareTimestamp(int64_t *positionFrames,
|
||||
int64_t *timeNanos) {
|
||||
sp<AAudioServiceEndpointMMAP> serviceEndpointMMAP{
|
||||
static_cast<AAudioServiceEndpointMMAP *>(mServiceEndpoint.get())};
|
||||
|
||||
sp<AAudioServiceEndpoint> endpoint = mServiceEndpointWeak.promote();
|
||||
if (endpoint == nullptr) {
|
||||
ALOGE("%s() has no endpoint", __func__);
|
||||
return AAUDIO_ERROR_INVALID_STATE;
|
||||
}
|
||||
sp<AAudioServiceEndpointMMAP> serviceEndpointMMAP =
|
||||
static_cast<AAudioServiceEndpointMMAP *>(endpoint.get());
|
||||
|
||||
// TODO Get presentation timestamp from the HAL
|
||||
if (mAtomicTimestamp.isValid()) {
|
||||
Timestamp timestamp = mAtomicTimestamp.read();
|
||||
|
@ -171,7 +199,12 @@ aaudio_result_t AAudioServiceStreamMMAP::getHardwareTimestamp(int64_t *positionF
|
|||
aaudio_result_t AAudioServiceStreamMMAP::getAudioDataDescription(
|
||||
AudioEndpointParcelable &parcelable)
|
||||
{
|
||||
sp<AAudioServiceEndpointMMAP> serviceEndpointMMAP{
|
||||
static_cast<AAudioServiceEndpointMMAP *>(mServiceEndpoint.get())};
|
||||
sp<AAudioServiceEndpoint> endpoint = mServiceEndpointWeak.promote();
|
||||
if (endpoint == nullptr) {
|
||||
ALOGE("%s() has no endpoint", __func__);
|
||||
return AAUDIO_ERROR_INVALID_STATE;
|
||||
}
|
||||
sp<AAudioServiceEndpointMMAP> serviceEndpointMMAP =
|
||||
static_cast<AAudioServiceEndpointMMAP *>(endpoint.get());
|
||||
return serviceEndpointMMAP->getDownDataDescription(parcelable);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue