NaCl Player API
NaCl Player API Documentation
media_player.h
Go to the documentation of this file.
1 // Copyright (c) 2016 Samsung Electronics. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef NACL_PLAYER_MEDIA_PLAYER_H_
6 #define NACL_PLAYER_MEDIA_PLAYER_H_
7 
8 #include <functional>
9 #include <memory>
10 #include <string>
11 #include <vector>
12 
13 #include "nacl_player/common.h"
14 #include "nacl_player/error_codes.h"
15 #include "nacl_player/media_common.h"
16 
22 namespace Samsung {
23 namespace NaClPlayer {
24 
25 class BufferingListener;
26 class DRMListener;
27 class MediaDataSource;
28 class MediaEventsListener;
29 class SubtitleListener;
30 
55 class MediaPlayer {
56  public:
64  enum BindToDisplayMode {BindPlayerToDisplay, DoNotBindPlayerToDisplay};
65 
74 
77  };
78 
88 
94  };
95 
100  // When this mode is set video will be displayed normally.
101  MediaPlayerVr360ModeOff = 0,
102  // When this mode is set video will be displayed in Vr mode.
103  MediaPlayerVr360ModeOn = 1
104  };
105 
114  MediaPlayer(BindToDisplayMode = BindPlayerToDisplay,
116  MediaPlayer(const MediaPlayer& other);
117  MediaPlayer& operator=(const MediaPlayer& other);
118 
119  ~MediaPlayer();
120 
121  /* Setting listeners */
122 
136 
143  void SetMediaEventsListener(std::shared_ptr<MediaEventsListener> listener);
144 
160  void SetSubtitleListener(SubtitleListener* listener);
161 
162 
169  void SetSubtitleListener(std::shared_ptr<SubtitleListener> listener);
170 
183  void SetBufferingListener(BufferingListener* listener);
184 
191  void SetBufferingListener(std::shared_ptr<BufferingListener> listner);
192 
204  void SetDRMListener(DRMListener* listener);
205 
212  void SetDRMListener(std::shared_ptr<DRMListener> listener);
213 
217  bool BindToDisplay();
218 
239  int32_t AttachDataSource(
240  const MediaDataSource& data_source,
241  const std::function<void(int32_t)>& callback);
242 
248  int32_t AttachDataSource(
249  const MediaDataSource& data_source);
250 
251  /* Playback control */
252 
265  int32_t Play(const std::function<void(int32_t)>& callback);
266 
272  int32_t Play();
273 
286  int32_t Pause(const std::function<void(int32_t)>& callback);
287 
293  int32_t Pause();
294 
307  int32_t Stop(const std::function<void(int32_t)>& callback);
308 
314  int32_t Stop();
315 
330  int32_t Seek(TimeTicks time,
331  const std::function<void(int32_t)>& callback);
332 
338  int32_t Seek(TimeTicks time);
339 
355  int32_t SetPlaybackRate(double rate,
356  const std::function<void(int32_t)>& callback);
357 
362  int32_t SetPlaybackRate(double rate);
363 
364  /* Playback time info */
365 
377  int32_t GetDuration(
378  const std::function<void(int32_t, TimeDelta)>& callback);
379 
385  int32_t GetDuration(TimeDelta& duration);
386 
403  int32_t GetCurrentTime(
404  const std::function<void(int32_t, TimeTicks)>& callback);
405 
411  int32_t GetCurrentTime(TimeTicks& current_time);
412 
413  /* Playback state info */
414 
421  int32_t GetPlayerState(
422  const std::function<void(int32_t, MediaPlayerState)>& callback);
423 
429 
430  /* Tracks info */
431 
444  int32_t GetCurrentVideoTrackInfo(
445  const std::function<void(int32_t, const VideoTrackInfo&)>& callback);
446 
451 
452  typedef std::vector<VideoTrackInfo> VideoTracksList;
453 
467  int32_t GetVideoTracksList(
468  const std::function<void(int32_t, const VideoTracksList&)>& callback);
469 
475  int32_t GetVideoTracksList(VideoTracksList&);
476 
489  int32_t GetCurrentAudioTrackInfo(
490  const std::function<void(int32_t, const AudioTrackInfo&)>& callback);
491 
499 
500  typedef std::vector<AudioTrackInfo> AudioTracksList;
501 
515  int32_t GetAudioTracksList(
516  const std::function<void(int32_t, const AudioTracksList&)>& callback);
517 
523  int32_t GetAudioTracksList(AudioTracksList&);
524 
537  int32_t GetCurrentTextTrackInfo(
538  const std::function<void(int32_t, const TextTrackInfo&)>& callback);
539 
546 
547  typedef std::vector<TextTrackInfo> TextTracksList;
548 
562  int32_t GetTextTracksList(
563  const std::function<void(int32_t, const TextTracksList&)>& callback);
564 
570  int32_t GetTextTracksList(TextTracksList&);
571 
593  int32_t SelectTrack(
594  ElementaryStreamType track_type,
595  uint32_t track_index,
596  const std::function<void(int32_t)>& callback);
597 
603  int32_t SelectTrack(ElementaryStreamType track_type, uint32_t track_index);
604 
605  /* Subtitles control */
606 
645  int32_t AddExternalSubtitles(
646  const std::string& file_path,
647  const std::string& encoding,
648  const std::function<void(int32_t, const TextTrackInfo&)>& callback);
649 
654  int32_t AddExternalSubtitles(
655  const std::string& file_path,
656  const std::string& encoding,
657  TextTrackInfo&);
658 
670  int32_t SetSubtitlesDelay(
671  TimeDelta delay,
672  const std::function<void(int32_t)>& callback);
673 
679  int32_t SetSubtitlesDelay(TimeDelta delay);
680 
681  /* Other - player control */
682 
692  int32_t SetDisplayRect(
693  const Rect& rect,
694  const std::function<void(int32_t)>& callback);
695 
700  int32_t SetDisplayRect(const Rect& rect);
701 
711  int32_t SetDisplayMode(
712  MediaPlayerDisplayMode display_mode,
713  const std::function<void(int32_t)>& callback);
714 
715  /* Vr360 Control */
716 
729  int32_t SetVr360Mode(
730  MediaPlayerVr360Mode display_mode,
731  const std::function<void(int32_t)>& callback);
732 
743  int32_t SetVr360Mode(MediaPlayerVr360Mode display_mode);
744 
758  int32_t SetVr360Rotation(
759  float horizontal_angle,
760  float vertical_angle,
761  const std::function<void(int32_t)>& callback);
762 
774  int32_t SetVr360Rotation(
775  float horizontal_angle,
776  float vertical_angle);
777 
788  int32_t SetVr360ZoomLevel(
789  uint32_t zoom_level,
790  const std::function<void(int32_t)>& callback);
791 
800  int32_t SetVr360ZoomLevel(
801  uint32_t zoom_level);
802 
807  int32_t SetDisplayMode(MediaPlayerDisplayMode display_mode);
808 
809  /* DRM Related */
810 
824  int32_t SetDRMSpecificData(
825  DRMType drm_type,
826  DRMOperation drm_operation,
827  uint32_t drm_data_size,
828  const void* drm_data,
829  const std::function<void(int32_t)>& callback);
830 
835  int32_t SetDRMSpecificData(
836  DRMType drm_type,
837  DRMOperation drm_operation,
838  uint32_t drm_data_size,
839  const void* drm_data);
840 
841  private:
842  class Impl;
843  std::unique_ptr<Impl> pimpl_;
844 };
845 
846 } // namespace NaClPlayer
847 } // namespace Samsung
848 
849 #endif // NACL_PLAYER_MEDIA_PLAYER_H_
int32_t GetCurrentVideoTrackInfo(const std::function< void(int32_t, const VideoTrackInfo &)> &callback)
int32_t GetTextTracksList(const std::function< void(int32_t, const TextTracksList &)> &callback)
int32_t GetVideoTracksList(const std::function< void(int32_t, const VideoTracksList &)> &callback)
Structure describing video track from played media.
Definition: media_common.h:229
Represents 2D rectangle with integral coordinates.
Definition: common.h:61
int32_t Seek(TimeTicks time, const std::function< void(int32_t)> &callback)
void SetSubtitleListener(SubtitleListener *listener)
MediaPlayer(BindToDisplayMode=BindPlayerToDisplay, MediaPlayerMode=MediaPlayerModeDefault)
int32_t GetAudioTracksList(const std::function< void(int32_t, const AudioTracksList &)> &callback)
double TimeTicks
timestamp in seconds
Definition: common.h:17
int32_t SetDisplayRect(const Rect &rect, const std::function< void(int32_t)> &callback)
Listener for receiving player or playback related events.
int32_t SetVr360ZoomLevel(uint32_t zoom_level, const std::function< void(int32_t)> &callback)
Media Player mode that is dedicated for a D2TV playback.
Definition: media_player.h:76
int32_t GetPlayerState(const std::function< void(int32_t, MediaPlayerState)> &callback)
MediaPlayerState
States of the media player.
Definition: media_common.h:40
DRMType
List of supported types of DRM systems.
Definition: media_common.h:98
int32_t GetCurrentTime(const std::function< void(int32_t, TimeTicks)> &callback)
int32_t SetVr360Mode(MediaPlayerVr360Mode display_mode, const std::function< void(int32_t)> &callback)
int32_t GetCurrentTextTrackInfo(const std::function< void(int32_t, const TextTrackInfo &)> &callback)
int32_t AddExternalSubtitles(const std::string &file_path, const std::string &encoding, const std::function< void(int32_t, const TextTrackInfo &)> &callback)
int32_t AttachDataSource(const MediaDataSource &data_source, const std::function< void(int32_t)> &callback)
int32_t SetDRMSpecificData(DRMType drm_type, DRMOperation drm_operation, uint32_t drm_data_size, const void *drm_data, const std::function< void(int32_t)> &callback)
int32_t GetDuration(const std::function< void(int32_t, TimeDelta)> &callback)
int32_t SelectTrack(ElementaryStreamType track_type, uint32_t track_index, const std::function< void(int32_t)> &callback)
void SetBufferingListener(BufferingListener *listener)
int32_t SetDisplayMode(MediaPlayerDisplayMode display_mode, const std::function< void(int32_t)> &callback)
int32_t SetVr360Rotation(float horizontal_angle, float vertical_angle, const std::function< void(int32_t)> &callback)
Structure describing audio track from played media.
Definition: media_common.h:243
Listener for receiving DRM related events.
Definition: drm_listener.h:19
int32_t SetSubtitlesDelay(TimeDelta delay, const std::function< void(int32_t)> &callback)
Structure describing text/subtitles track from played media.
Definition: media_common.h:253
int32_t GetCurrentAudioTrackInfo(const std::function< void(int32_t, const AudioTrackInfo &)> &callback)
int32_t SetPlaybackRate(double rate, const std::function< void(int32_t)> &callback)
DRMOperation
List of possible DRM system operation.
Definition: media_common.h:125
double TimeDelta
difference of two timestamps in seconds
Definition: common.h:20
void SetMediaEventsListener(MediaEventsListener *listener)
void SetDRMListener(DRMListener *listener)