X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=Source%2FWebCore%2Fhtml%2FHTMLMediaElement.cpp;h=63a8c974fc90f8f15e34ffe4602a49e0575377e4;hb=258fd6edc89234ee2729f6ae39ca33eafe608ad2;hp=b21813719e2f1bca22a7795ceec588892da8f08d;hpb=6a5b58fe4282d3eaf98347b8cdbac6e72e0da58b;p=framework%2Fweb%2Fwebkit-efl.git diff --git a/Source/WebCore/html/HTMLMediaElement.cpp b/Source/WebCore/html/HTMLMediaElement.cpp index b218137..63a8c97 100755 --- a/Source/WebCore/html/HTMLMediaElement.cpp +++ b/Source/WebCore/html/HTMLMediaElement.cpp @@ -119,8 +119,8 @@ #include "TizenExtensibleAPI.h" #endif -#if ENABLE(TIZEN_DEVICE_ROTATION) -#include +#if ENABLE(TIZEN_GSTREAMER_VIDEO) +#include #endif using namespace std; @@ -160,20 +160,6 @@ static const char* boolString(bool val) static const char* mediaSourceURLProtocol = "x-media-source"; #endif -#if ENABLE(TIZEN_DEVICE_ROTATION) -#define RADIAN_VALUE (57.2957) - -enum { - ROTATE_0, - ROTATE_90, - ROTATE_180, - ROTATE_270, - ROTATE_ERROR -}; - -int HTMLMediaElement::s_rotation = ROTATE_0; -#endif - using namespace HTMLNames; using namespace std; @@ -308,8 +294,9 @@ HTMLMediaElement::HTMLMediaElement(const QualifiedName& tagName, Document* docum setHasCustomCallbacks(); addElementToDocumentMap(this, document); -#if ENABLE(TIZEN_DEVICE_ROTATION) - registerRotationCallback(); + +#if ENABLE(TIZEN_GSTREAMER_AUDIO) + document->incrementActiveMediaObjectCount(); #endif } @@ -334,92 +321,15 @@ HTMLMediaElement::~HTMLMediaElement() m_mediaController->removeMediaElement(this); removeElementFromDocumentMap(this, document()); -#if ENABLE(TIZEN_DEVICE_ROTATION) - unregisterRotationCallback(); -#endif -} - -#if ENABLE(TIZEN_DEVICE_ROTATION) -bool HTMLMediaElement::isHorizontal() -{ - return (s_rotation == ROTATE_90 || s_rotation == ROTATE_270) ? true : false; -} - -bool HTMLMediaElement::isVertical() -{ - return (s_rotation == ROTATE_0 || s_rotation == ROTATE_180) ? true : false; -} - -void HTMLMediaElement::registerRotationCallback() -{ - sensor_create(&m_handle); - sensor_accelerometer_set_cb(m_handle, 100, onRotationChanged, this); - sensor_start(m_handle, SENSOR_ACCELEROMETER); - - return; -} - -void HTMLMediaElement::unregisterRotationCallback() -{ - sensor_accelerometer_unset_cb(m_handle); - sensor_stop(m_handle, SENSOR_ACCELEROMETER); - sensor_destroy(m_handle); - - return; -} -int HTMLMediaElement::calcRotation(float x, float y, float z) -{ - double atanV, normZ, rawZ; - int accTheta, accPitch; - int rotation; - - atanV = atan2(y, x); - accTheta = static_cast(atanV * (RADIAN_VALUE) + 270) % 360; - rawZ = static_cast(z / (0.004 * 9.81)); - - if (rawZ > 250) - normZ = 1.0; - else if (rawZ < -250) - normZ = -1.0; - else - normZ = (static_cast(rawZ)) / 250; - - accPitch = static_cast(acos(normZ) * (RADIAN_VALUE)); - - if ((accPitch > 35) && (accPitch < 145)) { - if ((accTheta >= 315 && accTheta <= 359) || (accTheta >= 0 && accTheta < 45)) - rotation = ROTATE_0; - else if (accTheta >= 45 && accTheta < 135) - rotation = ROTATE_90; - else if (accTheta >= 135 && accTheta < 225) - rotation = ROTATE_180; - else if (accTheta >= 225 && accTheta < 315) - rotation = ROTATE_270; - else - rotation = ROTATE_ERROR; - } else - rotation = ROTATE_ERROR; - - return rotation; -} - -void HTMLMediaElement::onRotationChanged(uint64_t timeStamp, sensor_data_accuracy_e accuracy, float x, float y, float z, void* userData) -{ - HTMLMediaElement* that = static_cast(userData); - - int autoRotation = 0; - vconf_get_bool(VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL, &autoRotation); - if (!autoRotation) - return; - - int rotation = that->calcRotation(x, y, z); - if (rotation == ROTATE_ERROR || rotation == s_rotation) - return; + m_completelyLoaded = true; + if (m_player) + m_player->clearMediaPlayerClient(); - s_rotation = rotation; -} +#if ENABLE(TIZEN_GSTREAMER_AUDIO) + document()->decrementActiveMediaObjectCount(); #endif +} void HTMLMediaElement::didMoveToNewDocument(Document* oldDocument) { @@ -472,7 +382,7 @@ void HTMLMediaElement::parseAttribute(const Attribute& attribute) else if (attribute.name() == loopAttr) updateDisableSleep(); #endif -#if ENABLE(TIZEN_MEDIA_STREAM) +#if ENABLE(TIZEN_GSTREAMER_AUDIO) else if (attribute.name() == mutedAttr) m_muted = true; #endif @@ -1101,9 +1011,15 @@ void HTMLMediaElement::loadResource(const KURL& initialURL, ContentType& content if (!autoplay()) m_player->setPreload(m_preload); +#if ENABLE(TIZEN_GSTREAMER_VIDEO) + else { + if (isVideo()) + power_lock_state(POWER_STATE_NORMAL, 0); + } +#endif m_player->setPreservesPitch(m_webkitPreservesPitch); -#if !ENABLE(TIZEN_MEDIA_STREAM) +#if !ENABLE(TIZEN_GSTREAMER_AUDIO) if (fastHasAttribute(mutedAttr)) m_muted = true; updateVolume(); @@ -1112,7 +1028,7 @@ void HTMLMediaElement::loadResource(const KURL& initialURL, ContentType& content if (!m_player->load(url, contentType, keySystem)) mediaLoadingFailed(MediaPlayer::FormatError); -#if ENABLE(TIZEN_MEDIA_STREAM) +#if ENABLE(TIZEN_GSTREAMER_AUDIO) updateVolume(); #endif @@ -1620,6 +1536,10 @@ void HTMLMediaElement::mediaEngineError(PassRefPtr err) // 6 - Abort the overall resource selection algorithm. m_currentSourceNode = 0; +#if ENABLE(TIZEN_GSTREAMER_VIDEO) + if (isVideo()) + power_unlock_state(POWER_STATE_NORMAL); +#endif } void HTMLMediaElement::cancelPendingEventsAndCallbacks() @@ -1703,6 +1623,10 @@ void HTMLMediaElement::mediaLoadingFailed(MediaPlayer::NetworkState error) if (document()->page() && document()->page()->settings()->diagnosticLoggingEnabled()) document()->page()->chrome()->client()->logDiagnosticMessage(DiagnosticLoggingKeys::mediaLoadingFailedKey(), stringForNetworkState(error), DiagnosticLoggingKeys::failKey()); +#if ENABLE(TIZEN_GSTREAMER_VIDEO) + if (isVideo()) + power_unlock_state(POWER_STATE_NORMAL); +#endif } void HTMLMediaElement::setNetworkState(MediaPlayer::NetworkState state) @@ -2214,6 +2138,9 @@ bool HTMLMediaElement::seeking() const void HTMLMediaElement::refreshCachedTime() const { +#if ENABLE(TIZEN_GSTREAMER_VIDEO) + if (m_player->currentTime() > 0.0f || m_cachedTime == MediaPlayer::invalidTime()) +#endif m_cachedTime = m_player->currentTime(); m_cachedTimeWallClockUpdateTime = WTF::currentTime(); } @@ -2228,7 +2155,9 @@ void HTMLMediaElement::invalidateCachedTime() static const double minimumTimePlayingBeforeCacheSnapshot = 0.5; m_minimumWallClockTimeToCacheMediaTime = WTF::currentTime() + minimumTimePlayingBeforeCacheSnapshot; +#if !ENABLE(TIZEN_GSTREAMER_VIDEO) m_cachedTime = MediaPlayer::invalidTime(); +#endif } // playback state @@ -2446,6 +2375,10 @@ void HTMLMediaElement::play() return; } +#if ENABLE(TIZEN_GSTREAMER_VIDEO) + if (isVideo()) + power_lock_state(POWER_STATE_NORMAL, 0); +#endif playInternal(); } @@ -2488,6 +2421,10 @@ void HTMLMediaElement::pause() if (userGestureRequiredForRateChange() && !ScriptController::processingUserGesture()) return; +#if ENABLE(TIZEN_GSTREAMER_VIDEO) + if (isVideo()) + power_unlock_state(POWER_STATE_NORMAL); +#endif pauseInternal(); } @@ -3987,6 +3924,10 @@ void HTMLMediaElement::stop() stopPeriodicTimers(); cancelPendingEventsAndCallbacks(); +#if ENABLE(TIZEN_GSTREAMER_VIDEO) + if (isVideo()) + power_unlock_state(POWER_STATE_NORMAL); +#endif } void HTMLMediaElement::suspend(ReasonForSuspension why) @@ -4196,6 +4137,10 @@ void HTMLMediaElement::enterFullscreen() #if ENABLE(FULLSCREEN_API) if (document() && document()->settings() && document()->settings()->fullScreenEnabled()) { document()->requestFullScreenForElement(this, 0, Document::ExemptIFrameAllowFullScreenRequirement); +#if ENABLE(TIZEN_FULLSCREEN_API) + if (hasMediaControls()) + mediaControls()->updateMediaControlScale(); +#endif return; } #endif @@ -4234,12 +4179,13 @@ void HTMLMediaElement::exitFullscreen() } #if ENABLE(TIZEN_FULLSCREEN_API) -void HTMLMediaElement::updateMediaControlsStyle() +void HTMLMediaElement::updateMediaControlsStyle(bool needsRecalc) { if (hasMediaControls()) mediaControls()->updateMediaControlScale(); - recalcStyle(Node::Force); + if (needsRecalc) + recalcStyle(Node::Force); } #endif @@ -4439,6 +4385,10 @@ bool HTMLMediaElement::createMediaControls() controls->setMediaController(m_mediaController ? m_mediaController.get() : static_cast(this)); controls->reset(); +#if ENABLE(TIZEN_FULLSCREEN_API) + if (isFullscreen()) + controls->updateMediaControlScale(); +#endif if (isFullscreen()) controls->enteredFullscreen();