1 2 /** 3 * @file IHaasVideoCodec.h 4 * @author HaasAI Group 5 * @version V1.0.0 6 * @date 2021-01-10 7 * @license GNU General Public License (GPL) 8 * @brief 9 * @attention 10 * This file is part of HaasAI. \n 11 * This program is free software; you can redistribute it and/or modify \n 12 * it under the terms of the GNU General Public License version 3 as \n 13 * published by the Free Software Foundation. \n 14 * You should have received a copy of the GNU General Public License \n 15 * along with HaasAI. If not, see <http://www.gnu.org/licenses/>. \n 16 * Unless required by applicable law or agreed to in writing, software \n 17 * distributed under the License is distributed on an "AS IS" BASIS, \n 18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. \n 19 * See the License for the specific language governing permissions and \n 20 * limitations under the License. \n 21 * \n 22 * @htmlonly 23 * <span style="font-weight: bold">History</span> 24 * @endhtmlonly 25 * Version|Author|Date|Describe 26 * ------|----|------|-------- 27 * V1.0|HaasAI Group|2021-01-10|Create File 28 * <h2><center>©COPYRIGHT 2021 WELLCASA All Rights Reserved.</center></h2> 29 */ 30 #ifndef IHAAS_VIDEO_CODEC_H 31 #define IHAAS_VIDEO_CODEC_H 32 33 #include "base/modules/core/include/HaasErrno.h" 34 #include "base/include/base/HaasCommonVideo.h" 35 #include "base/include/base/HaasCommonImage.h" 36 #include "base/include/base/HaasVideoCodecDef.h" 37 38 /** 39 * @brief Video Codec Control Class 40 * @author HaasAI Group 41 */ 42 class IHaasVideoCodec 43 { 44 public: ~IHaasVideoCodec()45 virtual ~IHaasVideoCodec(){} 46 47 /** 48 * @brief Open the video codec module 49 * @note 50 * @return 51 * 0 successfully \n 52 * -1 failed \n 53 * @par Sample 54 * @code 55 * IHaasVideoCodec * mHaasVideoCodec = NULL; 56 * mHaasVideoCodec = HaasVideoCodecInstance(); 57 * res_ res = 0; 58 * res = mHaasVideoCodec->Open(); 59 * @endcode 60 */ 61 virtual int Open() = 0; 62 /** 63 * @brief Close the video codec module 64 * @note 65 * @return 66 * 0 successfully \n 67 * -1 failed \n 68 * @par Sample 69 * @code 70 * IHaasVideoCodec * mHaasVideoCodec = NULL; 71 * mHaasVideoCodec = HaasVideoCodecInstance(); 72 * res_ res = 0; 73 * res = mHaasVideoCodec->Close(); 74 * @endcode 75 */ 76 virtual int Close() = 0; 77 78 /** 79 * @brief set Video decoder config information 80 * @param[in] config: obtain video decoder information 81 * @note 82 * @return 83 * 0 successfully \n 84 * -1 failed \n 85 * @par Sample 86 * @code 87 * IHaasVideoCodec * mHaasVideoCodec = NULL; 88 * mHaasVideoCodec = HaasVideoCodecInstance(); 89 * DecodeConfig_t *config = xx; 90 * res_ res = 0; 91 * res = mHaasVideoCodec->DecodeConfig(config); 92 * @endcode 93 */ 94 virtual int DecodeConfig(DecodeConfig_t* config) = 0; 95 /** 96 * @brief start video codec 97 * @note 98 * @return 99 * 0 successfully \n 100 * -1 failed \n 101 * @par Sample 102 * @code 103 * IHaasVideoCodec * mHaasVideoCodec = NULL; 104 * mHaasVideoCodec = HaasVideoCodecInstance(); 105 * res_ res = 0; 106 * res = mHaasVideoCodec->StartDecode(); 107 * @endcode 108 */ 109 virtual int StartDecode() = 0; 110 /** 111 * @brief stop video codec 112 * @note 113 * @return 114 * 0 successfully \n 115 * -1 failed \n 116 * @par Sample 117 * @code 118 * IHaasVideoCodec * mHaasVideoCodec = NULL; 119 * mHaasVideoCodec = HaasVideoCodecInstance(); 120 * res_ res = 0; 121 * res = mHaasVideoCodec->StopDecode(); 122 * @endcode 123 */ 124 virtual int StopDecode() = 0; 125 /** 126 * @brief get video decode Image Data 127 * @param[in] data:obtain Video Image info 128 * @note 129 * @return 130 * 0 successfully \n 131 * -1 failed \n 132 * @par Sample 133 * @code 134 * IHaasVideoCodec * mHaasVideoCodec = NULL; 135 * mHaasVideoCodec = HaasVideoCodecInstance(); 136 * ImageBuffer_t * image = NULL; 137 * res_ res = 0; 138 * res = mHaasVideoCodec->GetDecodeImageData(&image); 139 * @endcode 140 */ 141 virtual int GetDecodeImageData(void *pkt, ImageBuffer_t** image) = 0; 142 143 /** 144 * @brief set Video encode config information 145 * @param[in] config: obtain video encode information 146 * @note 147 * @return 148 * 0 successfully \n 149 * -1 failed \n 150 * @par Sample 151 * @code 152 * IHaasVideoCodec * mHaasVideoCodec = NULL; 153 * mHaasVideoCodec = HaasVideoCodecInstance(); 154 * EncodeConfig_t *config = xx; 155 * res_ res = 0; 156 * res = mHaasVideoCodec->EncodeConfig(config); 157 * @endcode 158 */ 159 virtual int EncodeConfig(EncodeConfig_t* config) = 0; 160 /** 161 * @brief star video encode 162 * @note 163 * @return 164 * 0 successfully \n 165 * -1 failed \n 166 * @par Sample 167 * @code 168 * IHaasVideoCodec * mHaasVideoCodec = NULL; 169 * mHaasVideoCodec = HaasVideoCodecInstance(); 170 * res_ res = 0; 171 * res = mHaasVideoCodec->StartEncode(); 172 * @endcode 173 */ 174 virtual int StartEncode() = 0; 175 /** 176 * @brief stop video encode 177 * @note 178 * @return 179 * 0 successfully \n 180 * -1 failed \n 181 * @par Sample 182 * @code 183 * IHaasVideoCodec * mHaasVideoCodec = NULL; 184 * mHaasVideoCodec = HaasVideoCodecInstance(); 185 * res_ res = 0; 186 * res = mHaasVideoCodec->StopEncode(); 187 * @endcode 188 */ 189 virtual int StopEncode() = 0; 190 /** 191 * @brief get video encoder Data 192 * @param[in] data:obtain Video Packet info 193 * @note 194 * @return 195 * 0 successfully \n 196 * -1 failed \n 197 * @par Sample 198 * @code 199 * IHaasVideoCodec * mHaasVideoCodec = NULL; 200 * mHaasVideoCodec = HaasVideoCodecInstance(); 201 * VideoPacket_t data; 202 * res_ res = 0; 203 * res = mHaasVideoCodec->GetEncodePacketData(&data); 204 * @endcode 205 */ 206 virtual int GetEncodePacketData(VideoPacket_t **data) = 0; 207 }; 208 209 extern "C" { 210 /** 211 * @brief Get HaasVideoCodec Instance 212 * @param[in] type:VideoCodecType_t 213 * @note NULL 214 * @return 215 * !0 successfully \n 216 * NULL failed \n 217 * @par Sample 218 * @code 219 * IHaasVideoCodec * mHaasVideoCodec = NULL; 220 * mHaasVideoCodec = IHaasVideoCodecInstance(type); 221 * @endcode 222 */ 223 IHaasVideoCodec* IHaasVideoCodecInstance(VideoCodecType_t type); 224 } 225 #endif 226