2. openH264解码流程

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,如果需要其他格式的话,要进行格式转换。

你可能感兴趣的:(流媒体,openH264)