From: puru Date: Tue, 15 Sep 2015 08:56:58 +0000 (+0530) Subject: fixup! [M44_2403] Chromium upversion to m44_2403 branch X-Git-Tag: submit/tizen/20201118.160233~621 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e83f2114d513384b3fac26f782c8c4a2bb9590b7;p=platform%2Fframework%2Fweb%2Fchromium-efl.git fixup! [M44_2403] Chromium upversion to m44_2403 branch Build errors occurs when enabling MM feature, hence fixing them. 1. The arguments for ScopedPtrHashMap changed from to updated the same. 2. VideoFrameCompositor constructor now accepts three arguments, included compositor_task_runner as first argument. 3. UpdateCurrentFrame API was missing, hence added 4. Implementation for API UpdateCurrentFrame is changed, and painting is done using PaintFrameUsingOldRenderingPath API 5. Implementation of OnIncomingCapturedVideoFrame API has changed, such that we don't need to pass format, updated accordingly. 6. API ReserveOutputBuffer returns a scoped_ptr, hence changed type for variable buffer_. 7. MessageLoopProxy is deprecated. Code should prefer to depend on TaskRunner for passing task runners around. scoped_refptr -> scoped_refptr 8. Removing some interfaces as not used anymore. Verified ME, MSE, Webaudio working on Note4 64bit. Bug: http://web.sec.samsung.net/bugzilla/show_bug.cgi?id=13291 Reviewed by: SeungSeop Park, Venugopal S M Change-Id: I0e12ada6b85b1f91168a2e1d8fcd7541214f129a Signed-off-by: puru --- diff --git a/tizen_src/build/gyp_chromiumefl.sh b/tizen_src/build/gyp_chromiumefl.sh index 767078a..4b7748b 100755 --- a/tizen_src/build/gyp_chromiumefl.sh +++ b/tizen_src/build/gyp_chromiumefl.sh @@ -147,13 +147,9 @@ add_tizen_flags() { fi if [ "$tizen_version" == "3.0" ]; then - # [M44_2403] Temporary disabling the multimedia flag for switching to new chromium - # FIXME: http://web.sec.samsung.net/bugzilla/show_bug.cgi?id=14037 - COMMON_GYP_PARAMETERS+="-Dtizen_multimedia_support=0 + COMMON_GYP_PARAMETERS+="-Dtizen_multimedia_support=1 " elif [ "$tizen_version" == "2.4" -a "$target" == "tv" ]; then - # [M44_2403] Temporary disabling the multimedia flag for switching to new chromium - # FIXME: http://web.sec.samsung.net/bugzilla/show_bug.cgi?id=14037 COMMON_GYP_PARAMETERS+="-Dtizen_multimedia_support=0 " else diff --git a/tizen_src/chromium_impl/content/browser/media/media_web_contents_observer_efl.h b/tizen_src/chromium_impl/content/browser/media/media_web_contents_observer_efl.h index dbbe2a3..e9b388b 100644 --- a/tizen_src/chromium_impl/content/browser/media/media_web_contents_observer_efl.h +++ b/tizen_src/chromium_impl/content/browser/media/media_web_contents_observer_efl.h @@ -36,7 +36,8 @@ class CONTENT_EXPORT MediaWebContentsObserver private: // Map from RenderFrameHost* to BrowserMediaPlayerManagerEfl. - typedef base::ScopedPtrHashMap + typedef base::ScopedPtrHashMap> MediaPlayerManagerMap; MediaPlayerManagerMap media_player_managers_; diff --git a/tizen_src/chromium_impl/content/renderer/media/efl/media_source_delegate_efl.cc b/tizen_src/chromium_impl/content/renderer/media/efl/media_source_delegate_efl.cc index 1f75e70..c9df69e 100644 --- a/tizen_src/chromium_impl/content/renderer/media/efl/media_source_delegate_efl.cc +++ b/tizen_src/chromium_impl/content/renderer/media/efl/media_source_delegate_efl.cc @@ -57,7 +57,8 @@ void MediaSourceDelegateEfl::InitializeMediaSource( const media::Demuxer::EncryptedMediaInitDataCB& emedia_init_data_cb, const media::SetDecryptorReadyCB& set_decryptor_ready_cb, const UpdateNetworkStateCB& update_network_state_cb, - const DurationChangeCB& duration_change_cb) { + const DurationChangeCB& duration_change_cb, + const base::Closure& waiting_for_decryption_key_cb) { DCHECK(main_loop_->BelongsToCurrentThread()); DCHECK(!media_source_opened_cb.is_null()); media_source_opened_cb_ = media_source_opened_cb; @@ -65,6 +66,8 @@ void MediaSourceDelegateEfl::InitializeMediaSource( set_decryptor_ready_cb_ = set_decryptor_ready_cb; update_network_state_cb_ = media::BindToCurrentLoop(update_network_state_cb); duration_change_cb_ = duration_change_cb; + waiting_for_decryption_key_cb_ = + media::BindToCurrentLoop(waiting_for_decryption_key_cb); chunk_demuxer_.reset(new media::ChunkDemuxer( media::BindToCurrentLoop( @@ -73,7 +76,7 @@ void MediaSourceDelegateEfl::InitializeMediaSource( media::BindToCurrentLoop( base::Bind(&MediaSourceDelegateEfl::OnEncryptedMediaInitData, main_weak_this_)), - base::Bind(&media::MediaLog::AddLogEvent, media_log_, false)); + base::Bind(&media::MediaLog::AddLogEvent, media_log_), media_log_, false)); media_task_runner_->PostTask(FROM_HERE, base::Bind(&MediaSourceDelegateEfl::InitializeDemuxer, @@ -100,13 +103,13 @@ void MediaSourceDelegateEfl::InitializeDemuxer() { } void MediaSourceDelegateEfl::OnEncryptedMediaInitData ( - media::EmeInitDataType /* init_data_type */, + media::EmeInitDataType init_data_type, const std::vector& init_data) { DCHECK(main_loop_->BelongsToCurrentThread()); if (emedia_init_data_cb_.is_null()) { return; } - emedia_init_data_cb_.Run(type, init_data); + emedia_init_data_cb_.Run(init_data_type, init_data); } void MediaSourceDelegateEfl::OnDemuxerOpened() { @@ -166,8 +169,10 @@ void MediaSourceDelegateEfl::OnDemuxerInitDone( void MediaSourceDelegateEfl::InitAudioDecryptingDemuxerStream() { DCHECK(media_task_runner_->BelongsToCurrentThread()); - audio_decrypting_demuxer_stream_.reset(new media::DecryptingDemuxerStream( - media_task_runner_, set_decryptor_ready_cb_)); + audio_decrypting_demuxer_stream_.reset( + new media::DecryptingDemuxerStream( + media_task_runner_, set_decryptor_ready_cb_, + waiting_for_decryption_key_cb_)); audio_decrypting_demuxer_stream_->Initialize( audio_stream_, @@ -179,8 +184,10 @@ void MediaSourceDelegateEfl::InitAudioDecryptingDemuxerStream() { void MediaSourceDelegateEfl::InitVideoDecryptingDemuxerStream() { DCHECK(media_task_runner_->BelongsToCurrentThread()); - video_decrypting_demuxer_stream_.reset(new media::DecryptingDemuxerStream( - media_task_runner_, set_decryptor_ready_cb_)); + video_decrypting_demuxer_stream_.reset( + new media::DecryptingDemuxerStream( + media_task_runner_, set_decryptor_ready_cb_, + waiting_for_decryption_key_cb_)); video_decrypting_demuxer_stream_->Initialize( video_stream_, diff --git a/tizen_src/chromium_impl/content/renderer/media/efl/media_source_delegate_efl.h b/tizen_src/chromium_impl/content/renderer/media/efl/media_source_delegate_efl.h index a0a9084..6476674 100644 --- a/tizen_src/chromium_impl/content/renderer/media/efl/media_source_delegate_efl.h +++ b/tizen_src/chromium_impl/content/renderer/media/efl/media_source_delegate_efl.h @@ -57,7 +57,8 @@ class MediaSourceDelegateEfl const media::Demuxer::EncryptedMediaInitDataCB& emedia_init_data_cb, const media::SetDecryptorReadyCB& set_decryptor_ready_cb, const UpdateNetworkStateCB& update_network_state_cb, - const DurationChangeCB& duration_change_cb); + const DurationChangeCB& duration_change_cb, + const base::Closure& waiting_for_decryption_key_cb); blink::WebTimeRanges Buffered() const; @@ -114,7 +115,7 @@ class MediaSourceDelegateEfl void FinishResettingDecryptingDemuxerStreams(); // Message loop for main renderer thread and corresponding weak pointer. - const scoped_refptr main_loop_; + const scoped_refptr main_loop_; base::WeakPtrFactory main_weak_factory_; base::WeakPtr main_weak_this_; @@ -128,6 +129,7 @@ class MediaSourceDelegateEfl MediaSourceOpenedCB media_source_opened_cb_; UpdateNetworkStateCB update_network_state_cb_; DurationChangeCB duration_change_cb_; + base::Closure waiting_for_decryption_key_cb_; scoped_ptr chunk_demuxer_; media::DemuxerStream* audio_stream_; diff --git a/tizen_src/chromium_impl/content/renderer/media/efl/webmediaplayer_efl.cc b/tizen_src/chromium_impl/content/renderer/media/efl/webmediaplayer_efl.cc index 18edd958..5dd96c1 100644 --- a/tizen_src/chromium_impl/content/renderer/media/efl/webmediaplayer_efl.cc +++ b/tizen_src/chromium_impl/content/renderer/media/efl/webmediaplayer_efl.cc @@ -48,9 +48,13 @@ WebMediaPlayerEfl::WebMediaPlayerEfl( client_(client), media_log_(new RenderMediaLog()), delegate_(delegate), + // Threaded compositing isn't enabled universally yet. compositor_task_runner_( - RenderThreadImpl::current()->compositor_message_loop_proxy()), + RenderThreadImpl::current()->compositor_message_loop_proxy().get() + ? RenderThreadImpl::current()->compositor_message_loop_proxy() + : base::MessageLoopProxy::current()), compositor_(new media::VideoFrameCompositor( + compositor_task_runner_, BIND_TO_RENDER_LOOP(&WebMediaPlayerEfl::OnNaturalSizeChanged), BIND_TO_RENDER_LOOP(&WebMediaPlayerEfl::OnOpacityChanged))), weak_factory_(this), @@ -77,15 +81,9 @@ WebMediaPlayerEfl::WebMediaPlayerEfl( #if defined(TIZEN_MULTIMEDIA_EME_SUPPORT) DCHECK(encrypted_media_support_); #endif - // We want to be notified of |main_loop_| destruction. - base::MessageLoop::current()->AddDestructionObserver(this); player_id_ = manager_->RegisterMediaPlayer(this); - // Threaded compositing isn't enabled universally yet. - if (!compositor_task_runner_.get()) - compositor_task_runner_ = base::MessageLoopProxy::current(); - media_log_->AddEvent( media_log_->CreateEvent(media::MediaLogEvent::WEBMEDIAPLAYER_CREATED)); } @@ -96,12 +94,10 @@ WebMediaPlayerEfl::~WebMediaPlayerEfl() { manager_->UnregisterMediaPlayer(player_id_); } - SetVideoFrameProviderClient(NULL); + compositor_->SetVideoFrameProviderClient(NULL); client_->setWebLayer(NULL); if (delegate_.get()) delegate_->PlayerGone(this); - if (base::MessageLoop::current()) - base::MessageLoop::current()->RemoveDestructionObserver(this); compositor_task_runner_->DeleteSoon(FROM_HERE, compositor_); if (media_source_delegate_) { // Part of |media_source_delegate_| needs to be stopped @@ -144,6 +140,8 @@ void WebMediaPlayerEfl::load(LoadType load_type, base::Bind(&WebMediaPlayerEfl::SetNetworkState, weak_factory_.GetWeakPtr()), base::Bind(&WebMediaPlayerEfl::OnDurationChange, + weak_factory_.GetWeakPtr()), + base::Bind(&WebMediaPlayerEfl::OnWaitingForDecryptionKey, weak_factory_.GetWeakPtr())); } else if (load_type == LoadTypeURL) { player_type_ = MEDIA_PLAYER_TYPE_URL; @@ -211,6 +209,15 @@ void WebMediaPlayerEfl::OnMediaSourceOpened( client_->mediaSourceOpened(web_media_source); } +void WebMediaPlayerEfl::OnWaitingForDecryptionKey() { + client_->didBlockPlaybackWaitingForKey(); + + // TODO(jrummell): didResumePlaybackBlockedForKey() should only be called + // when a key has been successfully added (e.g. OnSessionKeysChange() with + // |has_additional_usable_key| = true). http://crbug.com/461903 + client_->didResumePlaybackBlockedForKey(); +} + void WebMediaPlayerEfl::play() { manager_->Play(player_id_); // Has to be updated from |MediaPlayerBridgeGstreamer| but IPC causes delay. @@ -405,19 +412,6 @@ unsigned WebMediaPlayerEfl::videoDecodedByteCount() const { return 0; }; -void WebMediaPlayerEfl::SetVideoFrameProviderClient( - cc::VideoFrameProvider::Client* client) { - // This is called from both the main renderer thread and the compositor - // thread (when the main thread is blocked). - compositor_->SetVideoFrameProviderClient(client); -} - -scoped_refptrWebMediaPlayerEfl::GetCurrentFrame() { - scoped_refptr current_frame = - GetCurrentFrameFromCompositor(); - return current_frame; -} - void WebMediaPlayerEfl::SetReadyState(WebMediaPlayer::ReadyState state) { ready_state_ = state; client_->readyStateChanged(); @@ -557,7 +551,7 @@ void WebMediaPlayerEfl::FrameReady( const scoped_refptr& frame) { compositor_task_runner_->PostTask( FROM_HERE, - base::Bind(&media::VideoFrameCompositor::UpdateCurrentFrame, + base::Bind(&media::VideoFrameCompositor::PaintFrameUsingOldRenderingPath, base::Unretained(compositor_), frame)); } diff --git a/tizen_src/chromium_impl/content/renderer/media/efl/webmediaplayer_efl.h b/tizen_src/chromium_impl/content/renderer/media/efl/webmediaplayer_efl.h index d81fbd4..9160c4d 100644 --- a/tizen_src/chromium_impl/content/renderer/media/efl/webmediaplayer_efl.h +++ b/tizen_src/chromium_impl/content/renderer/media/efl/webmediaplayer_efl.h @@ -10,7 +10,6 @@ #include "base/message_loop/message_loop.h" #include "base/memory/shared_memory.h" #include "cc/layers/video_frame_provider_client_impl.h" -#include "content/common/media/tizen/media_player_messages_enums_tizen.h" #include "content/renderer/media/efl/media_source_delegate_efl.h" #include "content/renderer/media/efl/renderer_media_player_manager_efl.h" #include "media/base/efl/media_player_efl.h" @@ -47,8 +46,6 @@ class RendererMediaPlayerManager; // player. class WebMediaPlayerEfl : public blink::WebMediaPlayer, - public cc::VideoFrameProvider, - public base::MessageLoop::DestructionObserver, public base::SupportsWeakPtr { public: // Construct a WebMediaPlayerEfl object. This class communicates @@ -110,15 +107,6 @@ class WebMediaPlayerEfl unsigned audioDecodedByteCount() const override; unsigned videoDecodedByteCount() const override; - // cc::VideoFrameProvider implementation. - void SetVideoFrameProviderClient( - cc::VideoFrameProvider::Client* client) override; - scoped_refptr GetCurrentFrame() override; - void PutCurrentFrame( - const scoped_refptr& frame) override {}; - - // Method inherited from DestructionObserver. - void WillDestroyCurrentMessageLoop() override {}; #if defined(TIZEN_MULTIMEDIA_EME_SUPPORT) virtual MediaKeyException generateKeyRequest( const blink::WebString& key_system, @@ -170,6 +158,10 @@ class WebMediaPlayerEfl void RequestPause(); + // Called when a decoder detects that the key needed to decrypt the stream + // is not available. + void OnWaitingForDecryptionKey(); + private: void OnNaturalSizeChanged(gfx::Size size); void OnOpacityChanged(bool opaque); diff --git a/tizen_src/chromium_impl/media/video/capture/tizen/video_capture_device_tizen.cc b/tizen_src/chromium_impl/media/video/capture/tizen/video_capture_device_tizen.cc index d969ad4..7be4170 100644 --- a/tizen_src/chromium_impl/media/video/capture/tizen/video_capture_device_tizen.cc +++ b/tizen_src/chromium_impl/media/video/capture/tizen/video_capture_device_tizen.cc @@ -272,11 +272,6 @@ void VideoCaptureDeviceTizen::OnCameraCaptured(camera_preview_data_s* frame, LOG(ERROR) << " Error when rotating the video frame"; } WEBRTC_DEBUG_DUMPFRAME(frame, yplane); - VideoCaptureFormat capture_format; - capture_format.frame_size.SetSize(target_resolution.width(), - target_resolution.height()); - capture_format.frame_rate = current_fps; - capture_format.pixel_format = PIXEL_FORMAT_I420; gfx::Rect rect(target_resolution.width(), target_resolution.height()); @@ -284,7 +279,7 @@ void VideoCaptureDeviceTizen::OnCameraCaptured(camera_preview_data_s* frame, VideoFrame::CreateFrame(VideoFrame::I420, target_resolution, rect, target_resolution, base::TimeDelta()); - self->client_->OnIncomingCapturedVideoFrame(self->buffer_, capture_format, + self->client_->OnIncomingCapturedVideoFrame(self->buffer_.Pass(), videoframe, base::TimeTicks::Now()); } @@ -399,7 +394,7 @@ void VideoCaptureDeviceTizen::OnStopAndDeAllocate() { } bool VideoCaptureDeviceTizen::AllocateVideoBuffers(int width, int height) { - buffer_ = client_->ReserveOutputBuffer(media::VideoFrame::I420, + buffer_ = client_->ReserveOutputBuffer(media::PIXEL_FORMAT_I420, gfx::Size(width, height)); return (buffer_.get() != NULL); } diff --git a/tizen_src/chromium_impl/media/video/capture/tizen/video_capture_device_tizen.h b/tizen_src/chromium_impl/media/video/capture/tizen/video_capture_device_tizen.h index a7fb7b8..a653e4e 100644 --- a/tizen_src/chromium_impl/media/video/capture/tizen/video_capture_device_tizen.h +++ b/tizen_src/chromium_impl/media/video/capture/tizen/video_capture_device_tizen.h @@ -59,7 +59,7 @@ class VideoCaptureDeviceTizen : public VideoCaptureDevice { scoped_ptr client_; Name device_name_; base::Thread worker_; // Thread used for reading data from the device. - scoped_refptr buffer_; + scoped_ptr buffer_; camera_h camera_; DISALLOW_IMPLICIT_CONSTRUCTORS(VideoCaptureDeviceTizen); };