Difference between revisions of "Playback profiles"

From MythTV Official Wiki
Jump to: navigation, search
Line 292: Line 292:
  
 
The solution of course is to ensure that the secondary deinterlacer is one which does not process more than two fields of video - namely 'onefield', 'discard' etc - or just leave the secondary deinterlacer preference as its default value.
 
The solution of course is to ensure that the secondary deinterlacer is one which does not process more than two fields of video - namely 'onefield', 'discard' etc - or just leave the secondary deinterlacer preference as its default value.
 +
 +
=== Comparing deinterlacers ===
 +
 +
There is a python script available for [[comparing deinterlacers]].
 +
 
[[Category:HOWTO]]
 
[[Category:HOWTO]]

Revision as of 01:19, 9 June 2010

Playback profiles are a way for MythTV to set individual playback settings for various types of media through the internal media player.

Six "default" Playback Profile Groups are automatically available in MythTV. These profile groups have the names Slim, Normal, High Quality, CPU--, CPU+, and CPU++. While you may edit these default profile groups, generally it's better to think of them purely as examples and either use them without modification or create your own playback profile group if you wish to edit and modify settings. Doing so will help to prevent miscommunications when describing your configuration, for example when asking for help or when helping others. Creating your own playback profile group also has the benefit of allowing you to start with a simple configuration (i.e. if rez > 0 0 -> ffmpeg & XVideo) and experiment by changing items (OSD renderer, OSD fade, deinterlacers, ...) individually and seeing how the change affects playback quality and performance. Then, as you determine how the settings affect your system, you can add complexity to get exactly the behavior you want for each type of video you use.

If you have not yet modified your playback profile configuration, the "Normal" playback profile group will be selected by default. To use a profile group that is similar to the software-rendered (no XvMC/no PVR-350 decoder) settings in versions before 0.21, choose "Slim." To use a profile group that is similar to the "accelerated" (XvMC) settings in versions before 0.21, choose "CPU--."

