Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 98319e92 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge changes I97fd41f8,Iab3c970b

* changes:
  audio: Generalize stream implementations
  audio: Plumb IStreamOutEventCallback to the stream
parents e6c4ebb0 f429c03d
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -69,6 +69,7 @@ cc_library_static {
        "Module.cpp",
        "Module.cpp",
        "SoundDose.cpp",
        "SoundDose.cpp",
        "Stream.cpp",
        "Stream.cpp",
        "StreamStub.cpp",
        "Telephony.cpp",
        "Telephony.cpp",
    ],
    ],
    generated_sources: [
    generated_sources: [
+15 −10
Original line number Original line Diff line number Diff line
@@ -28,6 +28,7 @@
#include "core-impl/Bluetooth.h"
#include "core-impl/Bluetooth.h"
#include "core-impl/Module.h"
#include "core-impl/Module.h"
#include "core-impl/SoundDose.h"
#include "core-impl/SoundDose.h"
#include "core-impl/StreamStub.h"
#include "core-impl/Telephony.h"
#include "core-impl/Telephony.h"
#include "core-impl/utils.h"
#include "core-impl/utils.h"


@@ -102,9 +103,10 @@ void Module::cleanUpPatch(int32_t patchId) {
    erase_all_values(mPatches, std::set<int32_t>{patchId});
    erase_all_values(mPatches, std::set<int32_t>{patchId});
}
}


ndk::ScopedAStatus Module::createStreamContext(int32_t in_portConfigId, int64_t in_bufferSizeFrames,
ndk::ScopedAStatus Module::createStreamContext(
        int32_t in_portConfigId, int64_t in_bufferSizeFrames,
        std::shared_ptr<IStreamCallback> asyncCallback,
        std::shared_ptr<IStreamCallback> asyncCallback,
                                               StreamContext* out_context) {
        std::shared_ptr<IStreamOutEventCallback> outEventCallback, StreamContext* out_context) {
    if (in_bufferSizeFrames <= 0) {
    if (in_bufferSizeFrames <= 0) {
        LOG(ERROR) << __func__ << ": non-positive buffer size " << in_bufferSizeFrames;
        LOG(ERROR) << __func__ << ": non-positive buffer size " << in_bufferSizeFrames;
        return ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_ARGUMENT);
        return ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_ARGUMENT);
@@ -147,7 +149,7 @@ ndk::ScopedAStatus Module::createStreamContext(int32_t in_portConfigId, int64_t
                std::make_unique<StreamContext::ReplyMQ>(1, true /*configureEventFlagWord*/),
                std::make_unique<StreamContext::ReplyMQ>(1, true /*configureEventFlagWord*/),
                portConfigIt->format.value(), portConfigIt->channelMask.value(),
                portConfigIt->format.value(), portConfigIt->channelMask.value(),
                std::make_unique<StreamContext::DataMQ>(frameSize * in_bufferSizeFrames),
                std::make_unique<StreamContext::DataMQ>(frameSize * in_bufferSizeFrames),
                asyncCallback, params);
                asyncCallback, outEventCallback, params);
        if (temp.isValid()) {
        if (temp.isValid()) {
            *out_context = std::move(temp);
            *out_context = std::move(temp);
        } else {
        } else {
@@ -545,13 +547,14 @@ ndk::ScopedAStatus Module::openInputStream(const OpenInputStreamArguments& in_ar
    }
    }
    StreamContext context;
    StreamContext context;
    if (auto status = createStreamContext(in_args.portConfigId, in_args.bufferSizeFrames, nullptr,
    if (auto status = createStreamContext(in_args.portConfigId, in_args.bufferSizeFrames, nullptr,
                                          &context);
                                          nullptr, &context);
        !status.isOk()) {
        !status.isOk()) {
        return status;
        return status;
    }
    }
    context.fillDescriptor(&_aidl_return->desc);
    context.fillDescriptor(&_aidl_return->desc);
    std::shared_ptr<StreamIn> stream;
    std::shared_ptr<StreamIn> stream;
    if (auto status = StreamIn::createInstance(in_args.sinkMetadata, std::move(context),
    // TODO: Add a mapping from module instance names to a corresponding 'createInstance'.
    if (auto status = StreamInStub::createInstance(in_args.sinkMetadata, std::move(context),
                                                   mConfig->microphones, &stream);
                                                   mConfig->microphones, &stream);
        !status.isOk()) {
        !status.isOk()) {
        return status;
        return status;
@@ -598,13 +601,15 @@ ndk::ScopedAStatus Module::openOutputStream(const OpenOutputStreamArguments& in_
    }
    }
    StreamContext context;
    StreamContext context;
    if (auto status = createStreamContext(in_args.portConfigId, in_args.bufferSizeFrames,
    if (auto status = createStreamContext(in_args.portConfigId, in_args.bufferSizeFrames,
                                          isNonBlocking ? in_args.callback : nullptr, &context);
                                          isNonBlocking ? in_args.callback : nullptr,
                                          in_args.eventCallback, &context);
        !status.isOk()) {
        !status.isOk()) {
        return status;
        return status;
    }
    }
    context.fillDescriptor(&_aidl_return->desc);
    context.fillDescriptor(&_aidl_return->desc);
    std::shared_ptr<StreamOut> stream;
    std::shared_ptr<StreamOut> stream;
    if (auto status = StreamOut::createInstance(in_args.sourceMetadata, std::move(context),
    // TODO: Add a mapping from module instance names to a corresponding 'createInstance'.
    if (auto status = StreamOutStub::createInstance(in_args.sourceMetadata, std::move(context),
                                                    in_args.offloadInfo, &stream);
                                                    in_args.offloadInfo, &stream);
        !status.isOk()) {
        !status.isOk()) {
        return status;
        return status;
Loading