File: interactivity

package info (click to toggle)
gstreamer1.0 1.28.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 15,604 kB
  • sloc: ansic: 203,072; python: 1,985; sh: 566; lex: 188; lisp: 154; java: 81; makefile: 59; cpp: 58; perl: 46
file content (93 lines) | stat: -rw-r--r-- 2,221 bytes parent folder | download | duplicates (4)
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)