我已经使用OpenH264图像库(https://github.com/cisco/openh264/wiki/UsageExampleForDecoder)成功地解码了H264帧,但是从教程中我找不到输出格式。
我使用的是"unsigned char *pDataResult3;“(本教程中的pData),它会被填充,但我需要知道它的长度,以便将其转换为字节缓冲区以将其返回给java。我还需要知道这些数据的所有权是什么(它似乎归解码器所有)。据我所知,在教程或文档中没有提到这个信息。
unsigned char *pDataResult[3];
int iRet = pSvcDecoder->DecodeFrameNoDelay(pBuf, iSize, pDataResult, &sDstBufInfo);本教程还列出了一个初始化器,但给出了"...“作为作业。
//output: [0~2] for Y,U,V buffer for Decoding only
unsigned char *pData[3] =...;YUV数据是否以null结尾?
TagSysMemBuffer的最后一个参数是SBufferInfo:
typedef struct TagSysMemBuffer {
int iWidth; ///< width of decoded pic for display
int iHeight; ///< height of decoded pic for display
int iFormat; ///< type is "EVideoFormatType"
int iStride[2]; ///< stride of 2 component
} SSysMEMBuffer;长度可能在里面,但不是很清楚。也许每个缓冲区都是"iWidth*iHeight“?
发布于 2019-11-05 20:23:34
正如你所想的那样,pData在解码器析构函数中与WelsFreeDynamicMemory一起在decoder.cpp中被释放。解码器本身将nullptr分配给通道,但将它们作为一个好习惯来初始化pData是很好的。您有iSize参数作为输入,这是您想要的字节缓冲区长度。
https://stackoverflow.com/questions/53755414
复制相似问题