I am using the ADV7184 back to back with an ADV7341, to add an RGB overlay over CVBS. I find that when pixels are isolated, with no adjacent pixels in the same line, they are considerably dimmer. This means that vertical lines appear dark and text is of inconsistent brightness.
I thought this may be the the encoder attempting to filter noise, so I experimented with various DNR gain levels and filters but I did not notice a difference.
Here is an example, note how the vertical and diagonal lines in the image are much darker than the horizontal lines.
Is there some way to avoid or mitigate this effect, and have all overlay pixels of the same brightness?
I am not the 100% best expert at the ADV7184 however I might be able to help.
The FB switching is implemented after any of the SDP filtering so changing the filtering should not have any effects.
Q1) What is the output format (RGB or YCbCr 422)? 8-bit or 24-bit?
Q2) What does the image look like if you used a 4 pixel wide overlay instead of just one pixel wide overlay?
One pixel wide images will have problems in CVBS due to interlacing and the compression with the 422 format.
From the previous discussions I am beginning to wonder if this problem is related to the ADV7341 filtering a YCbCr 422 signal versus clean RGB output.
Output format is YCbCr422 in 8 bit at 27MHz.
4 pixel wide overlay looks fine, as you can see in the attached image anything wider than 2 pixels is bright green but single pixels are dark green.
Here one overlay pixel is approximately 2 of the 720 pixels per line the decoder outputs. I am experimenting with different pixel clock rates but the overlay will be about half the normal video resolution (360 * 288).
The ADV7184 won't output RGB 444, is there any way to mitigate the compression with 422 format?
Different pixel clock rates will not solve the problem.
If you look at a 422 stream
The chroma for Y1 is (Cb0+Bb2)/2 , Cr1 and chroma for Y2 will be Cb2, (Cr1+Cr3)/2
So if the FB pin flips between Y1 and Y2 the chroma for Y1 and Y2 will be wrong.
When the 7341 gets this stream it will output the data directly from the stream with wrong chroma
How to get around this?
1) Output YCbCr in 444 mode, than you'll get a correct chroma for each Y. You can't do this over an 8-bit bus, need a 24-bit bus. Your system is 8-bits so this is not a solution for you.
2) Make all overlays at least 4 bits wide, so for a single pixel vertical line you would have have a 4x4 box all black except on vertical line of pixels. You'll still get the artifact problem at the leading or lagging black box edges but it is less noticeable.
If you remember real old CVBS TVs with close caption turned on, the text was always in a black box on the bottom of the screen. This hide the artifact problem.
What you are seeing is a 422 problem caused by compression than decompression. The problem goes away with 444 streams since there's no compression.
Thanks Guenter (And Poornima) for your assistance with this. I will implement your black box solution.
Most systems I've seen that do overlays outline text characters in black, I was intending to do the same for readability purposes but hopefully it will also help with this chroma issue.