fixup! [M44_2403] Chromium upversion to m44_2403 branch
authorpuru <puru.dharma@samsung.com>
Tue, 15 Sep 2015 08:56:58 +0000 (14:26 +0530)
committerYoungsoo Choi <kenshin.choi@samsung.com>
Tue, 10 Jul 2018 06:57:09 +0000 (06:57 +0000)
Build errors occurs when enabling MM feature, hence fixing them.

1. The arguments for ScopedPtrHashMap changed from <Key, value> to
<Key, ScopedPtr> 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<base::MessageLoopProxy> -> scoped_refptr
<base::SingleThreadTaskRunner>

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 <puru.dharma@samsung.com>
tizen_src/build/gyp_chromiumefl.sh
tizen_src/chromium_impl/content/browser/media/media_web_contents_observer_efl.h
tizen_src/chromium_impl/content/renderer/media/efl/media_source_delegate_efl.cc
tizen_src/chromium_impl/content/renderer/media/efl/media_source_delegate_efl.h
tizen_src/chromium_impl/content/renderer/media/efl/webmediaplayer_efl.cc
tizen_src/chromium_impl/content/renderer/media/efl/webmediaplayer_efl.h
tizen_src/chromium_impl/media/video/capture/tizen/video_capture_device_tizen.cc
tizen_src/chromium_impl/media/video/capture/tizen/video_capture_device_tizen.h

index 767078a..4b7748b 100755 (executable)
@@ -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
index dbbe2a3..e9b388b 100644 (file)
@@ -36,7 +36,8 @@ class CONTENT_EXPORT MediaWebContentsObserver
 
  private:
   // Map from RenderFrameHost* to BrowserMediaPlayerManagerEfl.
-  typedef base::ScopedPtrHashMap<uintptr_t, BrowserMediaPlayerManagerEfl>
+  typedef base::ScopedPtrHashMap<uintptr_t,
+                                 scoped_ptr<BrowserMediaPlayerManagerEfl>>
       MediaPlayerManagerMap;
   MediaPlayerManagerMap media_player_managers_;
 
index 1f75e70..c9df69e 100644 (file)
@@ -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<uint8>& 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_,
index a0a9084..6476674 100644 (file)
@@ -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<base::MessageLoopProxy> main_loop_;
+  const scoped_refptr<base::SingleThreadTaskRunner> main_loop_;
   base::WeakPtrFactory<MediaSourceDelegateEfl> main_weak_factory_;
   base::WeakPtr<MediaSourceDelegateEfl> 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<media::ChunkDemuxer> chunk_demuxer_;
   media::DemuxerStream* audio_stream_;
index 18edd95..5dd96c1 100644 (file)
@@ -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_refptr<VideoFrame>WebMediaPlayerEfl::GetCurrentFrame() {
-  scoped_refptr<VideoFrame> 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<VideoFrame>& frame) {
   compositor_task_runner_->PostTask(
       FROM_HERE,
-      base::Bind(&media::VideoFrameCompositor::UpdateCurrentFrame,
+      base::Bind(&media::VideoFrameCompositor::PaintFrameUsingOldRenderingPath,
                  base::Unretained(compositor_),
                  frame));
 }
index d81fbd4..9160c4d 100644 (file)
@@ -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<WebMediaPlayerEfl> {
  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<media::VideoFrame> GetCurrentFrame() override;
-  void PutCurrentFrame(
-      const scoped_refptr<media::VideoFrame>& 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);
index d969ad4..7be4170 100644 (file)
@@ -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);
 }
index a7fb7b8..a653e4e 100644 (file)
@@ -59,7 +59,7 @@ class VideoCaptureDeviceTizen : public VideoCaptureDevice {
   scoped_ptr<VideoCaptureDevice::Client> client_;
   Name device_name_;
   base::Thread worker_;  // Thread used for reading data from the device.
-  scoped_refptr<VideoCaptureDevice::Client::Buffer> buffer_;
+  scoped_ptr<VideoCaptureDevice::Client::Buffer> buffer_;
   camera_h camera_;
   DISALLOW_IMPLICIT_CONSTRUCTORS(VideoCaptureDeviceTizen);
 };