114 lines
2.9 KiB
C++
114 lines
2.9 KiB
C++
/*
|
||
// Copyright (c) 2014 Intel Corporation
|
||
//
|
||
// 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 DATABUFFER_H__
|
||
#define DATABUFFER_H__
|
||
|
||
#include <hardware/hwcomposer.h>
|
||
|
||
namespace android {
|
||
namespace intel {
|
||
|
||
typedef struct crop {
|
||
// align with android, using 'int' here
|
||
int x;
|
||
int y;
|
||
int w;
|
||
int h;
|
||
} crop_t;
|
||
|
||
typedef struct stride {
|
||
union {
|
||
struct {
|
||
uint32_t stride;
|
||
} rgb;
|
||
struct {
|
||
uint32_t yStride;
|
||
uint32_t uvStride;
|
||
} yuv;
|
||
};
|
||
}stride_t;
|
||
|
||
class DataBuffer {
|
||
public:
|
||
enum {
|
||
FORMAT_INVALID = 0xffffffff,
|
||
};
|
||
public:
|
||
DataBuffer(buffer_handle_t handle)
|
||
{
|
||
initBuffer(handle);
|
||
}
|
||
virtual ~DataBuffer() {}
|
||
|
||
public:
|
||
virtual void resetBuffer(buffer_handle_t handle) {
|
||
// nothing to reset, just do initialization
|
||
initBuffer(handle);
|
||
}
|
||
|
||
buffer_handle_t getHandle() const { return mHandle; }
|
||
|
||
void setStride(stride_t& stride) { mStride = stride; }
|
||
stride_t& getStride() { return mStride; }
|
||
|
||
void setWidth(uint32_t width) { mWidth = width; }
|
||
uint32_t getWidth() const { return mWidth; }
|
||
|
||
void setHeight(uint32_t height) { mHeight = height; }
|
||
uint32_t getHeight() const { return mHeight; }
|
||
|
||
void setCrop(int x, int y, int w, int h) {
|
||
mCrop.x = x; mCrop.y = y; mCrop.w = w; mCrop.h = h; }
|
||
crop_t& getCrop() { return mCrop; }
|
||
|
||
void setFormat(uint32_t format) { mFormat = format; }
|
||
uint32_t getFormat() const { return mFormat; }
|
||
|
||
uint64_t getKey() const { return mKey; }
|
||
|
||
void setIsCompression(bool isCompressed) { mIsCompression = isCompressed; }
|
||
bool isCompression() { return mIsCompression; }
|
||
|
||
private:
|
||
void initBuffer(buffer_handle_t handle) {
|
||
mHandle = handle;
|
||
mFormat = 0;
|
||
mWidth = 0;
|
||
mHeight = 0;
|
||
mKey = (uint64_t)handle;
|
||
memset(&mStride, 0, sizeof(stride_t));
|
||
memset(&mCrop, 0, sizeof(crop_t));
|
||
}
|
||
protected:
|
||
buffer_handle_t mHandle;
|
||
stride_t mStride;
|
||
crop_t mCrop;
|
||
uint32_t mFormat;
|
||
uint32_t mWidth;
|
||
uint32_t mHeight;
|
||
uint64_t mKey;
|
||
bool mIsCompression;
|
||
};
|
||
|
||
static inline uint32_t align_to(uint32_t arg, uint32_t align)
|
||
{
|
||
return ((arg + (align - 1)) & (~(align - 1)));
|
||
}
|
||
|
||
} // namespace intel
|
||
} // namespace android
|
||
|
||
#endif /* DATABUFFER_H__ */
|