#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"
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;
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,
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 =
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
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);
EsPlayer* handler_ = nullptr;
}; // class TrackRendererEventListener
-#ifndef IS_AUDIO_PRODUCT
+#ifdef USE_MIXER
class MixerListener : public MixerTicketEventListener {
public:
explicit MixerListener(EsPlayer* handler) : handler_(handler) {
private:
EsPlayer* handler_{nullptr};
};
-#endif
+#endif // USE_MIXER
private:
std::vector<Track> track_;
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;
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;
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_;
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_;
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