2

I'm writing a video DMO decoder and trying to return a bitmap to the WMP renderer for display ... but WMP displays it upside down!

This is the code :

HBITMAP*  hBmp = new HBITMAP();

int result;

m_pScrRenderer->CreateFrame(hBmp, &result);  ///This returns the HBITMAP handle.

BITMAP bmStruct;

memset(&bmStruct, 0, sizeof(BITMAP));

GetObject(*hBmp, sizeof(BITMAP), &bmStruct);  
int size = bmStruct.bmWidthBytes * bmStruct.bmHeight;
memcpy(pbOutData, bmStruct.bmBits, size); //PBoutData is WMP's renderer buffer.

This produces an upside down image. What should I change in this code?

Thank You!

Roey.

Roey
  • 391
  • 1
  • 8
  • 14

2 Answers2

1

HBITMAP scanlines are read upside-down, you'll need to go through your data a scanline at a time and reverse it.

I'm not aware of an easy way to do this.

zmbush
  • 2,790
  • 1
  • 17
  • 35
1

If you can change the parameters of the bitmap structure, you can give it a negative height to make the lines come out in top-down order.

Mark Ransom
  • 299,747
  • 42
  • 398
  • 622