#ifndef __ESPLUSPLAYER_ESPLUSPLAYER_CAPI_ESPLUSPLAYER_CAPI_H__
#define __ESPLUSPLAYER_ESPLUSPLAYER_CAPI_ESPLUSPLAYER_CAPI_H__
+#ifdef TIZEN_FEATURE_PUBLIC
+#include <media/sound_manager.h>
+#endif
+
#include "esplusplayer_capi/buffer.h"
#include "esplusplayer_capi/display.h"
#include "esplusplayer_capi/drm.h"
*/
ESPLUSPLAYER_RSC_ALLOC_EXCLUSIVE_CONDITIONAL,
/**
- * @description exclusive no explicit policy, RM will return available
+ * @description inapp multiview policy, RM will return available
* resources.
* @version 6.0
*/
- ESPLUSPLAYER_RSC_ALLOC_EXCLUSIVE_NO_EXPLICIT
+ ESPLUSPLAYER_RSC_ALLOC_INAPP_MULTIVIEW,
+ /**
+ * @description Forced to allocate mfc decoder ,used senario of get decoded
+ * data out.
+
+ * @version 8.0
+ */
+ ESPLUSPLAYER_RSC_ALLOC_EXCLUSIVE_MFC_FORCED
} esplusplayer_rsc_alloc_policy;
/**
/**
* @brief Provided api for getting the maximum number of frames.
+ * @remark As a part of the dedicated app implementation.
+ * If non dedicated app call this api, this api will return
+ * ESPLUSPLAYER_ERROR_TYPE_INVALID_OPERATION.
* @param [in] handle : esplusplayer handle.
* @param [out] frame_count : maximum frame count.
* @return @c ESPLUSPLAYER_ERROR_TYPE_NONE on success,otherwise @c one of
* esplusplayer_stop(esplayer);
* @endcode
* @pre The player state must be at least #ESPLUSPLAYER_STATE_READY.
- * It has to be set to game mode, and multi channel pcm.
+ * It has to be set to game mode.
* @post None
* @exception None
* @version 6.0
/**
* @brief Provided api for getting the number of currently queued frames.
+ * @remark As a part of the dedicated app implementation.
+ * If non dedicated app call this api, this api will return
+ * ESPLUSPLAYER_ERROR_TYPE_INVALID_OPERATION.
* @param [in] handle : esplusplayer handle.
* @param [out] frame_count : queued frame count.
* @return @c ESPLUSPLAYER_ERROR_TYPE_NONE on success,otherwise @c one of
* esplusplayer_stop(esplayer);
* @endcode
* @pre The player state must be at least #ESPLUSPLAYER_STATE_READY.
- * It has to be set to game mode, and multi channel pcm.
+ * It has to be set to game mode.
* @post None
* @exception None
* @version 6.0
/**
* @brief Provided api for getting the underrun counts in audio out.
+ * @remark As a part of the dedicated app implementation.
+ * If non dedicated app call this api, this api will return
+ * ESPLUSPLAYER_ERROR_TYPE_INVALID_OPERATION.
* @param [in] handle : esplusplayer handle.
* @param [out] underrun_count : underrun counts in audio out.
* @return @c ESPLUSPLAYER_ERROR_TYPE_NONE on success,otherwise @c one of
* esplusplayer_stop(esplayer);
* @endcode
* @pre The player state must be at least #ESPLUSPLAYER_STATE_READY.
- * It has to be set to game mode, and multi channel pcm.
+ * It has to be set to game mode.
* @post None
* @exception None
* @version 6.0
int esplusplayer_set_simple_mix_out_buffer_level(
esplusplayer_handle handle, esplusplayer_simple_mix_out_buffer_level level);
+#ifdef TIZEN_FEATURE_PUBLIC
+/**
+ * @brief Provided api for enabling video hole.
+ * @param [in] handle : esplusplayer handle.
+ * @param [in] value : the value of video hole.
+ * (@c true = video hole enabled, @c false = video hole disabled)
+ * @return @c ESPLUSPLAYER_ERROR_TYPE_NONE on success, otherwise @c one of
+ * esplusplayer_error_type values will be returned.
+ * @retval #ESPLUSPLAYER_ERROR_TYPE_NONE Successful
+ * @retval #ESPLUSPLAYER_ERROR_TYPE_INVALID_PARAMETER Invalid parameter
+ * @retval #ESPLUSPLAYER_ERROR_TYPE_INVALID_OPERATION Internal operation
+ * failed
+ * @code
+ * esplusplayer_open(esplayer);
+ * esplusplayer_enable_video_hole(esplayer, false);
+ * // ... your codes ...
+ * esplusplayer_close(esplayer);
+ * @endcode
+ * @pre The player state must not be #ESPLUSPLAYER_STATE_NONE.
+ * @remark To disable video hole,
+ * esplusplayer_decoded_video_frame_buffer_type() must not be set to
+ * #ESPLUSPLAYER_DECODED_VIDEO_FRAME_BUFFER_TYPE_NONE. To enable video hole,
+ * esplusplayer_set_display() must be set to #ESPLUSPLAYER_DISPLAY_TYPE_OVERLAY
+ * @post None
+ * @exception None
+ * @see esplusplayer_set_video_frame_buffer_type()
+ * esplusplayer_set_media_packet_video_decoded_cb()
+ */
+int esplusplayer_enable_video_hole(esplusplayer_handle handle,
+ const bool value);
+
+/**
+ * @brief Set sound stream information
+ * @param [in] handle : esplusplayer handle.
+ * @param [in] stream_info : sound stream information
+ * @return @c ESPLUSPLAYER_ERROR_TYPE_NONE on success,otherwise @c one of
+ * esplusplayer_error_type
+ * values will be returned.
+ * @retval #ESPLUSPLAYER_ERROR_TYPE_NONE Successful
+ * @retval #ESPLUSPLAYER_ERROR_TYPE_INVALID_PARAMETER Invalid parameter
+ * @retval #ESPLUSPLAYER_ERROR_TYPE_INVALID_OPERATION Internal operation
+ * failed
+ * @code
+ * esplusplayer_open(esplayer);
+ * esplusplayer_set_sound_stream_info(esplayer, stream_info);
+ * // ... your codes ...
+ * esplusplayer_close(esplayer);
+ * @endcode
+ * @pre The player state must be set to #ESPLUSPLAYER_STATE_IDLE
+ * @post None
+ * @exception None
+ * @see esplusplayer_open()
+ */
+int esplusplayer_set_sound_stream_info(esplusplayer_handle handle,
+ const sound_stream_info_h stream_info);
+#endif
#ifdef __cplusplus
}
#endif
#%bcond_with : disable ESPLUSPLAYER_UT by default, %bcond_without : enable ESPLUSPLAYER_UT
+%bcond_without TIZEN_PUBLIC
%if ("%{_vd_cfg_product_type}" != "AUDIO")
%bcond_without ESPLUSPLAYER_UT
%else
#echo "Product Type: %{_vd_cfg_product_type}"
Name: esplusplayer
Summary: new multimedia streaming player
- Version: 1.3.3
- Release: 1
+ Version: 1.3.7
-Release: 0
Group: Multimedia/Libraries
License: Apache-2.0
Source0: %{name}-%{version}.tar.gz
BuildRequires: pkgconfig(ecore)
BuildRequires: pkgconfig(evas)
BuildRequires: pkgconfig(ecore-wl2)
+%if %{with TIZEN_PUBLIC}
+BuildRequires: pkgconfig(libtrackrenderer)
+BuildRequires: pkgconfig(capi-media-sound-manager)
+# for test
+BuildRequires: pkgconfig(capi-mediademuxer)
+BuildRequires: pkgconfig(appcore-efl)
+%else
BuildRequires: pkgconfig(tv-resource-manager)
+BuildRequires: pkgconfig(drmdecrypt)
+BuildRequires: pkgconfig(context-aware-api)
+%if ("%{_vd_cfg_product_type}" != "AUDIO")
+BuildRequires: pkgconfig(graphics-control)
+%endif
+BuildRequires: pkgconfig(capi-trackrenderer-tv)
+BuildRequires: pkgconfig(logger)
+%endif
+
BuildRequires: pkgconfig(libtzplatform-config)
BuildRequires: pkgconfig(jsoncpp)
BuildRequires: pkgconfig(icu-i18n)
-BuildRequires: pkgconfig(drmdecrypt)
-BuildRequires: pkgconfig(logger)
BuildRequires: pkgconfig(gio-2.0)
BuildRequires: pkgconfig(libtbm)
-BuildRequires: pkgconfig(context-aware-api)
-BuildRequires: pkgconfig(capi-trackrenderer-tv)
+
BuildRequires: pkgconfig(libtbm)
BuildRequires: pkgconfig(capi-system-info)
-%if ("%{_vd_cfg_product_type}" != "AUDIO")
-BuildRequires: pkgconfig(graphics-control)
-%endif
%if ("%{sec_buildconf_product_lite_tizen}" == "n")
# for ut
%package ut-component-tomato
Summary: Test package with TOMATO
BuildRequires: gtest-devel
+%if %{without TIZEN_PUBLIC}
BuildRequires: pkgconfig(video-capture)
BuildRequires: pkgconfig(audio-control)
-BuildRequires: libjpeg-turbo-devel
BuildRequires: pkgconfig(video-sink)
+%endif
+BuildRequires: libjpeg-turbo-devel
+
#BuildRequires: pkgconfig(capi-system-info)
Requires: %{name} = %{version}-%{release}
export CFLAGS+=" -Wno-deprecated-declarations"
export CXXFLAGS+=" -Wno-deprecated-declarations"
+%if %{with TIZEN_PUBLIC}
+export CFLAGS+=" -DTIZEN_FEATURE_PUBLIC"
+export CXXFLAGS+=" -DTIZEN_FEATURE_PUBLIC"
+%define TIZEN_PUBLIC ON
+%define USE_MIXER no
+%else
%if ("%{_vd_cfg_product_type}" == "AUDIO")
export CFLAGS+=" -DIS_AUDIO_PRODUCT"
export CXXFLAGS+=" -DIS_AUDIO_PRODUCT"
%define PRODUCT_TYPE_AUDIO no
%define USE_MIXER yes
%endif
+%define TIZEN_PUBLIC OFF
+%endif
#TODO: check AV type is used or not
%if ("%{_vd_cfg_product_type}" == "AV")
export CXXFLAGS+=" -Wno-pessimizing-move"
+%if %{without TIZEN_PUBLIC}
%ifarch aarch64
export CXXFLAGS+=" -DDRM_MAPI_AARCH_64"
%endif
+%endif
%if ("%{sec_buildconf_product_lite_tizen}" == "n")
%if %{with ESPLUSPLAYER_UT}
-%cmake . -DESPLUSPLAYER_BUILD_UT=ON -DPRODUCT_TYPE_AUDIO=%PRODUCT_TYPE_AUDIO -DUSE_MIXER=%USE_MIXER
+%cmake . -DESPLUSPLAYER_BUILD_UT=ON -DPRODUCT_TYPE_AUDIO=%PRODUCT_TYPE_AUDIO -DUSE_MIXER=%USE_MIXER -DTIZEN_PUBLIC=%TIZEN_PUBLIC
%else
-%cmake . -DPRODUCT_TYPE_AUDIO=%PRODUCT_TYPE_AUDIO -DUSE_MIXER=%USE_MIXER
+%cmake . -DPRODUCT_TYPE_AUDIO=%PRODUCT_TYPE_AUDIO -DUSE_MIXER=%USE_MIXER -DTIZEN_PUBLIC=%TIZEN_PUBLIC
%endif
%else
-%cmake . -DPRODUCT_TYPE_AUDIO=%PRODUCT_TYPE_AUDIO -DUSE_MIXER=%USE_MIXER
+%cmake . -DPRODUCT_TYPE_AUDIO=%PRODUCT_TYPE_AUDIO -DUSE_MIXER=%USE_MIXER -DTIZEN_PUBLIC=%TIZEN_PUBLIC
+
%endif
make %{?jobs:-j%jobs}
SET(dependents "gstreamer-1.0 glib-2.0 dlog"
"boost"
- "tv-resource-manager"
"elementary ecore ecore-wl2"
- "jsoncpp")
+ "jsoncpp"
+ "drmdecrypt")
+IF(${TIZEN_PUBLIC} STREQUAL "OFF")
+SET(dependents ${dependents} "tv-resource-manager")
+ELSE(${TIZEN_PUBLIC} STREQUAL "OFF")
+SET(dependents ${dependents} "capi-media-sound-manager")
+ENDIF(${TIZEN_PUBLIC} STREQUAL "OFF")
+
INCLUDE(FindPkgConfig)
IF(CMAKE_SYSTEM_PROCESSOR STREQUAL armv7l)
#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"
#ifdef USE_MIXER
#include "mixer/mixerticket.h"
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_();
+#endif
#ifdef USE_MIXER
bool PrepareVideoMixingMode_(std::vector<Track>* tracks);
#endif // USE_MIXER
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;
#include "core/gst_utils.h"
#include "core/track_util.h"
+#ifndef TIZEN_FEATURE_PUBLIC
#include "core/utils/caf_logger.h"
+#endif
#include "core/utils/performance_checker.h"
#include "core/utils/plusplayer_cfg.h"
#include "core/utils/plusplayer_log.h"
EsPlayer::EsPlayer() {
std::call_once(es_conf::loaded, [this]() { es_conf::LoadIniFile(); });
+#ifndef TIZEN_FEATURE_PUBLIC
if (CafLogger::Initialize() != true) {
LOG_INFO("CAF Dbus not connect.");
}
+#endif
InitValuesFromIni_();
}
performance_checker::End(start, "Open");
return true;
};
+
+#ifndef TIZEN_FEATURE_PUBLIC
CafLogger::SetUniqueNumber();
caf_unique_number = CafLogger::GetUniqueNumber();
CafLogger::LogMessage(CafEventType::kIdle, caf_unique_number);
+#endif
es_event::Open event{op};
return state_manager_.ProcessEvent(event);
return true;
};
+#ifndef TIZEN_FEATURE_PUBLIC
CafLogger::LogMessage(CafEventType::kPlaying, caf_unique_number);
+#endif
es_event::Start event{op};
return state_manager_.ProcessEvent(event);
LOG_INFO_P(this, "Wait , Wait Prepare() Done...");
}
+#ifndef TIZEN_FEATURE_PUBLIC
CafLogger::LogMessage(CafEventType::kIdle, caf_unique_number);
CafLogger::StopLoggingThread();
+#endif
return res;
}
return true;
};
+#ifndef TIZEN_FEATURE_PUBLIC
CafLogger::StartLoggingThread();
CafLogger::LogMessage(CafEventType::kReady, caf_unique_number);
+#endif
es_event::Prepare event{op};
if (!state_manager_.ProcessEvent(event)) {
LOG_INFO_P(this, "call OnPrepareDone End");
}
+#ifndef TIZEN_FEATURE_PUBLIC
kpi::CodecLogger logger;
kpi::EsCodecLoggerKeys event_keys = MakeKpiKeys_();
logger.SendKpi(ret, event_keys);
+#endif
LOG_LEAVE_P(this);
}
internal::ConvertToStreamType(track.type), true);
}
+#ifndef TIZEN_FEATURE_PUBLIC
CafLogger::LogMessage(CafEventType::kPaused, caf_unique_number);
+#endif
es_event::Pause event{op};
return state_manager_.ProcessEvent(event);
internal::ConvertToStreamType(track.type), true);
}
+#ifndef TIZEN_FEATURE_PUBLIC
CafLogger::LogMessage(CafEventType::kPlaying, caf_unique_number);
+#endif
es_event::Resume event{op};
return state_manager_.ProcessEvent(event);
app_info_ = app_info;
trackrenderer_->SetAppInfo(app_info);
LOG_INFO("Appid [%s]", app_info.id.c_str());
+#ifndef TIZEN_FEATURE_PUBLIC
CafLogger::SetAppId(app_info.id);
+#endif
}
void EsPlayer::SetAppInfoEx(const PlayerAppInfoEx& app_info) {
app_info_.type = app_info.type;
trackrenderer_->SetAppInfoEx(app_info);
LOG_INFO("Appid [%s]", app_info_.id.c_str());
+#ifndef TIZEN_FEATURE_PUBLIC
CafLogger::SetAppId(app_info_.id);
+#endif
}
bool EsPlayer::SetPlaybackRate(const double rate, const bool audio_mute) {
return true;
};
+#ifndef TIZEN_FEATURE_PUBLIC
CafLogger::LogMessage(CafEventType::kStreamReady, caf_unique_number);
+#endif
es_event::SetStream event{op};
return state_manager_.ProcessEvent(event);
app_info_ = PlayerAppInfo();
src_queue_size_ = SrcQueueSize();
is_msg_task_stop_ = false;
+ key_system_acquired_ = false;
}
void EsPlayer::ResetContextForStop_() {
&time_size_);
} else
return;
- *byte_size = boost::any_cast<std::uint64_t>(byte_size_);
- *time_size = boost::any_cast<std::uint64_t>(time_size_);
+ try {
+ *byte_size = boost::any_cast<std::uint64_t>(byte_size_);
+ *time_size = boost::any_cast<std::uint64_t>(time_size_);
+ } catch (...) {
+ LOG_INFO_P(this, "any_cast failed");
+ }
if (time_unit_type == kPlayerTimeUnitTypeMs)
*time_size = util::ConvertNsToMs(*time_size);
else if (time_unit_type == kPlayerTimeUnitTypeUs)
MakeGstBufferForEncryptedPacket_(gstbuffer, packet, drm_info);
return PacketSubmitStatus::kSuccess;
};
+ if (!key_system_acquired_ && drm_info.handle != 0) {
+ key_system_ = eme::IEME::getKeySystemName(drm_info.handle);
+ LOG_INFO("KeySystemName :: [%s] ", key_system_.c_str());
+ if (!state_manager_
+ .GetPreparingState()) { // if the stream comes with clean data at
+ // the beginning, re-post kpi when we get
+ // key system.
+ kpi::CodecLogger logger;
+ kpi::EsCodecLoggerKeys event_keys = MakeKpiKeys_();
+ logger.SendKpi(true, event_keys);
+ }
+ key_system_acquired_ = true;
+ }
return SubmitPacketCommon_(packet, submitpacket_op);
}
// LCOV_EXCL_STOP
return trackrenderer_->SetSimpleMixOutBufferLevel(converted_level);
}
+#ifndef TIZEN_FEATURE_PUBLIC
kpi::EsCodecLoggerKeys EsPlayer::MakeKpiKeys_() {
kpi::EsCodecLoggerKeys event_info;
event_info.app_id = app_info_.id;
event_info.is_clean = true;
} else {
event_info.is_clean = false;
+ event_info.key_system = key_system_;
}
for (const auto& track : track_) {
}
return event_info;
}
+#endif
void EsPlayer::InitValuesFromIni_() {
force_audio_swdecoder_use_ = es_conf::ini_property["force_sw_audio_codec"];
force_video_swdecoder_use_ = es_conf::ini_property["force_sw_video_codec"];
}
+#ifdef TIZEN_FEATURE_PUBLIC
+bool EsPlayer::EnableVideoHole(bool value) {
+ if (state_manager_.GetState() < EsState::kIdle) {
+ LOG_ERROR_P(this, "Invalid State , current %d",
+ state_manager_.GetStateEnum());
+ return false;
+ }
+ return trackrenderer_->EnableVideoHole(value);
+}
+
+bool EsPlayer::SetSoundStreamInfo(const sound_stream_info_h stream_info) {
+ if (state_manager_.GetState() != EsState::kIdle) {
+ LOG_ERROR_P(this, "Invalid State , current %d",
+ state_manager_.GetStateEnum());
+ return false;
+ }
+ if (!stream_info) {
+ LOG_ERROR_P(this, "stream_info is null");
+ return false;
+ }
+ return trackrenderer_->SetSoundStreamInfo(stream_info);
+}
+#endif
+
namespace es_conf {
void LoadIniProperty(const Json::Value& root) {
_pkt->pts = packet.pts;
_pkt->duration = packet.duration;
_pkt->surface_data = static_cast<void*>(packet.surface_data);
+#ifdef TIZEN_FETURE_PUBLIC
+ _pkt->private_data = packet.buffer_addr;
+#else
_pkt->private_data = packet.scaler_index;
+#endif
if (decoded_pkt_mgr_ && decoded_pkt_mgr_->TryToAdd(_pkt)) {
this->media_packet_video_decoded_cb_(
_pkt, media_packet_video_decoded_cb_userdata_);
_pkt.pts = pkt->pts;
_pkt.duration = pkt->duration;
_pkt.surface_data = static_cast<tbm_surface_h>(pkt->surface_data);
+#ifdef TIZEN_FEATURE_PUBLIC
+ _pkt.buffer_addr = pkt->private_data;
+#else
_pkt.scaler_index = pkt->private_data;
+#endif
return cast_(handle)->ReturnDecodedPacket(_pkt);
});
return mgr;
packet->pts = _packet.pts;
packet->duration = _packet.duration;
packet->surface_data = static_cast<void*>(_packet.surface_data);
+#ifdef TIZEN_FEATURE_PUBLIC
+ packet->private_data = _packet.buffer_addr;
+#else
packet->private_data = _packet.scaler_index;
+#endif
}
if (state) {
*state = convert_get_decoded_video_frame_status_(_state);
LOG_ENTER_P(cast_(handle))
if (is_null_(handle)) return ESPLUSPLAYER_ERROR_TYPE_INVALID_PARAMETER;
LOG_INFO("policy: %d", static_cast<int>(policy));
-
auto ret = cast_(handle)->SetResourceAllocatePolicy(
static_cast<RscAllocPolicy>(policy));
return convert_return_type_(ret);
return convert_return_type_(cast_(handle)->SetSimpleMixOutBufferLevel(
static_cast<PlayerSimpleMixOutBufferLevel>(level)));
}
+
+#ifdef TIZEN_FEATURE_PUBLIC
+int esplusplayer_enable_video_hole(esplusplayer_handle handle,
+ const bool value) {
+ LOG_ENTER_P(cast_(handle))
+ if (is_null_(handle)) return ESPLUSPLAYER_ERROR_TYPE_INVALID_PARAMETER;
+
+ auto ret = cast_(handle)->EnableVideoHole(value);
+ return convert_return_type_(ret);
+}
+
+int esplusplayer_set_sound_stream_info(esplusplayer_handle handle,
+ const sound_stream_info_h stream_info) {
+ LOG_ENTER_P(cast_(handle))
+ if (is_null_(handle) || is_null_(stream_info))
+ return ESPLUSPLAYER_ERROR_TYPE_INVALID_PARAMETER;
+
+ auto ret = cast_(handle)->SetSoundStreamInfo(stream_info);
+ return convert_return_type_(ret);
+}
+#endif
namespace adapter_utils {
void InitTrack(TrackRendererTrack* track) {
+#ifdef TIZEN_FEATURE_PUBLIC
+ memset(track, 0x00, sizeof(TrackRendererTrack));
+#endif
track->index = kTrackRendererInvalidTrackIndex; // int index
track->id = 0; // int id
track->mimetype = nullptr; // const char* mimetype
_packet.pts = packet->pts;
_packet.duration = packet->duration;
_packet.surface_data = static_cast<tbm_surface_h>(packet->surface_data);
+#ifdef TIZEN_FEATURE_PUBLIC
+ _packet.buffer_addr = packet->buffer_addr;
+#else
_packet.scaler_index = packet->scaler_index;
+#endif
return _packet;
}
_packet.pts = packet.pts;
_packet.duration = packet.duration;
_packet.surface_data = static_cast<tbm_surface_h>(packet.surface_data);
+#ifdef TIZEN_FEATURE_PUBLIC
+ _packet.buffer_addr = packet.buffer_addr;
+#else
_packet.scaler_index = packet.scaler_index;
+#endif
return _packet;
}
*policy = kTrackRendererRscAllocConditional;
return true;
}
- case RscAllocPolicy::kRscAllocExclusiveNoExplicit: {
- *policy = kTrackRendererRscAllocExclusiveNoExplicit;
+ case RscAllocPolicy::kRscAllocInAppMultiview: {
+ *policy = kTrackRendererRscAllocInAppMultiview;
+ return true;
+ }
+ case RscAllocPolicy::kRscAllocExclusiveMfcForced: {
+ *policy = kTrackRendererRscAllocExclusiveMfcForced;
return true;
}
default: