Chromium Code Reviews| Index: content/browser/renderer_host/media/audio_input_sync_writer.h |
| diff --git a/content/browser/renderer_host/media/audio_input_sync_writer.h b/content/browser/renderer_host/media/audio_input_sync_writer.h |
| index cc6c0f248e5e7568681b19ca35a4eb51bc4fdb89..b56a6af57fb5dd8c26fde22382db2ba876867d05 100644 |
| --- a/content/browser/renderer_host/media/audio_input_sync_writer.h |
| +++ b/content/browser/renderer_host/media/audio_input_sync_writer.h |
| @@ -9,6 +9,7 @@ |
| #include "base/process/process.h" |
| #include "base/sync_socket.h" |
| #include "base/time/time.h" |
| +#include "content/common/content_export.h" |
| #include "media/audio/audio_input_controller.h" |
| #include "media/audio/audio_parameters.h" |
| #include "media/base/audio_bus.h" |
| @@ -17,20 +18,19 @@ |
| #include "base/file_descriptor_posix.h" |
| #endif |
| -namespace base { |
| -class SharedMemory; |
| -} |
| - |
| namespace content { |
| + |
| // A AudioInputController::SyncWriter implementation using SyncSocket. This |
| // is used by AudioInputController to provide a low latency data source for |
| // transmitting audio packets between the browser process and the renderer |
| // process. |
| -class AudioInputSyncWriter : public media::AudioInputController::SyncWriter { |
| +class CONTENT_EXPORT AudioInputSyncWriter |
| + : public media::AudioInputController::SyncWriter { |
| public: |
| - explicit AudioInputSyncWriter(base::SharedMemory* shared_memory, |
| - int shared_memory_segment_count, |
| - const media::AudioParameters& params); |
| + AudioInputSyncWriter(void* shared_memory, |
| + size_t shared_memory_size, |
| + int shared_memory_segment_count, |
| + const media::AudioParameters& params); |
| ~AudioInputSyncWriter() override; |
| @@ -45,15 +45,21 @@ class AudioInputSyncWriter : public media::AudioInputController::SyncWriter { |
| bool PrepareForeignSocket(base::ProcessHandle process_handle, |
| base::SyncSocket::TransitDescriptor* descriptor); |
| + protected: |
| + // Socket for transmitting audio data. |
| + scoped_ptr<base::CancelableSyncSocket> socket_; |
| + |
| private: |
| - base::SharedMemory* shared_memory_; |
| + FRIEND_TEST_ALL_PREFIXES(AudioInputSyncWriterTest, Write); |
| + |
| + // Virtual function for native logging to be able to override in tests. |
| + virtual void AddToNativeLog(const std::string& message); |
| + |
| + uint8* shared_memory_; |
|
tommi (sloooow) - chröme
2015/09/03 14:55:13
I wonder if we should just make the AudioInputSync
Henrik Grunell
2015/09/03 15:29:51
Yes, that might be a good idea. (Don't know if the
|
| uint32 shared_memory_segment_size_; |
| uint32 shared_memory_segment_count_; |
| uint32 current_segment_id_; |
| - // Socket for transmitting audio data. |
| - scoped_ptr<base::CancelableSyncSocket> socket_; |
| - |
| // Socket to be used by the renderer. The reference is released after |
| // PrepareForeignSocketHandle() is called and ran successfully. |
| scoped_ptr<base::CancelableSyncSocket> foreign_socket_; |
| @@ -70,6 +76,18 @@ class AudioInputSyncWriter : public media::AudioInputController::SyncWriter { |
| // Increasing ID used for audio buffers correct sequence at read side. |
| uint32_t next_buffer_id_; |
| + // Next expected audio buffer index to have been read at the other side. We |
| + // will get the index read at the other side over the socket. |
| + uint32_t next_read_buffer_index_; |
| + |
| + // Keeps track of number of filled buffer segments in the ring buffer. |
| + int number_of_filled_segments_; |
| + |
| + // Counts the total number of writes that and failed writes due to ring buffer |
| + // being full. |
| + size_t write_count_; |
| + size_t write_error_count_; |
| + |
| // Vector of audio buses allocated during construction and deleted in the |
| // destructor. |
| ScopedVector<media::AudioBus> audio_buses_; |