13306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong/* ------------------------------------------------------------------ 23306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * Copyright (C) 1998-2009 PacketVideo 33306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * 43306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * Licensed under the Apache License, Version 2.0 (the "License"); 53306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * you may not use this file except in compliance with the License. 63306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * You may obtain a copy of the License at 73306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * 83306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * http://www.apache.org/licenses/LICENSE-2.0 93306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * 103306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * Unless required by applicable law or agreed to in writing, software 113306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * distributed under the License is distributed on an "AS IS" BASIS, 123306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 133306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * express or implied. 143306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * See the License for the specific language governing permissions 153306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * and limitations under the License. 163306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * ------------------------------------------------------------------- 173306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong */ 183306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong/* 193306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong------------------------------------------------------------------- 203306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong MPEG-4 Simple Profile Video Decoder 213306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong------------------------------------------------------------------- 223306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* 233306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* This software module was originally developed by 243306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* 253306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* Paulo Nunes (IST / ACTS-MoMuSyS) 263306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* 273306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* in the course of development of the MPEG-4 Video (ISO/IEC 14496-2) standard. 283306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* This software module is an implementation of a part of one or more MPEG-4 293306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* Video (ISO/IEC 14496-2) tools as specified by the MPEG-4 Video (ISO/IEC 303306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* 14496-2) standard. 313306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* 323306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* ISO/IEC gives users of the MPEG-4 Video (ISO/IEC 14496-2) standard free 333306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* license to this software module or modifications thereof for use in hardware 343306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* or software products claiming conformance to the MPEG-4 Video (ISO/IEC 353306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* 14496-2) standard. 363306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* 373306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* Those intending to use this software module in hardware or software products 383306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* are advised that its use may infringe existing patents. The original 393306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* developer of this software module and his/her company, the subsequent 403306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* editors and their companies, and ISO/IEC have no liability for use of this 413306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* software module or modifications thereof in an implementation. Copyright is 423306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* not released for non MPEG-4 Video (ISO/IEC 14496-2) Standard conforming 433306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* products. 443306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* 453306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* ACTS-MoMuSys partners retain full right to use the code for his/her own 463306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* purpose, assign or donate the code to a third party and to inhibit third 473306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* parties from using the code for non MPEG-4 Video (ISO/IEC 14496-2) Standard 483306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* conforming products. This copyright notice must be included in all copies or 493306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* derivative works. 503306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* 513306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* Copyright (c) 1996 523306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* 533306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong*****************************************************************************/ 543306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 553306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong/***********************************************************HeaderBegin******* 563306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* 573306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* File: vlc_dec.h 583306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* 593306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* Author: Paulo Nunes (IST) - Paulo.Nunes@lx.it.pt 603306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* Created: 613306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* 623306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* Description: This is the header file for the "vlcdec" module. 633306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* 643306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* Notes: 653306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* 663306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* Modified: 9-May-96 Paulo Nunes: Reformatted. New headers. 673306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* 683306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* ================= PacketVideo Modification ================================ 693306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* 703306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* 3/30/00 : initial modification to the 713306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* new PV-Decoder Lib format. 723306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong* 733306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong***********************************************************CommentEnd********/ 743306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 753306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 763306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#ifndef _VLCDECODE_H_ 773306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#define _VLCDECODE_H_ 783306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 793306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#include "mp4lib_int.h" 803306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 813306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#define VLC_ERROR_DETECTED(x) ((x) < 0) 823306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#define VLC_IO_ERROR -1 833306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#define VLC_CODE_ERROR -2 843306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#define VLC_MB_STUFFING -4 853306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#define VLC_NO_LAST_BIT -5 863306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 873306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#define VLC_ESCAPE_CODE 7167 883306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 893306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#ifdef __cplusplus 903306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dongextern "C" 913306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong{ 923306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#endif /* __cplusplus */ 933306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 943306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong PV_STATUS DecodeUserData(BitstreamDecVideo *stream); 953306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong PV_STATUS PV_GetMBvectors(VideoDecData *, uint mode); 963306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong PV_STATUS PV_DecodeMBVec(BitstreamDecVideo *stream, MOT *mv_x, MOT *mv_y, int f_code_f); 973306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong PV_STATUS PV_DeScaleMVD(int f_code, int residual, int vlc_code_mag, MOT *vector); 983306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 993306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong PV_STATUS PV_VlcDecMV(BitstreamDecVideo *stream, int *mv); 1003306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int PV_VlcDecMCBPC_com_intra(BitstreamDecVideo *stream); 1013306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int PV_VlcDecMCBPC_com_inter(BitstreamDecVideo *stream); 1023306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#ifdef PV_ANNEX_IJKT_SUPPORT 1033306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int PV_VlcDecMCBPC_com_inter_H263(BitstreamDecVideo *stream); 1043306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong PV_STATUS VlcDecTCOEFShortHeader_AnnexI(BitstreamDecVideo *stream, Tcoef *pTcoef); 1053306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong PV_STATUS VlcDecTCOEFShortHeader_AnnexT(BitstreamDecVideo *stream, Tcoef *pTcoef); /* ANNEX_T */ 1063306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong PV_STATUS VlcDecTCOEFShortHeader_AnnexIT(BitstreamDecVideo *stream, Tcoef *pTcoef); 1073306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#endif 1083306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int PV_VlcDecCBPY(BitstreamDecVideo *stream, int intra); 1093306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 1103306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong PV_STATUS VlcDecTCOEFIntra(BitstreamDecVideo *stream, Tcoef *pTcoef); 1113306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong PV_STATUS VlcDecTCOEFInter(BitstreamDecVideo *stream, Tcoef *pTcoef); 1123306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong PV_STATUS VlcDecTCOEFShortHeader(BitstreamDecVideo *stream, Tcoef *pTcoef); 1133306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong PV_STATUS RvlcDecTCOEFIntra(BitstreamDecVideo *stream, Tcoef *pTcoef); 1143306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong PV_STATUS RvlcDecTCOEFInter(BitstreamDecVideo *stream, Tcoef *pTcoef); 1153306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong PV_STATUS PV_VlcDecIntraDCPredSize(BitstreamDecVideo *stream, int compnum, uint *DC_size); 1163306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 1173306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#ifdef __cplusplus 1183306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong} 1193306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#endif /* __cplusplus */ 1203306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 1213306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#endif 1223306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 123