IntelMetadataBuffer.h revision 82b428e49a70ddc051a36d2b3a25d90db79770dc
182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON/* 282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON* Copyright (c) 2009-2011 Intel Corporation. All rights reserved. 382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON* 482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON* Licensed under the Apache License, Version 2.0 (the "License"); 582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON* you may not use this file except in compliance with the License. 682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON* You may obtain a copy of the License at 782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON* 882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON* http://www.apache.org/licenses/LICENSE-2.0 982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON* 1082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON* Unless required by applicable law or agreed to in writing, software 1182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON* distributed under the License is distributed on an "AS IS" BASIS, 1282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON* See the License for the specific language governing permissions and 1482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON* limitations under the License. 1582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON*/ 1682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 1782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#ifndef _INTEL_METADATA_BUFFER_H_ 1882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#define _INTEL_METADATA_BUFFER_H_ 1982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 2082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#include <stdint.h> 2182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 2282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON//#define INTEL_VIDEO_XPROC_SHARING 2382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 2482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#ifdef INTEL_VIDEO_XPROC_SHARING 2582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#include <binder/MemoryBase.h> 2682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#include <ui/GraphicBuffer.h> 2782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 2882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONusing namespace android; 2982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#endif 3082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#define STRING_TO_FOURCC(format) ((uint32_t)(((format)[0])|((format)[1]<<8)|((format)[2]<<16)|((format)[3]<<24))) 3182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 3282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONtypedef enum { 3382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON IMB_SUCCESS = 0, 3482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON IMB_INVAL_PARAM = 1, 3582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON IMB_INVAL_BUFFER = 2, 3682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#ifdef INTEL_VIDEO_XPROC_SHARING 3782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON IMB_NO_SERVICE = 3, 3882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON IMB_SERVICE_FAIL = 4, 3982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#endif 4082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}IMB_Result; 4182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 4282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONtypedef enum { 4382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON MEM_MODE_MALLOC = 1, 4482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON MEM_MODE_CI = 2, 4582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON MEM_MODE_V4L2 = 4, 4682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON MEM_MODE_SURFACE = 8, 4782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON MEM_MODE_USRPTR = 16, 4882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON MEM_MODE_GFXHANDLE = 32, 4982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON MEM_MODE_KBUFHANDLE = 64, 5082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON MEM_MODE_ION = 128, 5182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON MEM_MODE_NONECACHE_USRPTR = 256, 5282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}MemMode; 5382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 5482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONtypedef struct { 5582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON MemMode mode; //memory type, vasurface/malloc/gfx/ion/v4l2/ci etc 5682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON intptr_t handle; //handle 5782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t size; //memory size 5882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t width; //picture width 5982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t height; //picture height 6082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t lumaStride; //picture luma stride 6182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t chromStride; //picture chrom stride 6282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t format; //color format 6382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t s3dformat; //S3D format 6482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#ifdef INTEL_VIDEO_XPROC_SHARING 6582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t sessionFlag; //for buffer sharing session 6682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#endif 6782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}ValueInfo; 6882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 6982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONtypedef enum { 7082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON IntelMetadataBufferTypeCameraSource = 0, //same with kMetadataBufferTypeCameraSource in framework 7182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON IntelMetadataBufferTypeGrallocSource = 1, //same with kMetadataBufferTypeGrallocSource in framework 7282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 7382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON IntelMetadataBufferTypeExtension = 0xFF, //intel extended type 7482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON IntelMetadataBufferTypeEncoder = IntelMetadataBufferTypeExtension, //for WiDi clone mode 7582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON IntelMetadataBufferTypeUser = IntelMetadataBufferTypeExtension + 1, //for WiDi user mode 7682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON IntelMetadataBufferTypeLast = IntelMetadataBufferTypeExtension + 2, //type number 7782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}IntelMetadataBufferType; 7882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 7982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONclass IntelMetadataBuffer { 8082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONpublic: 8182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON IntelMetadataBuffer(); //for generator 8282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON IntelMetadataBuffer(IntelMetadataBufferType type, intptr_t value); //for quick generator 8382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON ~IntelMetadataBuffer(); 8482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 8582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON IntelMetadataBuffer(const IntelMetadataBuffer& imb); 8682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON const IntelMetadataBuffer& operator=(const IntelMetadataBuffer& imb); 8782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 8882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON IMB_Result GetType(IntelMetadataBufferType &type); 8982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON IMB_Result SetType(IntelMetadataBufferType type); 9082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON IMB_Result GetValue(intptr_t &value); 9182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON IMB_Result SetValue(intptr_t value); 9282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON IMB_Result GetValueInfo(ValueInfo* &info); 9382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON IMB_Result SetValueInfo(ValueInfo *info); 9482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON IMB_Result GetExtraValues(intptr_t* &values, uint32_t &num); 9582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON IMB_Result SetExtraValues(intptr_t *values, uint32_t num); 9682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 9782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON //New API for bytes input/ouput, UnSerialize=SetBytes, Serialize=GetBytes 9882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON IMB_Result UnSerialize(uint8_t* data, uint32_t size); 9982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON IMB_Result Serialize(uint8_t* &data, uint32_t& size); 10082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 10182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON //Static, for get max IntelMetadataBuffer size 10282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON static uint32_t GetMaxBufferSize(); 10382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 10482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONprivate: 10582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON IntelMetadataBufferType mType; 10682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON intptr_t mValue; 10782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON ValueInfo* mInfo; 10882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 10982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON intptr_t* mExtraValues; 11082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t mExtraValues_Count; 11182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 11282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint8_t* mBytes; 11382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t mSize; 11482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 11582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#ifdef INTEL_VIDEO_XPROC_SHARING 11682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONpublic: 11782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON IMB_Result ShareValue(sp<MemoryBase> mem); 11882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON IMB_Result ShareValue(sp<GraphicBuffer> gbuffer); 11982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 12082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON IMB_Result GetSessionFlag(uint32_t &sessionflag); 12182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON IMB_Result SetSessionFlag(uint32_t sessionflag); 12282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 12382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON //Static, for clear context 12482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON static IMB_Result ClearContext(uint32_t sessionflag, bool isProvider = true); 12582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 12682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON static const uint16_t CAMERA_BASE = 0x0000; 12782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON static const uint16_t WIDI_BASE = 0x1000; 12882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON static const uint16_t WEBRTC_BASE = 0x2000; 12982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON static const uint16_t VIDEOEDIT_BASE = 0x3000; 13082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 13182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON static uint32_t MakeSessionFlag(bool romoteProvider, bool remoteConsumer, uint16_t sindex); 13282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 13382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONprivate: 13482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON uint32_t mSessionFlag; 13582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#endif 13682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 13782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}; 13882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 13982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#ifdef INTEL_VIDEO_XPROC_SHARING 14082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 14182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONclass IntelBufferSharingService : public BBinder 14282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON{ 14382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONprivate: 14482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON static IntelBufferSharingService *gBufferService; 14582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 14682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONpublic: 14782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON static status_t instantiate(); 14882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 14982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON IntelBufferSharingService(){ 15082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON ALOGI("IntelBufferSharingService instance is created"); 15182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON } 15282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 15382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON ~IntelBufferSharingService(){ 15482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON ALOGI("IntelBufferSharingService instance is destroyed"); 15582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON } 15682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 15782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON status_t onTransact(uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags); 15882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}; 15982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#endif 16082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 16182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#endif 16282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 163