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 occuring 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 creat 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)