blob: ec304378c6c43e803c73fcaf2db2ea118c036ba2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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
|