openH264解码流程
同openH264编码一样,openH264的解码流程也主要分为3步:
-
创建解码器
int result = WelsCreateDecoder(&decoder);
同样可以通过判断返回值来判断解码器是否创建成功。
-
初始化解码器
memset (&pParam, 0, sizeof (SDecodingParam)); pParam.uiTargetDqLayer = UCHAR_MAX; pParam.eEcActiveIdc = ERROR_CON_FRAME_COPY_CROSS_IDR; pParam.sVideoProperty.eVideoBsType = VIDEO_BITSTREAM_DEFAULT; result = decoder->Initialize(&pParam);
-
调用解码器开始解码
int stride[2] = {videoWidth, videoWidth/2}; uint8_t* dst[3]; memset (dst, 0, sizeof (dst)); int result = decoder->DecodeFrame((const unsigned char*)src, length, dst, stride, videoWidth, videoHeight);
解码后的数据存储在dst中,格式为YUV420P,如果需要其他格式的话,要进行格式转换。