Merge branch 'main' into ci/gilbok-lee/update_public
[platform/core/multimedia/esplusplayer.git] / src / esplusplayer / include_internal / esplayer / esplayer.h
index cdd7d1b..2deec7d 100644 (file)
@@ -5,6 +5,8 @@
 #ifndef __ESPLUSPLAYER_SRC_ESPLAYER_ESPLAYER__H__
 #define __ESPLUSPLAYER_SRC_ESPLAYER_ESPLAYER__H__
 
+#include <IEME.h>
+
 #include <boost/core/noncopyable.hpp>
 #include <future>
 #include <list>
 #include <vector>
 
 #include "core/decoderinputbuffer.h"
+#ifndef TIZEN_FEATURE_PUBLIC
 #include "core/kpi.h"
+#endif
 #include "core/trackrendereradapter.h"
-#ifndef IS_AUDIO_PRODUCT
+#ifdef USE_MIXER
 #include "mixer/mixerticket.h"
 #include "mixer/mixerticket_eventlistener.h"
-#endif
+#endif  // USE_MIXER
 #include "esplayer/espacket_logger.h"
 #include "esplayer/message.hpp"
 #include "esplayer/state_manager.hpp"
@@ -56,6 +60,8 @@ class EsPlayer : public EsPlusPlayer {
   bool PrepareAsync() override;
   bool Deactivate(const StreamType type) override;
   bool Activate(const StreamType type) override;
+  bool DeactivateAudio() override;
+  bool ActivateAudio() override;
   bool Start() override;
   bool Stop() override;
   bool Pause() override;
@@ -65,9 +71,9 @@ class EsPlayer : public EsPlusPlayer {
   void SetAppInfoEx(const PlayerAppInfoEx& app_info) override;
   bool SetPlaybackRate(const double rate, const bool audio_mute) override;
   bool SetDisplay(const DisplayType& type, void* obj) override;
-#ifndef IS_AUDIO_PRODUCT
+#ifdef USE_MIXER
   bool SetDisplay(const DisplayType& type, MixerTicket* handle) override;
-#endif
+#endif  // USE_MIXER
   bool SetDisplay(const DisplayType& type, void* ecore_wl2_window, const int x,
                   const int y, const int w, const int h) override;
   bool SetDisplaySubsurface(const DisplayType& type, void* ecore_wl2_subsurface,
@@ -154,6 +160,10 @@ class EsPlayer : public EsPlusPlayer {
   bool GetVideoStreamRotationInfo(VideoRotation* rotation) override;
   bool SetSimpleMixOutBufferLevel(
       const PlayerSimpleMixOutBufferLevel level) override;
+#ifdef TIZEN_FEATURE_PUBLIC
+  bool EnableVideoHole(bool value) override;
+  bool SetSoundStreamInfo(const sound_stream_info_h stream_info) override;
+#endif  // TIZEN_FEATURE_PUBLIC
 
  private:
   using SubmitPacketOperator =
@@ -212,10 +222,13 @@ class EsPlayer : public EsPlusPlayer {
   void ResetContextForStop_();
   void GetSrcQueueCurrentSize_(const TrackType& type, uint64_t* byte_size,
                                uint64_t* time_size);
+#ifndef TIZEN_FEATURE_PUBLIC
   kpi::EsCodecLoggerKeys MakeKpiKeys_();
-#ifndef IS_AUDIO_PRODUCT
-  bool PrepareVideoMixingMode_(std::vector<Track>* tracks);
 #endif
+#ifdef USE_MIXER
+  bool PrepareVideoMixingMode_(std::vector<Track>* tracks);
+#endif  // USE_MIXER
+  void InitValuesFromIni_();
 
  private:  // private types
   class TrackRendererEventListener
@@ -243,10 +256,10 @@ class EsPlayer : public EsPlusPlayer {
     void OnVideoHighLatency() override;
     void OnAudioHighLatency() override;
     void OnVideoFrameDropped(const uint64_t& count) override;
-#ifndef IS_AUDIO_PRODUCT
+#ifdef USE_MIXER
     void OnMediaPacketVideoRawDecoded(
         const DecodedVideoRawModePacket& packet) override;
-#endif
+#endif  // USE_MIXER
 
    private:
     void ReadyToPrepare_(const TrackType& type);
@@ -263,7 +276,7 @@ class EsPlayer : public EsPlusPlayer {
     EsPlayer* handler_ = nullptr;
   };  // class TrackRendererEventListener
 
-#ifndef IS_AUDIO_PRODUCT
+#ifdef USE_MIXER
   class MixerListener : public MixerTicketEventListener {
    public:
     explicit MixerListener(EsPlayer* handler) : handler_(handler) {
@@ -276,7 +289,7 @@ class EsPlayer : public EsPlusPlayer {
    private:
     EsPlayer* handler_{nullptr};
   };
-#endif
+#endif  // USE_MIXER
 
  private:
   std::vector<Track> track_;
@@ -285,10 +298,13 @@ class EsPlayer : public EsPlusPlayer {
   std::mutex eos_mutex_;
   EsEventListener* eventlistener_ = nullptr;
   EsEventListener::UserData eventlistener_userdata_ = nullptr;
+  bool is_audio_stream_info_frozen_ = false;
 
   EsStateManager state_manager_;
 
   SubmitDataType submit_data_type_ = SubmitDataType::kCleanData;
+  std::string key_system_;
+  bool key_system_acquired_ = false;
   drm::Property drm_property_;
   std::uint32_t low_latency_mode_ = 0;
   std::uint32_t video_frame_peek_mode_ = 0;
@@ -299,6 +315,7 @@ class EsPlayer : public EsPlusPlayer {
   PlayerAudioCodecType audio_codec_type_ = kPlayerAudioCodecTypeHW;
   PlayerVideoCodecType video_codec_type_ = kPlayerVideoCodecTypeHW;
   bool force_audio_swdecoder_use_ = false;
+  bool force_video_swdecoder_use_ = false;
   std::uint32_t video_decoding_mode_ = 0x02;  // seamless mode
   std::uint32_t alternative_video_resource_ = 0;
   RscAllocPolicy resource_alloc_policy_ = RscAllocPolicy::kRscAllocExclusive;
@@ -314,9 +331,9 @@ class EsPlayer : public EsPlusPlayer {
 
   std::unique_ptr<TrackRendererEventListener> trackrenderer_event_listener_{
       new TrackRendererEventListener(this)};
-#ifndef IS_AUDIO_PRODUCT
+#ifdef USE_MIXER
   std::unique_ptr<MixerListener> mixer_event_listener_{new MixerListener(this)};
-#endif
+#endif  // USE_MIXER
   std::unique_ptr<TrackRendererAdapter> trackrenderer_;
   std::future<void> preparetask_;
   PlayerAppInfo app_info_;
@@ -329,7 +346,7 @@ class EsPlayer : public EsPlusPlayer {
   SrcQueueSize src_queue_size_;
 
   std::string caf_unique_number;
-#ifndef IS_AUDIO_PRODUCT
+#ifdef USE_MIXER
   std::unique_ptr<MixerTicket> mixer_ticket_;
   bool is_audio_focused_ = true;
   Geometry mixerticket_roi_;
@@ -337,7 +354,7 @@ class EsPlayer : public EsPlusPlayer {
   std::mutex audio_focus_m_;
   bool enable_audio_pipeline_handle_ = true;
   bool enable_rsc_alloc_handle_ = true;
-#endif
+#endif  // USE_MIXER
   DecodedVideoFrameBufferType vidoe_frame_buffer_type_ =
       DecodedVideoFrameBufferType::kNone;
   // for debugging