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

Commit 9f4c0a33 authored by Pawin Vongmasa's avatar Pawin Vongmasa
Browse files

Add asInputSink() to Component

Test: make cts -j123 && cts-tradefed run cts-dev -m \
CtsMediaTestCases --compatibility:module-arg \
CtsMediaTestCases:include-annotation:\
android.platform.test.annotations.RequiresDevice

Bug: 126296132
Change-Id: I43b933250a021d99ab2aced74a8ed7063337d395
parent cc8e8e1d
Loading
Loading
Loading
Loading
+12 −12
Original line number Diff line number Diff line
@@ -22,7 +22,6 @@
#include <codec2/hidl/1.0/ComponentStore.h>
#include <codec2/hidl/1.0/InputBufferManager.h>

#include <android/hardware/media/c2/1.0/IInputSink.h>
#include <hidl/HidlBinderSupport.h>
#include <utils/Timers.h>

@@ -298,19 +297,12 @@ Return<Status> Component::setOutputSurface(
Return<void> Component::connectToInputSurface(
        const sp<IInputSurface>& inputSurface,
        connectToInputSurface_cb _hidl_cb) {
    sp<Sink> sink;
    {
        std::lock_guard<std::mutex> lock(mSinkMutex);
        if (!mSink) {
            mSink = new Sink(shared_from_this());
        }
        sink = mSink;
    }
    Status status;
    sp<IInputSurfaceConnection> connection;
    auto transStatus = inputSurface->connect(sink,
            [&status, &connection](Status s,
                                   const sp<IInputSurfaceConnection>& c) {
    auto transStatus = inputSurface->connect(
            asInputSink(),
            [&status, &connection](
                    Status s, const sp<IInputSurfaceConnection>& c) {
                status = s;
                connection = c;
            }
@@ -454,6 +446,14 @@ Return<sp<IComponentInterface>> Component::getInterface() {
    return sp<IComponentInterface>(mInterface);
}

Return<sp<IInputSink>> Component::asInputSink() {
    std::lock_guard<std::mutex> lock(mSinkMutex);
    if (!mSink) {
        mSink = new Sink(shared_from_this());
    }
    return {mSink};
}

std::shared_ptr<C2Component> Component::findLocalComponent(
        const sp<IInputSink>& sink) {
    return Component::Sink::findLocalComponent(sink);
+2 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@
#include <android/hardware/media/c2/1.0/IComponentInterface.h>
#include <android/hardware/media/c2/1.0/IComponentListener.h>
#include <android/hardware/media/c2/1.0/IComponentStore.h>
#include <android/hardware/media/c2/1.0/IInputSink.h>
#include <hidl/Status.h>
#include <hwbinder/IBinder.h>

@@ -94,6 +95,7 @@ struct Component : public IComponent,
    virtual Return<Status> reset() override;
    virtual Return<Status> release() override;
    virtual Return<sp<IComponentInterface>> getInterface() override;
    virtual Return<sp<IInputSink>> asInputSink() override;

    // Returns a C2Component associated to the given sink if the sink is indeed
    // a local component. Returns nullptr otherwise.