1 /*! 2 * \copy 3 * Copyright (c) 2013, Cisco Systems 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: 9 * 10 * * Redistributions of source code must retain the above copyright 11 * notice, this list of conditions and the following disclaimer. 12 * 13 * * Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in 15 * the documentation and/or other materials provided with the 16 * distribution. 17 * 18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 21 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 22 * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 23 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 24 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 25 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 26 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 28 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 29 * POSSIBILITY OF SUCH DAMAGE. 30 * 31 */ 32 33 //nalu.h: NAL Unit definition 34 #ifndef WELS_NAL_UNIT_H__ 35 #define WELS_NAL_UNIT_H__ 36 37 #include "typedefs.h" 38 #include "wels_common_basis.h" 39 #include "nal_prefix.h" 40 #include "bit_stream.h" 41 42 namespace WelsDec { 43 44 ///////////////////////////////////NAL UNIT level/////////////////////////////////// 45 46 /* NAL Unit Structure */ 47 typedef struct TagNalUnit { 48 SNalUnitHeaderExt sNalHeaderExt; 49 50 union { 51 struct SVclNal { 52 SSliceHeaderExt sSliceHeaderExt; 53 SBitStringAux sSliceBitsRead; 54 uint8_t* pNalPos; // save the address of slice nal for GPU function 55 int32_t iNalLength; // save the nal length for GPU function 56 bool bSliceHeaderExtFlag; 57 } sVclNal; 58 SPrefixNalUnit sPrefixNal; 59 } sNalData; 60 unsigned long long uiTimeStamp; 61 } SNalUnit, *PNalUnit; 62 63 ///////////////////////////////////ACCESS Unit level/////////////////////////////////// 64 65 /* Access Unit structure */ 66 typedef struct TagAccessUnits { 67 PNalUnit* pNalUnitsList; // list of NAL Units pointer in this AU 68 uint32_t uiAvailUnitsNum; // Number of NAL Units available in each AU list based current bitstream, 69 uint32_t uiActualUnitsNum; // actual number of NAL units belong to current au 70 // While available number exceeds count size below, need realloc extra NAL Units for list space. 71 uint32_t uiCountUnitsNum; // Count size number of malloced NAL Units in each AU list 72 uint32_t uiStartPos; 73 uint32_t uiEndPos; 74 bool bCompletedAuFlag; // Indicate whether it is a completed AU 75 } SAccessUnit, *PAccessUnit; 76 77 } // namespace WelsDec 78 79 #endif//WELS_NAL_UNIT_H__ 80