diff options
Diffstat (limited to 'doc/hackersguide/internals.docbook')
-rw-r--r-- | doc/hackersguide/internals.docbook | 80 |
1 files changed, 40 insertions, 40 deletions
diff --git a/doc/hackersguide/internals.docbook b/doc/hackersguide/internals.docbook index 1ee508bc3..dacbadd51 100644 --- a/doc/hackersguide/internals.docbook +++ b/doc/hackersguide/internals.docbook @@ -64,7 +64,7 @@ <para> support for multiple plugin directories (<filename>$prefix/lib/xine/plugins</filename>, - <filename>$HOME/.xine/plugins</filename>, ...) + <filename>$HOME/.xine/plugins</filename>, …) </para> </listitem> <listitem> @@ -124,7 +124,7 @@ demux_mpeg_block.so decode_mpeg.so video_out_xv.so - ... + … xine-vcdnav-0.9.11 input_vcdnav.so xine-lib-1.2 @@ -135,21 +135,21 @@ demuxers fli.so avi.so - ... + … decoders ffmpeg.so mpeg.so (may contain mpeg 1/2 audio and video decoders) pcm.so - ... + … output video_xv.so audio_oss.so - ... + … xine-lib-3.0 avi.so (avi demuxer) mpeg.so (contains mpeg demuxers and audio/video decoders) video_out_xv.so (Xv video out) - ...</screen> + …</screen> </para> <para> As you can see, every package is free to organize plugins at will @@ -244,12 +244,12 @@ 13, found in xine-lib 2.13.7 would then define this plugin list: <programlisting> #include <xine/plugin.h> - ... + … plugin_t *init_api12(void) { input_plugin_t *this; this = malloc(sizeof(input_plugin_t)); - ... + … return (plugin_t *)this; } /* same thing, with different initialization for API 13 */ @@ -380,7 +380,7 @@ <para> Another problem xine must handle is the sound card clock drift. vpts are compared to the system clock (or even to a different clock provided by a scr plugin) - for presentation but sound card is sampling audio by it's own clocking + for presentation but sound card is sampling audio by its own clocking mechanism, so a small drift may occur. As the playback goes on this error will accumulate possibly resulting in audio gaps or audio drops. To avoid that annoying effect, two countermeasures are available (switchable with xine config @@ -396,7 +396,7 @@ * smoothing algorithms to correct sound card clock drifts. * obs: previously this error was added to xine scr. * - * audio buf ---> metronom --> audio fifo --> (buf->vpts - hw_vpts) + * audio buf ---> metronom --> audio fifo --> (buf->vpts - hw_vpts) * (vpts_offset + error) gap * <---------- control --------------| * @@ -448,7 +448,7 @@ In order to optimize to the most common case, xine's internal format for screen overlays is a similar representation to the 'spu' data. This brings not only performance benefit (since blending functions may skip large image areas due to RLE) but also - compatibility: it's possible to reencode any xine overlay to the original spu format + compatibility: it's possible to re-encode any xine overlay to the original spu format for displaying with mpeg hardware decoders like DXR3. </para> <para> @@ -486,38 +486,38 @@ <programlisting> video_overlay_event_t event; - event.object.handle = this->video_overlay->get_handle(this->video_overlay,0); + event.object.handle = this->video_overlay->get_handle(this->video_overlay,0); - memset(this->event.object.overlay, 0, sizeof(*this->event.object.overlay)); + memset(this->event.object.overlay, 0, sizeof(*this->event.object.overlay)); /* set position and size for this overlay */ - event.object.overlay->x = 0; - event.object.overlay->y = 0; - event.object.overlay->width = 100; - event.object.overlay->height = 100; + event.object.overlay->x = 0; + event.object.overlay->y = 0; + event.object.overlay->width = 100; + event.object.overlay->height = 100; /* clipping region is mostly used by dvd menus for highlighting buttons */ - event.object.overlay->clip_top = 0; - event.object.overlay->clip_bottom = image_height; - event.object.overlay->clip_left = 0; - event.object.overlay->clip_right = image_width; + event.object.overlay->clip_top = 0; + event.object.overlay->clip_bottom = image_height; + event.object.overlay->clip_left = 0; + event.object.overlay->clip_right = image_width; /* the hard part: provide a RLE image */ - event.object.overlay->rle = your_rle; - event.object.overlay->data_size = your_size; - event.object.overlay->num_rle = your_rle_count; + event.object.overlay->rle = your_rle; + event.object.overlay->data_size = your_size; + event.object.overlay->num_rle = your_rle_count; /* palette must contain YUV values for each color index */ - memcpy(event.object.overlay->clip_color, color, sizeof(color)); + memcpy(event.object.overlay->clip_color, color, sizeof(color)); /* this table contains transparency levels for each color index. 0 = completely transparent, 15 - completely opaque */ - memcpy(event.object.overlay->clip_trans, trans, sizeof(trans)); + memcpy(event.object.overlay->clip_trans, trans, sizeof(trans)); /* set the event type and time for displaying */ event.event_type = EVENT_SHOW_SPU; event.vpts = 0; /* zero is a special vpts value, it means 'now' */ - video_overlay->add_event(video_overlay, &event);</programlisting> + video_overlay->add_event(video_overlay, &event);</programlisting> </para> </sect2> <sect2> @@ -535,7 +535,7 @@ <programlisting> osd_object_t osd; - osd = this->osd_renderer->new_object(osd_renderer, 300, 200);</programlisting> + osd = this->osd_renderer->new_object(osd_renderer, 300, 200);</programlisting> <para> Now we may want to set font and color for text rendering. Although we will refer to fonts over this document, in fact the OSD can be any kind of bitmap. Font @@ -547,22 +547,22 @@ </para> <programlisting> /* set sans serif 24 font */ - osd_renderer->set_font(osd, "sans", 24); + osd_renderer->set_font(osd, "sans", 24); /* copy pre-defined colors for white, black border, transparent background to starting at the index used by the first text palette */ - osd_renderer->set_text_palette(osd, TEXTPALETTE_WHITE_BLACK_TRANSPARENT, OSD_TEXT1); + osd_renderer->set_text_palette(osd, TEXTPALETTE_WHITE_BLACK_TRANSPARENT, OSD_TEXT1); /* copy pre-defined colors for white, no border, translucid background to starting at the index used by the second text palette */ - osd_renderer->set_text_palette(osd, TEXTPALETTE_WHITE_NONE_TRANSLUCID, OSD_TEXT2);</programlisting> + osd_renderer->set_text_palette(osd, TEXTPALETTE_WHITE_NONE_TRANSLUCID, OSD_TEXT2);</programlisting> <para> Now render the text and show it: <programlisting> - osd_renderer->render_text(osd, 0, 0, "white text, black border", OSD_TEXT1); - osd_renderer->render_text(osd, 0, 30, "white text, no border", OSD_TEXT2); + osd_renderer->render_text(osd, 0, 0, "white text, black border", OSD_TEXT1); + osd_renderer->render_text(osd, 0, 30, "white text, no border", OSD_TEXT2); - osd_renderer->show(osd, 0); /* 0 stands for 'now' */</programlisting> + osd_renderer->show(osd, 0); /* 0 stands for 'now' */</programlisting> </para> <para> There's a 1:1 mapping between OSD objects and overlays, therefore the @@ -572,11 +572,11 @@ </para> <programlisting> for( i=0; i < 100; i+=10 ) { - osd_renderer->set_position(osd, i, i ); - osd_renderer->show(osd, 0); + osd_renderer->set_position(osd, i, i ); + osd_renderer->show(osd, 0); sleep(1); } - osd_renderer->hide(osd, 0);</programlisting> + osd_renderer->hide(osd, 0);</programlisting> <para> For additional functions please check osd.h or the public header. </para> @@ -618,13 +618,13 @@ </para> <programlisting> /* obtains size the text will occupy */ - renderer->get_text_size(osd, text, &width, &height); + renderer->get_text_size(osd, text, &width, &height); /* draws a box using font background color (translucid) */ - renderer->filled_rect(osd, x1, y1, x1+width, y1+height, OSD_TEXT2 + 1); + renderer->filled_rect(osd, x1, y1, x1+width, y1+height, OSD_TEXT2 + 1); /* render text */ - renderer->render_text(osd, x1, y1, text, OSD_TEXT2);</programlisting> + renderer->render_text(osd, x1, y1, text, OSD_TEXT2);</programlisting> </sect3> <sect3> <title>OSD text and palette FAQ</title> |