Я использовал 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» для каждого буфера?
Задача ещё не решена.
Других решений пока нет …