Home | History | Annotate | Download | only in src
      1 /* ------------------------------------------------------------------
      2  * Copyright (C) 1998-2009 PacketVideo
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
     13  * express or implied.
     14  * See the License for the specific language governing permissions
     15  * and limitations under the License.
     16  * -------------------------------------------------------------------
     17  */
     18 #ifndef PV_M4V_CONFIG_PARSER_H_INCLUDED
     19 #define PV_M4V_CONFIG_PARSER_H_INCLUDED
     20 
     21 #include "oscl_base.h"
     22 #include "oscl_types.h"
     23 
     24 #define USE_LATER 0  // for some code that will be needed in the future
     25 
     26 #define MP4_INVALID_VOL_PARAM -1
     27 #define SHORT_HEADER_MODE -4
     28 
     29 
     30 #define VISUAL_OBJECT_SEQUENCE_START_CODE   0x01B0
     31 #define VISUAL_OBJECT_SEQUENCE_END_CODE     0x01B1
     32 #define VISUAL_OBJECT_START_CODE   0x01B5
     33 #define VO_START_CODE           0x8
     34 #define VO_HEADER_LENGTH        32
     35 #define VOL_START_CODE 0x12
     36 #define VOL_START_CODE_LENGTH 28
     37 
     38 #define GROUP_START_CODE    0x01B3
     39 #define GROUP_START_CODE_LENGTH  32
     40 
     41 #define VOP_ID_CODE_LENGTH      5
     42 #define VOP_TEMP_REF_CODE_LENGTH    16
     43 
     44 #define USER_DATA_START_CODE        0x01B2
     45 #define USER_DATA_START_CODE_LENGTH 32
     46 
     47 #define SHORT_VIDEO_START_MARKER        0x20
     48 #define SHORT_VIDEO_START_MARKER_LENGTH  22
     49 
     50 typedef struct
     51 {
     52     uint8 *data;
     53     uint32 numBytes;
     54     uint32 bytePos;
     55     uint32 bitBuf;
     56     uint32 dataBitPos;
     57     uint32  bitPos;
     58 } mp4StreamType;
     59 
     60 
     61 int16 ShowBits(
     62     mp4StreamType *pStream,
     63     uint8 ucNBits,
     64     uint32 *pulOutData
     65 );
     66 
     67 int16 FlushBits(
     68     mp4StreamType *pStream,
     69     uint8 ucNBits
     70 );
     71 
     72 int16 ReadBits(
     73     mp4StreamType *pStream,
     74     uint8 ucNBits,
     75     uint32 *pulOutData
     76 );
     77 
     78 
     79 
     80 int16 ByteAlign(
     81     mp4StreamType *pStream
     82 );
     83 
     84 
     85 OSCL_IMPORT_REF int16 iDecodeVOLHeader(mp4StreamType *psBits, int32 *width, int32 *height, int32 *, int32 *, int32 *profilelevel);
     86 OSCL_IMPORT_REF int16 iGetM4VConfigInfo(uint8 *buffer, int32 length, int32 *width, int32 *height, int32 *, int32 *);
     87 int16 DecodeUserData(mp4StreamType *pStream);
     88 OSCL_IMPORT_REF int16 iDecodeShortHeader(mp4StreamType *psBits, int32 *width, int32 *height, int32 *, int32 *);
     89 OSCL_IMPORT_REF int16 iGetAVCConfigInfo(uint8 *buffer, int32 length, int32 *width, int32 *height, int32 *, int32 *, int32 *profile, int32 *level);
     90 
     91 int32 FindNAL(uint8** nal_pnt, uint8* buffer, int32 length);
     92 int16 DecodeSPS(mp4StreamType *psBits, int32 *width, int32 *height, int32 *display_width, int32 *display_height, int32 *profile_idc, int32 *level_idc);
     93 #if USE_LATER
     94 int32 DecodeHRD(mp4StreamType *psBits);
     95 int32 DecodeVUI(mp4StreamType *psBits);
     96 #endif
     97 int32 DecodePPS(mp4StreamType *psBits);
     98 
     99 void ue_v(mp4StreamType *psBits, uint32 *codeNum);
    100 void se_v(mp4StreamType *psBits, int32 *value);
    101 void Parser_EBSPtoRBSP(uint8 *nal_unit, int32 *size);
    102 
    103 #endif //PV_M4V_CONFIG_PARSER_H_INCLUDED
    104 
    105 
    106