QCom解码器输出YUV缓冲器受干扰

时间:2014-09-24 17:44:14

标签: android video-processing decoder stagefright

我正在尝试从HD Live Stream获取图像。获取OMX解码器YUV流并将它们转换为JPG。 JPEG完全受到干扰。尝试了一些小组的建议,但没有工作。 我的分辨率是320x240。

对于配置的320 * 240分辨率,我将得到缓冲区长度为(386 * 256 * 1.5)。我没有得到如何获得这个新的宽度和高度信息。

我在Java中使用JPG转换代码,使用OMXCodec是Native。请帮帮我。

    final int frameSize = width * height;
    final int qFrameSize = frameSize/4;
    int padding = 0;/*(width*height + 2047) & ~2047;

    if ((width % 32) != 0) {
        padding = (width*height) % 1024;
    } else {
        padding = (width*height) % 2048;
    }

    System.arraycopy(input, 0, output, 0, frameSize); // Y

    for (int i = 0; i < qFrameSize; i++) {
        output[frameSize + i*2 + padding] = input[frameSize + i + qFrameSize ]; // Cb (U)
        output[frameSize + i*2 + 1 + padding] = input[frameSize + i ]; // Cr (V)
    }      
    return ;
}
谢谢你, Raghu

1 个答案:

答案 0 :(得分:0)

QCom视频解码器的输出通常是特定的自定义颜色格式,通常称为平铺格式。请参考这些问题,这些问题有关于如何将数据转换为更清晰的框架的更多输入

QOMX_COLOR_FormatYUV420PackedSemiPlanar64x32Tile2m8ka converter

QOMX_COLOR_FormatYUV420PackedSemiPlanar64x32Tile2m8ka color format