10c1bc742181ded4930842b46e9507372f0b1b963James Dong/*
20c1bc742181ded4930842b46e9507372f0b1b963James Dong * Copyright (C) 2009 The Android Open Source Project
30c1bc742181ded4930842b46e9507372f0b1b963James Dong *
40c1bc742181ded4930842b46e9507372f0b1b963James Dong * Licensed under the Apache License, Version 2.0 (the "License");
50c1bc742181ded4930842b46e9507372f0b1b963James Dong * you may not use this file except in compliance with the License.
60c1bc742181ded4930842b46e9507372f0b1b963James Dong * You may obtain a copy of the License at
70c1bc742181ded4930842b46e9507372f0b1b963James Dong *
80c1bc742181ded4930842b46e9507372f0b1b963James Dong *      http://www.apache.org/licenses/LICENSE-2.0
90c1bc742181ded4930842b46e9507372f0b1b963James Dong *
100c1bc742181ded4930842b46e9507372f0b1b963James Dong * Unless required by applicable law or agreed to in writing, software
110c1bc742181ded4930842b46e9507372f0b1b963James Dong * distributed under the License is distributed on an "AS IS" BASIS,
120c1bc742181ded4930842b46e9507372f0b1b963James Dong * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
130c1bc742181ded4930842b46e9507372f0b1b963James Dong * See the License for the specific language governing permissions and
140c1bc742181ded4930842b46e9507372f0b1b963James Dong * limitations under the License.
150c1bc742181ded4930842b46e9507372f0b1b963James Dong */
160c1bc742181ded4930842b46e9507372f0b1b963James Dong
170c1bc742181ded4930842b46e9507372f0b1b963James Dong/*------------------------------------------------------------------------------
180c1bc742181ded4930842b46e9507372f0b1b963James Dong
190c1bc742181ded4930842b46e9507372f0b1b963James Dong    Table of contents
200c1bc742181ded4930842b46e9507372f0b1b963James Dong
210c1bc742181ded4930842b46e9507372f0b1b963James Dong    1. Include headers
220c1bc742181ded4930842b46e9507372f0b1b963James Dong    2. Module defines
230c1bc742181ded4930842b46e9507372f0b1b963James Dong    3. Data types
240c1bc742181ded4930842b46e9507372f0b1b963James Dong    4. Function prototypes
250c1bc742181ded4930842b46e9507372f0b1b963James Dong
260c1bc742181ded4930842b46e9507372f0b1b963James Dong------------------------------------------------------------------------------*/
270c1bc742181ded4930842b46e9507372f0b1b963James Dong
280c1bc742181ded4930842b46e9507372f0b1b963James Dong#ifndef H264SWDEC_DECODER_H
290c1bc742181ded4930842b46e9507372f0b1b963James Dong#define H264SWDEC_DECODER_H
300c1bc742181ded4930842b46e9507372f0b1b963James Dong
310c1bc742181ded4930842b46e9507372f0b1b963James Dong/*------------------------------------------------------------------------------
320c1bc742181ded4930842b46e9507372f0b1b963James Dong    1. Include headers
330c1bc742181ded4930842b46e9507372f0b1b963James Dong------------------------------------------------------------------------------*/
340c1bc742181ded4930842b46e9507372f0b1b963James Dong
350c1bc742181ded4930842b46e9507372f0b1b963James Dong#include "basetype.h"
360c1bc742181ded4930842b46e9507372f0b1b963James Dong#include "h264bsd_storage.h"
370c1bc742181ded4930842b46e9507372f0b1b963James Dong
380c1bc742181ded4930842b46e9507372f0b1b963James Dong/*------------------------------------------------------------------------------
390c1bc742181ded4930842b46e9507372f0b1b963James Dong    2. Module defines
400c1bc742181ded4930842b46e9507372f0b1b963James Dong------------------------------------------------------------------------------*/
410c1bc742181ded4930842b46e9507372f0b1b963James Dong
420c1bc742181ded4930842b46e9507372f0b1b963James Dong/* enumerated return values of the functions */
430c1bc742181ded4930842b46e9507372f0b1b963James Dongenum {
440c1bc742181ded4930842b46e9507372f0b1b963James Dong    H264BSD_RDY,
450c1bc742181ded4930842b46e9507372f0b1b963James Dong    H264BSD_PIC_RDY,
460c1bc742181ded4930842b46e9507372f0b1b963James Dong    H264BSD_HDRS_RDY,
470c1bc742181ded4930842b46e9507372f0b1b963James Dong    H264BSD_ERROR,
480c1bc742181ded4930842b46e9507372f0b1b963James Dong    H264BSD_PARAM_SET_ERROR,
490c1bc742181ded4930842b46e9507372f0b1b963James Dong    H264BSD_MEMALLOC_ERROR
500c1bc742181ded4930842b46e9507372f0b1b963James Dong};
510c1bc742181ded4930842b46e9507372f0b1b963James Dong
520c1bc742181ded4930842b46e9507372f0b1b963James Dong/*------------------------------------------------------------------------------
530c1bc742181ded4930842b46e9507372f0b1b963James Dong    3. Data types
540c1bc742181ded4930842b46e9507372f0b1b963James Dong------------------------------------------------------------------------------*/
550c1bc742181ded4930842b46e9507372f0b1b963James Dong
560c1bc742181ded4930842b46e9507372f0b1b963James Dong/*------------------------------------------------------------------------------
570c1bc742181ded4930842b46e9507372f0b1b963James Dong    4. Function prototypes
580c1bc742181ded4930842b46e9507372f0b1b963James Dong------------------------------------------------------------------------------*/
590c1bc742181ded4930842b46e9507372f0b1b963James Dong
600c1bc742181ded4930842b46e9507372f0b1b963James Dongu32 h264bsdInit(storage_t *pStorage, u32 noOutputReordering);
610c1bc742181ded4930842b46e9507372f0b1b963James Dongu32 h264bsdDecode(storage_t *pStorage, u8 *byteStrm, u32 len, u32 picId,
620c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 *readBytes);
630c1bc742181ded4930842b46e9507372f0b1b963James Dongvoid h264bsdShutdown(storage_t *pStorage);
640c1bc742181ded4930842b46e9507372f0b1b963James Dong
650c1bc742181ded4930842b46e9507372f0b1b963James Dongu8* h264bsdNextOutputPicture(storage_t *pStorage, u32 *picId, u32 *isIdrPic,
660c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 *numErrMbs);
670c1bc742181ded4930842b46e9507372f0b1b963James Dong
680c1bc742181ded4930842b46e9507372f0b1b963James Dongu32 h264bsdPicWidth(storage_t *pStorage);
690c1bc742181ded4930842b46e9507372f0b1b963James Dongu32 h264bsdPicHeight(storage_t *pStorage);
700c1bc742181ded4930842b46e9507372f0b1b963James Dongu32 h264bsdVideoRange(storage_t *pStorage);
710c1bc742181ded4930842b46e9507372f0b1b963James Dongu32 h264bsdMatrixCoefficients(storage_t *pStorage);
720c1bc742181ded4930842b46e9507372f0b1b963James Dongvoid h264bsdCroppingParams(storage_t *pStorage, u32 *croppingFlag,
730c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 *left, u32 *width, u32 *top, u32 *height);
740c1bc742181ded4930842b46e9507372f0b1b963James Dongvoid h264bsdSampleAspectRatio(storage_t *pStorage,
750c1bc742181ded4930842b46e9507372f0b1b963James Dong                              u32 *sarWidth, u32 *sarHeight);
760c1bc742181ded4930842b46e9507372f0b1b963James Dongu32 h264bsdCheckValidParamSets(storage_t *pStorage);
770c1bc742181ded4930842b46e9507372f0b1b963James Dong
780c1bc742181ded4930842b46e9507372f0b1b963James Dongvoid h264bsdFlushBuffer(storage_t *pStorage);
790c1bc742181ded4930842b46e9507372f0b1b963James Dong
800c1bc742181ded4930842b46e9507372f0b1b963James Dongu32 h264bsdProfile(storage_t *pStorage);
810c1bc742181ded4930842b46e9507372f0b1b963James Dong
820c1bc742181ded4930842b46e9507372f0b1b963James Dong#endif /* #ifdef H264SWDEC_DECODER_H */
830c1bc742181ded4930842b46e9507372f0b1b963James Dong
84