MediaControlIDL

From VideoLAN Wiki
Revision as of 00:05, 11 April 2007 by OjpK78 (talk | contribs)
Jump to navigation Jump to search
This page contains example code for Python bindings.
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);
  };
};