[mythtv] Choppy performance on Mac Intel builds / scaling issue?
James Mitchell
mitchell at bruteforce.org
Sun Mar 26 08:12:39 UTC 2006
In contrast to some other reports of good 1080i performance
via the MMX enabled builds of 0.19, I'm experiencing issues
with both 1080i content, and scaled 480i content.
I'm getting very choppy performance on a 1.66GHz core duo
with the MMX enabled binaries linked from:
http://www.mythtv.org/wiki/index.php/Myth_on_Mac_x86
This applies to both 1080i content, and scaled 480i content,
which I found pretty strange. For comparison, the latest
trunk builds of VLC play these same files perfectly over
the network, so the machine is clearly capable.
Interestingly, if I turn off 'Scale Video as Necessary' in
TV Settings->Playback, then the problem goes away, at least
for the 480i content. There is a corresponding impact to
the profile information that Shark reports. The difference
appears to be the YUV422_UC_ToRGB32BitColorBGRA
QuickTimeComponents function, which is the primary consumer
of cycles in everything except the '480i, do not scale
video' case. Checking/unchecking the scale video setting
has no effect on the performance of 1080i playback.
The function in question is called out of libmythtv
VideoOutputQuartzView::Show(), and appears to be seperate
from the non-optimized yuv420-2vuy colorspace conversion
within the libmythtv code that some have mentioned.
Is anyone else seeing this effect? Any ideas on what might
be done to address it?
I've included some of the Shark output from different test
scenarios:
Shark Time Profile of Mythfrontend Intel MMX build playing
1080i content at 1920x1080 on core duo 1.66GHz mac mini
26.5% 26.5% QuickTimeComponents YUV422_UC_ToRGB32BitColorBGRA
18.7% 18.7% mythtv non_vec_yuv420_2vuy(unsigned
char*, unsigned char*, unsigned char*, unsigned char*,
int, int, int, int, int)
8.8% 8.8% mythavcodec mpeg_decode_mb
5.3% 5.3% mythavcodec ff_simple_idct_add_mmx
3.8% 3.8% mach_kernel ml_set_interrupts_enabled
3.4% 3.4% mythavcodec put_pixels16_xy2_mmx
3.3% 3.3% mythavcodec put_pixels16_mmx
2.9% 2.9% mythavcodec MPV_decode_mb
2.9% 2.9% mythavcodec put_pixels8_mmx
1.9% 1.9% mythavcodec ff_simple_idct_put_mmx
Shark Time Profile of Mythfrontend Intel MMX build playing
480i content at 1920x1080 (With TV Settings->Scale Video
as Necessary checked) on core duo 1.66GHz mac mini
11.9% 11.9% mach_kernel ml_set_interrupts_enabled
5.4% 5.4% mythtv non_vec_yuv420_2vuy(unsigned
char*, unsigned char*, unsigned char*,
unsigned char*, int, int, int, int, int)
3.2% 3.2% mythavcodec mpeg_decode_mb
2.5% 2.5% mythavcodec ff_mpa_synth_filter
2.1% 2.1% mythavcodec ff_simple_idct_add_mmx
1.3% 1.3% mythavcodec put_pixels8_mmx
1.0% 1.0% AudioToolbox Resampler2::ConvertAltivec(float*,
float*, unsigned long, int)
1.0% 1.0% mythavcodec put_pixels16_mmx
0.9% 0.9% mythavcodec MPV_decode_mb
0.7% 0.7% mythtv AvFormatDecoder::MpegPreProcessPkt(AVStream*,
AVPacket*)
0.6% 0.6% mythavcodec put_pixels16_xy2_mmx
0.5% 0.5% mythavcodec MPV_motion
Shark Time Profile of Mythfrontend Intel MMX build playing
480i content at 1920x1080 (With TV Settings->Scale Video
as Necessary unchecked) on core duo 1.66GHz mac mini
23.9% 23.9% mach_kernel ml_set_interrupts_enabled
9.5% 9.5% mythtv non_vec_yuv420_2vuy(unsigned char*,
unsigned char*, unsigned char*,
unsigned char*, int, int, int, int, int)
7.8% 7.8% commpage [libSystem.B.dylib] __memcpy
6.9% 6.9% mythavcodec mpeg_decode_mb
5.9% 5.9% mythavcodec ff_mpa_synth_filter
4.8% 4.8% mythavcodec ff_simple_idct_add_mmx
3.2% 3.2% AudioToolbox Resampler2::ConvertAltivec(float*,
float*, unsigned long, int)
2.1% 2.1% mythavcodec put_pixels8_mmx
1.8% 1.8% mythavcodec put_pixels16_mmx
1.8% 1.8% mythavcodec MPV_decode_mb
Here's the call tree for how mythtv reaches the expensive
Quicktime function:
27.2% QuickTimeComponents YUV422_UC_ToRGB32BitColorBGRA
0.0% QuickTimeComponents FinalGlueBeforeTheBlit
0.0% QuickTimeComponents PrepareForBlitThenDoBlit
0.0% QuickTimeComponents ScalingCodecComponentDispatch
0.0% CarbonCore CallComponentDispatch
0.0% QuickTimeComponents ImageCodecDrawBand
0.0% QuickTimeComponents BaseCodec_DecompressWorkFunction
0.0% CarbonCore InvokeComponentMPWorkFunctionUPP
0.0% QuickTimeComponents BaseCodec_DecompressCallBack_Common
0.0% QuickTimeComponents Base_CDBandDecompress
0.0% CarbonCore CallComponentFunctionCommon
0.0% QuickTimeComponents Base_CDComponentDispatch
0.0% QuickTimeComponents ScalingCodecComponentDispatch
0.0% QuickTimeComponents YUV422CodecComponentDispatch
0.0% CarbonCore CallComponentDispatch
0.0% QuickTime ImageCodecBandDecompress
0.0% QuickTime DoBandedDecompress
0.0% QuickTime ICMAction
0.0% QuickTime ICMDeviceLoop
0.0% QuickTime DecompressSequenceFrameWhen
0.0% mythtv VideoOutputQuartzView::Show()
Thanks,
James
More information about the mythtv-dev
mailing list