Я использовал OpenH264 Turorial (https://github.com/cisco/openh264/wiki/UsageExampleForDecoder), чтобы успешно декодировать кадр H264, но я не могу понять из учебника, какой формат вывода.
Я использую"unsigned char * pDataResult [3];" (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 завершены?
Существует последний параметр SBufferInfo с TagSysMemBuffer:
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" для каждого буфера?