View Full Version : DGMPGDec decoding times/quality of different idct: results
M4ST3R
25th January 2010, 21:42
Just in case someone is interested I publish results of a test I did:
DGMPGDec 1.5.7
source: 1 gb vob
cpu: E8400 (mmx,sse,sse2,sse3,sse4.1)
avs file:
LoadPlugin("C:\Program Files\Video\AviSynth 2.5\plugins\DGDecode.dll")
MPEG2Source("d:\vid\bench\quality.d2v",idct=x)
Timings are measured with (a modified version of) avsutils
idct Time fps SSIM
1: 32-bit MMX 85.09 257 0.99955
2: 32-bit SSEMMX 82.13 266 0.99955
3: 32-bit SSE2MMX 76.75 285 0.99955
4: 64-bit Floating Point 120.03 182 1.00000
5: 64-bit IEEE-1180 Reference 280.09 78 1.00000
6: 32-bit SSEMMX (Skal) 82.14 266 0.99955
7: 32-bit Simple MMX (XviD) 90.45 242 0.99978
For the SSIM computation, idtc=5 is used as the reference.
Option 1,2,3 generate identical output.
Option 6 has the same SSIM value than option 1,2,3 but output is different.
Visually, all idcts are identical
poisondeathray
25th January 2010, 22:23
5: 64-bit IEEE-1180 Reference 280.0 978 1.00000
Is something wrong with fps column for this one? If it takes longer, shouldn't fps be lower? or am I reading this data incorrectly?
7ekno
25th January 2010, 23:41
What's default idct for MPEG2Source?!?
Is idct=4 quicker than idct=5?!?
Based on this, what will you be using?!?
Sulik
26th January 2010, 01:01
The 'best quality' iDCT for a decoder is the one that matches the closest with the one used in the encoder, so it's likely to be different for different streams. In practice, very few encoders actually use the double-precision reference iDCT.
If the encoder also used a MMX integer-based implementation, the SSIM results would be reversed (MMX implementations would get SSIM=1.00000 and floating point would get SSIM=0.99955)
M4ST3R
26th January 2010, 12:44
Is something wrong with fps column for this one? If it takes longer, shouldn't fps be lower? or am I reading this data incorrectly?
I fixed the table. I entered "280.0 978" instead of "280.09 78"
M4ST3R
26th January 2010, 12:51
What's default idct for MPEG2Source?!?default is 0. idct=0 sets value specified by DGIndex. If I remember correctly dgindex default idct is 6 (SSEMMX Skal)
Is idct=4 quicker than idct=5?!?
Yes. idct=5 is the reference idct so probably not optimised for speed. According to my test idct=4 generates identical output, being more than twice faster
Based on this, what will you be using?!?
If you want the highest quality (compared to the reference), idct=4
If you have SSE2 and don't care about invisible difference compared to the reference, idct=3
M4ST3R
26th January 2010, 12:58
The 'best quality' iDCT for a decoder is the one that matches the closest with the one used in the encoder, so it's likely to be different for different streams. In practice, very few encoders actually use the double-precision reference iDCT.
If the encoder also used a MMX integer-based implementation, the SSIM results would be reversed (MMX implementations would get SSIM=1.00000 and floating point would get SSIM=0.99955)
Thanks for the info.
Before I did the test, I already knew that SSIM values would be very similar, with no visible difference. I mainly did this for the speed.
By the way the results are more or less similar to what the doc says:
Qualitywise: IEEE-1180 Reference > 64-bit Floating Point > Simple MMX (XviD) > Remaining iDCTs.
Speedwise: SSE2/MMX and SSE/MMX (Skal) are usually the fastest. The IEEE-1180 Reference is easily the slowest.
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.