Each playback profile group consists of multiple profiles that are applied according to priority and match criteria (currently matching the recording's source resolution to some specified resolution). The profiles will be evaluated in order of priority, then by matching resolutions, but will only be used if the decoder is supported on the current hardware/configuration. In other words, if you have ivtv specified as the decoder, but don't have a PVR-350 configured, the ivtv profile will be skipped in favor of the next matching profile. Likewise, XvMC only supports MPEG-2 streams, so if you wish to use XvMC profiles, they should be higher priority than Xv profiles (which can be used with both MPEG-2 and MPEG-4), so MPEG-4 recordings will fail through the XvMC proflies but MPEG-2 streams will be caught by the higher priority XvMC profile.

Available Settings

What options you have for each setting is defined by your configuration options as well as which development packages you have installed on your computer. The available settings are briefly as follows:

Resolution
These settings define the source resolutions for which this profile will be applied.
Decoder
This defines what library MythTV will use to decode the video, be it software (nuppeldecoder, ffmpeg, libmpeg2), or hardware assisted (ivtv/pvr350, xvmc, mac, via-xvmc).
Video Renderer
This controls how the video is actually drawn to the screen. If you choose a renderer that's not supported by the current hardware/software configuration, MythTV will fall back to a working renderer.
OSD Renderer
This defines how the On-Screen Display is overlaid on the video. If you choose a renderer that's not supported by the current hardware/software configuration, MythTV will fall back to a working renderer.
OSD Fade
This specifies whether the OSD fades away or simply vanishes when it times out.
Deinterlacer
This specifies the method used to deinterlace interlaced video for display.
Secondary Deinterlacer
This specifies the deinterlacer used if the primary deinterlacer cannot be used. For example, if the framerate is too slow for double-framerate deinterlacers.
Filters
This specifies the filters to apply.

Default profile groups

Note: If you manage to muck up your playback profile groups and want the defaults back: First, copy down information you want to "save" from your current Playback Profile Group configuration (unless you want to just start over). Then, start deleting all the Playback Profile Groups. Go to the "Delete" button next to "Current Video Playback Profile" and hit it until there's no name left in the drop-down box next to "Current Video Playback Profile" (it should be blank). At this point, the Playback Profile Entries may look messed up (there may be some seemingly random number of them that may or may not be filled out), but don't worry about that. Then, select the Next button to "save" your settings. Finally, go back through TV Setting->Playback until you get to the "Playback Profiles (3/9)" page, where you'll see all the defaults. Then, add a new playback profile group and edit to your content.


High Quality default settings

High Quality is a profile group designed for machines capable of software rendering with enough extra resources to handle processor-intensive deinterlacing for SDTV resolutions. If the display is running at twice the frame rate of the video for SDTV resolutions, a very high quality deinterlacer is used.

High Quality Profile 1 Profile 2 Profile 3 Profile 4
Description Good deinterlacer for 1080i High quality deint for (noisier) SDTV Good deinterlacer for 1080i High quality deint for (noisier) SDTV
Resolution >= 1920 1080 > 0 0 >= 1920 1080 > 0 0
Decoder ffmpeg ffmpeg ffmpeg ffmpeg
Video Renderer xv-blit xv-blit quartz-blit quartz-blit
OSD Renderer softblend softblend softblend softblend
OSD Fade On On On On
Deinterlacer linearblend yadifdoubleprocessdeint linearblend yadifdoubleprocessdeint
Secondary Deinterlacer linearblend yadifdeint linearblend yadifdeint
Filters none none none none

Normal default settings

Normal is a profile group designed for machines capable of software rendering with enough extra resources to handle processor-intensive deinterlacing for SDTV resolutions. It is the default selected profile group. The deinterlacer used for SDTV requires fewer resources than the one used for the High Quality profile group and supports a fallback to a single-rate deinterlacer for displays running at less than twice the frame rate of the video. OSD Fade is disabled for high-definition.

Normal Profile 1 Profile 2 Profile 3 Profile 4
Description Good deinterlacer for HDTV High quality deint for (noisier) SDTV Good deinterlacer for HDTV High quality deint for (noisier) SDTV
Resolution >= 1280 720 > 0 0 >= 1280 720 > 0 0
Decoder ffmpeg ffmpeg ffmpeg ffmpeg
Video Renderer xv-blit xv-blit quartz-blit quartz-blit
OSD Renderer softblend softblend softblend softblend
OSD Fade Off On Off On
Deinterlacer linearblend greedyhdoubleprocessdeint linearblend greedyhdoubleprocessdeint
Secondary Deinterlacer linearblend kerneldeint linearblend kerneldeint
Filters none none none none

Slim default settings

Slim is a profile group designed for machines capable of software rendering. The deinterlacers used for all resolutions require few resources and do not require displays running at twice the frame rate of the video. OSD Fade is disabled for high-definition.

Slim Profile 1 Profile 2 Profile 3 Profile 4
Description Simple deinterlacer for HDTV Simple, slightly better, deinterlacer for SDTV Simple deinterlacer for HDTV Simple, slightly better, deinterlacer for SDTV
Resolution >= 1280 720 > 0 0 >= 1280 720 > 0 0
Decoder ffmpeg ffmpeg ffmpeg ffmpeg
Video Renderer xv-blit xv-blit quartz-blit quartz-blit
OSD Renderer softblend softblend softblend softblend
OSD Fade Off On Off On
Deinterlacer onefield linearblend onefield linearblend
Secondary Deinterlacer onefield linearblend onefield linearblend
Filters none none none none

CPU++ default settings

CPU++ is a profile group designed for systems capable of software rendering. It does not take advantage of XvMC for MPEG-2 decoding.

CPU ++ Profile 1 Profile 2
Description ffmpeg with xv-blit ffmpeg with quartz-blit
Resolution > 0 0 > 0 0
Decoder ffmpeg ffmpeg
Video Renderer xv-blit quartz-blit
OSD Renderer softblend softblend
OSD Fade On On
Deinterlacer bobdeint linearblend
Secondary Deinterlacer linearblend linearblend
Filters none none

CPU+ default settings

CPU+ is a profile group designed to offload some decoding from the CPU, taking advantage of XvMC for MPEG-2 decoding.

CPU + Profile 1 Profile 2 Profile 3 Profile 4 Profile 5
Description ffmpeg XvMC for high resolution libmpeg2 fallback for high resolution XvMC for mpeg2 libmpeg2 fallback for mpeg2
Resolution <= 720 576 and > 0 0 <= 1280 720 and > 720 576 <= 1280 720 and > 720 576 > 0 0 > 0 0
Decoder ffmpeg XvMC libmpeg2 XvMC libmpeg2
Video Renderer xv-blit xvmc-blit xv-blit xvmc-blit xv-blit
OSD Renderer softblend opengl softblend ia44blend chromakey
OSD Fade On On On Off Off
Deinterlacer bobdeint bobdeint bobdeint bobdeint bobdeint
Secondary Deinterlacer onefield onefield onefield onefield onefield
Filters none none none none none

CPU-- default settings

CPU-- is a profile group designed to offload as much as possible from the CPU, taking advantage of the PVR-350 decoder (if available) or XvMC.

CPU -- Profile 1 Profile 2 Profile 3 Profile 4 Profile 5
Description ivtv (PVR-350) if available XvMC for lower resolutions XvMC for higher resolutions XvMC for mpeg-2 libmpeg2 fallback
Resolution <= 720 576 and > 0 0 <= 720 576 and > 0 0 <= 1280 720 and > 720 576 > 0 0 > 0 0
Decoder ivtv XvMC XvMC XvMC libmpeg2
Video Renderer ivtv xvmc-blit xvmc-blit xvmc-blit xv-blit
OSD Renderer ivtv ia44blend ia44blend ia44blend chromakey
OSD Fade On Off Off Off Off
Deinterlacer none bobdeint bobdeint bobdeint none
Secondary Deinterlacer none onefield onefield onefield none
Filters none none none none none

A note about deinterlacers

Time stretching and time compression during playback affect the efficacy of some deinterlacers, namely those which process video from more than two fields (e.g. greedy or yadif). A symptom of using the 'wrong' deinterlacer for those playback methods is an apparent reduction in framerate coupled with lots of messages in a '-v playback' log similar to this:

NVP: Video is 7.02403 frames behind audio (too slow), dropping frame to catch up.

NVP: Video is 7.67555 frames behind audio (too slow), dropping frame to catch up.

NVP: Video is 7.92416 frames behind audio (too slow), dropping frame to catch up.

NVP: Video is 7.87064 frames behind audio (too slow), dropping frame to catch up.

The solution of course is to ensure that the secondary deinterlacer is one which does not process more than two fields of video - namely 'onefield', 'discard' etc - or just leave the secondary deinterlacer preference as its default value.

Comparing deinterlacers

There is a python script available for comparing deinterlacers.