1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
This document contains some ideas that can be used to implement
interactivity in media content.
Possible application: DVD navigation, flash,...
Requirements
------------
- capture mouse clicks, mouse position, movement occurring on
a video display plugin
- transport these events to the interested plugins
- allow for automation (ie, the technique should work without
a video plugin too)
- the core doesn't care
Capturing events
----------------
- the videosink element captures mouse events
- event is encapsulated into a generic data structure
describing the event (need to define a caps?)
- event is signalled to the app?.
- event is sent upstream?
* videosink has to add something to the main_loop to
be able to grab events
* thread issues?
* does the app need to know about the events?
- app captures mouse events
- no idea if that's possible
- app sends events upstream
Sending events to plugins
-------------------------
- are sent upstream using the event methods
* more generic
* less app control
- are sent to the appropriate plugin by the app
* app needs to know what plugins are interested,
less generic.
* more app control
automation will always work, the app can construct navigation
events and insert them into the pipeline.
What about flushing to minimize latency?
Defining an event
-----------------
some ideas:
GST_CAPS_NEW (
"videosink_event",
"application/x-gst-navigation"
"type", "click",
"x_pos", 30,
"y_pos", 40
)
GST_CAPS_NEW (
"videosink_event",
"application/x-gst-navigation"
"type", "move",
"x_pos", 30,
"y_pos", 40
)
...
do we need a library for this?
do we use custom events and use the mime type to detect the
type? do we create a GST_EVENT_NAVIGATION?
can we encapsulate all events into a GstCaps? I would think so
Random thoughts
---------------
- we're basically defining an event model, I don't think there is
anything wrong with that.
- how is our coordinate system going to work? do
we use normalized values, 0-1000000 (or floats)
or real pixel values? real pixel values require scalers to adjust
the values (I don't think I like that)
|