#include <media_format.h>
#include <media_packet_internal.h>
#include <sound_manager.h>
+#ifndef TIZEN_TV
+#include <esplusplayer_capi.h>
+#endif
#include <appcore-efl.h>
#include <Elementary.h>
#include <tbm_surface_internal.h>
sound_stream_info_h stream_info;
webrtc_display_type_e display_type;
Evas_Object *eo;
+#ifndef TIZEN_TV
+ esplusplayer_handle espp;
+#endif
} render;
+#ifndef TIZEN_TV
+ bool encoded_video_frame_cb_is_set;
+ bool encoded_audio_frame_cb_is_set;
+#endif
#ifdef __DEBUG_VALIDATE_ENCODED_FRAME_CB__
GstElement *render_pipeline;
GstElement *appsrc;
sound_manager_destroy_stream_information(g_conns[index].render.stream_info);
g_conns[index].render.stream_info = NULL;
}
+#ifndef TIZEN_TV
+ if (g_conns[index].encoded_audio_frame_cb_is_set)
+ g_conns[index].encoded_audio_frame_cb_is_set = false;
+
+ if (g_conns[index].encoded_video_frame_cb_is_set)
+ g_conns[index].encoded_video_frame_cb_is_set = false;
+
+ if (g_conns[index].render.espp) {
+ g_conns[index].render.espp = NULL;
+ g_print("espp close & destroy\n");
+ }
+#endif
}
static void _webrtc_start(int index)
RET_IF(ret != WEBRTC_ERROR_NONE, "ret[0x%x]", ret);
g_print("webrtc_start() success\n");
+#ifndef TIZEN_TV
+ if (g_conns[index].encoded_audio_frame_cb_is_set ||
+ g_conns[index].encoded_video_frame_cb_is_set) {
+ if (!g_conns[index].render.espp)
+ g_print("espp create & open\n");
+ }
+
+ if (g_conns[index].encoded_audio_frame_cb_is_set)
+ g_print("espp set audio stream info\n");
+
+ if (g_conns[index].encoded_video_frame_cb_is_set)
+ g_print("espp set video stream info\n");
+#endif
}
static void _webrtc_stop(int index)
g_print("appsrc render pipeline is released\n");
}
#endif
+#ifndef TIZEN_TV
+ if (g_conns[index].encoded_audio_frame_cb_is_set ||
+ g_conns[index].encoded_video_frame_cb_is_set) {
+ if (g_conns[index].render.espp) {
+ g_conns[index].render.espp = NULL;
+ g_print("espp destroy\n");
+ }
+ }
+#endif
}
static void _webrtc_get_state(int index)
g_print("__track_added_cb() is invoked, webrtc[%p], type[%d], id[%u], conn[%p]\n", webrtc, type, id, conn);
+#ifndef TIZEN_TV
+ if (conn->encoded_audio_frame_cb_is_set && type == WEBRTC_MEDIA_TYPE_AUDIO) {
+ if (conn->render.espp) {
+ /* espp: state check & prepare async */
+ g_print("espp prepare async\n");
+ }
+ return;
+ }
+ if (conn->encoded_video_frame_cb_is_set && type == WEBRTC_MEDIA_TYPE_VIDEO) {
+ if (conn->render.espp) {
+ /* espp: state check & prepare async */
+ g_print("espp prepare async\n");
+ }
+ return;
+ }
+#endif
if (type == WEBRTC_MEDIA_TYPE_VIDEO) {
#ifndef __DEBUG_VALIDATE_ENCODED_FRAME_CB__
if (conn->render.display_type == WEBRTC_DISPLAY_TYPE_OVERLAY) {
g_print("webrtc[%p] type[%u] track_id[%u] packet[%p, data_ptr:%p] user_data[%p]\n",
webrtc, type, track_id, packet, data_ptr, user_data);
+#ifndef TIZEN_TV
+ if (type == WEBRTC_MEDIA_TYPE_AUDIO && conn->encoded_audio_frame_cb_is_set) {
+ if (!conn->render.espp) {
+ g_printerr("render.espp is NULL\n");
+ media_packet_destroy(packet);
+ return;
+ }
+ /* TODO: submit data to espp */
+ } else if (type == WEBRTC_MEDIA_TYPE_VIDEO && conn->encoded_video_frame_cb_is_set) {
+ if (!conn->render.espp) {
+ g_printerr("render.espp is NULL\n");
+ media_packet_destroy(packet);
+ return;
+ }
+ /* TODO: submit data to espp */
+ }
+#endif
#ifdef __DEBUG_VALIDATE_ENCODED_FRAME_CB__
{
GstFlowReturn gst_ret = GST_FLOW_OK;
RET_IF(ret != WEBRTC_ERROR_NONE, "ret[0x%x]", ret);
g_print("webrtc_set_encoded_audio_frame_cb() success\n");
+#ifndef TIZEN_TV
+ if (!g_conns[index].encoded_audio_frame_cb_is_set) {
+ g_conns[index].encoded_audio_frame_cb_is_set = true;
+ if (!g_conns[index].render.espp)
+ g_print("espp create & open\n");
+
+ g_print("espp set audio stream info\n");
+ }
+#endif
}
static void _webrtc_unset_encoded_audio_frame_cb(int index)
RET_IF(ret != WEBRTC_ERROR_NONE, "ret[0x%x]", ret);
g_print("webrtc_unset_encoded_audio_frame_cb() success\n");
+#ifndef TIZEN_TV
+ if (g_conns[index].encoded_audio_frame_cb_is_set) {
+ g_conns[index].encoded_audio_frame_cb_is_set = false;
+ g_print("espp close & destroy\n");
+ }
+#endif
}
static void _webrtc_set_encoded_video_frame_cb(int index)
RET_IF(ret != WEBRTC_ERROR_NONE, "ret[0x%x]", ret);
g_print("webrtc_set_encoded_video_frame_cb() success\n");
+#ifndef TIZEN_TV
+ if (!g_conns[index].encoded_video_frame_cb_is_set) {
+ g_conns[index].encoded_video_frame_cb_is_set = true;
+ if (!g_conns[index].render.espp) {
+ g_print("espp create & open\n");
+ }
+ g_print("espp set video stream info\n");
+ }
+#endif
}
static void _webrtc_unset_encoded_video_frame_cb(int index)
int ret = WEBRTC_ERROR_NONE;
ret = webrtc_unset_encoded_video_frame_cb(g_conns[index].webrtc);
- if (ret != WEBRTC_ERROR_NONE)
- g_print("failed to webrtc_unset_encoded_video_frame_cb()\n");
- else
- g_print("webrtc_unset_encoded_video_frame_cb() success\n");
+ RET_IF(ret != WEBRTC_ERROR_NONE, "ret[0x%x]", ret);
+
+ g_print("webrtc_unset_encoded_video_frame_cb() success\n");
+#ifndef TIZEN_TV
+ if (g_conns[index].encoded_video_frame_cb_is_set) {
+ g_conns[index].encoded_video_frame_cb_is_set = false;
+ g_print("espp close & destroy\n");
+ }
+#endif
}
static void __media_packet_source_buffer_state_changed_cb(unsigned int source_id, webrtc_media_packet_source_buffer_state_e state, void *user_data)