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 __VIDEO_ENCODER_UTILS_H__ 1882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#define __VIDEO_ENCODER_UTILS_H__ 1982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#include <va/va.h> 2082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#include <va/va_tpi.h> 2182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#include "VideoEncoderDef.h" 2282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#include "IntelMetadataBuffer.h" 2382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#ifdef IMG_GFX 2482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#include <hardware/gralloc.h> 2582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#endif 2682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 2782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#define MAP_ACTION_COPY 0x00000001 //mem copy 2882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#define MAP_ACTION_ALIGN64 0x00000002 //align 64 2982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#define MAP_ACTION_COLORCONVERT 0x00000004 //color convert 3082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#define MAP_ACTION_RESIZE 0x00000008 //resize 3182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 3282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONclass VASurfaceMap { 3382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONpublic: 3482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VASurfaceMap(VADisplay display, int hwcap); 3582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON ~VASurfaceMap(); 3682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 3782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON Encode_Status doMapping(); 3882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VASurfaceID getVASurface() {return mVASurface;} 3982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON intptr_t getValue() {return mValue;} 4082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON ValueInfo* getValueInfo() {return &mVinfo;} 4182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 4282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON void setVASurface(VASurfaceID surface) {mVASurface = surface;} 4382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON void setValue(intptr_t value) {mValue = value;} 4482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON void setValueInfo(ValueInfo& vinfo) {memcpy(&mVinfo, &vinfo, sizeof(ValueInfo));} 4582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON void setTracked() {mTracked = true;} 4682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON void setAction(int32_t action) {mAction = action;} 4782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 4882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONprivate: 4982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON Encode_Status doActionCopy(); 5082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON Encode_Status doActionColConv(); 5182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON Encode_Status MappingToVASurface(); 5282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON Encode_Status MappingSurfaceID(intptr_t value); 5382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON Encode_Status MappingGfxHandle(intptr_t value); 5482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON Encode_Status MappingKbufHandle(intptr_t value); 5582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON Encode_Status MappingMallocPTR(intptr_t value); 5682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VASurfaceID CreateSurfaceFromExternalBuf(intptr_t value, ValueInfo& vinfo); 5782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 5882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VADisplay mVADisplay; 5982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 6082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON intptr_t mValue; 6182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 6282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON VASurfaceID mVASurface; 6382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON int32_t mVASurfaceWidth; 6482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON int32_t mVASurfaceHeight; 6582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON int32_t mVASurfaceStride; 6682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 6782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON// MetadataBufferType mType; 6882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 6982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON ValueInfo mVinfo; 7082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON bool mTracked; 7182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 7282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON int32_t mAction; 7382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 7482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON int32_t mSupportedSurfaceMemType; 7582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 7682b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#ifdef IMG_GFX 7782b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON //special for gfx color format converter 7882b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON buffer_handle_t mGfxHandle; 7982b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#endif 8082b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON}; 8182b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 8282b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTONVASurfaceID CreateNewVASurface(VADisplay display, int32_t width, int32_t height); 8382b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 8482b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON#endif 8582b428e49a70ddc051a36d2b3a25d90db79770dcGuilhem IMBERTON 86