static ASM_cb_result_t MediaPlayerAudioSessionEventSourcePause(ASM_event_sources_t eventSource, void* callbackData)
{
MediaPlayer* player = static_cast<MediaPlayer*>(callbackData);
+ HTMLMediaElement* element = static_cast<HTMLMediaElement*>(player->mediaPlayerClient());
+
if (!player)
return ASM_CB_RES_IGNORE;
case ASM_EVENT_SOURCE_RESOURCE_CONFLICT:
case ASM_EVENT_SOURCE_EARJACK_UNPLUG:
if (!player->url().string().contains("camera://")) {
- player->pause();
+ element->pause();
return ASM_CB_RES_PAUSE;
}
default:
{
MediaPlayer* player = static_cast<MediaPlayer*>(callbackData);
HTMLMediaElement* element = static_cast<HTMLMediaElement*>(player->mediaPlayerClient());
+
if (!player)
return ASM_CB_RES_IGNORE;
switch (eventSource) {
case ASM_EVENT_SOURCE_ALARM_END:
if (!element->isVideo() && !player->url().string().contains("camera://")) {
- player->play();
+ element->play();
return ASM_CB_RES_PLAYING;
}
return ASM_CB_RES_NONE;
LOG_MEDIA_MESSAGE("Load %s", cleanUrl.utf8().data());
+#if ENABLE(TIZEN_MEDIA_STREAM)
+ // Workaround modification for getUserMedia.
+ // When 'playing' event is fired videoWidth and videoHeight are not available.
+ // Set m_videoSize as frame size which comes from webkitCameraSource.
+ // This size is fixed.
+ if (isLocalMediaStream())
+ if (gst_element_factory_find("camerasrc"))
+ m_videoSize = IntSize(480, 640);
+ else
+ m_videoSize = IntSize(640, 480);
+#endif
+
if (m_preload == MediaPlayer::None) {
LOG_MEDIA_MESSAGE("Delaying load.");
m_delayingLoad = true;
} else {
m_seeking = true;
m_seekTime = time;
+#if ENABLE(TIZEN_GSTREAMER_VIDEO)
+ if (m_seekTime != m_mediaDuration)
+ m_isEndReached = false;
+#endif
}
}
GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS(GST_BIN(m_playBin.get()), GST_DEBUG_GRAPH_SHOW_ALL, dotFileName.data());
#if ENABLE(TIZEN_GSTREAMER_VIDEO)
- if (m_suspendTime > 0 && newState == GST_STATE_PAUSED) {
- if (!isLocalMediaStream())
+ HTMLMediaElement* element = static_cast<HTMLMediaElement*>(player()->mediaPlayerClient());
+ if (element->suspended() && newState == GST_STATE_PAUSED) {
+ if (m_suspendTime > 0 && !(isLocalMediaStream() || m_isEndReached))
seek(m_suspendTime);
m_suspendTime = 0;
m_player->mediaPlayerClient()->setSuspended(false);
// On-disk buffering was attempted but the media is live. This
// can't work so disable on-disk buffering and reset the
// pipeline.
+
+#if ENABLE(TIZEN_MEDIA_STREAM)
+ if (state == GST_STATE_READY && isLiveStream() && m_preload == MediaPlayer::Auto && !isLocalMediaStream()) {
+#else
if (state == GST_STATE_READY && isLiveStream() && m_preload == MediaPlayer::Auto) {
+#endif
setPreload(MediaPlayer::None);
gst_element_set_state(m_playBin.get(), GST_STATE_NULL);
gst_element_set_state(m_playBin.get(), GST_STATE_PAUSED);
}
// A live stream was paused, reset the pipeline.
+#if ENABLE(TIZEN_MEDIA_STREAM)
+ if (state == GST_STATE_PAUSED && pending == GST_STATE_PLAYING && isLiveStream() && !isLocalMediaStream()) {
+#else
if (state == GST_STATE_PAUSED && pending == GST_STATE_PLAYING && isLiveStream()) {
+#endif
gst_element_set_state(m_playBin.get(), GST_STATE_NULL);
gst_element_set_state(m_playBin.get(), GST_STATE_PLAYING);
#if ENABLE(TIZEN_GSTREAMER_AUDIO)
// HTMLMediaElement. In some cases like reverse playback the
// position is not always reported as 0 for instance.
float now = currentTime();
+#if ENABLE(TIZEN_GSTREAMER_VIDEO)
+ if (now > 0 && now != duration()) {
+#else
if (now > 0 && now <= duration() && m_mediaDuration != now) {
+#endif
m_mediaDurationKnown = true;
m_mediaDuration = now;
m_player->durationChanged();
"video/ogg",
"video/quicktime",
"video/vivo",
+#if !ENABLE(TIZEN_GSTREAMER_VIDEO)
"video/webm",
+#endif
"video/x-cdxa",
"video/x-dirac",
"video/x-dv",