webrtc_m130/modules/audio_device/audio_device_buffer.h

255 lines
9.3 KiB
C
Raw Permalink Normal View History

/*
* Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#ifndef MODULES_AUDIO_DEVICE_AUDIO_DEVICE_BUFFER_H_
#define MODULES_AUDIO_DEVICE_AUDIO_DEVICE_BUFFER_H_
#include <stddef.h>
#include <stdint.h>
#include <atomic>
#include <memory>
#include "api/audio/audio_device_defines.h"
#include "api/sequence_checker.h"
#include "api/task_queue/task_queue_base.h"
#include "api/task_queue/task_queue_factory.h"
#include "rtc_base/buffer.h"
#include "rtc_base/synchronization/mutex.h"
#include "rtc_base/thread_annotations.h"
#include "rtc_base/timestamp_aligner.h"
namespace webrtc {
// Delta times between two successive playout callbacks are limited to this
// value before added to an internal array.
const size_t kMaxDeltaTimeInMs = 500;
// TODO(henrika): remove when no longer used by external client.
const size_t kMaxBufferSizeBytes = 3840; // 10ms in stereo @ 96kHz
class AudioDeviceBuffer {
public:
enum LogState {
LOG_START = 0,
LOG_STOP,
LOG_ACTIVE,
};
Reland of Avoid calling PostTask in audio callbacks (patchset #1 id:1 of https://codereview.webrtc.org/2684913003/ ) Reason for revert: The reason for reverting was false alarm. Original issue's description: > Revert of Avoid calling PostTask in audio callbacks (patchset #6 id:100001 of https://codereview.webrtc.org/2663383004/ ) > > Reason for revert: > Speculative revert to see if this CL caused a change in performance tests. > > See https://bugs.chromium.org/p/chromium/issues/detail?id=689919 for details. > > Original issue's description: > > Avoid calling PostTask in audio callbacks. > > > > We have seen that PostTask can consume some CPU and the way we used it > > before (logging only) in the ADB is not worth the cost we see when > > profiling. > > > > This CL simply moves frequent (trivial) stat updates from the task queue > > to the native threads to avoid calling PostTask in each callback. > > The reason for doing so before was to avoid locks but we can live without > > them since races are benign here. > > > > > > BUG=webrtc:7096 > > > > Review-Url: https://codereview.webrtc.org/2663383004 > > Cr-Commit-Position: refs/heads/master@{#16429} > > Committed: https://chromium.googlesource.com/external/webrtc/+/77ce9a55415a673422d424ed862be142d5e277ef > > TBR=solenberg@webrtc.org > # Not skipping CQ checks because original CL landed more than 1 days ago. > BUG=webrtc:7096 > > Review-Url: https://codereview.webrtc.org/2684913003 > Cr-Commit-Position: refs/heads/master@{#16490} > Committed: https://chromium.googlesource.com/external/webrtc/+/fd8f102a847e7f8bd9c719ec6cc0b5818b626705 TBR=solenberg@webrtc.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=webrtc:7096 Review-Url: https://codereview.webrtc.org/2687573003 Cr-Commit-Position: refs/heads/master@{#16497}
2017-02-08 07:16:56 -08:00
struct Stats {
void ResetRecStats() {
rec_callbacks = 0;
rec_samples = 0;
max_rec_level = 0;
}
void ResetPlayStats() {
play_callbacks = 0;
play_samples = 0;
max_play_level = 0;
}
// Total number of recording callbacks where the source provides 10ms audio
// data each time.
uint64_t rec_callbacks = 0;
// Total number of playback callbacks where the sink asks for 10ms audio
// data each time.
uint64_t play_callbacks = 0;
// Total number of recorded audio samples.
uint64_t rec_samples = 0;
// Total number of played audio samples.
uint64_t play_samples = 0;
// Contains max level (max(abs(x))) of recorded audio packets over the last
// 10 seconds where a new measurement is done twice per second. The level
// is reset to zero at each call to LogStats().
int16_t max_rec_level = 0;
// Contains max level of recorded audio packets over the last 10 seconds
// where a new measurement is done twice per second.
int16_t max_play_level = 0;
};
Reland "Migrate TestAudioDeviceModule on AudioDeviceModuleImpl" This CL will add AudioDeviceBuffer into the SUT increasing test coverage for audio quality regression detection. This reverts commit b035dcc0a274e6cdde3e0fc465244bc0e9e3d70e. Reason for revert: reland with a fix Original change's description: > Revert "Reland "Migrate TestAudioDeviceModule on AudioDeviceModuleImpl"" > > This reverts commit eeae96299784515f573379a64655eb07a5973a3a. > > Reason for revert: breaks WebRTC Chromium FYI ios-device > https://ci.chromium.org/ui/p/chromium/builders/webrtc.fyi/WebRTC%20Chromium%20FYI%20ios-device/14896/overview > > Original change's description: > > Reland "Migrate TestAudioDeviceModule on AudioDeviceModuleImpl" > > > > This reverts commit 69c8d3c843326aff9dee32cc639741c1cd7f8ae9. > > > > Reason for revert: Reland with a fix > > > > Original change's description: > > > Revert "Migrate TestAudioDeviceModule on AudioDeviceModuleImpl" > > > > > > This reverts commit e42bf81486d2f08b6dcbf1442287202e937ce52b. > > > > > > Reason for revert: Breaks iOS simulator bots and thus blocks chromium roll, https://chromium-review.googlesource.com/c/chromium/src/+/4433814 > > > > > > Original change's description: > > > > Migrate TestAudioDeviceModule on AudioDeviceModuleImpl > > > > > > > > Bug: b/272350185 > > > > Change-Id: Ia3d85d6fa3b0d4809e987a39d60d3eb022687132 > > > > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/300363 > > > > Commit-Queue: Artem Titov <titovartem@webrtc.org> > > > > Reviewed-by: Henrik Andreassson <henrika@webrtc.org> > > > > Cr-Commit-Position: refs/heads/main@{#39877} > > > > > > Bug: b/272350185 > > > Change-Id: I1e3b542fc1278797f283afedeae01cbb7412d353 > > > No-Presubmit: true > > > No-Tree-Checks: true > > > No-Try: true > > > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/301701 > > > Commit-Queue: Jeremy Leconte <jleconte@google.com> > > > Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com> > > > Reviewed-by: Jeremy Leconte <jleconte@google.com> > > > Auto-Submit: Christoffer Jansson <jansson@google.com> > > > Owners-Override: Christoffer Jansson <jansson@google.com> > > > Cr-Commit-Position: refs/heads/main@{#39881} > > > > Bug: b/272350185 > > Change-Id: I809466306b2e1fd54c44b90311059c98a53ef8ee > > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/301704 > > Reviewed-by: Henrik Andreassson <henrika@webrtc.org> > > Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> > > Commit-Queue: Artem Titov <titovartem@webrtc.org> > > Cr-Commit-Position: refs/heads/main@{#39936} > > Bug: b/272350185 > Change-Id: If0a10717bf14a0a618e52728fc3a61b9c55f3bd2 > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/303460 > Commit-Queue: Jeremy Leconte <jleconte@google.com> > Owners-Override: Jeremy Leconte <jleconte@google.com> > Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com> > Cr-Commit-Position: refs/heads/main@{#39947} Bug: b/272350185 Change-Id: I7cf7c6bc25561f4eb722957f318c2af9ce20726d Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/311101 Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org> Commit-Queue: Artem Titov <titovartem@webrtc.org> Cr-Commit-Position: refs/heads/main@{#40387}
2023-06-30 15:26:09 +02:00
// If `create_detached` is true, the created buffer can be used on another
// thread compared to the one on which it was created. It's useful for
// testing.
explicit AudioDeviceBuffer(TaskQueueFactory* task_queue_factory,
bool create_detached = false);
virtual ~AudioDeviceBuffer();
int32_t RegisterAudioCallback(AudioTransport* audio_callback);
void StartPlayout();
void StartRecording();
void StopPlayout();
void StopRecording();
int32_t SetRecordingSampleRate(uint32_t fsHz);
int32_t SetPlayoutSampleRate(uint32_t fsHz);
uint32_t RecordingSampleRate() const;
uint32_t PlayoutSampleRate() const;
int32_t SetRecordingChannels(size_t channels);
int32_t SetPlayoutChannels(size_t channels);
size_t RecordingChannels() const;
size_t PlayoutChannels() const;
// TODO(bugs.webrtc.org/13621) Deprecate this function
virtual int32_t SetRecordedBuffer(const void* audio_buffer,
size_t samples_per_channel);
virtual int32_t SetRecordedBuffer(
const void* audio_buffer,
size_t samples_per_channel,
std::optional<int64_t> capture_timestamp_ns);
virtual void SetVQEData(int play_delay_ms, int rec_delay_ms);
virtual int32_t DeliverRecordedData();
uint32_t NewMicLevel() const;
virtual int32_t RequestPlayoutData(size_t samples_per_channel);
virtual int32_t GetPlayoutData(void* audio_buffer);
int32_t SetTypingStatus(bool typing_status);
private:
// Starts/stops periodic logging of audio stats.
void StartPeriodicLogging();
void StopPeriodicLogging();
Reland of Adds data logging in native AudioDeviceBuffer class (patchset #1 id:1 of https://codereview.webrtc.org/2148623004/ ) Reason for revert: New fixes in libevent indicates that we are OK and can reland again. Original issue's description: > Revert of Adds data logging in native AudioDeviceBuffer class (patchset #1 id:1 of https://codereview.webrtc.org/2146853003/ ) > > Reason for revert: > Looks like things are still breaking upstream... :( > > Original issue's description: > > Reland of Adds data logging in native AudioDeviceBuffer class (patchset #1 id:1 of https://codereview.webrtc.org/2141413002/ ) > > > > Reason for revert: > > Will make one more try since we have now confirmed that our TaskQueue tests works on Android. Let's hope for the best... > > > > Original issue's description: > > > Revert of Adds data logging in native AudioDeviceBuffer class (patchset #1 id:1 of https://codereview.webrtc.org/2138403003/ ) > > > > > > Reason for revert: > > > Reverting again since it might have caused this issue: > > > > > > https://build.chromium.org/p/chromium.webrtc.fyi/builders/Android%20Tests%20%28dbg%29%20%28L%20Nexus9%29/builds/13622/steps/content_browsertests/logs/stdio > > > > > > Original issue's description: > > > > Reland of Adds data logging in native AudioDeviceBuffer class (patchset #1 id:1 of https://codereview.webrtc.org/2139233002/ ) > > > > > > > > Reason for revert: > > > > My original patch broke things that are now fixed by https://codereview.webrtc.org/2141193002/. > > > > > > > > Hence I am relanding my original change. > > > > > > > > Original issue's description: > > > > > Revert of Adds data logging in native AudioDeviceBuffer class (patchset #10 id:180001 of https://codereview.webrtc.org/2132613002/ ) > > > > > > > > > > Reason for revert: > > > > > Seems to break things upstream. > > > > > > > > > > Original issue's description: > > > > > > Adds data logging in native AudioDeviceBuffer class. > > > > > > > > > > > > Goal is to provide periodic logging of most essential audio parameters > > > > > > for playout and recording sides. It will allow us to track if the native audio layer is working as intended. > > > > > > > > > > > > BUG=NONE > > > > > > > > > > > > Committed: https://crrev.com/348e411dd27e6dbe9b84b27ce46e9b7c657c1eae > > > > > > Cr-Commit-Position: refs/heads/master@{#13440} > > > > > > > > > > TBR=stefan@webrtc.org,henrika@webrtc.org > > > > > # Skipping CQ checks because original CL landed less than 1 days ago. > > > > > NOPRESUBMIT=true > > > > > NOTREECHECKS=true > > > > > NOTRY=true > > > > > BUG=NONE > > > > > > > > > > Committed: https://crrev.com/025aa94ccb85e4c6fe20a3fecdac5d27ec9ba3da > > > > > Cr-Commit-Position: refs/heads/master@{#13441} > > > > > > > > TBR=stefan@webrtc.org,sprang@webrtc.org > > > > # Skipping CQ checks because original CL landed less than 1 days ago. > > > > NOPRESUBMIT=true > > > > NOTREECHECKS=true > > > > NOTRY=true > > > > BUG=NONE > > > > > > > > Committed: https://crrev.com/dd2fdecc78c50377d10ec98b41179acde9218ee7 > > > > Cr-Commit-Position: refs/heads/master@{#13455} > > > > > > TBR=stefan@webrtc.org,sprang@webrtc.org > > > # Skipping CQ checks because original CL landed less than 1 days ago. > > > NOPRESUBMIT=true > > > NOTREECHECKS=true > > > NOTRY=true > > > BUG=NONE > > > > > > Committed: https://crrev.com/5dd941e5a5ccde541d9b40a1df379ed59c5fab5c > > > Cr-Commit-Position: refs/heads/master@{#13457} > > > > TBR=stefan@webrtc.org,sprang@webrtc.org > > # Skipping CQ checks because original CL landed less than 1 days ago. > > NOPRESUBMIT=true > > NOTREECHECKS=true > > NOTRY=true > > BUG=NONE > > > > Committed: https://crrev.com/b201da3fab5efc048a4341f39293d2dcf27b2eec > > Cr-Commit-Position: refs/heads/master@{#13462} > > TBR=stefan@webrtc.org,henrika@webrtc.org > # Skipping CQ checks because original CL landed less than 1 days ago. > NOPRESUBMIT=true > NOTREECHECKS=true > NOTRY=true > BUG=NONE > > Committed: https://crrev.com/ac09501381575dcb07560effc45ec7263d3ff3ad > Cr-Commit-Position: refs/heads/master@{#13464} TBR=stefan@webrtc.org,sprang@webrtc.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=NONE Review-Url: https://codereview.webrtc.org/2148243002 Cr-Commit-Position: refs/heads/master@{#13476}
2016-07-14 05:54:19 -07:00
// Called periodically on the internal thread created by the TaskQueue.
// Updates some stats but dooes it on the task queue to ensure that access of
// members is serialized hence avoiding usage of locks.
// state = LOG_START => members are initialized and the timer starts.
// state = LOG_STOP => no logs are printed and the timer stops.
// state = LOG_ACTIVE => logs are printed and the timer is kept alive.
void LogStats(LogState state);
Reland of Avoid calling PostTask in audio callbacks (patchset #1 id:1 of https://codereview.webrtc.org/2684913003/ ) Reason for revert: The reason for reverting was false alarm. Original issue's description: > Revert of Avoid calling PostTask in audio callbacks (patchset #6 id:100001 of https://codereview.webrtc.org/2663383004/ ) > > Reason for revert: > Speculative revert to see if this CL caused a change in performance tests. > > See https://bugs.chromium.org/p/chromium/issues/detail?id=689919 for details. > > Original issue's description: > > Avoid calling PostTask in audio callbacks. > > > > We have seen that PostTask can consume some CPU and the way we used it > > before (logging only) in the ADB is not worth the cost we see when > > profiling. > > > > This CL simply moves frequent (trivial) stat updates from the task queue > > to the native threads to avoid calling PostTask in each callback. > > The reason for doing so before was to avoid locks but we can live without > > them since races are benign here. > > > > > > BUG=webrtc:7096 > > > > Review-Url: https://codereview.webrtc.org/2663383004 > > Cr-Commit-Position: refs/heads/master@{#16429} > > Committed: https://chromium.googlesource.com/external/webrtc/+/77ce9a55415a673422d424ed862be142d5e277ef > > TBR=solenberg@webrtc.org > # Not skipping CQ checks because original CL landed more than 1 days ago. > BUG=webrtc:7096 > > Review-Url: https://codereview.webrtc.org/2684913003 > Cr-Commit-Position: refs/heads/master@{#16490} > Committed: https://chromium.googlesource.com/external/webrtc/+/fd8f102a847e7f8bd9c719ec6cc0b5818b626705 TBR=solenberg@webrtc.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=webrtc:7096 Review-Url: https://codereview.webrtc.org/2687573003 Cr-Commit-Position: refs/heads/master@{#16497}
2017-02-08 07:16:56 -08:00
// Updates counters in each play/record callback. These counters are later
// (periodically) read by LogStats() using a lock.
void UpdateRecStats(int16_t max_abs, size_t samples_per_channel);
void UpdatePlayStats(int16_t max_abs, size_t samples_per_channel);
Reland of Adds data logging in native AudioDeviceBuffer class (patchset #1 id:1 of https://codereview.webrtc.org/2148623004/ ) Reason for revert: New fixes in libevent indicates that we are OK and can reland again. Original issue's description: > Revert of Adds data logging in native AudioDeviceBuffer class (patchset #1 id:1 of https://codereview.webrtc.org/2146853003/ ) > > Reason for revert: > Looks like things are still breaking upstream... :( > > Original issue's description: > > Reland of Adds data logging in native AudioDeviceBuffer class (patchset #1 id:1 of https://codereview.webrtc.org/2141413002/ ) > > > > Reason for revert: > > Will make one more try since we have now confirmed that our TaskQueue tests works on Android. Let's hope for the best... > > > > Original issue's description: > > > Revert of Adds data logging in native AudioDeviceBuffer class (patchset #1 id:1 of https://codereview.webrtc.org/2138403003/ ) > > > > > > Reason for revert: > > > Reverting again since it might have caused this issue: > > > > > > https://build.chromium.org/p/chromium.webrtc.fyi/builders/Android%20Tests%20%28dbg%29%20%28L%20Nexus9%29/builds/13622/steps/content_browsertests/logs/stdio > > > > > > Original issue's description: > > > > Reland of Adds data logging in native AudioDeviceBuffer class (patchset #1 id:1 of https://codereview.webrtc.org/2139233002/ ) > > > > > > > > Reason for revert: > > > > My original patch broke things that are now fixed by https://codereview.webrtc.org/2141193002/. > > > > > > > > Hence I am relanding my original change. > > > > > > > > Original issue's description: > > > > > Revert of Adds data logging in native AudioDeviceBuffer class (patchset #10 id:180001 of https://codereview.webrtc.org/2132613002/ ) > > > > > > > > > > Reason for revert: > > > > > Seems to break things upstream. > > > > > > > > > > Original issue's description: > > > > > > Adds data logging in native AudioDeviceBuffer class. > > > > > > > > > > > > Goal is to provide periodic logging of most essential audio parameters > > > > > > for playout and recording sides. It will allow us to track if the native audio layer is working as intended. > > > > > > > > > > > > BUG=NONE > > > > > > > > > > > > Committed: https://crrev.com/348e411dd27e6dbe9b84b27ce46e9b7c657c1eae > > > > > > Cr-Commit-Position: refs/heads/master@{#13440} > > > > > > > > > > TBR=stefan@webrtc.org,henrika@webrtc.org > > > > > # Skipping CQ checks because original CL landed less than 1 days ago. > > > > > NOPRESUBMIT=true > > > > > NOTREECHECKS=true > > > > > NOTRY=true > > > > > BUG=NONE > > > > > > > > > > Committed: https://crrev.com/025aa94ccb85e4c6fe20a3fecdac5d27ec9ba3da > > > > > Cr-Commit-Position: refs/heads/master@{#13441} > > > > > > > > TBR=stefan@webrtc.org,sprang@webrtc.org > > > > # Skipping CQ checks because original CL landed less than 1 days ago. > > > > NOPRESUBMIT=true > > > > NOTREECHECKS=true > > > > NOTRY=true > > > > BUG=NONE > > > > > > > > Committed: https://crrev.com/dd2fdecc78c50377d10ec98b41179acde9218ee7 > > > > Cr-Commit-Position: refs/heads/master@{#13455} > > > > > > TBR=stefan@webrtc.org,sprang@webrtc.org > > > # Skipping CQ checks because original CL landed less than 1 days ago. > > > NOPRESUBMIT=true > > > NOTREECHECKS=true > > > NOTRY=true > > > BUG=NONE > > > > > > Committed: https://crrev.com/5dd941e5a5ccde541d9b40a1df379ed59c5fab5c > > > Cr-Commit-Position: refs/heads/master@{#13457} > > > > TBR=stefan@webrtc.org,sprang@webrtc.org > > # Skipping CQ checks because original CL landed less than 1 days ago. > > NOPRESUBMIT=true > > NOTREECHECKS=true > > NOTRY=true > > BUG=NONE > > > > Committed: https://crrev.com/b201da3fab5efc048a4341f39293d2dcf27b2eec > > Cr-Commit-Position: refs/heads/master@{#13462} > > TBR=stefan@webrtc.org,henrika@webrtc.org > # Skipping CQ checks because original CL landed less than 1 days ago. > NOPRESUBMIT=true > NOTREECHECKS=true > NOTRY=true > BUG=NONE > > Committed: https://crrev.com/ac09501381575dcb07560effc45ec7263d3ff3ad > Cr-Commit-Position: refs/heads/master@{#13464} TBR=stefan@webrtc.org,sprang@webrtc.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=NONE Review-Url: https://codereview.webrtc.org/2148243002 Cr-Commit-Position: refs/heads/master@{#13476}
2016-07-14 05:54:19 -07:00
// Clears all members tracking stats for recording and playout.
// These methods both run on the task queue.
void ResetRecStats();
void ResetPlayStats();
// This object lives on the main (creating) thread and most methods are
// called on that same thread. When audio has started some methods will be
// called on either a native audio thread for playout or a native thread for
// recording. Some members are not annotated since they are "protected by
// design" and adding e.g. a race checker can cause failures for very few
// edge cases and it is IMHO not worth the risk to use them in this class.
// TODO(henrika): see if it is possible to refactor and annotate all members.
Reland of Adds data logging in native AudioDeviceBuffer class (patchset #1 id:1 of https://codereview.webrtc.org/2148623004/ ) Reason for revert: New fixes in libevent indicates that we are OK and can reland again. Original issue's description: > Revert of Adds data logging in native AudioDeviceBuffer class (patchset #1 id:1 of https://codereview.webrtc.org/2146853003/ ) > > Reason for revert: > Looks like things are still breaking upstream... :( > > Original issue's description: > > Reland of Adds data logging in native AudioDeviceBuffer class (patchset #1 id:1 of https://codereview.webrtc.org/2141413002/ ) > > > > Reason for revert: > > Will make one more try since we have now confirmed that our TaskQueue tests works on Android. Let's hope for the best... > > > > Original issue's description: > > > Revert of Adds data logging in native AudioDeviceBuffer class (patchset #1 id:1 of https://codereview.webrtc.org/2138403003/ ) > > > > > > Reason for revert: > > > Reverting again since it might have caused this issue: > > > > > > https://build.chromium.org/p/chromium.webrtc.fyi/builders/Android%20Tests%20%28dbg%29%20%28L%20Nexus9%29/builds/13622/steps/content_browsertests/logs/stdio > > > > > > Original issue's description: > > > > Reland of Adds data logging in native AudioDeviceBuffer class (patchset #1 id:1 of https://codereview.webrtc.org/2139233002/ ) > > > > > > > > Reason for revert: > > > > My original patch broke things that are now fixed by https://codereview.webrtc.org/2141193002/. > > > > > > > > Hence I am relanding my original change. > > > > > > > > Original issue's description: > > > > > Revert of Adds data logging in native AudioDeviceBuffer class (patchset #10 id:180001 of https://codereview.webrtc.org/2132613002/ ) > > > > > > > > > > Reason for revert: > > > > > Seems to break things upstream. > > > > > > > > > > Original issue's description: > > > > > > Adds data logging in native AudioDeviceBuffer class. > > > > > > > > > > > > Goal is to provide periodic logging of most essential audio parameters > > > > > > for playout and recording sides. It will allow us to track if the native audio layer is working as intended. > > > > > > > > > > > > BUG=NONE > > > > > > > > > > > > Committed: https://crrev.com/348e411dd27e6dbe9b84b27ce46e9b7c657c1eae > > > > > > Cr-Commit-Position: refs/heads/master@{#13440} > > > > > > > > > > TBR=stefan@webrtc.org,henrika@webrtc.org > > > > > # Skipping CQ checks because original CL landed less than 1 days ago. > > > > > NOPRESUBMIT=true > > > > > NOTREECHECKS=true > > > > > NOTRY=true > > > > > BUG=NONE > > > > > > > > > > Committed: https://crrev.com/025aa94ccb85e4c6fe20a3fecdac5d27ec9ba3da > > > > > Cr-Commit-Position: refs/heads/master@{#13441} > > > > > > > > TBR=stefan@webrtc.org,sprang@webrtc.org > > > > # Skipping CQ checks because original CL landed less than 1 days ago. > > > > NOPRESUBMIT=true > > > > NOTREECHECKS=true > > > > NOTRY=true > > > > BUG=NONE > > > > > > > > Committed: https://crrev.com/dd2fdecc78c50377d10ec98b41179acde9218ee7 > > > > Cr-Commit-Position: refs/heads/master@{#13455} > > > > > > TBR=stefan@webrtc.org,sprang@webrtc.org > > > # Skipping CQ checks because original CL landed less than 1 days ago. > > > NOPRESUBMIT=true > > > NOTREECHECKS=true > > > NOTRY=true > > > BUG=NONE > > > > > > Committed: https://crrev.com/5dd941e5a5ccde541d9b40a1df379ed59c5fab5c > > > Cr-Commit-Position: refs/heads/master@{#13457} > > > > TBR=stefan@webrtc.org,sprang@webrtc.org > > # Skipping CQ checks because original CL landed less than 1 days ago. > > NOPRESUBMIT=true > > NOTREECHECKS=true > > NOTRY=true > > BUG=NONE > > > > Committed: https://crrev.com/b201da3fab5efc048a4341f39293d2dcf27b2eec > > Cr-Commit-Position: refs/heads/master@{#13462} > > TBR=stefan@webrtc.org,henrika@webrtc.org > # Skipping CQ checks because original CL landed less than 1 days ago. > NOPRESUBMIT=true > NOTREECHECKS=true > NOTRY=true > BUG=NONE > > Committed: https://crrev.com/ac09501381575dcb07560effc45ec7263d3ff3ad > Cr-Commit-Position: refs/heads/master@{#13464} TBR=stefan@webrtc.org,sprang@webrtc.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=NONE Review-Url: https://codereview.webrtc.org/2148243002 Cr-Commit-Position: refs/heads/master@{#13476}
2016-07-14 05:54:19 -07:00
// Main thread on which this object is created.
SequenceChecker main_thread_checker_;
Mutex lock_;
Reland of Avoid calling PostTask in audio callbacks (patchset #1 id:1 of https://codereview.webrtc.org/2684913003/ ) Reason for revert: The reason for reverting was false alarm. Original issue's description: > Revert of Avoid calling PostTask in audio callbacks (patchset #6 id:100001 of https://codereview.webrtc.org/2663383004/ ) > > Reason for revert: > Speculative revert to see if this CL caused a change in performance tests. > > See https://bugs.chromium.org/p/chromium/issues/detail?id=689919 for details. > > Original issue's description: > > Avoid calling PostTask in audio callbacks. > > > > We have seen that PostTask can consume some CPU and the way we used it > > before (logging only) in the ADB is not worth the cost we see when > > profiling. > > > > This CL simply moves frequent (trivial) stat updates from the task queue > > to the native threads to avoid calling PostTask in each callback. > > The reason for doing so before was to avoid locks but we can live without > > them since races are benign here. > > > > > > BUG=webrtc:7096 > > > > Review-Url: https://codereview.webrtc.org/2663383004 > > Cr-Commit-Position: refs/heads/master@{#16429} > > Committed: https://chromium.googlesource.com/external/webrtc/+/77ce9a55415a673422d424ed862be142d5e277ef > > TBR=solenberg@webrtc.org > # Not skipping CQ checks because original CL landed more than 1 days ago. > BUG=webrtc:7096 > > Review-Url: https://codereview.webrtc.org/2684913003 > Cr-Commit-Position: refs/heads/master@{#16490} > Committed: https://chromium.googlesource.com/external/webrtc/+/fd8f102a847e7f8bd9c719ec6cc0b5818b626705 TBR=solenberg@webrtc.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=webrtc:7096 Review-Url: https://codereview.webrtc.org/2687573003 Cr-Commit-Position: refs/heads/master@{#16497}
2017-02-08 07:16:56 -08:00
Reland of Adds data logging in native AudioDeviceBuffer class (patchset #1 id:1 of https://codereview.webrtc.org/2148623004/ ) Reason for revert: New fixes in libevent indicates that we are OK and can reland again. Original issue's description: > Revert of Adds data logging in native AudioDeviceBuffer class (patchset #1 id:1 of https://codereview.webrtc.org/2146853003/ ) > > Reason for revert: > Looks like things are still breaking upstream... :( > > Original issue's description: > > Reland of Adds data logging in native AudioDeviceBuffer class (patchset #1 id:1 of https://codereview.webrtc.org/2141413002/ ) > > > > Reason for revert: > > Will make one more try since we have now confirmed that our TaskQueue tests works on Android. Let's hope for the best... > > > > Original issue's description: > > > Revert of Adds data logging in native AudioDeviceBuffer class (patchset #1 id:1 of https://codereview.webrtc.org/2138403003/ ) > > > > > > Reason for revert: > > > Reverting again since it might have caused this issue: > > > > > > https://build.chromium.org/p/chromium.webrtc.fyi/builders/Android%20Tests%20%28dbg%29%20%28L%20Nexus9%29/builds/13622/steps/content_browsertests/logs/stdio > > > > > > Original issue's description: > > > > Reland of Adds data logging in native AudioDeviceBuffer class (patchset #1 id:1 of https://codereview.webrtc.org/2139233002/ ) > > > > > > > > Reason for revert: > > > > My original patch broke things that are now fixed by https://codereview.webrtc.org/2141193002/. > > > > > > > > Hence I am relanding my original change. > > > > > > > > Original issue's description: > > > > > Revert of Adds data logging in native AudioDeviceBuffer class (patchset #10 id:180001 of https://codereview.webrtc.org/2132613002/ ) > > > > > > > > > > Reason for revert: > > > > > Seems to break things upstream. > > > > > > > > > > Original issue's description: > > > > > > Adds data logging in native AudioDeviceBuffer class. > > > > > > > > > > > > Goal is to provide periodic logging of most essential audio parameters > > > > > > for playout and recording sides. It will allow us to track if the native audio layer is working as intended. > > > > > > > > > > > > BUG=NONE > > > > > > > > > > > > Committed: https://crrev.com/348e411dd27e6dbe9b84b27ce46e9b7c657c1eae > > > > > > Cr-Commit-Position: refs/heads/master@{#13440} > > > > > > > > > > TBR=stefan@webrtc.org,henrika@webrtc.org > > > > > # Skipping CQ checks because original CL landed less than 1 days ago. > > > > > NOPRESUBMIT=true > > > > > NOTREECHECKS=true > > > > > NOTRY=true > > > > > BUG=NONE > > > > > > > > > > Committed: https://crrev.com/025aa94ccb85e4c6fe20a3fecdac5d27ec9ba3da > > > > > Cr-Commit-Position: refs/heads/master@{#13441} > > > > > > > > TBR=stefan@webrtc.org,sprang@webrtc.org > > > > # Skipping CQ checks because original CL landed less than 1 days ago. > > > > NOPRESUBMIT=true > > > > NOTREECHECKS=true > > > > NOTRY=true > > > > BUG=NONE > > > > > > > > Committed: https://crrev.com/dd2fdecc78c50377d10ec98b41179acde9218ee7 > > > > Cr-Commit-Position: refs/heads/master@{#13455} > > > > > > TBR=stefan@webrtc.org,sprang@webrtc.org > > > # Skipping CQ checks because original CL landed less than 1 days ago. > > > NOPRESUBMIT=true > > > NOTREECHECKS=true > > > NOTRY=true > > > BUG=NONE > > > > > > Committed: https://crrev.com/5dd941e5a5ccde541d9b40a1df379ed59c5fab5c > > > Cr-Commit-Position: refs/heads/master@{#13457} > > > > TBR=stefan@webrtc.org,sprang@webrtc.org > > # Skipping CQ checks because original CL landed less than 1 days ago. > > NOPRESUBMIT=true > > NOTREECHECKS=true > > NOTRY=true > > BUG=NONE > > > > Committed: https://crrev.com/b201da3fab5efc048a4341f39293d2dcf27b2eec > > Cr-Commit-Position: refs/heads/master@{#13462} > > TBR=stefan@webrtc.org,henrika@webrtc.org > # Skipping CQ checks because original CL landed less than 1 days ago. > NOPRESUBMIT=true > NOTREECHECKS=true > NOTRY=true > BUG=NONE > > Committed: https://crrev.com/ac09501381575dcb07560effc45ec7263d3ff3ad > Cr-Commit-Position: refs/heads/master@{#13464} TBR=stefan@webrtc.org,sprang@webrtc.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=NONE Review-Url: https://codereview.webrtc.org/2148243002 Cr-Commit-Position: refs/heads/master@{#13476}
2016-07-14 05:54:19 -07:00
// Task queue used to invoke LogStats() periodically. Tasks are executed on a
// worker thread but it does not necessarily have to be the same thread for
// each task.
std::unique_ptr<TaskQueueBase, TaskQueueDeleter> task_queue_;
Reland of Adds data logging in native AudioDeviceBuffer class (patchset #1 id:1 of https://codereview.webrtc.org/2148623004/ ) Reason for revert: New fixes in libevent indicates that we are OK and can reland again. Original issue's description: > Revert of Adds data logging in native AudioDeviceBuffer class (patchset #1 id:1 of https://codereview.webrtc.org/2146853003/ ) > > Reason for revert: > Looks like things are still breaking upstream... :( > > Original issue's description: > > Reland of Adds data logging in native AudioDeviceBuffer class (patchset #1 id:1 of https://codereview.webrtc.org/2141413002/ ) > > > > Reason for revert: > > Will make one more try since we have now confirmed that our TaskQueue tests works on Android. Let's hope for the best... > > > > Original issue's description: > > > Revert of Adds data logging in native AudioDeviceBuffer class (patchset #1 id:1 of https://codereview.webrtc.org/2138403003/ ) > > > > > > Reason for revert: > > > Reverting again since it might have caused this issue: > > > > > > https://build.chromium.org/p/chromium.webrtc.fyi/builders/Android%20Tests%20%28dbg%29%20%28L%20Nexus9%29/builds/13622/steps/content_browsertests/logs/stdio > > > > > > Original issue's description: > > > > Reland of Adds data logging in native AudioDeviceBuffer class (patchset #1 id:1 of https://codereview.webrtc.org/2139233002/ ) > > > > > > > > Reason for revert: > > > > My original patch broke things that are now fixed by https://codereview.webrtc.org/2141193002/. > > > > > > > > Hence I am relanding my original change. > > > > > > > > Original issue's description: > > > > > Revert of Adds data logging in native AudioDeviceBuffer class (patchset #10 id:180001 of https://codereview.webrtc.org/2132613002/ ) > > > > > > > > > > Reason for revert: > > > > > Seems to break things upstream. > > > > > > > > > > Original issue's description: > > > > > > Adds data logging in native AudioDeviceBuffer class. > > > > > > > > > > > > Goal is to provide periodic logging of most essential audio parameters > > > > > > for playout and recording sides. It will allow us to track if the native audio layer is working as intended. > > > > > > > > > > > > BUG=NONE > > > > > > > > > > > > Committed: https://crrev.com/348e411dd27e6dbe9b84b27ce46e9b7c657c1eae > > > > > > Cr-Commit-Position: refs/heads/master@{#13440} > > > > > > > > > > TBR=stefan@webrtc.org,henrika@webrtc.org > > > > > # Skipping CQ checks because original CL landed less than 1 days ago. > > > > > NOPRESUBMIT=true > > > > > NOTREECHECKS=true > > > > > NOTRY=true > > > > > BUG=NONE > > > > > > > > > > Committed: https://crrev.com/025aa94ccb85e4c6fe20a3fecdac5d27ec9ba3da > > > > > Cr-Commit-Position: refs/heads/master@{#13441} > > > > > > > > TBR=stefan@webrtc.org,sprang@webrtc.org > > > > # Skipping CQ checks because original CL landed less than 1 days ago. > > > > NOPRESUBMIT=true > > > > NOTREECHECKS=true > > > > NOTRY=true > > > > BUG=NONE > > > > > > > > Committed: https://crrev.com/dd2fdecc78c50377d10ec98b41179acde9218ee7 > > > > Cr-Commit-Position: refs/heads/master@{#13455} > > > > > > TBR=stefan@webrtc.org,sprang@webrtc.org > > > # Skipping CQ checks because original CL landed less than 1 days ago. > > > NOPRESUBMIT=true > > > NOTREECHECKS=true > > > NOTRY=true > > > BUG=NONE > > > > > > Committed: https://crrev.com/5dd941e5a5ccde541d9b40a1df379ed59c5fab5c > > > Cr-Commit-Position: refs/heads/master@{#13457} > > > > TBR=stefan@webrtc.org,sprang@webrtc.org > > # Skipping CQ checks because original CL landed less than 1 days ago. > > NOPRESUBMIT=true > > NOTREECHECKS=true > > NOTRY=true > > BUG=NONE > > > > Committed: https://crrev.com/b201da3fab5efc048a4341f39293d2dcf27b2eec > > Cr-Commit-Position: refs/heads/master@{#13462} > > TBR=stefan@webrtc.org,henrika@webrtc.org > # Skipping CQ checks because original CL landed less than 1 days ago. > NOPRESUBMIT=true > NOTREECHECKS=true > NOTRY=true > BUG=NONE > > Committed: https://crrev.com/ac09501381575dcb07560effc45ec7263d3ff3ad > Cr-Commit-Position: refs/heads/master@{#13464} TBR=stefan@webrtc.org,sprang@webrtc.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=NONE Review-Url: https://codereview.webrtc.org/2148243002 Cr-Commit-Position: refs/heads/master@{#13476}
2016-07-14 05:54:19 -07:00
// Raw pointer to AudioTransport instance. Supplied to RegisterAudioCallback()
// and it must outlive this object. It is not possible to change this member
// while any media is active. It is possible to start media without calling
// RegisterAudioCallback() but that will lead to ignored audio callbacks in
// both directions where native audio will be active but no audio samples will
// be transported.
AudioTransport* audio_transport_cb_;
// Sample rate in Hertz. Accessed atomically.
std::atomic<uint32_t> rec_sample_rate_;
std::atomic<uint32_t> play_sample_rate_;
// Number of audio channels. Accessed atomically.
std::atomic<size_t> rec_channels_;
std::atomic<size_t> play_channels_;
// Keeps track of if playout/recording are active or not. A combination
// of these states are used to determine when to start and stop the timer.
// Only used on the creating thread and not used to control any media flow.
bool playing_ RTC_GUARDED_BY(main_thread_checker_);
bool recording_ RTC_GUARDED_BY(main_thread_checker_);
// Buffer used for audio samples to be played out. Size can be changed
// dynamically. The 16-bit samples are interleaved, hence the size is
// proportional to the number of channels.
rtc::BufferT<int16_t> play_buffer_;
// Byte buffer used for recorded audio samples. Size can be changed
// dynamically.
rtc::BufferT<int16_t> rec_buffer_;
// Contains true of a key-press has been detected.
bool typing_status_;
// Delay values used by the AEC.
int play_delay_ms_;
int rec_delay_ms_;
// Capture timestamp.
std::optional<int64_t> capture_timestamp_ns_;
// The last time the Timestamp Aligner was used to estimate clock offset
// between system clock and capture time from audio.
// This is used to prevent estimating the clock offset too often.
std::optional<int64_t> align_offsync_estimation_time_;
Reland of Adds data logging in native AudioDeviceBuffer class (patchset #1 id:1 of https://codereview.webrtc.org/2148623004/ ) Reason for revert: New fixes in libevent indicates that we are OK and can reland again. Original issue's description: > Revert of Adds data logging in native AudioDeviceBuffer class (patchset #1 id:1 of https://codereview.webrtc.org/2146853003/ ) > > Reason for revert: > Looks like things are still breaking upstream... :( > > Original issue's description: > > Reland of Adds data logging in native AudioDeviceBuffer class (patchset #1 id:1 of https://codereview.webrtc.org/2141413002/ ) > > > > Reason for revert: > > Will make one more try since we have now confirmed that our TaskQueue tests works on Android. Let's hope for the best... > > > > Original issue's description: > > > Revert of Adds data logging in native AudioDeviceBuffer class (patchset #1 id:1 of https://codereview.webrtc.org/2138403003/ ) > > > > > > Reason for revert: > > > Reverting again since it might have caused this issue: > > > > > > https://build.chromium.org/p/chromium.webrtc.fyi/builders/Android%20Tests%20%28dbg%29%20%28L%20Nexus9%29/builds/13622/steps/content_browsertests/logs/stdio > > > > > > Original issue's description: > > > > Reland of Adds data logging in native AudioDeviceBuffer class (patchset #1 id:1 of https://codereview.webrtc.org/2139233002/ ) > > > > > > > > Reason for revert: > > > > My original patch broke things that are now fixed by https://codereview.webrtc.org/2141193002/. > > > > > > > > Hence I am relanding my original change. > > > > > > > > Original issue's description: > > > > > Revert of Adds data logging in native AudioDeviceBuffer class (patchset #10 id:180001 of https://codereview.webrtc.org/2132613002/ ) > > > > > > > > > > Reason for revert: > > > > > Seems to break things upstream. > > > > > > > > > > Original issue's description: > > > > > > Adds data logging in native AudioDeviceBuffer class. > > > > > > > > > > > > Goal is to provide periodic logging of most essential audio parameters > > > > > > for playout and recording sides. It will allow us to track if the native audio layer is working as intended. > > > > > > > > > > > > BUG=NONE > > > > > > > > > > > > Committed: https://crrev.com/348e411dd27e6dbe9b84b27ce46e9b7c657c1eae > > > > > > Cr-Commit-Position: refs/heads/master@{#13440} > > > > > > > > > > TBR=stefan@webrtc.org,henrika@webrtc.org > > > > > # Skipping CQ checks because original CL landed less than 1 days ago. > > > > > NOPRESUBMIT=true > > > > > NOTREECHECKS=true > > > > > NOTRY=true > > > > > BUG=NONE > > > > > > > > > > Committed: https://crrev.com/025aa94ccb85e4c6fe20a3fecdac5d27ec9ba3da > > > > > Cr-Commit-Position: refs/heads/master@{#13441} > > > > > > > > TBR=stefan@webrtc.org,sprang@webrtc.org > > > > # Skipping CQ checks because original CL landed less than 1 days ago. > > > > NOPRESUBMIT=true > > > > NOTREECHECKS=true > > > > NOTRY=true > > > > BUG=NONE > > > > > > > > Committed: https://crrev.com/dd2fdecc78c50377d10ec98b41179acde9218ee7 > > > > Cr-Commit-Position: refs/heads/master@{#13455} > > > > > > TBR=stefan@webrtc.org,sprang@webrtc.org > > > # Skipping CQ checks because original CL landed less than 1 days ago. > > > NOPRESUBMIT=true > > > NOTREECHECKS=true > > > NOTRY=true > > > BUG=NONE > > > > > > Committed: https://crrev.com/5dd941e5a5ccde541d9b40a1df379ed59c5fab5c > > > Cr-Commit-Position: refs/heads/master@{#13457} > > > > TBR=stefan@webrtc.org,sprang@webrtc.org > > # Skipping CQ checks because original CL landed less than 1 days ago. > > NOPRESUBMIT=true > > NOTREECHECKS=true > > NOTRY=true > > BUG=NONE > > > > Committed: https://crrev.com/b201da3fab5efc048a4341f39293d2dcf27b2eec > > Cr-Commit-Position: refs/heads/master@{#13462} > > TBR=stefan@webrtc.org,henrika@webrtc.org > # Skipping CQ checks because original CL landed less than 1 days ago. > NOPRESUBMIT=true > NOTREECHECKS=true > NOTRY=true > BUG=NONE > > Committed: https://crrev.com/ac09501381575dcb07560effc45ec7263d3ff3ad > Cr-Commit-Position: refs/heads/master@{#13464} TBR=stefan@webrtc.org,sprang@webrtc.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=NONE Review-Url: https://codereview.webrtc.org/2148243002 Cr-Commit-Position: refs/heads/master@{#13476}
2016-07-14 05:54:19 -07:00
// Counts number of times LogStats() has been called.
size_t num_stat_reports_ RTC_GUARDED_BY(task_queue_);
Reland of Adds data logging in native AudioDeviceBuffer class (patchset #1 id:1 of https://codereview.webrtc.org/2148623004/ ) Reason for revert: New fixes in libevent indicates that we are OK and can reland again. Original issue's description: > Revert of Adds data logging in native AudioDeviceBuffer class (patchset #1 id:1 of https://codereview.webrtc.org/2146853003/ ) > > Reason for revert: > Looks like things are still breaking upstream... :( > > Original issue's description: > > Reland of Adds data logging in native AudioDeviceBuffer class (patchset #1 id:1 of https://codereview.webrtc.org/2141413002/ ) > > > > Reason for revert: > > Will make one more try since we have now confirmed that our TaskQueue tests works on Android. Let's hope for the best... > > > > Original issue's description: > > > Revert of Adds data logging in native AudioDeviceBuffer class (patchset #1 id:1 of https://codereview.webrtc.org/2138403003/ ) > > > > > > Reason for revert: > > > Reverting again since it might have caused this issue: > > > > > > https://build.chromium.org/p/chromium.webrtc.fyi/builders/Android%20Tests%20%28dbg%29%20%28L%20Nexus9%29/builds/13622/steps/content_browsertests/logs/stdio > > > > > > Original issue's description: > > > > Reland of Adds data logging in native AudioDeviceBuffer class (patchset #1 id:1 of https://codereview.webrtc.org/2139233002/ ) > > > > > > > > Reason for revert: > > > > My original patch broke things that are now fixed by https://codereview.webrtc.org/2141193002/. > > > > > > > > Hence I am relanding my original change. > > > > > > > > Original issue's description: > > > > > Revert of Adds data logging in native AudioDeviceBuffer class (patchset #10 id:180001 of https://codereview.webrtc.org/2132613002/ ) > > > > > > > > > > Reason for revert: > > > > > Seems to break things upstream. > > > > > > > > > > Original issue's description: > > > > > > Adds data logging in native AudioDeviceBuffer class. > > > > > > > > > > > > Goal is to provide periodic logging of most essential audio parameters > > > > > > for playout and recording sides. It will allow us to track if the native audio layer is working as intended. > > > > > > > > > > > > BUG=NONE > > > > > > > > > > > > Committed: https://crrev.com/348e411dd27e6dbe9b84b27ce46e9b7c657c1eae > > > > > > Cr-Commit-Position: refs/heads/master@{#13440} > > > > > > > > > > TBR=stefan@webrtc.org,henrika@webrtc.org > > > > > # Skipping CQ checks because original CL landed less than 1 days ago. > > > > > NOPRESUBMIT=true > > > > > NOTREECHECKS=true > > > > > NOTRY=true > > > > > BUG=NONE > > > > > > > > > > Committed: https://crrev.com/025aa94ccb85e4c6fe20a3fecdac5d27ec9ba3da > > > > > Cr-Commit-Position: refs/heads/master@{#13441} > > > > > > > > TBR=stefan@webrtc.org,sprang@webrtc.org > > > > # Skipping CQ checks because original CL landed less than 1 days ago. > > > > NOPRESUBMIT=true > > > > NOTREECHECKS=true > > > > NOTRY=true > > > > BUG=NONE > > > > > > > > Committed: https://crrev.com/dd2fdecc78c50377d10ec98b41179acde9218ee7 > > > > Cr-Commit-Position: refs/heads/master@{#13455} > > > > > > TBR=stefan@webrtc.org,sprang@webrtc.org > > > # Skipping CQ checks because original CL landed less than 1 days ago. > > > NOPRESUBMIT=true > > > NOTREECHECKS=true > > > NOTRY=true > > > BUG=NONE > > > > > > Committed: https://crrev.com/5dd941e5a5ccde541d9b40a1df379ed59c5fab5c > > > Cr-Commit-Position: refs/heads/master@{#13457} > > > > TBR=stefan@webrtc.org,sprang@webrtc.org > > # Skipping CQ checks because original CL landed less than 1 days ago. > > NOPRESUBMIT=true > > NOTREECHECKS=true > > NOTRY=true > > BUG=NONE > > > > Committed: https://crrev.com/b201da3fab5efc048a4341f39293d2dcf27b2eec > > Cr-Commit-Position: refs/heads/master@{#13462} > > TBR=stefan@webrtc.org,henrika@webrtc.org > # Skipping CQ checks because original CL landed less than 1 days ago. > NOPRESUBMIT=true > NOTREECHECKS=true > NOTRY=true > BUG=NONE > > Committed: https://crrev.com/ac09501381575dcb07560effc45ec7263d3ff3ad > Cr-Commit-Position: refs/heads/master@{#13464} TBR=stefan@webrtc.org,sprang@webrtc.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=NONE Review-Url: https://codereview.webrtc.org/2148243002 Cr-Commit-Position: refs/heads/master@{#13476}
2016-07-14 05:54:19 -07:00
// Time stamp of last timer task (drives logging).
int64_t last_timer_task_time_ RTC_GUARDED_BY(task_queue_);
// Counts number of audio callbacks modulo 50 to create a signal when
// a new storage of audio stats shall be done.
int16_t rec_stat_count_;
int16_t play_stat_count_;
// Time stamps of when playout and recording starts.
int64_t play_start_time_ RTC_GUARDED_BY(main_thread_checker_);
int64_t rec_start_time_ RTC_GUARDED_BY(main_thread_checker_);
Reland of Avoid calling PostTask in audio callbacks (patchset #1 id:1 of https://codereview.webrtc.org/2684913003/ ) Reason for revert: The reason for reverting was false alarm. Original issue's description: > Revert of Avoid calling PostTask in audio callbacks (patchset #6 id:100001 of https://codereview.webrtc.org/2663383004/ ) > > Reason for revert: > Speculative revert to see if this CL caused a change in performance tests. > > See https://bugs.chromium.org/p/chromium/issues/detail?id=689919 for details. > > Original issue's description: > > Avoid calling PostTask in audio callbacks. > > > > We have seen that PostTask can consume some CPU and the way we used it > > before (logging only) in the ADB is not worth the cost we see when > > profiling. > > > > This CL simply moves frequent (trivial) stat updates from the task queue > > to the native threads to avoid calling PostTask in each callback. > > The reason for doing so before was to avoid locks but we can live without > > them since races are benign here. > > > > > > BUG=webrtc:7096 > > > > Review-Url: https://codereview.webrtc.org/2663383004 > > Cr-Commit-Position: refs/heads/master@{#16429} > > Committed: https://chromium.googlesource.com/external/webrtc/+/77ce9a55415a673422d424ed862be142d5e277ef > > TBR=solenberg@webrtc.org > # Not skipping CQ checks because original CL landed more than 1 days ago. > BUG=webrtc:7096 > > Review-Url: https://codereview.webrtc.org/2684913003 > Cr-Commit-Position: refs/heads/master@{#16490} > Committed: https://chromium.googlesource.com/external/webrtc/+/fd8f102a847e7f8bd9c719ec6cc0b5818b626705 TBR=solenberg@webrtc.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=webrtc:7096 Review-Url: https://codereview.webrtc.org/2687573003 Cr-Commit-Position: refs/heads/master@{#16497}
2017-02-08 07:16:56 -08:00
// Contains counters for playout and recording statistics.
Stats stats_ RTC_GUARDED_BY(lock_);
Reland of Avoid calling PostTask in audio callbacks (patchset #1 id:1 of https://codereview.webrtc.org/2684913003/ ) Reason for revert: The reason for reverting was false alarm. Original issue's description: > Revert of Avoid calling PostTask in audio callbacks (patchset #6 id:100001 of https://codereview.webrtc.org/2663383004/ ) > > Reason for revert: > Speculative revert to see if this CL caused a change in performance tests. > > See https://bugs.chromium.org/p/chromium/issues/detail?id=689919 for details. > > Original issue's description: > > Avoid calling PostTask in audio callbacks. > > > > We have seen that PostTask can consume some CPU and the way we used it > > before (logging only) in the ADB is not worth the cost we see when > > profiling. > > > > This CL simply moves frequent (trivial) stat updates from the task queue > > to the native threads to avoid calling PostTask in each callback. > > The reason for doing so before was to avoid locks but we can live without > > them since races are benign here. > > > > > > BUG=webrtc:7096 > > > > Review-Url: https://codereview.webrtc.org/2663383004 > > Cr-Commit-Position: refs/heads/master@{#16429} > > Committed: https://chromium.googlesource.com/external/webrtc/+/77ce9a55415a673422d424ed862be142d5e277ef > > TBR=solenberg@webrtc.org > # Not skipping CQ checks because original CL landed more than 1 days ago. > BUG=webrtc:7096 > > Review-Url: https://codereview.webrtc.org/2684913003 > Cr-Commit-Position: refs/heads/master@{#16490} > Committed: https://chromium.googlesource.com/external/webrtc/+/fd8f102a847e7f8bd9c719ec6cc0b5818b626705 TBR=solenberg@webrtc.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=webrtc:7096 Review-Url: https://codereview.webrtc.org/2687573003 Cr-Commit-Position: refs/heads/master@{#16497}
2017-02-08 07:16:56 -08:00
// Stores current stats at each timer task. Used to calculate differences
// between two successive timer events.
Stats last_stats_ RTC_GUARDED_BY(task_queue_);
Reland of Avoid calling PostTask in audio callbacks (patchset #1 id:1 of https://codereview.webrtc.org/2684913003/ ) Reason for revert: The reason for reverting was false alarm. Original issue's description: > Revert of Avoid calling PostTask in audio callbacks (patchset #6 id:100001 of https://codereview.webrtc.org/2663383004/ ) > > Reason for revert: > Speculative revert to see if this CL caused a change in performance tests. > > See https://bugs.chromium.org/p/chromium/issues/detail?id=689919 for details. > > Original issue's description: > > Avoid calling PostTask in audio callbacks. > > > > We have seen that PostTask can consume some CPU and the way we used it > > before (logging only) in the ADB is not worth the cost we see when > > profiling. > > > > This CL simply moves frequent (trivial) stat updates from the task queue > > to the native threads to avoid calling PostTask in each callback. > > The reason for doing so before was to avoid locks but we can live without > > them since races are benign here. > > > > > > BUG=webrtc:7096 > > > > Review-Url: https://codereview.webrtc.org/2663383004 > > Cr-Commit-Position: refs/heads/master@{#16429} > > Committed: https://chromium.googlesource.com/external/webrtc/+/77ce9a55415a673422d424ed862be142d5e277ef > > TBR=solenberg@webrtc.org > # Not skipping CQ checks because original CL landed more than 1 days ago. > BUG=webrtc:7096 > > Review-Url: https://codereview.webrtc.org/2684913003 > Cr-Commit-Position: refs/heads/master@{#16490} > Committed: https://chromium.googlesource.com/external/webrtc/+/fd8f102a847e7f8bd9c719ec6cc0b5818b626705 TBR=solenberg@webrtc.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=webrtc:7096 Review-Url: https://codereview.webrtc.org/2687573003 Cr-Commit-Position: refs/heads/master@{#16497}
2017-02-08 07:16:56 -08:00
// Set to true at construction and modified to false as soon as one audio-
// level estimate larger than zero is detected.
bool only_silence_recorded_;
// Set to true when logging of audio stats is enabled for the first time in
// StartPeriodicLogging() and set to false by StopPeriodicLogging().
// Setting this member to false prevents (possiby invalid) log messages from
// being printed in the LogStats() task.
bool log_stats_ RTC_GUARDED_BY(task_queue_);
// Used for converting capture timestaps (received from AudioRecordThread
// via AudioRecordJni::DataIsRecorded) to RTC clock.
rtc::TimestampAligner timestamp_aligner_;
// Should *never* be defined in production builds. Only used for testing.
// When defined, the output signal will be replaced by a sinus tone at 440Hz.
#ifdef AUDIO_DEVICE_PLAYS_SINUS_TONE
double phase_;
#endif
};
} // namespace webrtc
#endif // MODULES_AUDIO_DEVICE_AUDIO_DEVICE_BUFFER_H_