Quote:
Quote:
There's no technical reason why it CAN'T be done, except if you are reading the Freescale website and making broad assumptions.
Here are some
excerpts of technical reasons, courtesy of my source, my brother Fernando Marcos
Your brother is wrong :)
The software used to decode is a bespoke (commercial, non-Linux) MPEG4 decoder. Linux may have some overhead not present here. It is technically possible to run this amount of data through the AltiVec unit at ~1GHz with a 533MHz bus speed, with reasonable performance (i.e. it plays and doesn't skip). So, let this not be proof that you can play Blu-Ray discs under Ubuntu, but that it is technically possible under a contrived benchmark. The video purpose is to test the DIU driver at that resolution.
Let's make some assumptions; at 1066MHz and a 533MHz frontside bus, with DDR2 memory with a decent latency, using AltiVec and a pre-set-up display to decode MPEG4 data directly to the screen - there is no overlay, only RGB output, converted on the fly by the MPEG4 decoder, which is entirely done in AltiVec.
Yes, it's possible. Easily possible. Your brother is being distracted by the details; the chip is far, far simpler than he makes out.
Also remember the DIU is *not* like typical PC AGP/PCI Express graphics engines; it does not rely on a PCI arbiter to grant it time to access the graphics RAM, it is just a DAC which spins over some memory areas, and an interface to the same RAM the CPU uses.
It is CPU local memory. Your display performance is directly dependant on the speed of the CPU writing values to local memory. There is *no* bottleneck for PCI transfers or expensive local-to-AGP blits or tiling. It does not blit or colour convert. It is at the mercy of the CPU, and in this benchmark - well, imagine you did a non-displaying benchmark of decode performance of a 1080p video on a command line. The speed will be the same. There's no difference in displaying the data or just filling a memory buffer. Are you saying a 533MHz 64-bit bus can't handle the bandwidth required?
The "official" MPC8610 specification is that the display integration unit (DIU from here in) tops out at 1280x1024. There is some technical reason behind this; the DIU actually runs at a quarter of the system bus clock rate, so this is actually your DAC speed.
Let's assume the DIU reads one pixel per DIU clock.
At a 533MHz bus speed, the DIU can run at 133MHz - which is more than enough for 1920x1080 video at 60Hz (it's actually 128MHz).
You can actually run the system bus at 400MHz, and at this speed, you can't even promise a 1280x1024@60Hz display because it would require 107MHz. Obviously there are bus speeds inbetween which make it possible. Freescale are being safe with their values.
We're doubtlessly going to run the chip at 533MHz internally, so yes, you can do 1080p (HDTV resolution) but;
* unfortunately
not 1920x1200 or 1920x1600 (common widescreen and 4:3 monitor resolutions)
* you COULD do 1600x1200@60Hz, 1600x1050@60Hz, myriad combinations inbetween to support most sub-24" monitors.
Quite how the unaccelerated DIU will fare at that resolution, is to be debated - AltiVec will help, here.
We're fairly confident we can decode and upscale 720p MPEG4 (not H.264) video to 1080p using AltiVec under Linux with all the overheads implied by running Linux. I am extremely confident the 1.3GHz MPC8610 model could decode 720p H.264 video on it's own (no filtering or scaling or clever tricks, just flat out decoding).
Decoding H.264 video and doing anything native resolution of 1080p might be a bit more of a chore, I will admit that. We have ideas to solve this, however.
As for your assertions about Microsoft; Windows DirectShow, the VMR9 renderer in RGB mode is an incredibly resource intensive thing with a lot of overhead. Windows is not architected for low-latency video and audio playback - they delayed Vista by 2 years to get this fixed, as an example. The Windows Media decoders are actually not as optimized as you might think - remember these specs were written when XP was young, and SSE3 did not exist.. :)
Apple's specs for playing back HD video on PPC Macs are
not so high - and even then, they are fairly conservative. You definitely do not need a 2.8GHz Pentium 4 to play 1280x720p H.264 content because my 1.7GHz Pentium M, Radeon 9200 laptop manages it just as well - using the ffdshow codec and not a commercially optimized one.
As for the Xbox decoding issue, Microsoft have already admitted their video codecs are not that optimized there. The Xenon CPU is also in-order execution and has the same memory access problems as the G5 and Cell - if it is not extremely linear, it incurs severe penalties which gives them far less performance than you might think.
I very vividly remember a test performed by Jacob Pan (ex-Freescale engineer) at the SNDF Dallas show in 2004. This was just after the Mac G5 was launched. He had a demo; a Sandpoint G4 board and a Mac G5. There was a benchmark button you could click, and both systems would perform the same memory accessing, MPEG decoding etc. benchmarks and show the results.
At the same CPU clock speed, even with the higher FSB speed of the G5, even with 64-bit addressing and tons of memory, the G5 lost every single benchmark - none of which were particularly contrived, they were valid EEMBC stuff, which showed that being able to randomly access memory in arbitrary patterns is important, and the G4 core excels at it.
In the November Xbox 360 update the changelog was littered with optimisations for video codecs and mentions of VMX. How many years have Microsoft been supporting video decoding on PowerPC? Not even one! The Xbox 360 has some way to go, and then they will have cracked the video decoding issues.