| Index: content/browser/renderer_host/media/audio_input_sync_writer.cc
|
| diff --git a/content/browser/renderer_host/media/audio_input_sync_writer.cc b/content/browser/renderer_host/media/audio_input_sync_writer.cc
|
| index 3bed144059548ebb64b41e9091ce70976dd1272d..041d8e17082769138b2175640f8349d6e064df37 100644
|
| --- a/content/browser/renderer_host/media/audio_input_sync_writer.cc
|
| +++ b/content/browser/renderer_host/media/audio_input_sync_writer.cc
|
| @@ -119,7 +119,8 @@ AudioInputSyncWriter::~AudioInputSyncWriter() {
|
| void AudioInputSyncWriter::Write(const AudioBus* data,
|
| double volume,
|
| bool key_pressed,
|
| - uint32_t hardware_delay_bytes) {
|
| + base::TimeDelta delay,
|
| + base::TimeTicks delay_timestamp) {
|
| TRACE_EVENT0("audio", "AudioInputSyncWriter::Write");
|
| ++write_count_;
|
| CheckTimeSinceLastWrite();
|
| @@ -150,7 +151,8 @@ void AudioInputSyncWriter::Write(const AudioBus* data,
|
| // put it in the fifo.
|
| if (number_of_filled_segments_ <
|
| static_cast<int>(shared_memory_segment_count_)) {
|
| - WriteParametersToCurrentSegment(volume, key_pressed, hardware_delay_bytes);
|
| + WriteParametersToCurrentSegment(volume, key_pressed, delay,
|
| + delay_timestamp);
|
|
|
| // Copy data into shared memory using pre-allocated audio buses.
|
| AudioBus* audio_bus = audio_buses_[current_segment_id_];
|
| @@ -161,7 +163,7 @@ void AudioInputSyncWriter::Write(const AudioBus* data,
|
|
|
| trailing_write_to_fifo_count_ = 0;
|
| } else {
|
| - if (!PushDataToFifo(data, volume, key_pressed, hardware_delay_bytes))
|
| + if (!PushDataToFifo(data, volume, key_pressed, delay, delay_timestamp))
|
| write_error = true;
|
|
|
| ++write_to_fifo_count_;
|
| @@ -231,7 +233,8 @@ void AudioInputSyncWriter::AddToNativeLog(const std::string& message) {
|
| bool AudioInputSyncWriter::PushDataToFifo(const AudioBus* data,
|
| double volume,
|
| bool key_pressed,
|
| - uint32_t hardware_delay_bytes) {
|
| + base::TimeDelta delay,
|
| + base::TimeTicks delay_timestamp) {
|
| if (overflow_buses_.size() == kMaxOverflowBusesSize) {
|
| // We use |write_error_count_| for capping number of log messages.
|
| // |write_error_count_| also includes socket Send() errors, but those should
|
| @@ -257,7 +260,7 @@ bool AudioInputSyncWriter::PushDataToFifo(const AudioBus* data,
|
| }
|
|
|
| // Push parameters to fifo.
|
| - OverflowParams params = { volume, hardware_delay_bytes, key_pressed };
|
| + OverflowParams params = {volume, delay, delay_timestamp, key_pressed};
|
| overflow_params_.push_back(params);
|
|
|
| // Push audio data to fifo.
|
| @@ -285,9 +288,9 @@ bool AudioInputSyncWriter::WriteDataFromFifoToSharedMemory() {
|
| while (audio_bus_it != overflow_buses_.end() &&
|
| number_of_filled_segments_ < segment_count) {
|
| // Write parameters to shared memory.
|
| - WriteParametersToCurrentSegment((*params_it).volume,
|
| - (*params_it).key_pressed,
|
| - (*params_it).hardware_delay_bytes);
|
| + WriteParametersToCurrentSegment(
|
| + (*params_it).volume, (*params_it).key_pressed, (*params_it).delay,
|
| + (*params_it).delay_timestamp);
|
|
|
| // Copy data from the fifo into shared memory using pre-allocated audio
|
| // buses.
|
| @@ -317,14 +320,17 @@ bool AudioInputSyncWriter::WriteDataFromFifoToSharedMemory() {
|
| void AudioInputSyncWriter::WriteParametersToCurrentSegment(
|
| double volume,
|
| bool key_pressed,
|
| - uint32_t hardware_delay_bytes) {
|
| + base::TimeDelta delay,
|
| + base::TimeTicks delay_timestamp) {
|
| uint8_t* ptr = shared_memory_;
|
| ptr += current_segment_id_ * shared_memory_segment_size_;
|
| AudioInputBuffer* buffer = reinterpret_cast<AudioInputBuffer*>(ptr);
|
| buffer->params.volume = volume;
|
| buffer->params.size = audio_bus_memory_size_;
|
| buffer->params.key_pressed = key_pressed;
|
| - buffer->params.hardware_delay_bytes = hardware_delay_bytes;
|
| + buffer->params.delay = delay.InMicroseconds();
|
| + buffer->params.delay_timestamp =
|
| + (delay_timestamp - base::TimeTicks()).InMicroseconds();
|
| buffer->params.id = next_buffer_id_;
|
| }
|
|
|
|
|