15 februarie 2012 12:15
We are testing an in-house H264 encoder/decoder for compliance against various decoders and are having the following problem with the MS H.264 decoder that comes stock with Windows 7.
When constructing the following graph:
The rendered video contains artifacts that build up over time until the next IDR-frame appears. The video looks almost "grainy" for lack of a better description.
However the dumped .264 file
plays perfectly even though its the exact same video.
After some further tests, we found that the artifacts seem to appear when encoding and decoding on the fly (i.e. in the same graph). The more CPU intensive the encoding process is, the worse the decoded video. Encoded 264 data read from file decodes perfectly. It seems almost as if the MS decoder throws away bits of the video if the data arrives late (later than expected).
Can anyone confirm or shed some light on this behaviour of the MS H.264 decoder?
FYI the video decodes fine with the joint model decoder (version 18) and *seems* to be compliant.
18 februarie 2012 17:45Other MS decoders for MS-MPEG4 and WMV dynamically used to raise and lower the decoding accuracy and post-processing quality to try and keep up with real time. It is quite likely the H.264 decoder does the same, after all it is designed for playback, not accurate video editing.
- Marcat ca răspuns de Ralf G 13 martie 2012 18:07
13 martie 2012 18:07Thanks for your response Alessandro, even though I was kind of hoping for a different one. IMO such degradation of the video during playback just doesn't make sense, especially since the decoding is a lot less processor intensive. At the very least I would have hoped for a configuration option (whether one wants to degrade the quality in that manner) since the desired behavior is often specific to the use-case.
22 martie 2012 05:11The MS decoder is designed for the only one use case it is provided for, that is real-time video playback. In this use case, adaptive decoding and low priority are necessary. It would be nice if MS provided a general configurable decoder, but they don't since it does not make sense for their product. If you want a generic decoder that you can bend to your will, you need an open source or commercial one.