| | 1 | For functions that could be per conference, session, participant, or stream, they would have a session and a participant parameter. A NULL for either of these would be a wildcard. |
| | 2 | |
| | 3 | === PurpleMediaManager === |
| | 4 | |
| | 5 | ==== Functions: ==== |
| | 6 | {{{ |
| | 7 | *_initiate # Creates a PurpleMedia instance. Probably have a flag |
| | 8 | as to whether it's the initiator or responder |
| | 9 | }}} |
| | 10 | |
| | 11 | ==== Signals: ==== |
| | 12 | {{{ |
| | 13 | init-media # Same as the current signal. Is triggered when *_initiate is called |
| | 14 | init-video-src # These are all triggered when the corresponding *_get_* functions are called |
| | 15 | init-video-sink The one problem I've thought of with them is that this way it wouldn't |
| | 16 | init-audio-src be very easy to have multiple srcs or sinks of the same type. |
| | 17 | init-audio-sink |
| | 18 | }}} |
| | 19 | |
| | 20 | ==== Get: ==== |
| | 21 | {{{ |
| | 22 | *_get # Returns a global instance of the PurpleMediaManager |
| | 23 | |
| | 24 | *_get_pipeline # Returns a global pipeline to be used for all PurpleMedia instances. |
| | 25 | |
| | 26 | *_get_video_src # These all create their respective types if they don't exist. |
| | 27 | *_get_video_sink Otherwise they return a src/sink-pad for the existing src/sink. |
| | 28 | *_get_audio_src |
| | 29 | *_get_audio_sink |
| | 30 | |
| | 31 | # The next three functions will probably have a type parameter (audio or video, src or sink) |
| | 32 | *_get_plugins # Return a list of audio/video GStreamer plugins (eg. v4lsrc, alsasrc) |
| | 33 | *_get_devices # Return a list of devices for a specific plugin |
| | 34 | *_get_devices_autodetect # Eventually, return a list of devices detected for all supported plugins |
| | 35 | }}} |
| | 36 | |
| | 37 | === PurpleMedia === |
| | 38 | |
| | 39 | ==== Functions: ==== |
| | 40 | |
| | 41 | All of these functions will have parameters for session_id and participant_id NULL for either of these would indicate a wildcard and do this operation for all matching streams |
| | 42 | {{{ |
| | 43 | *_add_stream # Adds a stream/session/participant to the conference, automatically |
| | 44 | creates participants and FsSessions as necessary |
| | 45 | *_remove_stream # Removes a stream/session/participant from the conference |
| | 46 | |
| | 47 | *_add_candidate # Adds a single candidate to the stream (May not be necessary. Could alternately add a list) |
| | 48 | *_set_candidates # Sets a list of candidates for the stream |
| | 49 | *_set_codecs # Sets a list of codecs for the stream |
| | 50 | *_set_direction # Changes the direction of a stream/session/participant |
| | 51 | (could use *_add_stream to accomplish this) |
| | 52 | |
| | 53 | # The following two could probably be merged into one function |
| | 54 | *_mute # Mutes an audio stream/session/participant (sending and/or receiving?) |
| | 55 | *_pause # Pauses a video stream/session/participant (sending and/or receiving?) |
| | 56 | |
| | 57 | *_end # Ends a stream/session/participant |
| | 58 | }}} |
| | 59 | |
| | 60 | ==== Signals: ==== |
| | 61 | |
| | 62 | These signals also apply to the wildcard note above |
| | 63 | {{{ |
| | 64 | ready # Waits for both codecs-ready to be TRUE and candidates-prepared to have fired |
| | 65 | connected # signals when a new stream has connected (src-pad-added) (useful for raw-udp at least) |
| | 66 | end # Signals when a stream/session/participant has ended |
| | 67 | }}} |
| | 68 | More signals may be necessary for different protocols. Jingle ice-udp may also need a new-candidate and/or new-candidate-pair and a codecs-changed equivalent |
| | 69 | |
| | 70 | ==== Get: ==== |
| | 71 | |
| | 72 | I'm not certain all of these will be necessary |
| | 73 | {{{ |
| | 74 | *_codecs # gets codecs per sessions |
| | 75 | *_candidates # gets candidates per stream |
| | 76 | *_streams # gets stream_ids by session or by participant |
| | 77 | *_sessions # gets session_ids in the conference |
| | 78 | *_participants # gets participant names by conference or by session |
| | 79 | }}} |