14344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim/* 24344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim * Copyright (C) 2016 The Android Open Source Project 34344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim * 44344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim * Licensed under the Apache License, Version 2.0 (the "License"); 54344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim * you may not use this file except in compliance with the License. 64344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim * You may obtain a copy of the License at 74344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim * 84344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim * http://www.apache.org/licenses/LICENSE-2.0 94344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim * 104344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim * Unless required by applicable law or agreed to in writing, software 114344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim * distributed under the License is distributed on an "AS IS" BASIS, 124344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim * See the License for the specific language governing permissions and 144344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim * limitations under the License. 154344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim */ 164344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim 174344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim#ifndef ANDROID_C2BUFFER_H_ 184344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim#define ANDROID_C2BUFFER_H_ 194344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim 204344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim#include <cutils/native_handle.h> 214344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim#include <hardware/gralloc.h> 224344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim 234344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim/* Use android native handle for C2Handle */ 244344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kimtypedef ::native_handle_t C2Handle; 254344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim 264344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kimnamespace android { 274344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim 284344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim/** 294344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim * Android platform buffer/memory usage bits. 304344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim */ 314344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kimstruct C2AndroidMemoryUsage : public C2MemoryUsage { 32529c781ab507a1b6edc4460491e86cdfe29fb012Lajos Molnar inline C2AndroidMemoryUsage(const C2MemoryUsage &usage) : C2MemoryUsage(usage) { } 33529c781ab507a1b6edc4460491e86cdfe29fb012Lajos Molnar 344344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim// public: 354344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim /** 364344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim * Reuse gralloc flags where possible, as Codec 2.0 API only uses bits 0 and 1. 374344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim */ 38c406604d66cd8aa7ead7fdb7647d90ccae0a1a29Lajos Molnar enum consumer_t : uint64_t { 394344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim RENDERSCRIPT_READ = GRALLOC_USAGE_RENDERSCRIPT, 404344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim HW_TEXTURE_READ = GRALLOC_USAGE_HW_TEXTURE, 414344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim HW_COMPOSER_READ = GRALLOC_USAGE_HW_COMPOSER, 42c406604d66cd8aa7ead7fdb7647d90ccae0a1a29Lajos Molnar // gralloc does not define a video decoder read usage flag, so use encoder for 43c406604d66cd8aa7ead7fdb7647d90ccae0a1a29Lajos Molnar // now 444344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim HW_CODEC_READ = GRALLOC_USAGE_HW_VIDEO_ENCODER, 454344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim READ_PROTECTED = GRALLOC_USAGE_PROTECTED, 464344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim }; 474344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim 48c406604d66cd8aa7ead7fdb7647d90ccae0a1a29Lajos Molnar enum producer_t : uint64_t { 494344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim RENDERSCRIPT_WRITE = GRALLOC_USAGE_RENDERSCRIPT, 504344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim HW_TEXTURE_WRITE = GRALLOC_USAGE_HW_RENDER, 514344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim HW_COMPOSER_WRITE = GRALLOC_USAGE_HW_COMPOSER | GRALLOC_USAGE_HW_RENDER, 524344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim HW_CODEC_WRITE = GRALLOC_USAGE_HW_VIDEO_ENCODER, 53c406604d66cd8aa7ead7fdb7647d90ccae0a1a29Lajos Molnar // gralloc does not define a write protected usage flag, so use read protected 54c406604d66cd8aa7ead7fdb7647d90ccae0a1a29Lajos Molnar // now 554344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim WRITE_PROTECTED = GRALLOC_USAGE_PROTECTED, 564344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim }; 574344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim 584344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim /** 594344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim * Convert from gralloc usage. 604344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim */ 614344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim static C2MemoryUsage FromGrallocUsage(uint64_t usage); 624344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim 634344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim /** 644344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim * Convert to gralloc usage. 654344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim */ 664344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim uint64_t asGrallocUsage() const; 674344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim}; 684344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim 694344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim} // namespace android 704344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim 714344f091aebaf3aee3ff062a95a05273bd2b1c57Wonsik Kim#endif // ANDROID_C2BUFFER_H_ 72