Nishanth Menon <menon.nisha...@gmail.com> writes:
>> messier<messie...@gmx.net> writes:
>>> Thanks, for the quick responce. If the OMAP3530 is capable to display
>>> 1080p, is it not a question of the used codec if it also can decode a
>>> video at that resolution?
>> The OMAP3530 can't decode 1080p video with any codec. Memory
>> bandwidth is a limiting factor as well as CPU speed.
> decode fps is a factor ofcourse
I guess what Mans is trying to
> explain here is the follows: even if the display is at 1080p
> resolution, there needs to be processing to be done to convert a 1080p
> wmv/avi file to the final RGB output (which is actually put in the
> display buffer).
The display hardware accepts YUV input directly, although only in
4:2:2 format, so the 4:2:0 format typically produced by decoders must
be converted.
Displaying a 1080p30 image in YUV 4:2:2 format (2 bytes per pixel)
requires 1920*1080*2*30 ~= 120MB/s to be read from framebuffer RAM.
Writing it requires the same bandwidth again. The 4:2:0 format (1.5
bytes per pixel) from the decoder must also be written (by the decoer)
and read (by the conversion code), which makes for another
1920*1080*1.5*30*2 ~= 180MB/s. In the decoder, most blocks are
predicted, so (at least) one more frame's worth of data must be read
to produce the new frame. Add the same amount again for the
residuals. All together, we end up with something like this:
\+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- width
> \+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- height
> > \+\-\-\-\-\-\-\-\-\-\- bytes per pixel
> > > \+\-\-\-\- frames per second
> > > >
1920 \* 1080 \* 2 \* 30 read by DSS
+ 1920 * 1080 * 2 * 30 write by format conversion
+ 1920 * 1080 * 1.5 * 30 read by format conversion
+ 1920 * 1080 * 1.5 * 30 write by decoder
+ 1920 * 1080 * 1.5 * 30 reference read (in decoder)
+ 1920 * 1080 * 1.5 * 30 residual read (in decoder)
+ 1920 * 1080 * 1.5 * 30 residual write (in decoder)
--------------------------
715392000 grand total
That's 700 MB/s of bandwidth just for moving pixel data around. That
is well over half the theoretical maximum memory bandwidth with
2*166MHz DDR RAM as found on the current Beagle. In reality such
rates are impossible to achieve due to access latencies etc.
Furthermore, a complex codec like H.264 can easily require twice that
memory bandwidth internally with multiple references, deblocking
filters, etc.
Considering that the CPU will spend a lot of time processing the data,
not only reading and writing pixels, it is easy to see that 1080p
video on the current Beagle is impossible no matter what.
> if you have a 30fps video and you dont render all 30 fps at the
> right time, you start seeing missing frames/lagging frame etc.. not
> a very pretty sight ;).. now if all you want to do is 1 frame per
> second, mebbe you could do it, except it makes no practical sense in
> a real world scenario.. in fact you could in theory do a "1080p"
> decode with a z80 or a 8086 and do 1 frame in x number of mins or so
> even.. but does it really matter other than being a curio?
Yes, any size video can be decoded on anything, given enough time. I
assumed we were talking about real-time playback.
IIRC, the maxmum pixel clock rate is 72MHz. Even if decoding speed can
reach
30fps by assistance of DSP module, the display rate can not.