| 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..944bc49bb53a23e8663a744115c3e0313d845344 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,19 @@ 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_;
|
| + // Virtual function for native logging to be able to override in tests.
|
| + virtual void AddToNativeLog(const std::string& message);
|
| +
|
| + uint8* shared_memory_;
|
| 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_;
|
| @@ -67,9 +71,24 @@ class AudioInputSyncWriter : public media::AudioInputController::SyncWriter {
|
| // Size in bytes of each audio bus.
|
| const int audio_bus_memory_size_;
|
|
|
| - // Increasing ID used for audio buffers correct sequence at read side.
|
| + // Increasing ID used for checking audio buffers are in 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. Note that this
|
| + // index does not correspond to |next_buffer_id_|, it's two separate counters.
|
| + uint32_t next_read_buffer_index_;
|
| +
|
| + // Keeps track of number of filled buffer segments in the ring buffer to
|
| + // ensure the we don't overwrite data that hasn't been read yet.
|
| + int number_of_filled_segments_;
|
| +
|
| + // Counts the total number of calls to Write() and number of failures 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_;
|
|
|