1ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen/*
2ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen* Copyright (c) 2012 Intel Corporation.  All rights reserved.
3ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen*
4ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen* Licensed under the Apache License, Version 2.0 (the "License");
5ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen* you may not use this file except in compliance with the License.
6ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen* You may obtain a copy of the License at
7ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen*
8ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen* http://www.apache.org/licenses/LICENSE-2.0
9ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen*
10ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen* Unless required by applicable law or agreed to in writing, software
11ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen* distributed under the License is distributed on an "AS IS" BASIS,
12ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen* See the License for the specific language governing permissions and
14ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen* limitations under the License.
15ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen*/
16ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen
17ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen
18ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen
19ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen#ifndef OMX_VIDEO_DECODER_VP8_H_
20ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen#define OMX_VIDEO_DECODER_VP8_H_
21ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen
22ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen
23ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen#include "OMXVideoDecoderBase.h"
240541f11be2f78b558476772f1f877e140f9d844bywan#include <OMX_VideoExt.h>
25ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen
26ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chenclass OMXVideoDecoderVP8 : public OMXVideoDecoderBase {
27ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chenpublic:
28ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen    OMXVideoDecoderVP8();
29ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen    virtual ~OMXVideoDecoderVP8();
30ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen
31ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chenprotected:
32ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen    virtual OMX_ERRORTYPE InitInputPortFormatSpecific(OMX_PARAM_PORTDEFINITIONTYPE *paramPortDefinitionInput);
33ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen    virtual OMX_ERRORTYPE ProcessorInit(void);
34ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen    virtual OMX_ERRORTYPE ProcessorDeinit(void);
35ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen    virtual OMX_ERRORTYPE ProcessorProcess(
36ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen            OMX_BUFFERHEADERTYPE ***pBuffers,
37ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen            buffer_retain_t *retains,
38ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen            OMX_U32 numberBuffers);
39ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen
40ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen   virtual OMX_ERRORTYPE PrepareConfigBuffer(VideoConfigBuffer *p);
41ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen   virtual OMX_ERRORTYPE PrepareDecodeBuffer(OMX_BUFFERHEADERTYPE *buffer, buffer_retain_t *retain, VideoDecodeBuffer *p);
42ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen
43ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen   virtual OMX_ERRORTYPE BuildHandlerList(void);
446c36d9722df768cfe63e015193459d870f3cdaa9Tianmi Chen   virtual OMX_ERRORTYPE SetMaxOutputBufferCount(OMX_PARAM_PORTDEFINITIONTYPE *p);
450541f11be2f78b558476772f1f877e140f9d844bywan   virtual OMX_COLOR_FORMATTYPE GetOutputColorFormat(int width);
46ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen   DECLARE_HANDLER(OMXVideoDecoderVP8, ParamVideoVp8);
47ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen
48ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chenprivate:
49ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen    enum {
50ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen        // OMX_PARAM_PORTDEFINITIONTYPE
51ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen        INPORT_MIN_BUFFER_COUNT = 1,
52ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen        INPORT_ACTUAL_BUFFER_COUNT = 5,
53ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen        INPORT_BUFFER_SIZE = 1382400,
5403118b9de04779e0aca0da6fe6fe5b0b0704a11cTianmi Chen
5503118b9de04779e0aca0da6fe6fe5b0b0704a11cTianmi Chen        OUTPORT_NATIVE_BUFFER_COUNT = 8,
56ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen    };
57ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen
58ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen    OMX_VIDEO_PARAM_VP8TYPE mParamVp8;
59ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen};
60ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen
61ab82a0fd294f033d336bc53cdffe8d1708d947ccTianmi Chen#endif /* OMX_VIDEO_DECODER_VP8_H_ */
62