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

Commit 0526d432 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Tuner JNI: use linearblock for media event"

parents df244da7 d49681e2
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -652,7 +652,7 @@ public class Tuner implements AutoCloseable {
        if (filter != null) {
            filter.setMainType(mainType);
            filter.setSubtype(subType);
            filter.setCallback(cb);
            filter.setCallback(cb, executor);
            if (mHandler == null) {
                mHandler = createEventHandler();
            }
+10 −1
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import android.media.tv.tuner.TunerUtils;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.concurrent.Executor;

/**
 * Tuner data filter.
@@ -177,6 +178,7 @@ public class Filter implements AutoCloseable {

    private long mNativeContext;
    private FilterCallback mCallback;
    private Executor mExecutor;
    private final int mId;
    private int mMainType;
    private int mSubtype;
@@ -199,6 +201,12 @@ public class Filter implements AutoCloseable {
    private void onFilterStatus(int status) {
    }

    private void onFilterEvent(FilterEvent[] events) {
        if (mCallback != null && mExecutor != null) {
            mExecutor.execute(() -> mCallback.onFilterEvent(this, events));
        }
    }

    /** @hide */
    public void setMainType(@Type int mainType) {
        mMainType = mainType;
@@ -209,8 +217,9 @@ public class Filter implements AutoCloseable {
    }

    /** @hide */
    public void setCallback(FilterCallback cb) {
    public void setCallback(FilterCallback cb, Executor executor) {
        mCallback = cb;
        mExecutor = executor;
    }
    /** @hide */
    public FilterCallback getCallback() {
+6 −0
Original line number Diff line number Diff line
@@ -136,17 +136,23 @@ cc_library_shared {
    ],

    shared_libs: [
        "android.hardware.graphics.bufferqueue@2.0",
        "android.hardware.tv.tuner@1.0",
        "libandroid_runtime",
        "libcutils",
        "libfmq",
        "libhidlbase",
        "liblog",
        "libmedia",
        "libnativehelper",
        "libutils",
    ],
    defaults: [
        "libcodec2-impl-defaults",
    ],

    header_libs: [
        "libcodec2_internal",
        "libstagefright_foundation_headers",
    ],

+1 −38
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@

#include "android_media_MediaCodec.h"

#include "android_media_MediaCodecLinearBlock.h"
#include "android_media_MediaCrypto.h"
#include "android_media_MediaDescrambler.h"
#include "android_media_MediaMetricsJNI.h"
@@ -174,44 +175,6 @@ struct fields_t {
static fields_t gFields;
static const void *sRefBaseOwner;

struct JMediaCodecLinearBlock {
    std::shared_ptr<C2Buffer> mBuffer;
    std::shared_ptr<C2ReadView> mReadonlyMapping;

    std::shared_ptr<C2LinearBlock> mBlock;
    std::shared_ptr<C2WriteView> mReadWriteMapping;

    sp<IMemoryHeap> mHeap;
    sp<hardware::HidlMemory> mMemory;

    sp<MediaCodecBuffer> mLegacyBuffer;

    std::once_flag mCopyWarningFlag;

    std::shared_ptr<C2Buffer> toC2Buffer(size_t offset, size_t size) {
        if (mBuffer) {
            if (mBuffer->data().type() != C2BufferData::LINEAR) {
                return nullptr;
            }
            C2ConstLinearBlock block = mBuffer->data().linearBlocks().front();
            if (offset == 0 && size == block.capacity()) {
                return mBuffer;
            }
            return C2Buffer::CreateLinearBuffer(block.subBlock(offset, size));
        }
        if (mBlock) {
            return C2Buffer::CreateLinearBuffer(mBlock->share(offset, size, C2Fence{}));
        }
        return nullptr;
    }

    sp<hardware::HidlMemory> toHidlMemory() {
        if (mMemory) {
            return mMemory;
        }
        return nullptr;
    }
};

struct JMediaCodecGraphicBlock {
    std::shared_ptr<C2Buffer> mBuffer;
+3 −0
Original line number Diff line number Diff line
@@ -21,6 +21,9 @@

#include "jni.h"

#include <C2Buffer.h>
#include <binder/MemoryHeapBase.h>
#include <media/MediaCodecBuffer.h>
#include <media/MediaMetricsItem.h>
#include <media/hardware/CryptoAPI.h>
#include <media/stagefright/foundation/ABase.h>
Loading