Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > 3c71a4be7c987a051d874ef206f74887 > files > 139

kdetv-0.8.9-13.fc12.i686.rpm

<chapter id="architecture">
<title>Architecture</title>
<para>
&kdetv; uses a plugin architecture to be portable and flexible. There are several plugin 
types, &eg; video input, on-screen-display, mixers, and image filters. When you 
start &kdetv; for the first time, go through the configuration dialog to select the 
plugins you need for your hardware. Most importantly, you should be aware which video 
plugin you are using to avoid being unsatisfied with &kdetv;'s performance.
Read the sections about the video plugins for details.
</para>

<sect1 id="device_names">
<title>Video Device Names</title>
<para>
On most &linux; systems, you will notice two kinds of device names in the device list:
<itemizedlist>

<listitem>
<para><guimenuitem>XVideo: video4linux (port &lt;some_number&gt;)</guimenuitem></para>
<para>
These are the devices provided by the &xvideo; plugin. For more information about this
plugin's capabilities, refer to <link linkend="xvideo_plugin">&xvideo; Plugin</link>.
</para>
</listitem>

<listitem>
<para><guimenuitem>Video4Linux: &lt;Your video card's name&gt;</guimenuitem></para>
<para>
These are the devices provided by the &video4linux; plugin. For more information about this
plugin's capabilities, refer to <link linkend="v4l_plugin">&video4linux; Plugin</link>.
</para>
</listitem>

<listitem>
<para><guimenuitem>Video4Linux2: &lt;Your video card's name&gt;</guimenuitem></para>
<para>
These are the devices provided by the &video4linux2; plugin. For more information about this
plugin's capabilities, refer to <link linkend="v4l2_plugin">&video4linux2; Plugin</link>.
</para>
</listitem>

</itemizedlist>
</para>
</sect1>

<sect1 id="xvideo_plugin">
<title>&xvideo; Plugin</title>
<para>To find out whether you are using a &xvideo; plugin device, look here:
<link linkend="device_names">Video Device Names</link>.</para>
<sect2>
<title>How does it work?</title>
<para>
The plugin uses the X-Server to display video. It cooperates with an X-Server module that provides
video playback (the <quote>&v4l;</quote> module, a &video4linux; to &xvideo; bridge). The &v4l; 
bridge provides very <hardware>CPU</hardware> efficient video playback because the video 
image is directly copied from the grabber card into the video memory. On most modern 
hardware, the graphics card will scale the image to the desired size. 
Some hardware even deinterlaces the image; the author of these lines uses 
a Radeon 9500 card with the open-source &xfree; drivers, this combination 
provides deinterlacing. Since the &v4l; bridge works in on the &xfree; server 
side, it can provide overlay video display without corrupting the
screen, as opposed to the &video4linux; plugin overlay mode.
</para>
</sect2>

<sect2>
<title>What features does it provide?</title>
<para>
<itemizedlist>
<listitem><para>Low <hardware>CPU</hardware> usage.</para></listitem>
<listitem><para>Depending on the hardware, a quite good picture quality.</para></listitem>
</itemizedlist>
</para>
</sect2>

<sect2>
<title>What features does it <emphasis>not</emphasis> provide? Why?</title>
<para>
<itemizedlist>
<listitem><para>Image filtering. The images are directly transferred to the graphics card,
there is no possibility to manipulate them in between.</para></listitem>
<listitem><para>Snapshots. Reason: see above.</para></listitem>
<listitem><para>Overscan. Reason: see above.</para></listitem>
<listitem><para>Audio mode selection. This feature is not exposed by the &xvideo;
 &xfree; interface.</para></listitem>
<listitem><para>Channel scanning without having the &vbi; decoder running. The feature to determine
 signal strength is not exposed by the &xvideo; &xfree; interface.</para></listitem>
<listitem><para>Image scaling on some very old hardware (&eg; NVidia Riva 128).</para></listitem>
<listitem><para>Can only provide access to the most important picture controls since
 the &xvideo; API does not expose the others.</para></listitem>
