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