Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1487)

Unified Diff: content/browser/renderer_host/media/audio_sync_reader.cc

Issue 2330393002: Change sync primitives ownership for audio rendering. (Closed)
Patch Set: Comments. Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/renderer_host/media/audio_sync_reader.cc
diff --git a/content/browser/renderer_host/media/audio_sync_reader.cc b/content/browser/renderer_host/media/audio_sync_reader.cc
index 51914e1a6f245886e07f312995a09cc36bd8e9a1..984e252075bdd592cd09a12a9a8cd9467bdbb438 100644
--- a/content/browser/renderer_host/media/audio_sync_reader.cc
+++ b/content/browser/renderer_host/media/audio_sync_reader.cc
@@ -5,9 +5,12 @@
#include "content/browser/renderer_host/media/audio_sync_reader.h"
#include <algorithm>
+#include <string>
+#include <utility>
#include "base/command_line.h"
#include "base/format_macros.h"
+#include "base/memory/ptr_util.h"
#include "base/memory/shared_memory.h"
#include "base/metrics/histogram_macros.h"
#include "base/strings/stringprintf.h"
@@ -40,11 +43,16 @@ void LogAudioGlitchResult(AudioGlitchResult result) {
namespace content {
-AudioSyncReader::AudioSyncReader(base::SharedMemory* shared_memory,
- const media::AudioParameters& params)
- : shared_memory_(shared_memory),
+AudioSyncReader::AudioSyncReader(
+ const media::AudioParameters& params,
+ std::unique_ptr<base::SharedMemory> shared_memory,
+ std::unique_ptr<base::CancelableSyncSocket> socket,
+ std::unique_ptr<base::CancelableSyncSocket> foreign_socket)
+ : shared_memory_(std::move(shared_memory)),
mute_audio_(base::CommandLine::ForCurrentProcess()->HasSwitch(
switches::kMuteAudio)),
+ socket_(std::move(socket)),
+ foreign_socket_(std::move(foreign_socket)),
packet_size_(shared_memory_->requested_size()),
renderer_callback_count_(0),
renderer_missed_callback_count_(0),
@@ -107,6 +115,30 @@ AudioSyncReader::~AudioSyncReader() {
DVLOG(1) << log_string;
}
+// static
+std::unique_ptr<AudioSyncReader> AudioSyncReader::Create(
+ const media::AudioParameters& params) {
+ std::unique_ptr<base::SharedMemory> shared_memory(new base::SharedMemory());
+ std::unique_ptr<base::CancelableSyncSocket> socket(
+ new base::CancelableSyncSocket());
+ std::unique_ptr<base::CancelableSyncSocket> foreign_socket(
+ new base::CancelableSyncSocket());
+
+ base::CheckedNumeric<size_t> memory_size =
DaleCurtis 2016/09/16 23:29:12 Move above the unique_ptr allocations.
Max Morin 2016/09/19 10:13:01 Done.
+ sizeof(media::AudioOutputBufferParameters);
+ memory_size += AudioBus::CalculateMemorySize(params);
+
+ if (!memory_size.IsValid() ||
+ !shared_memory->CreateAndMapAnonymous(memory_size.ValueOrDie()) ||
+ !base::CancelableSyncSocket::CreatePair(socket.get(),
+ foreign_socket.get())) {
+ return {};
DaleCurtis 2016/09/16 23:29:12 Ditto return nullptr.
Max Morin 2016/09/19 10:13:01 Done.
+ }
+ return base::WrapUnique(new AudioSyncReader(params, std::move(shared_memory),
+ std::move(socket),
+ std::move(foreign_socket)));
+}
+
// media::AudioOutputController::SyncReader implementations.
void AudioSyncReader::UpdatePendingBytes(uint32_t bytes,
uint32_t frames_skipped) {
@@ -152,19 +184,6 @@ void AudioSyncReader::Close() {
socket_->Close();
}
-bool AudioSyncReader::Init() {
- socket_.reset(new base::CancelableSyncSocket());
- foreign_socket_.reset(new base::CancelableSyncSocket());
- return base::CancelableSyncSocket::CreatePair(socket_.get(),
- foreign_socket_.get());
-}
-
-bool AudioSyncReader::PrepareForeignSocket(
- base::ProcessHandle process_handle,
- base::SyncSocket::TransitDescriptor* descriptor) {
- return foreign_socket_->PrepareTransitDescriptor(process_handle, descriptor);
-}
-
bool AudioSyncReader::WaitUntilDataIsReady() {
TRACE_EVENT0("audio", "AudioSyncReader::WaitUntilDataIsReady");
base::TimeDelta timeout = maximum_wait_time_;

Powered by Google App Engine
This is Rietveld 408576698