</itemizedlist>
</para>
</sect2>
</sect1>


<sect1 id="v4l_plugin">
<title>&video4linux; Plugin</title>
<para>To find out whether you are using a &video4linux; plugin device, look here:
<link linkend="device_names">Video Device Names</link>.</para>

<para>This plugin has two operation modes:</para>

<sect2>
<title>Overlay</title>
<para>
It works in Overlay mode when you check the <guimenuitem>Prefer overlay if possible</guimenuitem> checkbox.
In this mode, the TV image is directly transferred into the graphics card. Since the video window can
only be updated <emphasis>after</emphasis> it has been moved or resized (&kdetv; is an &xfree; client) 
you will notice display corruption and heavy flicker whenever you move or resize the window. This is 
necessary to repaint the desktop regions that were corrupted by the video stream. This mode uses almost 
no <hardware>CPU</hardware> resources, but should only be used as a fallback if nothing else works.
</para>

<sect3>
<title>What features does it provide?</title>
<para>
<itemizedlist>
<listitem><para>Low <hardware>CPU</hardware> usage.</para></listitem>
<listitem><para>Snapshots.</para></listitem>
<listitem><para>Audio mode selection.</para></listitem>
<listitem><para>Channel scanning without having the &vbi; decoder running.</para></listitem>
</itemizedlist>
</para>
</sect3>

<sect3>
<title>What features does it <emphasis>not</emphasis> provide? Why?</title>
<para>
<itemizedlist>
<listitem><para>Image filtering; the images are directly transferred to the graphics card,
there is no possibility to manipulate them in between.</para></listitem>
<listitem><para>Overscan. Reason: see above.</para></listitem>
<listitem><para>Image scaling. Most TV hardware (<hardware>bt8X8 chips</hardware>) 
does not support it.</para></listitem>
<listitem><para>Can only provide access to the most important picture controls since
 the &v4l1; API does not expose the others.</para></listitem>
</itemizedlist>
</para>
</sect3>
</sect2>

<sect2>
<title>Grab and Display</title>
<para>
This mode is active when the <guimenuitem>Prefer overlay if possible</guimenuitem> checkbox is 
<emphasis>not</emphasis> checked. An image is grabbed from the TV card and stored in a local buffer. 
This buffer can be manipulated in arbitrary ways (deinterlacing, overscan, other filters) and is then 
being displayed using different methods (see below). This is the most flexible way, but also the most
<hardware>CPU</hardware> intensive way &kdetv; offers.
</para>

<sect3>
<title>Display modes</title>

<sect4><title>&xvideo; (with or without shared memory)</title>
<para>
The image is handed over to the graphics card in &yuv422; format. Depending on the driver,
the graphics card or the <hardware>CPU</hardware> scale, the image is transformed to <acronym>RGB</acronym> with the display's color
depth and displayed. This is the fastest and most flexible way &kdetv; provides.
It is strongly recommended that you use this mode since it is the only mode that exposes
all of &kdetv;'s features. The usage of shared memory <emphasis>may</emphasis>
yield a small performance benefit.
</para>
</sect4>

<sect4>
<title>&opengl;</title>
<para>
The image is handed over to the graphics card in <acronym>RGB</acronym> format as a texture for a polygon.
If you have &opengl; hardware acceleration, the picture is scaled to the desired output
size by the graphics card, which causes a very low <hardware>CPU</hardware> usage. The drawback of this view mode
is that the &opengl; view mode seems to be unstable. Also, all good deinterlacers use the 
&yuv422; image format, which would cause additional conversions that would nullify the hardware
acceleration effect.
</para>
</sect4>

<sect4>
<title>X11 (with or without shared memory)</title>
<para>
The image is displayed using standard &xfree; mechanisms. This is 
<emphasis>very</emphasis> slow and does not provide image scaling. Use 
it as a fallback if nothing else works. Since the video image is grabbed 
in <acronym>RGB</acronym> format, all good deinterlacers will not work. 
The usage of shared memory <emphasis>may</emphasis> yield a small 
performance benefit.
</para>
</sect4>
</sect3>

