diff options
author | Benny Prijono <bennylp@teluu.com> | 2014-03-14 04:09:50 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2014-03-14 04:09:50 +0000 |
commit | 1e47fd78f11dab4b2f6cffa766417f111434f734 (patch) | |
tree | 016d93a205659ea85c7d315412307e580911668e /pjsip/include/pjsua2 | |
parent | 9ff22c2ff305ee03b10d1d611eab060e5097cbe5 (diff) |
Closed #1748: enhancements to WAV player API
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4793 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/include/pjsua2')
-rw-r--r-- | pjsip/include/pjsua2/media.hpp | 76 |
1 files changed, 73 insertions, 3 deletions
diff --git a/pjsip/include/pjsua2/media.hpp b/pjsip/include/pjsua2/media.hpp index 830f09b7..2f3a6855 100644 --- a/pjsip/include/pjsua2/media.hpp +++ b/pjsip/include/pjsua2/media.hpp @@ -314,6 +314,33 @@ private: typedef std::vector<AudioMedia*> AudioMediaVector; /** + * This structure contains additional info about AudioMediaPlayer. + */ +struct AudioMediaPlayerInfo +{ + /** + * Format ID of the payload. + */ + pjmedia_format_id formatId; + + /** + * The number of bits per sample of the file payload. For example, + * the value is 16 for PCM WAV and 8 for Alaw/Ulas WAV files. + */ + unsigned payloadBitsPerSample; + + /** + * The WAV payload size in bytes. + */ + pj_uint32_t sizeBytes; + + /** + * The WAV payload size in samples. + */ + pj_uint32_t sizeSamples; +}; + +/** * Audio Media Player. */ class AudioMediaPlayer : public AudioMedia @@ -354,7 +381,24 @@ public: unsigned options=0) throw(Error); /** - * Set playback position. This operation is not valid for playlist. + * Get additional info about the player. This operation is only valid + * for player. For playlist, Error will be thrown. + * + * @return the info. + */ + AudioMediaPlayerInfo getInfo() const throw(Error); + + /** + * Get current playback position in samples. This operation is not valid + * for playlist. + * + * @return Current playback position, in samples. + */ + pj_uint32_t getPos() const throw(Error); + + /** + * Set playback position in samples. This operation is not valid for + * playlist. * * @param samples The desired playback position, in samples. */ @@ -371,16 +415,42 @@ public: static AudioMediaPlayer* typecastFromAudioMedia(AudioMedia *media); /** - * Virtual destructor. + * Destructor. */ virtual ~AudioMediaPlayer(); +public: + /* + * Callbacks + */ + + /** + * Register a callback to be called when the file player reading has + * reached the end of file, or when the file reading has reached the + * end of file of the last file for a playlist. If the file or playlist + * is set to play repeatedly, then the callback will be called multiple + * times. + * + * @return If the callback returns false, the playback + * will stop. Note that if application destroys + * the player in the callback, it must return + * false here. + */ + virtual bool onEof() + { return true; } + + private: /** * Player Id. */ int playerId; + /** + * Low level PJMEDIA callback + */ + static pj_status_t eof_cb(pjmedia_port *port, + void *usr_data); }; /** @@ -430,7 +500,7 @@ public: static AudioMediaRecorder* typecastFromAudioMedia(AudioMedia *media); /** - * Virtual destructor. + * Destructor. */ virtual ~AudioMediaRecorder(); |