[mythtv-users] Multi-threaded h.264 decoding in 0.21

Carl-Magnus Björkell carl-magnus.bjorkell at pp.inet.fi
Sat Oct 4 16:28:16 UTC 2008


Johan wrote:
> Hi,
> 
> I'm using the latest code from 0.21 fixes branch (r18536) and trying to
> get a smooth h.264 playback on a Intel Core2Duo 2140 1.6 GHz. I have set
> the "max CPU" setting in the display profile to 2 since it is a dual
> core and according to the mythfrontend.log file is 2 cores used for
> decoding in ffmpeg but when I'm watching a h.264 stream with the
> internal mythtv player (like live tv) I get prebuffer pauses and one of
> the threads in mythfrontend process is using 100% CPU according to ps
> but that means 100% on one core and it does not seem to spread the
> decoding on 2 cores properly. Is this not really supported in 0.21? Do I
> need to go the CoreAVC path to get this working? I have tried running
> both as a regular user and as root but there is no difference. The
> kernel is configured for SMP and I can see two CPU:s in /proc/cpuinfo.
> What is the problem?
> 
> 
> top -H output during h.264 playback (with jerky video):
>  
> top - 15:00:55 up 1 min,  1 user,  load average: 0.56, 0.16, 0.05
> Tasks: 102 total,   5 running,  97 sleeping,   0 stopped,   0 zombie
> Cpu(s): 52.1%us,  0.8%sy,  0.0%ni, 45.3%id,  0.0%wa,  0.5%hi,  1.3%si, 
> 0.0%st
> Mem:   1032168k total,   325024k used,   707144k free,     7252k buffers
> Swap:  1959920k total,        0k used,  1959920k free,   149960k cached
> 
>   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
>  3366 mythtv    20   0  334m 142m  68m R  100 14.1   0:18.65 mythfrontend
>  3275 root      RT -10 99.8m  88m  51m S    6  8.8   0:02.47 Xorg
>  3364 mythtv    20   0  334m 142m  68m R    1 14.1   0:00.28 mythfrontend
>  3368 mythtv    20   0  334m 142m  68m S    1 14.1   0:00.14 mythfrontend
>  3321 mythtv    20   0  4240 2048 1540 S    0  0.2   0:00.06 xscreensaver
>  3329 mythtv    20   0  334m 142m  68m S    0 14.1   0:01.69 mythfrontend
>  3367 mythtv    20   0  334m 142m  68m S    0 14.1   0:00.40 mythfrontend
>  3372 mythtv    20   0  334m 142m  68m R    0 14.1   0:00.08 mythfrontend
>  3359 root      20   0  2308 1112  852 R    0  0.1   0:00.04 top
>     1 root      20   0  2088  680  580 S    0  0.1   0:00.78 init
> 
> 
> lines from my mythfrontend.log file with -v all parameter:
> 
> 2008-10-04 14:26:18.611 AFD: Stream #0, has id 0x4100 codec id H264,
> type Video, bitrate 0 at 0x0xaa939df0
> 2008-10-04 14:26:18.614 VDP: Accepting: cmp(> 1000 700) dec(ffmpeg)
> cpus(2) rend(xv-blit) osd(softblend) osdfade(disabled) deint(none,none)
> filt()
> 2008-10-04 14:26:18.614 VDP: Accepting: cmp(> 0 0) dec(ffmpeg) cpus(2)
> rend(xv-blit) osd(softblend) osdfade(disabled)
> deint(linearblend,linearblend) filt()
> 2008-10-04 14:26:18.614 VDP: LoadBestPreferences(2048x2048, 0)
> 2008-10-04 14:26:18.614 VDP: LoadBestPreferences(2048x2048, 60)
> 2008-10-04 14:26:18.615 VDP: LoadBestPreferences(1280x720, 60)
> 2008-10-04 14:26:18.615 Using 2 CPUs for decoding
> 2008-10-04 14:26:18.618 VDP: Accepting: cmp(> 1000 700) dec(ffmpeg)
> cpus(2) rend(xv-blit) osd(softblend) osdfade(disabled) deint(none,none)
> filt()
> 2008-10-04 14:26:18.619 VDP: Accepting: cmp(> 0 0) dec(ffmpeg) cpus(2)
> rend(xv-blit) osd(softblend) osdfade(disabled)
> deint(linearblend,linearblend) filt()
> 
> 

Hey,

If there hasn't been a resent change in the decoding capabilities of
ffmpeg it still can't do multithreaded h264 decoding. And since ffmpeg
can't, mythtv, mplayer and all other projects that depend on it can't
either. (Please do tell if there actually HAS been a change in this area
:) )

-NRG
-- 
                 ||||||
                ( O  O )
   +--------oOOo------oOOo-------+
   |                             |
   |     Carl-Magnus Björkell    |
   |                             |
   +-----------------------------+


More information about the mythtv-users mailing list