1 /*-------------------------------------------------------------------------- 2 Copyright (c) 2013, The Linux Foundation. All rights reserved. 3 4 Redistribution and use in source and binary forms, with or without 5 modification, are permitted provided that the following conditions are met: 6 * Redistributions of source code must retain the above copyright 7 notice, this list of conditions and the following disclaimer. 8 * Redistributions in binary form must reproduce the above copyright 9 notice, this list of conditions and the following disclaimer in the 10 documentation and/or other materials provided with the distribution. 11 * Neither the name of The Linux Foundation nor 12 the names of its contributors may be used to endorse or promote 13 products derived from this software without specific prior written 14 permission. 15 16 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 17 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18 IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 20 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 21 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 22 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 23 OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 24 WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 25 OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 26 ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 --------------------------------------------------------------------------*/ 28 29 30 #ifndef HEVC_UTILS_H 31 #define HEVC_UTILS_H 32 33 /*======================================================================== 34 35 O p e n M M 36 U t i l i t i e s a n d H e l p e r R o u t i n e s 37 38 *//** @file HEVC_Utils.h 39 This module contains H264 video decoder utilities and helper routines. 40 41 *//*====================================================================== */ 42 43 /* ======================================================================= 44 45 INCLUDE FILES FOR MODULE 46 47 ========================================================================== */ 48 #include <stdio.h> 49 #include <utils/Log.h> 50 #include "Map.h" 51 #include "qtypes.h" 52 #include "OMX_Core.h" 53 #include "OMX_QCOMExtns.h" 54 55 56 class HEVC_Utils 57 { 58 public: 59 HEVC_Utils(); 60 ~HEVC_Utils(); 61 62 enum { 63 NAL_UNIT_CODED_SLICE_TRAIL_N, // 0 64 NAL_UNIT_CODED_SLICE_TRAIL_R, // 1 65 NAL_UNIT_CODED_SLICE_TSA_N, // 2 66 NAL_UNIT_CODED_SLICE_TLA, // 3 67 NAL_UNIT_CODED_SLICE_STSA_N, // 4 68 NAL_UNIT_CODED_SLICE_STSA_R, // 5 69 NAL_UNIT_CODED_SLICE_RADL_N, // 6 70 NAL_UNIT_CODED_SLICE_DLP, // 7 71 NAL_UNIT_CODED_SLICE_RASL_N, // 8 72 NAL_UNIT_CODED_SLICE_TFD, // 9 73 NAL_UNIT_RESERVED_10, 74 NAL_UNIT_RESERVED_11, 75 NAL_UNIT_RESERVED_12, 76 NAL_UNIT_RESERVED_13, 77 NAL_UNIT_RESERVED_14, 78 NAL_UNIT_RESERVED_15, 79 NAL_UNIT_CODED_SLICE_BLA, // 16 80 NAL_UNIT_CODED_SLICE_BLANT, // 17 81 NAL_UNIT_CODED_SLICE_BLA_N_LP, // 18 82 NAL_UNIT_CODED_SLICE_IDR, // 19 83 NAL_UNIT_CODED_SLICE_IDR_N_LP, // 20 84 NAL_UNIT_CODED_SLICE_CRA, // 21 85 NAL_UNIT_RESERVED_22, 86 NAL_UNIT_RESERVED_23, 87 NAL_UNIT_RESERVED_24, 88 NAL_UNIT_RESERVED_25, 89 NAL_UNIT_RESERVED_26, 90 NAL_UNIT_RESERVED_27, 91 92 NAL_UNIT_RESERVED_28, 93 NAL_UNIT_RESERVED_29, 94 NAL_UNIT_RESERVED_30, 95 NAL_UNIT_RESERVED_31, 96 97 NAL_UNIT_VPS, // 32 98 NAL_UNIT_SPS, // 33 99 NAL_UNIT_PPS, // 34 100 NAL_UNIT_ACCESS_UNIT_DELIMITER, // 35 101 NAL_UNIT_EOS, // 36 102 NAL_UNIT_EOB, // 37 103 NAL_UNIT_FILLER_DATA, // 38 104 NAL_UNIT_SEI, // 39 Prefix SEI 105 NAL_UNIT_SEI_SUFFIX, // 40 Suffix SEI 106 107 NAL_UNIT_RESERVED_41, 108 NAL_UNIT_RESERVED_42, 109 NAL_UNIT_RESERVED_43, 110 NAL_UNIT_RESERVED_44, 111 NAL_UNIT_RESERVED_45, 112 NAL_UNIT_RESERVED_46, 113 NAL_UNIT_RESERVED_47, 114 NAL_UNIT_UNSPECIFIED_48, 115 NAL_UNIT_UNSPECIFIED_49, 116 NAL_UNIT_UNSPECIFIED_50, 117 NAL_UNIT_UNSPECIFIED_51, 118 NAL_UNIT_UNSPECIFIED_52, 119 NAL_UNIT_UNSPECIFIED_53, 120 NAL_UNIT_UNSPECIFIED_54, 121 NAL_UNIT_UNSPECIFIED_55, 122 NAL_UNIT_UNSPECIFIED_56, 123 NAL_UNIT_UNSPECIFIED_57, 124 NAL_UNIT_UNSPECIFIED_58, 125 NAL_UNIT_UNSPECIFIED_59, 126 NAL_UNIT_UNSPECIFIED_60, 127 NAL_UNIT_UNSPECIFIED_61, 128 NAL_UNIT_UNSPECIFIED_62, 129 NAL_UNIT_UNSPECIFIED_63, 130 NAL_UNIT_INVALID, 131 }; 132 133 134 void initialize_frame_checking_environment(); 135 bool isNewFrame(OMX_BUFFERHEADERTYPE *p_buf_hdr, 136 OMX_IN OMX_U32 size_of_nal_length_field, 137 OMX_OUT OMX_BOOL &isNewFrame); 138 139 private: 140 141 bool m_forceToStichNextNAL; 142 bool m_au_data; 143 uint32 nalu_type; 144 }; 145 146 #endif /* HEVC_UTILS_H */ 147