Add hostgraphics classes required for ImageReader
Bug: 117921091 Test: all tests should pass Change-Id: I5d60a1177d43eb8dec08403cf34936007b8a267f (cherry picked from commit c1409f44f82313902a690fb257ee271dc16385a0)
This commit is contained in:
@@ -1,8 +1,15 @@
|
||||
cc_library_host_static {
|
||||
name: "libhostgraphics",
|
||||
|
||||
cflags: [
|
||||
"-Wno-unused-parameter",
|
||||
],
|
||||
|
||||
srcs: [
|
||||
":libui_host_common",
|
||||
"Fence.cpp",
|
||||
"HostBufferQueue.cpp",
|
||||
"PublicFormat.cpp",
|
||||
],
|
||||
|
||||
include_dirs: [
|
||||
|
||||
23
libs/hostgraphics/Fence.cpp
Normal file
23
libs/hostgraphics/Fence.cpp
Normal file
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
* Copyright (C) 2019 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <ui/Fence.h>
|
||||
|
||||
namespace android {
|
||||
|
||||
const sp<Fence> Fence::NO_FENCE = sp<Fence>(new Fence);
|
||||
|
||||
} // namespace android
|
||||
69
libs/hostgraphics/HostBufferQueue.cpp
Normal file
69
libs/hostgraphics/HostBufferQueue.cpp
Normal file
@@ -0,0 +1,69 @@
|
||||
/*
|
||||
* Copyright (C) 2019 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <gui/BufferQueue.h>
|
||||
|
||||
namespace android {
|
||||
|
||||
class HostBufferQueue : public IGraphicBufferProducer, public IGraphicBufferConsumer {
|
||||
public:
|
||||
HostBufferQueue() : mWidth(0), mHeight(0) { }
|
||||
|
||||
virtual status_t setConsumerIsProtected(bool isProtected) { return OK; }
|
||||
|
||||
virtual status_t detachBuffer(int slot) { return OK; }
|
||||
|
||||
virtual status_t getReleasedBuffers(uint64_t* slotMask) { return OK; }
|
||||
|
||||
virtual status_t setDefaultBufferSize(uint32_t w, uint32_t h) {
|
||||
mWidth = w;
|
||||
mHeight = h;
|
||||
mBuffer = sp<GraphicBuffer>(new GraphicBuffer(mWidth, mHeight));
|
||||
return OK;
|
||||
}
|
||||
|
||||
virtual status_t setDefaultBufferFormat(PixelFormat defaultFormat) { return OK; }
|
||||
|
||||
virtual status_t setDefaultBufferDataSpace(android_dataspace defaultDataSpace) { return OK; }
|
||||
|
||||
virtual status_t discardFreeBuffers() { return OK; }
|
||||
|
||||
virtual status_t acquireBuffer(BufferItem* buffer, nsecs_t presentWhen,
|
||||
uint64_t maxFrameNumber = 0) {
|
||||
buffer->mGraphicBuffer = mBuffer;
|
||||
buffer->mSlot = 0;
|
||||
return OK;
|
||||
}
|
||||
|
||||
virtual status_t setMaxAcquiredBufferCount(int maxAcquiredBuffers) { return OK; }
|
||||
|
||||
virtual status_t setConsumerUsageBits(uint64_t usage) { return OK; }
|
||||
private:
|
||||
sp<GraphicBuffer> mBuffer;
|
||||
uint32_t mWidth;
|
||||
uint32_t mHeight;
|
||||
};
|
||||
|
||||
void BufferQueue::createBufferQueue(sp<IGraphicBufferProducer>* outProducer,
|
||||
sp<IGraphicBufferConsumer>* outConsumer) {
|
||||
|
||||
sp<HostBufferQueue> obj(new HostBufferQueue());
|
||||
|
||||
*outProducer = obj;
|
||||
*outConsumer = obj;
|
||||
}
|
||||
|
||||
} // namespace android
|
||||
33
libs/hostgraphics/PublicFormat.cpp
Normal file
33
libs/hostgraphics/PublicFormat.cpp
Normal file
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
* Copyright (C) 2019 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <ui/PublicFormat.h>
|
||||
|
||||
namespace android {
|
||||
|
||||
android_dataspace mapPublicFormatToHalDataspace(PublicFormat f) {
|
||||
return static_cast<android_dataspace>(0);
|
||||
}
|
||||
|
||||
int mapPublicFormatToHalFormat(PublicFormat f) {
|
||||
return static_cast<int>(f);
|
||||
}
|
||||
|
||||
PublicFormat mapHalFormatDataspaceToPublicFormat(int format, android_dataspace dataSpace) {
|
||||
return static_cast<PublicFormat>(format);
|
||||
}
|
||||
|
||||
} // namespace android
|
||||
65
libs/hostgraphics/gui/BufferItem.h
Normal file
65
libs/hostgraphics/gui/BufferItem.h
Normal file
@@ -0,0 +1,65 @@
|
||||
/*
|
||||
* Copyright (C) 2019 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef ANDROID_GUI_BUFFERITEM_H
|
||||
#define ANDROID_GUI_BUFFERITEM_H
|
||||
|
||||
#include <ui/Fence.h>
|
||||
#include <ui/Rect.h>
|
||||
|
||||
#include <system/graphics.h>
|
||||
|
||||
#include <utils/StrongPointer.h>
|
||||
|
||||
namespace android {
|
||||
|
||||
class Fence;
|
||||
class GraphicBuffer;
|
||||
|
||||
// The only thing we need here for layoutlib is mGraphicBuffer. The rest of the fields are added
|
||||
// just to satisfy the calls from the android_media_ImageReader.h
|
||||
|
||||
class BufferItem {
|
||||
public:
|
||||
enum { INVALID_BUFFER_SLOT = -1 };
|
||||
|
||||
BufferItem() : mGraphicBuffer(nullptr), mFence(Fence::NO_FENCE) {}
|
||||
~BufferItem() {}
|
||||
|
||||
sp<GraphicBuffer> mGraphicBuffer;
|
||||
|
||||
sp<Fence> mFence;
|
||||
|
||||
Rect mCrop;
|
||||
|
||||
uint32_t mTransform;
|
||||
|
||||
uint32_t mScalingMode;
|
||||
|
||||
int64_t mTimestamp;
|
||||
|
||||
android_dataspace mDataSpace;
|
||||
|
||||
uint64_t mFrameNumber;
|
||||
|
||||
int mSlot;
|
||||
|
||||
bool mTransformToDisplayInverse;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // ANDROID_GUI_BUFFERITEM_H
|
||||
75
libs/hostgraphics/gui/BufferItemConsumer.h
Normal file
75
libs/hostgraphics/gui/BufferItemConsumer.h
Normal file
@@ -0,0 +1,75 @@
|
||||
/*
|
||||
* Copyright (C) 2019 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef ANDROID_GUI_BUFFERITEMCONSUMER_H
|
||||
#define ANDROID_GUI_BUFFERITEMCONSUMER_H
|
||||
|
||||
#include <utils/RefBase.h>
|
||||
|
||||
#include <gui/ConsumerBase.h>
|
||||
#include <gui/IGraphicBufferConsumer.h>
|
||||
|
||||
namespace android {
|
||||
|
||||
class BufferItemConsumer : public ConsumerBase {
|
||||
public:
|
||||
BufferItemConsumer(
|
||||
const sp<IGraphicBufferConsumer>& consumer,
|
||||
uint64_t consumerUsage,
|
||||
int bufferCount,
|
||||
bool controlledByApp) : mConsumer(consumer) {
|
||||
}
|
||||
|
||||
status_t acquireBuffer(BufferItem *item, nsecs_t presentWhen, bool waitForFence = true) {
|
||||
return mConsumer->acquireBuffer(item, presentWhen, 0);
|
||||
}
|
||||
|
||||
status_t releaseBuffer(
|
||||
const BufferItem &item, const sp<Fence>& releaseFence = Fence::NO_FENCE) { return OK; }
|
||||
|
||||
void setName(const String8& name) { }
|
||||
|
||||
void setFrameAvailableListener(const wp<FrameAvailableListener>& listener) { }
|
||||
|
||||
status_t setDefaultBufferSize(uint32_t width, uint32_t height) {
|
||||
return mConsumer->setDefaultBufferSize(width, height);
|
||||
}
|
||||
|
||||
status_t setDefaultBufferFormat(PixelFormat defaultFormat) {
|
||||
return mConsumer->setDefaultBufferFormat(defaultFormat);
|
||||
}
|
||||
|
||||
status_t setDefaultBufferDataSpace(android_dataspace defaultDataSpace) {
|
||||
return mConsumer->setDefaultBufferDataSpace(defaultDataSpace);
|
||||
}
|
||||
|
||||
void abandon() { }
|
||||
|
||||
status_t detachBuffer(int slot) { return OK; }
|
||||
|
||||
status_t discardFreeBuffers() { return OK; }
|
||||
|
||||
void freeBufferLocked(int slotIndex) { }
|
||||
|
||||
status_t addReleaseFenceLocked(
|
||||
int slot, const sp<GraphicBuffer> graphicBuffer, const sp<Fence>& fence) { return OK; }
|
||||
private:
|
||||
sp<IGraphicBufferConsumer> mConsumer;
|
||||
};
|
||||
|
||||
} // namespace android
|
||||
|
||||
#endif // ANDROID_GUI_BUFFERITEMCONSUMER_H
|
||||
37
libs/hostgraphics/gui/BufferQueue.h
Normal file
37
libs/hostgraphics/gui/BufferQueue.h
Normal file
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
* Copyright (C) 2019 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef ANDROID_GUI_BUFFERQUEUE_H
|
||||
#define ANDROID_GUI_BUFFERQUEUE_H
|
||||
|
||||
#include <gui/BufferItem.h>
|
||||
#include <gui/IGraphicBufferConsumer.h>
|
||||
#include <gui/IGraphicBufferProducer.h>
|
||||
|
||||
namespace android {
|
||||
|
||||
class BufferQueue {
|
||||
public:
|
||||
enum { INVALID_BUFFER_SLOT = BufferItem::INVALID_BUFFER_SLOT };
|
||||
enum { NO_BUFFER_AVAILABLE = IGraphicBufferConsumer::NO_BUFFER_AVAILABLE };
|
||||
|
||||
static void createBufferQueue(sp<IGraphicBufferProducer>* outProducer,
|
||||
sp<IGraphicBufferConsumer>* outConsumer);
|
||||
};
|
||||
|
||||
} // namespace android
|
||||
|
||||
#endif // ANDROID_GUI_BUFFERQUEUE_H
|
||||
37
libs/hostgraphics/gui/ConsumerBase.h
Normal file
37
libs/hostgraphics/gui/ConsumerBase.h
Normal file
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
* Copyright (C) 2019 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef ANDROID_GUI_CONSUMERBASE_H
|
||||
#define ANDROID_GUI_CONSUMERBASE_H
|
||||
|
||||
#include <gui/BufferItem.h>
|
||||
|
||||
#include <utils/RefBase.h>
|
||||
|
||||
namespace android {
|
||||
|
||||
class ConsumerBase : public virtual RefBase {
|
||||
public:
|
||||
struct FrameAvailableListener : public virtual RefBase {
|
||||
// See IConsumerListener::onFrame{Available,Replaced}
|
||||
virtual void onFrameAvailable(const BufferItem& item) = 0;
|
||||
virtual void onFrameReplaced(const BufferItem& /* item */) {}
|
||||
};
|
||||
};
|
||||
|
||||
} // namespace android
|
||||
|
||||
#endif // ANDROID_GUI_CONSUMERBASE_H
|
||||
65
libs/hostgraphics/gui/IGraphicBufferConsumer.h
Normal file
65
libs/hostgraphics/gui/IGraphicBufferConsumer.h
Normal file
@@ -0,0 +1,65 @@
|
||||
/*
|
||||
* Copyright (C) 2019 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <utils/RefBase.h>
|
||||
|
||||
#include <ui/PixelFormat.h>
|
||||
|
||||
#include <utils/Errors.h>
|
||||
|
||||
namespace android {
|
||||
|
||||
class BufferItem;
|
||||
class Fence;
|
||||
class GraphicBuffer;
|
||||
|
||||
class IGraphicBufferConsumer : virtual public RefBase {
|
||||
public:
|
||||
enum {
|
||||
// Returned by releaseBuffer, after which the consumer must free any references to the
|
||||
// just-released buffer that it might have.
|
||||
STALE_BUFFER_SLOT = 1,
|
||||
// Returned by dequeueBuffer if there are no pending buffers available.
|
||||
NO_BUFFER_AVAILABLE,
|
||||
// Returned by dequeueBuffer if it's too early for the buffer to be acquired.
|
||||
PRESENT_LATER,
|
||||
};
|
||||
|
||||
virtual status_t acquireBuffer(BufferItem* buffer, nsecs_t presentWhen,
|
||||
uint64_t maxFrameNumber = 0) = 0;
|
||||
|
||||
virtual status_t detachBuffer(int slot) = 0;
|
||||
|
||||
virtual status_t getReleasedBuffers(uint64_t* slotMask) = 0;
|
||||
|
||||
virtual status_t setDefaultBufferSize(uint32_t w, uint32_t h) = 0;
|
||||
|
||||
virtual status_t setMaxAcquiredBufferCount(int maxAcquiredBuffers) = 0;
|
||||
|
||||
virtual status_t setDefaultBufferFormat(PixelFormat defaultFormat) = 0;
|
||||
|
||||
virtual status_t setDefaultBufferDataSpace(android_dataspace defaultDataSpace) = 0;
|
||||
|
||||
virtual status_t setConsumerUsageBits(uint64_t usage) = 0;
|
||||
|
||||
virtual status_t setConsumerIsProtected(bool isProtected) = 0;
|
||||
|
||||
virtual status_t discardFreeBuffers() = 0;
|
||||
};
|
||||
|
||||
} // namespace android
|
||||
@@ -19,6 +19,8 @@
|
||||
|
||||
#include <utils/RefBase.h>
|
||||
|
||||
#include <ui/GraphicBuffer.h>
|
||||
|
||||
namespace android {
|
||||
|
||||
class IGraphicBufferProducer : virtual public RefBase {
|
||||
|
||||
72
libs/hostgraphics/ui/Fence.h
Normal file
72
libs/hostgraphics/ui/Fence.h
Normal file
@@ -0,0 +1,72 @@
|
||||
/*
|
||||
* Copyright (C) 2019 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef ANDROID_FENCE_H
|
||||
#define ANDROID_FENCE_H
|
||||
|
||||
#include <utils/String8.h>
|
||||
#include <utils/RefBase.h>
|
||||
|
||||
typedef int64_t nsecs_t;
|
||||
|
||||
namespace android {
|
||||
|
||||
class Fence : public LightRefBase<Fence> {
|
||||
public:
|
||||
Fence() { }
|
||||
Fence(int) { }
|
||||
static const sp<Fence> NO_FENCE;
|
||||
static constexpr nsecs_t SIGNAL_TIME_PENDING = INT64_MAX;
|
||||
static constexpr nsecs_t SIGNAL_TIME_INVALID = -1;
|
||||
static sp<Fence> merge(const char* name, const sp<Fence>& f1, const sp<Fence>& f2) {
|
||||
return NO_FENCE;
|
||||
}
|
||||
|
||||
static sp<Fence> merge(const String8& name, const sp<Fence>& f1, const sp<Fence>& f2) {
|
||||
return NO_FENCE;
|
||||
}
|
||||
|
||||
enum class Status {
|
||||
Invalid, // Fence is invalid
|
||||
Unsignaled, // Fence is valid but has not yet signaled
|
||||
Signaled, // Fence is valid and has signaled
|
||||
};
|
||||
|
||||
status_t wait(int timeout) { return OK; }
|
||||
|
||||
status_t waitForever(const char* logname) { return OK; }
|
||||
|
||||
int dup() const { return 0; }
|
||||
|
||||
inline Status getStatus() {
|
||||
// The sync_wait call underlying wait() has been measured to be
|
||||
// significantly faster than the sync_fence_info call underlying
|
||||
// getSignalTime(), which might otherwise appear to be the more obvious
|
||||
// way to check whether a fence has signaled.
|
||||
switch (wait(0)) {
|
||||
case NO_ERROR:
|
||||
return Status::Signaled;
|
||||
case -ETIME:
|
||||
return Status::Unsignaled;
|
||||
default:
|
||||
return Status::Invalid;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace android
|
||||
|
||||
#endif // ANDROID_FENCE_H
|
||||
64
libs/hostgraphics/ui/GraphicBuffer.h
Normal file
64
libs/hostgraphics/ui/GraphicBuffer.h
Normal file
@@ -0,0 +1,64 @@
|
||||
/*
|
||||
* Copyright (C) 2019 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef ANDROID_GRAPHIC_BUFFER_H
|
||||
#define ANDROID_GRAPHIC_BUFFER_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include <ui/PixelFormat.h>
|
||||
#include <ui/Rect.h>
|
||||
|
||||
#include <utils/RefBase.h>
|
||||
|
||||
namespace android {
|
||||
|
||||
class GraphicBuffer : virtual public RefBase {
|
||||
public:
|
||||
GraphicBuffer(uint32_t w, uint32_t h):width(w),height(h) {
|
||||
data.resize(w*h);
|
||||
}
|
||||
uint32_t getWidth() const { return static_cast<uint32_t>(width); }
|
||||
uint32_t getHeight() const { return static_cast<uint32_t>(height); }
|
||||
uint32_t getStride() const { return static_cast<uint32_t>(width); }
|
||||
uint64_t getUsage() const { return 0; }
|
||||
PixelFormat getPixelFormat() const { return PIXEL_FORMAT_RGBA_8888; }
|
||||
//uint32_t getLayerCount() const { return static_cast<uint32_t>(layerCount); }
|
||||
Rect getBounds() const { return Rect(width, height); }
|
||||
|
||||
status_t lockAsyncYCbCr(uint32_t inUsage, const Rect& rect,
|
||||
android_ycbcr *ycbcr, int fenceFd) { return OK; }
|
||||
|
||||
status_t lockAsync(uint32_t inUsage, const Rect& rect, void** vaddr, int fenceFd,
|
||||
int32_t* outBytesPerPixel = nullptr, int32_t* outBytesPerStride = nullptr) {
|
||||
*vaddr = data.data();
|
||||
return OK;
|
||||
}
|
||||
|
||||
status_t unlockAsync(int *fenceFd) { return OK; }
|
||||
|
||||
private:
|
||||
uint32_t width;
|
||||
uint32_t height;
|
||||
std::vector<uint32_t> data;
|
||||
};
|
||||
|
||||
}; // namespace android
|
||||
|
||||
#endif // ANDROID_GRAPHIC_BUFFER_H
|
||||
Reference in New Issue
Block a user