Hello:
I am using the TMS320DM6437. I am required to pass image data from the DSP to an LCD flat panel processor in RGB888 format. As a first step, I thought I would create/transmit a static buffer to the LCD driver (simple color bar, or white backdrop with vertical black line). Since I needed the DSP to transmit in RGB888 format, I figured the most intuitive thing to do would be to create an RGB888-formatted buffer - at least that was what I thought... The display that I am using is 400x240 pixels. My static buffer is 320 bytes x 240 bytes (padded to 32-byte boundary) - 300 bytes = 400 pixels in RGB888 format. Unfortunately, I cannot get all 400 bytes of each line to be transmitted. It appears to be only 2/3 of the line is getting sent (~266 pixels as opposed to all 400). Another oddity is that the pixel values are not consistent for each burst. In other words, I am using the black vertical line buffer for this test. I would expect the black pixels to land in the exact same spot for each line burst. However, the location of the black pixels changes from line burst to line burst. What gives? Our theory is that the OSD module requires a conversion from RGB888 to YUV422 before converting back to RGB888 for transmission, and resolution is lost in this conversion (from table 27 in the VPBE manual). Did I miss (or incorrectly set) a register?
I have spent some time, recently, becoming one with the VENC and OSD registers of VPBE. I think that I have good register values for all of my video signaling (H/VSPLS, H/VINT, H/VVALID, etc.), and for the most part, I think I have good register values for the window controls (VIDWIN0X/YP, VIDWIN0X/YL, etc.). I am pretty sure that I need to set VIDWIN0XL to 400. However, if I set it to 600, I get my 400 pixel transmission. Unfortunately, setting it to 600 does not make any sense to me; and it still doesn't solve the mystery of the changing position of the black pixels from line to line - as the location still is not consistent.
Thanks, in advance, for your help,
Brock