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

Side by Side Diff: chrome/browser/renderer_host/audio_sync_reader.cc

Issue 6532073: Move core pieces of browser\renderer_host to src\content. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 10 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/renderer_host/audio_sync_reader.h"
6
7 #include "base/process_util.h"
8 #include "base/shared_memory.h"
9
10 AudioSyncReader::AudioSyncReader(base::SharedMemory* shared_memory)
11 : shared_memory_(shared_memory) {
12 }
13
14 AudioSyncReader::~AudioSyncReader() {
15 }
16
17 // media::AudioOutputController::SyncReader implementations.
18 void AudioSyncReader::UpdatePendingBytes(uint32 bytes) {
19 socket_->Send(&bytes, sizeof(bytes));
20 }
21
22 uint32 AudioSyncReader::Read(void* data, uint32 size) {
23 uint32 read_size = std::min(size, shared_memory_->created_size());
24 memcpy(data, shared_memory_->memory(), read_size);
25 memset(shared_memory_->memory(), 0, shared_memory_->created_size());
26 return read_size;
27 }
28
29 void AudioSyncReader::Close() {
30 socket_->Close();
31 }
32
33 bool AudioSyncReader::Init() {
34 base::SyncSocket* sockets[2] = {0};
35 if (base::SyncSocket::CreatePair(sockets)) {
36 socket_.reset(sockets[0]);
37 foreign_socket_.reset(sockets[1]);
38 return true;
39 }
40 return false;
41 }
42
43 #if defined(OS_WIN)
44 bool AudioSyncReader::PrepareForeignSocketHandle(
45 base::ProcessHandle process_handle,
46 base::SyncSocket::Handle* foreign_handle) {
47 ::DuplicateHandle(GetCurrentProcess(), foreign_socket_->handle(),
48 process_handle, foreign_handle,
49 0, FALSE, DUPLICATE_SAME_ACCESS);
50 if (*foreign_handle != 0)
51 return true;
52 return false;
53 }
54 #else
55 bool AudioSyncReader::PrepareForeignSocketHandle(
56 base::ProcessHandle process_handle,
57 base::FileDescriptor* foreign_handle) {
58 foreign_handle->fd = foreign_socket_->handle();
59 foreign_handle->auto_close = false;
60 if (foreign_handle->fd != -1)
61 return true;
62 return false;
63 }
64 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698