<sect3>
<title>Framerate selection</title>
<para>
This plugin provides the option of selecting between full and half framerate. Full framerate is only
useful in conjunction with one of the <quote>good</quote> &dscaler; deinterlacers since they create
a new image from the two most recent fields. Full framerate provides 
<quote>smoother</quote> movement.
</para>
</sect3>

<sect3>
<title>What features does it provide (assuming &xvideo; display mode is used)?</title>
<para>
<itemizedlist>
<listitem><para>Best picture quality.</para></listitem>
<listitem><para>Image filtering in arbitrary ways, &eg; deinterlacing.</para></listitem>
<listitem><para>Snapshots.</para></listitem>
<listitem><para>Overscan.</para></listitem>
<listitem><para>Audio mode selection.</para></listitem>
<listitem><para>Channel scanning without having the &vbi; decoder running.</para></listitem>
</itemizedlist>
</para>
</sect3>

<sect3>
<title>What features does it <emphasis>not</emphasis> provide? Why?</title>
<para>
<itemizedlist>
<listitem><para>Can only provide access to the most important picture controls since
 the &v4l1; API does not expose the others.</para></listitem>
<listitem><para>There may be limitations due to the selected display mode. See above. When using &xvideo; mode, all &kdetv; features are
available.</para></listitem>
</itemizedlist>
</para>
</sect3>
</sect2>
</sect1>

<sect1 id="v4l2_plugin">
<title>&video4linux2; Plugin</title>
<para>To find out whether you are using a &video4linux2; plugin device, look here:
<link linkend="device_names">Video Device Names</link>.</para>

<para>This plugin only supports one operation mode: Grab and display. Overlay is not supported because of
the annoying flickering sideeffects that are impossible to work around when performing overlay under an X-Server.</para>
<para>
An image is grabbed from the TV card and stored in a local buffer. 
This buffer can be manipulated in arbitrary ways (deinterlacing, overscan, other filters) and is then 
being displayed on the screen.
</para>

<sect2>
<title>Display modes</title>

<sect3><title>&xvideo; (with or without shared memory)</title>
<para>
The image is handed over to the graphics card in &yuv422; format. Depending on the driver,
the graphics card or the <hardware>CPU</hardware> scale, the image is transformed to
<acronym>RGB</acronym> with the display's color depth and displayed. The usage of shared memory
<emphasis>may</emphasis> yield a small performance benefit.
</para>
</sect3>
</sect2>

<sect2>
<title>Framerate selection</title>
<para>
This plugin provides the option of selecting between full and half framerate. Full framerate is only
useful in conjunction with one of the <quote>good</quote> &dscaler; deinterlacers since they create
a new image from the two most recent fields. Full framerate provides 
<quote>smoother</quote> movement.
</para>
</sect2>

<sect2>
<title>What features does it provide?</title>
<para>
<itemizedlist>
<listitem><para>Best picture quality.</para></listitem>
<listitem><para>Image filtering in arbitrary ways, &eg; deinterlacing.</para></listitem>
<listitem><para>Snapshots (when the hardware supports <acronym>RGB</acronym> grabbing.</para></listitem>
<listitem><para>Overscan.</para></listitem>
<listitem><para>Audio mode selection.</para></listitem>
<listitem><para>Channel scanning without having the &vbi; decoder running.</para></listitem>
<listitem><para>Provides access to all TV hardware controls the hardware driver provides.</para></listitem>
</itemizedlist>
</para>
</sect2>
</sect1>

<sect1 id="mixers">
<title>Mixer Plugins</title>
<para>
&kdetv; currently ships two mixer plugins (&oss; and &alsa;). These should work on all platforms
&kdetv; supports. Read the <link linkend="faq">FAQ</link> when you have trouble adjusting
the volume.
</para>
</sect1>
</chapter>