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

Side by Side Diff: chrome/renderer/audio_device.h

Issue 6002005: Implement renderer AudioDevice API for low-latency audio output... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 11 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
Property Changes:
Added: svn:eol-style
+ LF
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 #ifndef CHROME_RENDERER_AUDIO_DEVICE_H_
6 #define CHROME_RENDERER_AUDIO_DEVICE_H_
7 #pragma once
8
9 #include <vector>
scherkus (not reviewing) 2011/01/10 23:42:32 nit: blank line between system + non-system header
Chris Rogers 2011/01/11 23:01:02 Done.
10 #include "base/basictypes.h"
11 #include "base/scoped_ptr.h"
12 #include "base/shared_memory.h"
13 #include "base/threading/simple_thread.h"
14 #include "chrome/common/render_messages.h"
15 #include "chrome/renderer/audio_message_filter.h"
16
17 // Each instance of AudioDevice corresponds to one host stream.
scherkus (not reviewing) 2011/01/10 23:42:32 are there any threading restrictions as to how Aud
Chris Rogers 2011/01/11 23:01:02 I've added a comment that the class is *not* threa
18 class AudioDevice : public AudioMessageFilter::Delegate,
19 public base::DelegateSimpleThread::Delegate {
20 public:
21 class RenderCallback {
scherkus (not reviewing) 2011/01/10 23:42:32 what about typedeffing a callback type instead of
Chris Rogers 2011/01/11 23:01:02 Yes, it's pretty much mirroring what we're doing i
22 public:
23 virtual void render(const std::vector<float*>& audio_data,
scherkus (not reviewing) 2011/01/10 23:42:32 considering this isn't a non-trivial function it s
Chris Rogers 2011/01/11 23:01:02 Done.
24 size_t number_of_frames) = 0;
25 protected:
26 virtual ~RenderCallback() { }
scherkus (not reviewing) 2011/01/10 23:42:32 no inlined ctors/dtors in header files http://dev
Chris Rogers 2011/01/11 23:01:02 I agree with the style guideline in general, but I
27 };
28
29 AudioDevice(size_t buffer_size,
30 int channels,
31 double sample_rate,
32 RenderCallback* callback);
33 virtual ~AudioDevice();
34
35 // Returns |true| on success.
36 bool Start();
37 bool Stop();
38
39 private:
40 // AudioMessageFilter::Delegate implementation
scherkus (not reviewing) 2011/01/10 23:42:32 nit: period at end
Chris Rogers 2011/01/11 23:01:02 Done.
41 virtual void OnRequestPacket(AudioBuffersState buffers_state);
42 virtual void OnStateChanged(const ViewMsg_AudioStreamState_Params& state);
43 virtual void OnCreated(base::SharedMemoryHandle handle, uint32 length);
44 virtual void OnLowLatencyCreated(base::SharedMemoryHandle handle,
45 base::SyncSocket::Handle socket_handle,
46 uint32 length);
47 virtual void OnVolume(double volume);
48 virtual void OnDestroy();
49 // End of AudioMessageFilter::Delegate implementation
scherkus (not reviewing) 2011/01/10 23:42:32 nit: based on recent chromium-dev style conversati
Chris Rogers 2011/01/11 23:01:02 Done.
50
51 // DelegateSimpleThread::Delegate implementation
scherkus (not reviewing) 2011/01/10 23:42:32 nit: period at end
Chris Rogers 2011/01/11 23:01:02 Done.
52 virtual void Run();
53 // End of DelegateSimpleThread::Delegate implementation
scherkus (not reviewing) 2011/01/10 23:42:32 ditto
Chris Rogers 2011/01/11 23:01:02 Done.
54
55 // Format
56 size_t buffer_size_;
57 int channels_;
58 double sample_rate_;
59
60 // Calls the client's callback for rendering audio.
61 void FireRenderCallback();
62 RenderCallback* callback_;
63
64 // The client callback renders audio into here.
65 std::vector<float*> audio_data_;
66
67 // Callbacks for rendering audio occur on this thread.
68 scoped_ptr<base::DelegateSimpleThread> audio_thread_;
69
70 // IPC message stuff.
71 static scoped_refptr<AudioMessageFilter> filter_;
72 int32 stream_id_;
73 scoped_ptr<base::SharedMemory> shared_memory_;
74 scoped_ptr<base::SyncSocket> socket_;
75
76 base::SharedMemory* shared_memory() { return shared_memory_.get(); }
scherkus (not reviewing) 2011/01/10 23:42:32 nit: class order style has helper methods go befor
Chris Rogers 2011/01/11 23:01:02 Done.
77 base::SyncSocket* socket() { return socket_.get(); }
78 void* shared_memory_data() { return shared_memory()->memory(); }
79 };
scherkus (not reviewing) 2011/01/10 23:42:32 DISALLOW_COPY_AND_ASSIGN
Chris Rogers 2011/01/11 23:01:02 Done.
80
81 #endif // CHROME_RENDERER_AUDIO_DEVICE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698