| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "extensions/renderer/api/display_source/wifi_display/wifi_display_media
_pipeline.h" | 5 #include "extensions/renderer/api/display_source/wifi_display/wifi_display_media
_pipeline.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "content/public/renderer/render_thread.h" | 8 #include "content/public/renderer/render_thread.h" |
| 9 #include "content/public/renderer/video_encode_accelerator.h" | 9 #include "content/public/renderer/video_encode_accelerator.h" |
| 10 | 10 |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 63 base::TimeTicks reference_time) { | 63 base::TimeTicks reference_time) { |
| 64 DCHECK(video_encoder_); | 64 DCHECK(video_encoder_); |
| 65 video_encoder_->InsertRawVideoFrame(video_frame, reference_time); | 65 video_encoder_->InsertRawVideoFrame(video_frame, reference_time); |
| 66 } | 66 } |
| 67 | 67 |
| 68 void WiFiDisplayMediaPipeline::RequestIDRPicture() { | 68 void WiFiDisplayMediaPipeline::RequestIDRPicture() { |
| 69 DCHECK(video_encoder_); | 69 DCHECK(video_encoder_); |
| 70 video_encoder_->RequestIDRPicture(); | 70 video_encoder_->RequestIDRPicture(); |
| 71 } | 71 } |
| 72 | 72 |
| 73 enum WiFiDisplayMediaPipeline::InitializationStep : unsigned { | 73 enum class WiFiDisplayMediaPipeline::InitializationStep : unsigned { |
| 74 INITIALIZE_FIRST, | 74 FIRST, |
| 75 INITIALIZE_AUDIO_ENCODER = INITIALIZE_FIRST, | 75 AUDIO_ENCODER = FIRST, |
| 76 INITIALIZE_VIDEO_ENCODER, | 76 VIDEO_ENCODER, |
| 77 INITIALIZE_MEDIA_PACKETIZER, | 77 MEDIA_PACKETIZER, |
| 78 INITIALIZE_MEDIA_SERVICE, | 78 MEDIA_SERVICE, |
| 79 INITIALIZE_LAST = INITIALIZE_MEDIA_SERVICE | 79 LAST = MEDIA_SERVICE |
| 80 }; | 80 }; |
| 81 | 81 |
| 82 void WiFiDisplayMediaPipeline::Initialize( | 82 void WiFiDisplayMediaPipeline::Initialize( |
| 83 const InitCompletionCallback& callback) { | 83 const InitCompletionCallback& callback) { |
| 84 DCHECK(!audio_encoder_ && !video_encoder_ && !packetizer_); | 84 DCHECK(!audio_encoder_ && !video_encoder_ && !packetizer_); |
| 85 OnInitialize(callback, INITIALIZE_FIRST, true); | 85 OnInitialize(callback, InitializationStep::FIRST, true); |
| 86 } | 86 } |
| 87 | 87 |
| 88 void WiFiDisplayMediaPipeline::OnInitialize( | 88 void WiFiDisplayMediaPipeline::OnInitialize( |
| 89 const InitCompletionCallback& callback, | 89 const InitCompletionCallback& callback, |
| 90 InitializationStep current_step, | 90 InitializationStep current_step, |
| 91 bool success) { | 91 bool success) { |
| 92 if (!success) { | 92 if (!success) { |
| 93 callback.Run(false); | 93 callback.Run(false); |
| 94 return; | 94 return; |
| 95 } | 95 } |
| 96 | 96 |
| 97 InitStepCompletionCallback init_step_callback; | 97 InitStepCompletionCallback init_step_callback; |
| 98 if (current_step < INITIALIZE_LAST) { | 98 if (current_step < InitializationStep::LAST) { |
| 99 InitializationStep next_step = | 99 InitializationStep next_step = static_cast<InitializationStep>( |
| 100 static_cast<InitializationStep>(current_step + 1u); | 100 static_cast<unsigned>(current_step) + 1u); |
| 101 init_step_callback = base::Bind(&WiFiDisplayMediaPipeline::OnInitialize, | 101 init_step_callback = |
| 102 weak_factory_.GetWeakPtr(), callback, next_step); | 102 base::Bind(&WiFiDisplayMediaPipeline::OnInitialize, |
| 103 weak_factory_.GetWeakPtr(), callback, next_step); |
| 103 } | 104 } |
| 104 | 105 |
| 105 switch (current_step) { | 106 switch (current_step) { |
| 106 case INITIALIZE_AUDIO_ENCODER: | 107 case InitializationStep::AUDIO_ENCODER: |
| 107 DCHECK(!audio_encoder_); | 108 DCHECK(!audio_encoder_); |
| 108 if (type_ & wds::AudioSession) { | 109 if (type_ & wds::AudioSession) { |
| 109 auto result_callback = | 110 auto result_callback = |
| 110 base::Bind(&WiFiDisplayMediaPipeline::OnAudioEncoderCreated, | 111 base::Bind(&WiFiDisplayMediaPipeline::OnAudioEncoderCreated, |
| 111 weak_factory_.GetWeakPtr(), init_step_callback); | 112 weak_factory_.GetWeakPtr(), init_step_callback); |
| 112 WiFiDisplayAudioEncoder::Create(audio_codec_, result_callback); | 113 WiFiDisplayAudioEncoder::Create(audio_codec_, result_callback); |
| 113 } else { | 114 } else { |
| 114 init_step_callback.Run(true); | 115 init_step_callback.Run(true); |
| 115 } | 116 } |
| 116 break; | 117 break; |
| 117 case INITIALIZE_VIDEO_ENCODER: | 118 case InitializationStep::VIDEO_ENCODER: |
| 118 DCHECK(!video_encoder_); | 119 DCHECK(!video_encoder_); |
| 119 if (type_ & wds::VideoSession) { | 120 if (type_ & wds::VideoSession) { |
| 120 auto result_callback = | 121 auto result_callback = |
| 121 base::Bind(&WiFiDisplayMediaPipeline::OnVideoEncoderCreated, | 122 base::Bind(&WiFiDisplayMediaPipeline::OnVideoEncoderCreated, |
| 122 weak_factory_.GetWeakPtr(), init_step_callback); | 123 weak_factory_.GetWeakPtr(), init_step_callback); |
| 123 WiFiDisplayVideoEncoder::Create(video_parameters_, result_callback); | 124 WiFiDisplayVideoEncoder::Create(video_parameters_, result_callback); |
| 124 } else { | 125 } else { |
| 125 init_step_callback.Run(true); | 126 init_step_callback.Run(true); |
| 126 } | 127 } |
| 127 break; | 128 break; |
| 128 case INITIALIZE_MEDIA_PACKETIZER: | 129 case InitializationStep::MEDIA_PACKETIZER: |
| 129 DCHECK(!packetizer_); | 130 DCHECK(!packetizer_); |
| 130 CreateMediaPacketizer(); | 131 CreateMediaPacketizer(); |
| 131 init_step_callback.Run(true); | 132 init_step_callback.Run(true); |
| 132 break; | 133 break; |
| 133 case INITIALIZE_MEDIA_SERVICE: | 134 case InitializationStep::MEDIA_SERVICE: |
| 134 service_callback_.Run( | 135 service_callback_.Run( |
| 135 mojo::GetProxy(&media_service_), | 136 mojo::GetProxy(&media_service_), |
| 136 base::Bind(&WiFiDisplayMediaPipeline::OnMediaServiceRegistered, | 137 base::Bind(&WiFiDisplayMediaPipeline::OnMediaServiceRegistered, |
| 137 weak_factory_.GetWeakPtr(), callback)); | 138 weak_factory_.GetWeakPtr(), callback)); |
| 138 break; | 139 break; |
| 139 } | 140 } |
| 140 } | 141 } |
| 141 | 142 |
| 142 void WiFiDisplayMediaPipeline::CreateMediaPacketizer() { | 143 void WiFiDisplayMediaPipeline::CreateMediaPacketizer() { |
| 143 DCHECK(!packetizer_); | 144 DCHECK(!packetizer_); |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 232 } | 233 } |
| 233 | 234 |
| 234 bool WiFiDisplayMediaPipeline::OnPacketizedMediaDatagramPacket( | 235 bool WiFiDisplayMediaPipeline::OnPacketizedMediaDatagramPacket( |
| 235 WiFiDisplayMediaDatagramPacket media_datagram_packet) { | 236 WiFiDisplayMediaDatagramPacket media_datagram_packet) { |
| 236 DCHECK(media_service_); | 237 DCHECK(media_service_); |
| 237 media_service_->SendMediaPacket(std::move(media_datagram_packet)); | 238 media_service_->SendMediaPacket(std::move(media_datagram_packet)); |
| 238 return true; | 239 return true; |
| 239 } | 240 } |
| 240 | 241 |
| 241 } // namespace extensions | 242 } // namespace extensions |
| OLD | NEW |