MediaControlIDL
Revision as of 15:43, 15 December 2005 by OlivierAubert (talk | contribs)
module VLC { const float VERSION = 1.0; enum PositionOrigin { AbsolutePosition, RelativePosition, // Like relative, but wraps at the end of a file for instance: ModuloPosition }; enum PositionKey { // For raw access ByteCount, // Frame number SampleCount, // In milliseconds MediaTime }; struct Position { PositionOrigin origin; PositionKey key; long long value; }; exception PositionKeyNotSupported { string message; }; exception PositionOriginNotSupported { string message; }; exception InvalidPosition { string message; }; exception PlaylistException { string message; }; exception InternalException { string message; }; typedef sequence<string> PlaylistSeq; typedef sequence<octet> ByteSeq; struct RGBPicture { short width; short height; long type; ByteSeq data; // Timestamp (absolute position in the movie) in ms long long date; }; struct StreamInformation { short width; short height; float aspect_ratio; long bitrate; string codec; string author; }; typedef sequence<RGBPicture> RGBPictureSeq; enum PlayerStatus { PlayingStatus, PauseStatus, ForwardStatus, BackwardStatus, InitStatus, EndStatus, UndefinedStatus }; struct StatusInformation { PlayerStatus streamstatus; string url; /* The URL of the current media stream */ long long position; /* actual location in the stream (in ms) */ long long length; /* total length of the stream (in ms) */ }; interface Playlist { // Return a playlist item id int add(in string a_file) raises (PlaylistException); void next(in string a_file) raises (PlaylistException); void prev(in string a_file) raises (PlaylistException); // Set the new current item void set(int item_id) raises (PlaylistException); void remove(int item_id) raises (PlaylistException); // Clear the whole playlist void clear () raises (PlaylistException); // Return the list of files in playlist PlaylistSeq get_list () raises (PlaylistException); } // MediaControl interface is similar to // ControlledStream interface in MSS. // It can be inherited by flow endpoints or // FlowConnection interfaces. interface MediaControl { // *** Initialization // Exit the player oneway void exit (); // Return the IDL API version string get_api_version(); // Return the player version (player name + version) string get_player_version(); // *** Playback control // The a_position parameters are facultative. void start(in Position a_position) raises (InternalException, InvalidPosition, PlaylistException); void pause(in Position a_position) raises (InternalException, InvalidPosition); void resume(in Position a_position) raises (InternalException, InvalidPosition); void stop(in Position a_position) raises (InternalException, InvalidPosition); Position get_media_position(in PositionOrigin an_origin, in PositionKey a_key) raises (InternalException, PositionKeyNotSupported); void set_media_position(in Position a_position) raises (InternalException, PositionKeyNotSupported, InvalidPosition); // Rate control. The rate is a signed value, corresponding to // the percentage of the speed (+100 = normal, -100 = reverse...) int get_rate() raises (InternalException); void set_rate(int rate) raises (InternalException); // *** Media information StatusInformation get_status_information () raises (InternalException); // Return information about the current stream StreamInformation get_stream_information () raises (InternalException); // *** Playlist handling Playlist playlist() raises (InternalException); // *** Video // Return a snapshot of the currently displayed picture RGBPicture snapshot (in Position a_position) raises (InternalException); // Return the whole snapshot cache contents RGBPictureSeq all_snapshots () raises (InternalException); // Display the message string as caption, // between "begin" and "end" positions void render_text (in string message, in Position begin, in Position end) raises (InternalException); // Set the visual ID (XID in X-Window, HWIN on Win32, ??? on MacOS // X) for the player window void set_visual(long xid) raises (InternalException); boolean get_fullscreen() raises (InternalException); void set_fullscreen(boolean full) raises (InternalException); // *** Audio // Volume is normalized in [0..100] unsigned short sound_get_volume() raises (InternalException); void sound_set_volume(in unsigned short volume) raises (InternalException); void sound_mute() raises (InternalException); }; };