summaryrefslogtreecommitdiffstats
path: root/DOCS/tech/osd.txt
diff options
context:
space:
mode:
Diffstat (limited to 'DOCS/tech/osd.txt')
-rw-r--r--DOCS/tech/osd.txt86
1 files changed, 0 insertions, 86 deletions
diff --git a/DOCS/tech/osd.txt b/DOCS/tech/osd.txt
deleted file mode 100644
index 7e7376745f..0000000000
--- a/DOCS/tech/osd.txt
+++ /dev/null
@@ -1,86 +0,0 @@
-draft of new OSD engine:
-========================
-written by A'rpi
-including ideas from mailing list from Jiri Svoboda, Tobias Diedrich,
-Artur Zaprzala, Michael Niedermayer, Felix Buenemann, LGB
-
-requirements:
-- be able to do partial rendering, within a given bounding box
- useful when parts of the OSD are outside of the image and has to be
- updated only when OSD changes, or even has different colorspace
-
-- text should be rendered in 2-pass way: 1. alpha 2. pixels
- so char's alpha won't overwrite previous char, and may be faster
-
-- OSD elements should be cached - so rendering once into the cache and
- reuse this while it's unchanged
-
-- color support (colorspace could be YA, YUVA, RGB)
-
-- change brightness, saturation, hue of chars ???
-
-- way to disable alphablending, and use black outline (FAST_OSD now)
-
-- respect movie and monitor aspect, so OSD is rendered/scaled correctly
- eg. for SVCD/anamorphic DVD with hardware scaling (now OSD is squashed)
-
-- develop some text-based apps: osdterm, osdzilla etc ;)
-
-Ok. The basic idea of my design is using 'OSD objects', a data structure
-in a 1 (or 2?) way linked list.
-There would be different object types, sharing type-dependent data in a
-union. The basic types: box, text, symbol, progressbar, group.
-
-Group would be a special type, grouping other OSD objects together,
-with a common x,y and boundingbox. Useful for grouping symbol+progrbar
-or multiline subtitle text.
-
-Each object could have flags, for example:
-- visible (set if we should display it)
-- color (set if it's YUVA not YA)
-- cached (set when there is a cached rendered variant)
-- bbox updated (should be set when recalc bbox, reset when change params)
-- several flags to control positioning. for example, x;y could be
- absolute coordinates, or percent. flags to set left/center/right alignment...
-- start and end timestamp, to automagically set/reset visible flag
-
-OK, my first draft:
-
-typedef struct mp_osd_obj_s {
- struct mp_osd_obj_s* next;
- unsigned char type;
- unsigned char alignment; // 2 bits: x;y percentages, 2 bits: x;y relative to parent; 2 bits: alignment left/right/center
- unsigned short flags;
- int x,y; // coords
- unsigned char color[4]; // YUVA
- mp_osd_bbox_t bbox; // bounding box
- unsigned int start,duration; // PTS
- union {
- struct {
- int x1,y1,x2,y2;
- } line;
- struct {
- int x,y,w,h;
- } rect;
- struct {
- char* text;
- mp_font_t* font;
- } text;
- struct {
- int symbol; // unicode
- mp_font_t* font;
- } symbol;
- struct {
- float value;
- mp_font_t* font;
- } pbar;
- struct {
- int w,h;
- unsigned char* image;
- unsigned int* palette;
- } spu; // FIXME!
- struct {
- struct mp_osd_obj_s* children;
- } group;
- } params;
-} mp_osd_obj_t;