|
@@ -18,15 +18,16 @@ supported on some MPEG decoders made for DVD playback.
|
|
|
<section id="video_types">
|
|
|
<title>Video Data Types</title>
|
|
|
|
|
|
-<section id="video_format_t">
|
|
|
+<section id="video-format-t">
|
|
|
<title>video_format_t</title>
|
|
|
<para>The <emphasis role="tt">video_format_t</emphasis> data type defined by
|
|
|
</para>
|
|
|
<programlisting>
|
|
|
- typedef enum {
|
|
|
- VIDEO_FORMAT_4_3,
|
|
|
- VIDEO_FORMAT_16_9
|
|
|
- } video_format_t;
|
|
|
+typedef enum {
|
|
|
+ VIDEO_FORMAT_4_3, /⋆ Select 4:3 format ⋆/
|
|
|
+ VIDEO_FORMAT_16_9, /⋆ Select 16:9 format. ⋆/
|
|
|
+ VIDEO_FORMAT_221_1 /⋆ 2.21:1 ⋆/
|
|
|
+} video_format_t;
|
|
|
</programlisting>
|
|
|
<para>is used in the VIDEO_SET_FORMAT function (??) to tell the driver which aspect ratio
|
|
|
the output hardware (e.g. TV) has. It is also used in the data structures video_status
|
|
@@ -36,34 +37,36 @@ stream.
|
|
|
</para>
|
|
|
</section>
|
|
|
|
|
|
-<section id="video_display_format_t">
|
|
|
+<section id="video-display-format-t">
|
|
|
<title>video_display_format_t</title>
|
|
|
<para>In case the display format of the video stream and of the display hardware differ the
|
|
|
application has to specify how to handle the cropping of the picture. This can be done using
|
|
|
the VIDEO_SET_DISPLAY_FORMAT call (??) which accepts
|
|
|
</para>
|
|
|
<programlisting>
|
|
|
- typedef enum {
|
|
|
- VIDEO_PAN_SCAN,
|
|
|
- VIDEO_LETTER_BOX,
|
|
|
- VIDEO_CENTER_CUT_OUT
|
|
|
- } video_display_format_t;
|
|
|
+typedef enum {
|
|
|
+ VIDEO_PAN_SCAN, /⋆ use pan and scan format ⋆/
|
|
|
+ VIDEO_LETTER_BOX, /⋆ use letterbox format ⋆/
|
|
|
+ VIDEO_CENTER_CUT_OUT /⋆ use center cut out format ⋆/
|
|
|
+} video_displayformat_t;
|
|
|
</programlisting>
|
|
|
<para>as argument.
|
|
|
</para>
|
|
|
</section>
|
|
|
|
|
|
-<section id="video_stream_source">
|
|
|
+<section id="video-stream-source-t">
|
|
|
<title>video stream source</title>
|
|
|
<para>The video stream source is set through the VIDEO_SELECT_SOURCE call and can take
|
|
|
the following values, depending on whether we are replaying from an internal (demuxer) or
|
|
|
external (user write) source.
|
|
|
</para>
|
|
|
<programlisting>
|
|
|
- typedef enum {
|
|
|
- VIDEO_SOURCE_DEMUX,
|
|
|
- VIDEO_SOURCE_MEMORY
|
|
|
- } video_stream_source_t;
|
|
|
+typedef enum {
|
|
|
+ VIDEO_SOURCE_DEMUX, /⋆ Select the demux as the main source ⋆/
|
|
|
+ VIDEO_SOURCE_MEMORY /⋆ If this source is selected, the stream
|
|
|
+ comes from the user through the write
|
|
|
+ system call ⋆/
|
|
|
+} video_stream_source_t;
|
|
|
</programlisting>
|
|
|
<para>VIDEO_SOURCE_DEMUX selects the demultiplexer (fed either by the frontend or the
|
|
|
DVR device) as the source of the video stream. If VIDEO_SOURCE_MEMORY
|
|
@@ -72,49 +75,55 @@ call.
|
|
|
</para>
|
|
|
</section>
|
|
|
|
|
|
-<section id="video_play_state">
|
|
|
+<section id="video-play-state-t">
|
|
|
<title>video play state</title>
|
|
|
<para>The following values can be returned by the VIDEO_GET_STATUS call representing the
|
|
|
state of video playback.
|
|
|
</para>
|
|
|
<programlisting>
|
|
|
- typedef enum {
|
|
|
- VIDEO_STOPPED,
|
|
|
- VIDEO_PLAYING,
|
|
|
- VIDEO_FREEZED
|
|
|
- } video_play_state_t;
|
|
|
+typedef enum {
|
|
|
+ VIDEO_STOPPED, /⋆ Video is stopped ⋆/
|
|
|
+ VIDEO_PLAYING, /⋆ Video is currently playing ⋆/
|
|
|
+ VIDEO_FREEZED /⋆ Video is freezed ⋆/
|
|
|
+} video_play_state_t;
|
|
|
</programlisting>
|
|
|
</section>
|
|
|
|
|
|
-<section id="video_event">
|
|
|
+<section id="video-event">
|
|
|
<title>struct video_event</title>
|
|
|
<para>The following is the structure of a video event as it is returned by the VIDEO_GET_EVENT
|
|
|
call.
|
|
|
</para>
|
|
|
<programlisting>
|
|
|
- struct video_event {
|
|
|
- int32_t type;
|
|
|
- time_t timestamp;
|
|
|
- union {
|
|
|
- video_format_t video_format;
|
|
|
- } u;
|
|
|
- };
|
|
|
+struct video_event {
|
|
|
+ __s32 type;
|
|
|
+#define VIDEO_EVENT_SIZE_CHANGED 1
|
|
|
+#define VIDEO_EVENT_FRAME_RATE_CHANGED 2
|
|
|
+#define VIDEO_EVENT_DECODER_STOPPED 3
|
|
|
+#define VIDEO_EVENT_VSYNC 4
|
|
|
+ __kernel_time_t timestamp;
|
|
|
+ union {
|
|
|
+ video_size_t size;
|
|
|
+ unsigned int frame_rate; /⋆ in frames per 1000sec ⋆/
|
|
|
+ unsigned char vsync_field; /⋆ unknown/odd/even/progressive ⋆/
|
|
|
+ } u;
|
|
|
+};
|
|
|
</programlisting>
|
|
|
</section>
|
|
|
|
|
|
-<section id="video_status">
|
|
|
+<section id="video-status">
|
|
|
<title>struct video_status</title>
|
|
|
<para>The VIDEO_GET_STATUS call returns the following structure informing about various
|
|
|
states of the playback operation.
|
|
|
</para>
|
|
|
<programlisting>
|
|
|
- struct video_status {
|
|
|
- boolean video_blank;
|
|
|
- video_play_state_t play_state;
|
|
|
- video_stream_source_t stream_source;
|
|
|
- video_format_t video_format;
|
|
|
- video_displayformat_t display_format;
|
|
|
- };
|
|
|
+struct video_status {
|
|
|
+ int video_blank; /⋆ blank video on freeze? ⋆/
|
|
|
+ video_play_state_t play_state; /⋆ current state of playback ⋆/
|
|
|
+ video_stream_source_t stream_source; /⋆ current source (demux/memory) ⋆/
|
|
|
+ video_format_t video_format; /⋆ current aspect ratio of stream ⋆/
|
|
|
+ video_displayformat_t display_format;/⋆ selected cropping mode ⋆/
|
|
|
+};
|
|
|
</programlisting>
|
|
|
<para>If video_blank is set video will be blanked out if the channel is changed or if playback is
|
|
|
stopped. Otherwise, the last picture will be displayed. play_state indicates if the video is
|
|
@@ -127,17 +136,17 @@ device.
|
|
|
</para>
|
|
|
</section>
|
|
|
|
|
|
-<section id="video_still_picture">
|
|
|
+<section id="video-still-picture">
|
|
|
<title>struct video_still_picture</title>
|
|
|
<para>An I-frame displayed via the VIDEO_STILLPICTURE call is passed on within the
|
|
|
following structure.
|
|
|
</para>
|
|
|
<programlisting>
|
|
|
- /⋆ pointer to and size of a single iframe in memory ⋆/
|
|
|
- struct video_still_picture {
|
|
|
- char ⋆iFrame;
|
|
|
- int32_t size;
|
|
|
- };
|
|
|
+/⋆ pointer to and size of a single iframe in memory ⋆/
|
|
|
+struct video_still_picture {
|
|
|
+ char ⋆iFrame; /⋆ pointer to a single iframe in memory ⋆/
|
|
|
+ int32_t size;
|
|
|
+};
|
|
|
</programlisting>
|
|
|
</section>
|
|
|
|
|
@@ -164,26 +173,26 @@ bits set according to the hardwares capabilities.
|
|
|
</programlisting>
|
|
|
</section>
|
|
|
|
|
|
-<section id="video_system">
|
|
|
+<section id="video-system">
|
|
|
<title>video system</title>
|
|
|
<para>A call to VIDEO_SET_SYSTEM sets the desired video system for TV output. The
|
|
|
following system types can be set:
|
|
|
</para>
|
|
|
<programlisting>
|
|
|
- typedef enum {
|
|
|
- VIDEO_SYSTEM_PAL,
|
|
|
- VIDEO_SYSTEM_NTSC,
|
|
|
- VIDEO_SYSTEM_PALN,
|
|
|
- VIDEO_SYSTEM_PALNc,
|
|
|
- VIDEO_SYSTEM_PALM,
|
|
|
- VIDEO_SYSTEM_NTSC60,
|
|
|
- VIDEO_SYSTEM_PAL60,
|
|
|
- VIDEO_SYSTEM_PALM60
|
|
|
- } video_system_t;
|
|
|
+typedef enum {
|
|
|
+ VIDEO_SYSTEM_PAL,
|
|
|
+ VIDEO_SYSTEM_NTSC,
|
|
|
+ VIDEO_SYSTEM_PALN,
|
|
|
+ VIDEO_SYSTEM_PALNc,
|
|
|
+ VIDEO_SYSTEM_PALM,
|
|
|
+ VIDEO_SYSTEM_NTSC60,
|
|
|
+ VIDEO_SYSTEM_PAL60,
|
|
|
+ VIDEO_SYSTEM_PALM60
|
|
|
+} video_system_t;
|
|
|
</programlisting>
|
|
|
</section>
|
|
|
|
|
|
-<section id="video_highlight">
|
|
|
+<section id="video-highlight">
|
|
|
<title>struct video_highlight</title>
|
|
|
<para>Calling the ioctl VIDEO_SET_HIGHLIGHTS posts the SPU highlight information. The
|
|
|
call expects the following format for that information:
|
|
@@ -210,7 +219,7 @@ call expects the following format for that information:
|
|
|
</programlisting>
|
|
|
|
|
|
</section>
|
|
|
-<section id="video_spu">
|
|
|
+<section id="video-spu">
|
|
|
<title>video SPU</title>
|
|
|
<para>Calling VIDEO_SET_SPU deactivates or activates SPU decoding, according to the
|
|
|
following format:
|
|
@@ -224,7 +233,7 @@ following format:
|
|
|
</programlisting>
|
|
|
|
|
|
</section>
|
|
|
-<section id="video_spu_palette">
|
|
|
+<section id="video-spu-palette">
|
|
|
<title>video SPU palette</title>
|
|
|
<para>The following structure is used to set the SPU palette by calling VIDEO_SPU_PALETTE:
|
|
|
</para>
|
|
@@ -237,7 +246,7 @@ following format:
|
|
|
</programlisting>
|
|
|
|
|
|
</section>
|
|
|
-<section id="video_navi_pack">
|
|
|
+<section id="video-navi-pack">
|
|
|
<title>video NAVI pack</title>
|
|
|
<para>In order to get the navigational data the following structure has to be passed to the ioctl
|
|
|
VIDEO_GET_NAVI:
|
|
@@ -252,7 +261,7 @@ VIDEO_GET_NAVI:
|
|
|
</section>
|
|
|
|
|
|
|
|
|
-<section id="video_attributes">
|
|
|
+<section id="video-attributes-t">
|
|
|
<title>video attributes</title>
|
|
|
<para>The following attributes can be set by a call to VIDEO_SET_ATTRIBUTES:
|
|
|
</para>
|
|
@@ -488,7 +497,7 @@ VIDEO_GET_NAVI:
|
|
|
</entry>
|
|
|
</row></tbody></tgroup></informaltable>
|
|
|
|
|
|
-</section><section
|
|
|
+</section><section id="VIDEO_STOP"
|
|
|
role="subsection"><title>VIDEO_STOP</title>
|
|
|
<para>DESCRIPTION
|
|
|
</para>
|
|
@@ -562,7 +571,7 @@ role="subsection"><title>VIDEO_STOP</title>
|
|
|
</entry>
|
|
|
</row></tbody></tgroup></informaltable>
|
|
|
|
|
|
-</section><section
|
|
|
+</section><section id="VIDEO_PLAY"
|
|
|
role="subsection"><title>VIDEO_PLAY</title>
|
|
|
<para>DESCRIPTION
|
|
|
</para>
|
|
@@ -615,7 +624,7 @@ role="subsection"><title>VIDEO_PLAY</title>
|
|
|
</entry>
|
|
|
</row></tbody></tgroup></informaltable>
|
|
|
|
|
|
-</section><section
|
|
|
+</section><section id="VIDEO_FREEZE"
|
|
|
role="subsection"><title>VIDEO_FREEZE</title>
|
|
|
<para>DESCRIPTION
|
|
|
</para>
|
|
@@ -672,7 +681,7 @@ role="subsection"><title>VIDEO_FREEZE</title>
|
|
|
</entry>
|
|
|
</row></tbody></tgroup></informaltable>
|
|
|
|
|
|
-</section><section
|
|
|
+</section><section id="VIDEO_CONTINUE"
|
|
|
role="subsection"><title>VIDEO_CONTINUE</title>
|
|
|
<para>DESCRIPTION
|
|
|
</para>
|
|
@@ -725,7 +734,7 @@ role="subsection"><title>VIDEO_CONTINUE</title>
|
|
|
</entry>
|
|
|
</row></tbody></tgroup></informaltable>
|
|
|
|
|
|
-</section><section
|
|
|
+</section><section id="VIDEO_SELECT_SOURCE"
|
|
|
role="subsection"><title>VIDEO_SELECT_SOURCE</title>
|
|
|
<para>DESCRIPTION
|
|
|
</para>
|
|
@@ -788,7 +797,7 @@ role="subsection"><title>VIDEO_SELECT_SOURCE</title>
|
|
|
</entry>
|
|
|
</row></tbody></tgroup></informaltable>
|
|
|
|
|
|
-</section><section
|
|
|
+</section><section id="VIDEO_SET_BLANK"
|
|
|
role="subsection"><title>VIDEO_SET_BLANK</title>
|
|
|
<para>DESCRIPTION
|
|
|
</para>
|
|
@@ -861,7 +870,7 @@ role="subsection"><title>VIDEO_SET_BLANK</title>
|
|
|
</entry>
|
|
|
</row></tbody></tgroup></informaltable>
|
|
|
|
|
|
-</section><section
|
|
|
+</section><section id="VIDEO_GET_STATUS"
|
|
|
role="subsection"><title>VIDEO_GET_STATUS</title>
|
|
|
<para>DESCRIPTION
|
|
|
</para>
|
|
@@ -929,7 +938,7 @@ role="subsection"><title>VIDEO_GET_STATUS</title>
|
|
|
</entry>
|
|
|
</row></tbody></tgroup></informaltable>
|
|
|
|
|
|
-</section><section
|
|
|
+</section><section id="VIDEO_GET_EVENT"
|
|
|
role="subsection"><title>VIDEO_GET_EVENT</title>
|
|
|
<para>DESCRIPTION
|
|
|
</para>
|
|
@@ -1018,7 +1027,7 @@ role="subsection"><title>VIDEO_GET_EVENT</title>
|
|
|
</entry>
|
|
|
</row></tbody></tgroup></informaltable>
|
|
|
|
|
|
-</section><section
|
|
|
+</section><section id="VIDEO_SET_DISPLAY_FORMAT"
|
|
|
role="subsection"><title>VIDEO_SET_DISPLAY_FORMAT</title>
|
|
|
<para>DESCRIPTION
|
|
|
</para>
|
|
@@ -1088,7 +1097,7 @@ role="subsection"><title>VIDEO_SET_DISPLAY_FORMAT</title>
|
|
|
</entry>
|
|
|
</row></tbody></tgroup></informaltable>
|
|
|
|
|
|
-</section><section
|
|
|
+</section><section id="VIDEO_STILLPICTURE"
|
|
|
role="subsection"><title>VIDEO_STILLPICTURE</title>
|
|
|
<para>DESCRIPTION
|
|
|
</para>
|
|
@@ -1158,7 +1167,7 @@ role="subsection"><title>VIDEO_STILLPICTURE</title>
|
|
|
</entry>
|
|
|
</row></tbody></tgroup></informaltable>
|
|
|
|
|
|
-</section><section
|
|
|
+</section><section id="VIDEO_FAST_FORWARD"
|
|
|
role="subsection"><title>VIDEO_FAST_FORWARD</title>
|
|
|
<para>DESCRIPTION
|
|
|
</para>
|
|
@@ -1232,7 +1241,7 @@ role="subsection"><title>VIDEO_FAST_FORWARD</title>
|
|
|
</entry>
|
|
|
</row></tbody></tgroup></informaltable>
|
|
|
|
|
|
-</section><section
|
|
|
+</section><section id="VIDEO_SLOWMOTION"
|
|
|
role="subsection"><title>VIDEO_SLOWMOTION</title>
|
|
|
<para>DESCRIPTION
|
|
|
</para>
|
|
@@ -1306,7 +1315,7 @@ role="subsection"><title>VIDEO_SLOWMOTION</title>
|
|
|
</entry>
|
|
|
</row></tbody></tgroup></informaltable>
|
|
|
|
|
|
-</section><section
|
|
|
+</section><section id="VIDEO_GET_CAPABILITIES"
|
|
|
role="subsection"><title>VIDEO_GET_CAPABILITIES</title>
|
|
|
<para>DESCRIPTION
|
|
|
</para>
|
|
@@ -1368,7 +1377,7 @@ role="subsection"><title>VIDEO_GET_CAPABILITIES</title>
|
|
|
</entry>
|
|
|
</row></tbody></tgroup></informaltable>
|
|
|
|
|
|
-</section><section
|
|
|
+</section><section id="VIDEO_SET_ID"
|
|
|
role="subsection"><title>VIDEO_SET_ID</title>
|
|
|
<para>DESCRIPTION
|
|
|
</para>
|
|
@@ -1435,7 +1444,7 @@ role="subsection"><title>VIDEO_SET_ID</title>
|
|
|
</entry>
|
|
|
</row></tbody></tgroup></informaltable>
|
|
|
|
|
|
-</section><section
|
|
|
+</section><section id="VIDEO_CLEAR_BUFFER"
|
|
|
role="subsection"><title>VIDEO_CLEAR_BUFFER</title>
|
|
|
<para>DESCRIPTION
|
|
|
</para>
|
|
@@ -1479,7 +1488,7 @@ role="subsection"><title>VIDEO_CLEAR_BUFFER</title>
|
|
|
</entry>
|
|
|
</row></tbody></tgroup></informaltable>
|
|
|
|
|
|
-</section><section
|
|
|
+</section><section id="VIDEO_SET_STREAMTYPE"
|
|
|
role="subsection"><title>VIDEO_SET_STREAMTYPE</title>
|
|
|
<para>DESCRIPTION
|
|
|
</para>
|
|
@@ -1540,7 +1549,7 @@ role="subsection"><title>VIDEO_SET_STREAMTYPE</title>
|
|
|
</entry>
|
|
|
</row></tbody></tgroup></informaltable>
|
|
|
|
|
|
-</section><section
|
|
|
+</section><section id="VIDEO_SET_FORMAT"
|
|
|
role="subsection"><title>VIDEO_SET_FORMAT</title>
|
|
|
<para>DESCRIPTION
|
|
|
</para>
|
|
@@ -1601,7 +1610,7 @@ role="subsection"><title>VIDEO_SET_FORMAT</title>
|
|
|
</entry>
|
|
|
</row></tbody></tgroup></informaltable>
|
|
|
|
|
|
-</section><section
|
|
|
+</section><section id="VIDEO_SET_SYSTEM"
|
|
|
role="subsection"><title>VIDEO_SET_SYSTEM</title>
|
|
|
<para>DESCRIPTION
|
|
|
</para>
|
|
@@ -1663,7 +1672,7 @@ role="subsection"><title>VIDEO_SET_SYSTEM</title>
|
|
|
</entry>
|
|
|
</row></tbody></tgroup></informaltable>
|
|
|
|
|
|
-</section><section
|
|
|
+</section><section id="VIDEO_SET_HIGHLIGHT"
|
|
|
role="subsection"><title>VIDEO_SET_HIGHLIGHT</title>
|
|
|
<para>DESCRIPTION
|
|
|
</para>
|
|
@@ -1723,7 +1732,7 @@ role="subsection"><title>VIDEO_SET_HIGHLIGHT</title>
|
|
|
</entry>
|
|
|
</row></tbody></tgroup></informaltable>
|
|
|
|
|
|
-</section><section
|
|
|
+</section><section id="VIDEO_SET_SPU"
|
|
|
role="subsection"><title>VIDEO_SET_SPU</title>
|
|
|
<para>DESCRIPTION
|
|
|
</para>
|
|
@@ -1785,7 +1794,7 @@ role="subsection"><title>VIDEO_SET_SPU</title>
|
|
|
</entry>
|
|
|
</row></tbody></tgroup></informaltable>
|
|
|
|
|
|
-</section><section
|
|
|
+</section><section id="VIDEO_SET_SPU_PALETTE"
|
|
|
role="subsection"><title>VIDEO_SET_SPU_PALETTE</title>
|
|
|
<para>DESCRIPTION
|
|
|
</para>
|
|
@@ -1845,7 +1854,7 @@ role="subsection"><title>VIDEO_SET_SPU_PALETTE</title>
|
|
|
</entry>
|
|
|
</row></tbody></tgroup></informaltable>
|
|
|
|
|
|
-</section><section
|
|
|
+</section><section id="VIDEO_GET_NAVI"
|
|
|
role="subsection"><title>VIDEO_GET_NAVI</title>
|
|
|
<para>DESCRIPTION
|
|
|
</para>
|
|
@@ -1907,7 +1916,7 @@ role="subsection"><title>VIDEO_GET_NAVI</title>
|
|
|
</entry>
|
|
|
</row></tbody></tgroup></informaltable>
|
|
|
|
|
|
-</section><section
|
|
|
+</section><section id="VIDEO_SET_ATTRIBUTES"
|
|
|
role="subsection"><title>VIDEO_SET_ATTRIBUTES</title>
|
|
|
<para>DESCRIPTION
|
|
|
</para>
|