From c77989ee70085be02dca4dc1be362801baa15ff3 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Fri, 17 Dec 2004 14:55:49 +0100 Subject: Added support for AC3 replay over the DVB device --- PLUGINS.html | 62 ++++++++++++++++++++++++++++++++---------------------------- 1 file changed, 33 insertions(+), 29 deletions(-) (limited to 'PLUGINS.html') diff --git a/PLUGINS.html b/PLUGINS.html index cfd28d12..878c3670 100644 --- a/PLUGINS.html +++ b/PLUGINS.html @@ -14,18 +14,18 @@ Copyright © 2004 Klaus Schmidinger
www.cadsoft.de/vdr

-
  -Important modifications introduced in version 1.2.6 are marked like this. -
-
  +
  Important modifications introduced in version 1.3.0 are marked like this.
-
  +
  Important modifications introduced in version 1.3.7 are marked like this.
-
  +
  Important modifications introduced in version 1.3.8 are marked like this.
+
  +Important modifications introduced in version 1.3.18 are marked like this. +

VDR provides an easy to use plugin interface that allows additional functionality to be added to the program by implementing a dynamically loadable library file. @@ -73,11 +73,11 @@ structures and allows it to hook itself into specific areas to perform special a

  • Status monitor
  • Players
  • Receivers -
      +
     
  • Filters
  • The On Screen Display -
      +
     
  • Skins
  • Themes
  • @@ -1023,17 +1023,21 @@ public: Take a look at the files player.h and dvbplayer.c to see how VDR implements its own player for the VDR recordings.

    -To play the video data, the player needs to call its member function +
      +To play the actual data, the player needs to call its member function

    -int PlayVideo(const uchar *Data, int Length);
    +int PlayPes(const uchar *Data, int Length, bool VideoOnly);
     

    where Data points to a block of Length bytes of a PES data -stream. There are no prerequisites regarding the length or alignment of an +stream containing any combination of video, audio or dolby tracks. Which audio +or dolby track will actually be played is controlled by the device the player +is attached to. There are no prerequisites regarding the length or alignment of an individual block of data. The sum of all blocks must simply result in the -desired video data stream, and it must be delivered fast enough so that the +desired data stream, and it must be delivered fast enough so that the DVB device doesn't run out of data. +

    To avoid busy loops the player should call its member function

    @@ -1042,24 +1046,26 @@ bool DevicePoll(cPoller &Poller, int TimeoutMs = 0);
     
     to determine whether the device is ready for further data.
     

    -If the player can provide more than a single audio track, it can implement the -following functions to make them available: +
      +By default all audio track handling is done by the device a player is +attached to. +If the player can provide more than a single audio track, and has special +requirements in order to set a given track, it can implement the +following function to allow the device to set a specific track:

    -virtual int NumAudioTracks(void) const;
    -virtual const char **GetAudioTracks(int *CurrentTrack = NULL);
    -virtual void SetAudioTrack(int Index);
    +virtual void SetAudioTrack(eTrackType Type, const tTrackId *TrackId)
     

    -

    -If there is an additional audio track that has to be replayed with external hardware, -the player shall call its member function +A player that has special requirements about audio tracks should announce its +available audio tracks by calling

    -void PlayAudio(const uchar *Data, int Length);
    +bool DeviceSetAvailableTrack(eTrackType Type, int Index, uint16_t Id, const char *Language = NULL, uint32_t Flags = 0)
     

    -where Data points to a complete audio PES packet of Length bytes. +See device.h for details about the parameters for track handling. +

    The second part needed here is a control object that receives user input from the main program loop and reacts on this by telling the player what to do: @@ -1217,7 +1223,7 @@ Mode). If the cReceiver isn't needed any more, it may simply be deleted and will automatically detach itself from the cDevice. -
      +
     

    Filters

    A Fistful of Datas

    @@ -1263,7 +1269,7 @@ and will automatically detach itself from the cDevice. See VDR/eit.c or VDR/pat.c to learn how to process filter data.

    -
      +
     

    The On Screen Display

    Window to the world

    @@ -1375,7 +1381,7 @@ new cMySkin; in the Start() function of your plugin. Do not delete this object, it will be automatically deleted when the program ends.

    -
      +
      In order to be able to easily identify plugins that implement a skin it is recommended that the name of such a plugin should be @@ -1527,9 +1533,7 @@ The functions to implement replaying capabilites are virtual bool HasDecoder(void) const; virtual bool CanReplay(void) const; virtual bool SetPlayMode(ePlayMode PlayMode); -
      virtual int64_t GetSTC(void); -
    virtual void TrickSpeed(int Speed); virtual void Clear(void); virtual void Play(void); @@ -1549,7 +1553,7 @@ virtual void SetVideoFormat(bool VideoFormat16_9); virtual void SetVolumeDevice(int Volume);

    -
      +
     

    Section Filtering

    @@ -1579,7 +1583,7 @@ handle section data.

    On Screen Display

    -
      +
      If your device provides On Screen Display (OSD) capabilities (which every device that is supposed to be used as a primary device should do), it shall implement an "OSD provider" class, derived from cOsdProvider, which, when its CreateOsd() -- cgit v1.2.3