daala
daala copied to clipboard
chroma artifacts in moving gradients
Encoding a test video with a variety of -v settings using build 0.0-965-g23d3619 gave me a variety of artifacts that I haven't seen before. The main artifacts occurred during pans involving subtle gradients, mainly regions of sky. The other artifacts that I noticed that may be related is that chroma updates seem to lag behind luma updates by a frame and often leave an afterimage behind. Both artifacts disappear when only luma data is displayed.(e.g. in the analyzer) I have uploaded a copy of the .ogv file exhibiting the problem here: https://drive.google.com/file/d/0BxVoFy0Ro-f0a2g0OGZzRnFzaDA/view?usp=sharing Before/after screenshots exhibiting the chroma ghosting: https://drive.google.com/file/d/0BxVoFy0Ro-f0MURvX2FoY1d2TEU/view?usp=sharing https://drive.google.com/file/d/0BxVoFy0Ro-f0LUNmSWNrc2daa28/view?usp=sharing and one exhibiting the "stretch marks": https://drive.google.com/file/d/0BxVoFy0Ro-f0dnBhUmluZzgtcnM/view?usp=sharing this is the source file: https://drive.google.com/file/d/0BxVoFy0Ro-f0c251SHhDaTd1R1E/view?usp=sharing I ran these tests in arch linux using the following build flags: CFLAGS="-O0" CXXFLAGS="-O0"
So, the chroma ghosting is due to the lack of scenecuts, and coarse chroma quantization. The chroma is "close enough" that PVQ decides to reference and skip - however, it's clearly not close enough visually.
This would be masked with scene cut detection (and insertion of I frames based on that), though it's not the best solution as there is actually some inter-scene correlation. A better activity masking metric could also fix this - the perfectly flat piano had better have a low quantizer.
Refs #8 and #55