WICConvertBitmapSource()抛出GUID_WICPixelFormat16bppCbCr的错误

时间:2015-03-14 04:29:58

标签: c++ image wic

我需要将rgb转换为YCBCR像素格式。我使用了WICConvertBitmapSource()。我的源像素格式为GUID_WICPixelFormat24bppBGR。我希望将其转换为GUID_WICPixelFormat16bppCbCr

当我尝试将其传递给函数时,它将HRESULT返回为0x88982F50。 如果我通过GUID_WICPixelFormat32bppBGRA,则函数不会返回错误

我的问题是

  1. 为什么我的转换失败
  2. 我应该如何将RGB转换为YCbCr 正确

  3. 以及0x88982F50实际上意味着什么

  4. 这就是我的尝试。

    int mwic_bitmap_converter 
    (
    REFWICPixelFormatGUID dstPixelFormt,    /* [in] Pixel format to be converted */
    IWICBitmapSource* piBitmapSource,       /* [in] Image Data */
    IWICBitmapSource** ppiBitmapDst         /* [out]converted image data */
    )
    {
        WICPixelFormatGUID srcPixelFormat = { 0 };  /* Pixel format of the source */
        UINT iWidth = 0, iHeight = 0;               /* Size of the source */
        UINT cbStride;                              /* Stride of the bitmap */
        UINT cbBufferSize;                          /* Size of the buffer */
        float* pixels;                              /* Pixel buffer */
    
        piBitmapSource->GetSize(&iWidth,&iHeight);
        piBitmapSource->GetPixelFormat(&srcPixelFormat);
    
        if (!IsEqualGUID(srcPixelFormat, dstPixelFormt))
        {
            //this line gives the error
            hr = WICConvertBitmapSource(dstPixelFormt, piBitmapSource, ppiBitmapDst);
        }
     .
     .
     .
     .
     .
    }
    

0 个答案:

没有答案