The O2 has the vice engine. This was an architecture designed just before things like the Pentium got MMX and MIPS got MDMX. Instead of extra instructions on the main CPU, VICE is actually three completely seperate execution units that talk via a mapped region in main memory (not a big deal on the O2's UMA architecture). The three units are the MSP, BSP and a DMA engine. I'll talk more about the specifics of this architecture in future posts (time permitting). Additionally, two hardware versions of the VICE were released, DX and TRE with TRE being the most recent version.
This unit is used by two parts of Irix: the ImageVision library for accelerating 2D image operations and by dmedia for accelerating various image compression tasks. Specifically
Notably missing is MPEG2. Everything I've read on the net supports this, as well, the O2 can't do realtime MPEG-2 (please, correct me if I'm wrong about this assumption.) However, I was able to locate some internal documentation for the VICE engine and references to MPEG-2 decoding is littered through the documentation. MPEG2 decoding was definitely one of the design goals.
Furthermore, I find some compelling evidence of the ability to decode MPEG2 in 6.5.30m. Because the MSP and BSP are seperate executing units, Irix must keep object files around to run on those units.
The ImageVision MSP/BSP objects are found in
The dmedia objects are found in
So... at the bottom of the dmedia stack there is some solid evidence that Irix supports mpeg2 decoding, because there is code to run on the Vice.
But does the rest of Irix know how to decode mpeg2? I cobbled some C together from the dmedia manpages and examples to introspect the dmedia image converters (the image compression section of dmedia) to see what converters it knows about.
The output is bit conflicting (why is the dvc decoder listed with a "MPEG-2 Video"). I compiled this with the debug version of dmedia (export LD_LIBRARY_PATH=/usr/lib/debug) without any problems. But, the way I read the output is that, at least at the image compression level, there is support for hardware (DM_IC_SPEED=REALTIME) and software (DM_IC_SPEED=NONREALTIME) mpeg2 decoding. Now support for the compression scheme is only part (albeit a major one) of displaying mpeg2 on the screen. The next step is to learn more about dmMovie which supports the various container formats. Is there support for a mpeg2 container there?
I've attached a copy of the source of the tool to list the available imageconverters. If anyone else wants to run this on their O2, I'd be interested to see if there is any difference in versions of Irix (did 6.3 have dmedia?) I've become a bit obsessed by the VICE and I hope to keep updating this thread with more that I discover, especially about mpeg2.
This unit is used by two parts of Irix: the ImageVision library for accelerating 2D image operations and by dmedia for accelerating various image compression tasks. Specifically
Code: Select all
SGI versions 1, 2 and 3 (supported compression formats: uncompressed,
MVC1, MVC2, JPEG, RLE8, RLE24, RLE32)
Microsoft AVI (Audio Video Interleaved)
MPEG1 (ISO 11172) - read, play, and append only
Raw DV/DVCPro DIF files - read, play, and export only
Notably missing is MPEG2. Everything I've read on the net supports this, as well, the O2 can't do realtime MPEG-2 (please, correct me if I'm wrong about this assumption.) However, I was able to locate some internal documentation for the VICE engine and references to MPEG-2 decoding is littered through the documentation. MPEG2 decoding was definitely one of the design goals.
Furthermore, I find some compelling evidence of the ability to decode MPEG2 in 6.5.30m. Because the MSP and BSP are seperate executing units, Irix must keep object files around to run on those units.
The ImageVision MSP/BSP objects are found in
Code: Select all
/usr/gfx/ucode/CRM/vasm/
The dmedia objects are found in
Code: Select all
/var/arch/vicetre/
...
mpeg1dec.bex
mpeg1dec.mex
mpeg2dec.bex
mpeg2dec.mex
mpeg2dec_fld.bex
mpeg2dec_fld.mex
...
So... at the bottom of the dmedia stack there is some solid evidence that Irix supports mpeg2 decoding, because there is code to run on the Vice.
But does the rest of Irix know how to decode mpeg2? I cobbled some C together from the dmedia manpages and examples to introspect the dmedia image converters (the image compression section of dmedia) to see what converters it knows about.
Code: Select all
...
Contents of Parameter/Value List for IC 34:
DM_IMAGE_COMPRESSION=MPEG-2 Video
DM_IC_REVISION=0(int)
DM_IC_VERSION=1(int)
DM_IC_SPEED=NONREALTIME
DM_IC_CODE_DIRECTION=DECODE
DM_IC_ENGINE=The mpeg2 decoder
DM_IC_ID=mpg2
Contents of Parameter/Value List for IC 35:
DM_IMAGE_COMPRESSION=MPEG-2 Video
DM_IC_REVISION=0(int)
DM_IC_VERSION=0(int)
DM_IC_SPEED=REALTIME
DM_IC_CODE_DIRECTION=DECODE
DM_IC_ENGINE=Vice
DM_IC_ID=dvc
...
Contents of Parameter/Value List for IC 37:
DM_IMAGE_COMPRESSION=MPEG-2 Video
DM_IC_REVISION=0(int)
DM_IC_VERSION=2(int)
DM_IC_SPEED=REALTIME
DM_IC_CODE_DIRECTION=DECODE
DM_IC_ENGINE=Vice
DM_IC_ID=mpeg
...
The output is bit conflicting (why is the dvc decoder listed with a "MPEG-2 Video"). I compiled this with the debug version of dmedia (export LD_LIBRARY_PATH=/usr/lib/debug) without any problems. But, the way I read the output is that, at least at the image compression level, there is support for hardware (DM_IC_SPEED=REALTIME) and software (DM_IC_SPEED=NONREALTIME) mpeg2 decoding. Now support for the compression scheme is only part (albeit a major one) of displaying mpeg2 on the screen. The next step is to learn more about dmMovie which supports the various container formats. Is there support for a mpeg2 container there?
I've attached a copy of the source of the tool to list the available imageconverters. If anyone else wants to run this on their O2, I'd be interested to see if there is any difference in versions of Irix (did 6.3 have dmedia?) I've become a bit obsessed by the VICE and I hope to keep updating this thread with more that I discover, especially about mpeg2.