[mythtvnz] CPU required for Freeview HD

Mark Kendall markk at kc.net.nz
Wed Aug 20 22:33:23 BST 2008


Graeme, any chance of getting your Leadtek fix source (and also getting
them put into 0.21 fixes) as I have the same problem - guess I'll be
trying a compile of Myth for the first time :-) 

For what it's worth, I got my  E6600 with HVR3000 working for the first
time on DVB-T the other night (thanks Paul), Sports Extra looked good,
TV3 was very jerky but I haven't tried hard to see if I can do anything
about this as I've been having lots of 'fun' with video and my Asus
p5e-v using Intrepid.

Mark


On Thu, 2008-08-21 at 02:17 +1200, Robert (mythTV) wrote:

> Graeme Woollett wrote:
>  > Is there _anyone_ on this list that is able to watch TV3 1080i  with 
> no stuttering and using software de-interlacing, if so what CPU do you have?
> 
> I've just built up a (cheaper) mythTV box for myself which is proving 
> more than adequate with only a few caveats:
> 
> Build Spec:
> - Silverstone Grandia GD02B Black mATX Case
> - Abit I-N73HD nVidia 630i Motherboard (onboard nVidia 7100, HDMI & 
> SPDIF Optical)
> - Intel Core 2 Duo E7200 Dual Core 3MB L2 2.53GHz
> - 2Gb Generic RAM (Single Stick)
> - Nova-T 500 PCI Dual DVB-T Tuner (Using the remote for mythTV control)
> - Leadtek Winfast 2000XP Deluxe (Analog Tuner - for Prime)
> - 2 x Western Digital 1TB SATA 7200rpm
> - ASUS LightScribe DVD R/W
> - Logitech Quickcam, USB Multi-Card Reader, Wireless Keyboard, Mouse, etc.
> 
> I'm able to watch TV3 (any channel) without any stuttering, and with no 
> real issues ... although, I am cheating a bit while doing this.
> 
> I'm using Paul's source, compiled under Mythbuntu 8.04, 32-Bit, and have 
> added a few patches of my own into it (from v4l-dvb, and ffmpeg) to try 
> to fix some issues, and to try and improve the stability. No luck as 
> yet. I believe the crashing is due to ffmpeg/h264 issues, or as outlined 
> AC3 audio issues, and not due to mythTV itself.
> 
> Also, I've updated mythTV to handle my Leadtek when using the latest 
> v4l-dvb, as otherwise I just get a green screen due to the video not 
> being initialized. The latest v4l-dvb supports the Quickcam I have, and 
> the ffmpeg patches are to try and keep up with the trunk changes/patches 
> to see if it helps - not much luck to date.
> 
> While I'm also still experiencing random crashes on TV1/TV3, and 
> occasionally on other channels, I can watch TV3 using Bob (2x) without 
> issue.
> 
> 
> CPU Load for me is around 50% - 80% on a single core, depending on 
> source/content/channel. I do not ever have the CPU pegged with this setup.
> 
> 
> Paul wrote:
>  > I might also look at adding a setting do disable the loop_filter 
> which should make border-line machines capable.
> 
> (P.S> Thanks Paul for all your hard work & shenanigans!)
> 
> The 'tricks' I've employed to get this to work are adjusting the 
> loop_filter setting, and picking the best de-interlacer for the 
> resolution/source required.
> 
> Taking the idea from Mike Russel a bit further I did the following:
> 
> 
> libs/libmythtv/avformatdecoder.cpp
> 
>      video_codec_id = kCodec_MPEG2; // default to MPEG2
>      }
> 
> +    if (CODEC_ID_H264 == enc->codec_id)
> +    {
> +        if (height > 720)
> +        {
> +            VERBOSE(VB_IMPORTANT, LOC << "Loop Filter set to discard 
> all except Key Frames [" << width << "," << height << "]");
> +            enc->skip_loop_filter = AVDISCARD_NONKEY;
> +        }
> +        else if (height > 576)
> +        {
> +            VERBOSE(VB_IMPORTANT, LOC << "Loop Filter set to discard 
> all Bi-directional Frames [" << width << "," << height << "]");
> +            enc->skip_loop_filter = AVDISCARD_BIDIR;
> +        }
> +        else
> +        {
> +            VERBOSE(VB_IMPORTANT, LOC << "Loop Filter set to default 
> (discard Zero Frames) [" << width << "," << height << "]");
> +            enc->skip_loop_filter = AVDISCARD_DEFAULT;
> +        }
> +    }
> 
>       if (enc->codec)
>       {
> 
> 
> While this is a real HACK, in this way the degree of skipping set in the 
> loop filter is dynamically controlled based on the (presumed) load which 
> would come from the TV Channels.
> 
> For TV3 @ 1080i = 1920x1088 - this turns off the loop filter (drop as 
> much as possible)
> For all 720p channels, it turns off the Bi-Directional Frames (enough 
> CPU load dropped)
> For all 576i channels, it leaves the loop filter fully enabled (best 
> quality)
> 
> Also, for the TV Playback profile, I've specified the following (in a 
> new 'Freeview' setting):
> 
> ALL: standard, 2 CPUs, xv-blit, softblend, no filters
>     == 720 x 576, Yadif (2x) / Linear Blend (for 576i)
>     > 1280 x 720, Bob (2x) / Linear Blend (for 1080i)
>     > 0 x 0, None / None (for 720p, and my Analog Card)
> 
> For the Analog Card, I also 'cheat' again and do the following:
>     Recording Profile -> Software Encoder -> Live TV
>     - Capture at 768 x 576, High Quality, MPEG 4, 3200 kbps, High 
> Quality, MP3, 48kHz
> 
> Then for each channel on the Analog Card, I add in a Video Filter: 
> (depending on noise)
>     - linearblend,denoise3d
>     - linearblend,denoise3d=12
> 
> This has the effect of de-interlacing and de-noising the analog channels 
> BEFORE being encoded by the MPEG4 encoder, which actually results in a 
> much lower CPU load for analog recording, much better recordings as a 
> result, and provides a resultant resolution which falls into the '0 x 0' 
> category above, thereby not running the de-interlacing twice, and only 
> applying the de-noising filtering on the analog channels as required.
> 
> 
> In this way I get this as a result:
> 
> 576i Analog = TV -> linearblend -> denoise3d -> MPEG4/MP3 HQ -> 768 x 
> 576 (square pixels)
> 576i Digital = H.264 -> Yadif (2x) -> 720 x 576
> 720p Digital = H.264 -> 1280 x 720 (with Bi-Dir Loop Filtering Off)
> 1080i Digital = H.264 -> Bob (2x) -> 1920 x 1088 (with no Loop Filtering)
> 
> CPU Load for any channel is now 'mitigated' to always be well within the 
> single core decoding limits. Where there is more data (and more display 
> quality), the reduction in CPU load for the removed loop filtering is 
> made up for in the resolution being displayed.
> 
> Works for me ... :-)
> 
> 
> Oh, and if you need analog card support and want to use the latest 
> v4l-dvb git or the pre-built v4l-dvb from Martin Pitt you'll need the 
> following:
> 
> /libs/libmythtv/NuppelVideoRecorder.cpp
> 
> -    if (driver == "cx8800" || driver == "go7007" || driver == "em28xx")
> +   if (driver == "cx8800" || driver == "go7007" || driver == "em28xx" 
> || driver == "bttv")
> 
> Or, (in theory) you could comment out the line entirely ... but not 100% 
> sure about that.
> 
> 
> One last thing ... To ensure that I don't have CPU throttling issues 
> (since I've noticed the load bouncing between cores sometimes), and this 
> seems to cause some jitter as cores 'speed up' to try and finish 
> decoding the frame. I have therefore adjusted the power manager as follows:
> 
> /etc/defaults/powernowd
> OPTIONS="-q -l 10 -u 20"
> 
> This sets the upper bound for frequency up-shift to 20% and the lower 
> bound down-shift to 10%. So, basically if your machine ever goes above 
> 20% (i.e. when playing mythTV), it'll sit at full-speed, and grind 
> through everything regardless - for both cores. Once you return to idle 
> though, the CPU still returns to lower power state, and idles nicely and 
> cooler.
> 
> 
> Whew ... enough typing for tonight ...
> 
> -- Robert.
> 
> 
> _______________________________________________
> mythtvnz mailing list
> mythtvnz at lists.linuxnut.co.nz
> http://lists.ourshack.com/mailman/listinfo/mythtvnz
> Archives http://www.gossamer-threads.com/lists/mythtv/mythtvnz/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ourshack.com/pipermail/mythtvnz/attachments/20080821/efb7cfbc/attachment-0001.htm 


More information about the mythtvnz mailing list