New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 667674 link

Starred by 1 user

Issue metadata

Status: Verified
Owner:
Closed: Mar 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 1
Type: Bug

Blocking:
issue 581679



Sign in to add a comment

End to end test for webrtc

Project Member Reported by cychiang@chromium.org, Nov 22 2016

Issue description

With Chameleon (a SoC board that can emulate 3.5mm headset and USB headset) and loopback webrtc demo page, we can create a loopback test environment:

1. On Chameleon:

Enable USB audio port.
Connect audio path from DUT 3.5mm headphone to Chameleon LineIn

2. On DUT:

DUT will see USB input and output, 3.5mm headphone and mic jack are all plugged.
Select USB as input, 3.5mm headphone as output.

Go to loopback demo page
https://webrtc.github.io/samples/src/content/peerconnection/audio/
Click "Call" button by telemetry

3. On Chameleon:

Play a 500Hz sine tone from USB port.
Record from linein (to record audio from 3.5mm headphone of DUT)

4. Copy the recorded file to test server and examine it.

5. Copy the audio thread log from DUT and examine it.

Due to echo cancellation (I guess), the waveform is attenuated like the attached picture, but we can still examine the frequency is correct, also, we can examine if there is any underrun in audio thread log.

Hi olka@ and jansson@, is it expected to see waveform like this when playing a fixed sine tone to loopback?
Or could you please suggest a better test scenario ?

Thanks!
 
loopback.png
30.7 KB View Download
Blocking: 581679

Comment 2 by olka@chromium.org, Nov 22 2016

Cc: peah@chromium.org
+peah@

Comment 3 by peah@google.com, Nov 22 2016

I'm not fully sure how the loopback demo example works but it seems like there is a speech codec involved, right?

The AEC could possibly cause the kind of signal you are seeing, it is a bit hard to tell but an sinusoidal signals typically don't go well with AECs.

Then there is the noise suppressor which as well could have an impact on the signal.

Furthermore, the resamplers and band-splitting/merging filters could have this effect.

On top of that, the speech codec is not really designed to handle the encoding of sinusoidal signals.

To summarize: there are definitely a number of components which could cause the signal you are seeing. The only way to be fully sure would be to make an aecdump recording on the device where you are running the loopback demo.


What is the desired behavior in this case? I guess you want a pure sinusoid back? 
Hi peah,
Thank you for the explanation!
I would like a pure sinusoid back because the quality checking tools we have in autotest are for sinusoid wave (volume change is fine)

It seems that maybe using apprtc site is better.

http://gingertech.net/2014/03/19/apprtc-googles-webrtc-test-app-and-its-parameters/

I am not sure if these parameters still work:
audio=googEchoCancellation=false,googAutoGainControl=false,googNoiseReduction=false

It that works I can bypass these blocks and hear a pure sine wave back, and examine it closely.

I can also enable the blocks by default, and play some common music, and check the audio thread log (for underrun).
But I can not verify the loopback music DUT played is good or bad.

Do you think these two scenarios would cover the need for the test?

Thanks!


Comment 5 by peah@chromium.org, Nov 22 2016

Those parameters should work.

However, you still have the codec that may distort the signals. But maybe that works. I would, however, not count on the sinusoidal signal being fully clear. 

I think you should make a test with those parameters and see whether the codec is sufficiently transparent for your test tools to work.

Please let me know if you get any problems applying those parameters!
Thanks for your suggestion!
This actually works pretty well.

https://appr.tc/?debug=loopback&audio=googEchoCancellation=false,googAutoGainControl=false,googNoiseReduction=false

The resulted signal can pass the quality check.
I will use this in my test.
Thanks!
loopback_no_echo.png
40.5 KB View Download
Status: Started (was: Assigned)
The patch series are all uploaded.
256 block size runs fine on peppy. We can see it runs on different boards after the test is merged.

remote:   https://chromium-review.googlesource.com/414736 [autotest] multimedia: Add Chrome argument to bypass media permission        
remote:   https://chromium-review.googlesource.com/414737 [autotest] webrtc_utils: Add utils for WebRTC tests        
remote:   https://chromium-review.googlesource.com/414738 [autotest] facade_resource: Always wait for tab be ready        
remote:   https://chromium-review.googlesource.com/414739 [autotest] sox_utils: Generate wave file of multiple sine tone        
remote:   https://chromium-review.googlesource.com/414740 [autotest] audio_test_data: Add AudioTestDataGenerateOnDemand        
remote:   https://chromium-review.googlesource.com/414741 [autotest] audio_test_utils: Add debug message for quality check        
remote:   https://chromium-review.googlesource.com/414742 [autotest] Add server side WebRTC loopback test        
remote:   https://chromium-review.googlesource.com/414743 [autotest] multimedia: Add extra_browser_args argument        
remote:   https://chromium-review.googlesource.com/414964 [autotest] audio_AudioWebRTCLoopback: Test block size 256 case        
remote:   https://chromium-review.googlesource.com/414965 [autotest] audio_AudioWebRTCLoopback: Check audio diagnostic result        
remote:   https://chromium-review.googlesource.com/414966 [autotest] audio_quality_measurement: Ignore false alarm
Project Member

Comment 8 by bugdroid1@chromium.org, Nov 29 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/autotest/+/e3d2795a36868912c630f7d1efcbac1f46aff9e2

commit e3d2795a36868912c630f7d1efcbac1f46aff9e2
Author: Cheng-Yi Chiang <cychiang@chromium.org>
Date: Fri Nov 25 08:12:14 2016

[autotest] multimedia: Add Chrome argument to bypass media permission

Add the debug argument --use-fake-ui-for-media-stream so Chrome does not
ask user to click notification to grant permission for camera and microphone.
This is needed when the test webpage requires the permissions.

BUG= chromium:667674 
TEST=used with WebRTC test in this patch series.

Change-Id: I44579954b360b994cff0860740c730a9a2caffbd
Reviewed-on: https://chromium-review.googlesource.com/414736
Commit-Ready: Cheng-Yi Chiang <cychiang@chromium.org>
Tested-by: Cheng-Yi Chiang <cychiang@chromium.org>
Reviewed-by: Hsu Wei-Cheng <mojahsu@chromium.org>

[modify] https://crrev.com/e3d2795a36868912c630f7d1efcbac1f46aff9e2/client/cros/multimedia/facade_resource.py

Project Member

Comment 9 by bugdroid1@chromium.org, Nov 29 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/autotest/+/fe0f2852c985a59852f9ebfa5b1680febada9f89

commit fe0f2852c985a59852f9ebfa5b1680febada9f89
Author: Cheng-Yi Chiang <cychiang@chromium.org>
Date: Fri Nov 25 08:21:21 2016

[autotest] webrtc_utils: Add utils for WebRTC tests

Add this module to hold parameters for AppRTC webpage and a controller
for AppRTC webpage.

BUG= chromium:667674 
TEST=Used with WebRTC test in this patch series.

Change-Id: I0f3c2749778e04eb9784c7637b5749a40fbaef8c
Reviewed-on: https://chromium-review.googlesource.com/414737
Commit-Ready: Cheng-Yi Chiang <cychiang@chromium.org>
Tested-by: Cheng-Yi Chiang <cychiang@chromium.org>
Reviewed-by: Shyh-In Hwang <josephsih@chromium.org>

[add] https://crrev.com/fe0f2852c985a59852f9ebfa5b1680febada9f89/client/cros/multimedia/webrtc_utils.py

Project Member

Comment 10 by bugdroid1@chromium.org, Nov 29 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/autotest/+/96152ee1a7deb6c0c2cb9992dc8760d402633a5f

commit 96152ee1a7deb6c0c2cb9992dc8760d402633a5f
Author: Cheng-Yi Chiang <cychiang@chromium.org>
Date: Fri Nov 25 08:32:10 2016

[autotest] facade_resource: Always wait for tab to be ready

We always want to wait for webpage to be ready.

BUG= chromium:667674 
TEST=used with WebRTC test in this patch series.

Change-Id: I6a7ec5808da620e3616de0a79abe69afaff8f4d2
Reviewed-on: https://chromium-review.googlesource.com/414738
Commit-Ready: Cheng-Yi Chiang <cychiang@chromium.org>
Tested-by: Cheng-Yi Chiang <cychiang@chromium.org>
Reviewed-by: Shyh-In Hwang <josephsih@chromium.org>

[modify] https://crrev.com/96152ee1a7deb6c0c2cb9992dc8760d402633a5f/client/cros/multimedia/facade_resource.py

Project Member

Comment 11 by bugdroid1@chromium.org, Nov 29 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/autotest/+/e098f5c8a6bcbb23a87949393e746346f62f656f

commit e098f5c8a6bcbb23a87949393e746346f62f656f
Author: Cheng-Yi Chiang <cychiang@chromium.org>
Date: Mon Nov 28 06:31:58 2016

[autotest] sox_utils: Generate wave file of multiple sine tone

Improve generate_sine_tone_cmd such that it can generate wave file.
Also, handle multiple frequencies specified for multiple channels.

BUG= chromium:667674 
TEST=Used with WebRTC test in this patch series.

Change-Id: I2e598e4a7e05de324a6ff603cebc2fc81bb9536a
Reviewed-on: https://chromium-review.googlesource.com/414739
Commit-Ready: Cheng-Yi Chiang <cychiang@chromium.org>
Tested-by: Cheng-Yi Chiang <cychiang@chromium.org>
Reviewed-by: Shyh-In Hwang <josephsih@chromium.org>

[modify] https://crrev.com/e098f5c8a6bcbb23a87949393e746346f62f656f/client/site_tests/audio_CRASFormatConversion/audio_CRASFormatConversion.py
[modify] https://crrev.com/e098f5c8a6bcbb23a87949393e746346f62f656f/client/cros/audio/sox_utils.py

Project Member

Comment 12 by bugdroid1@chromium.org, Nov 29 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/autotest/+/876630c215537b11cb59f1c3bd6e628ddfc45ace

commit 876630c215537b11cb59f1c3bd6e628ddfc45ace
Author: Cheng-Yi Chiang <cychiang@chromium.org>
Date: Fri Nov 25 10:46:36 2016

[autotest] audio_test_data: Add AudioTestDataGenerateOnDemand

Add a type of audio test data which can generate real data on demand.
This can avoid putting too many audio data files into repo.

Add a test data of this type.

BUG= chromium:667674 
TEST=Used with WebRTC test in this patch series.

Change-Id: Icab293b7f19abc9dee297b682cfcae1365ad4c7f
Reviewed-on: https://chromium-review.googlesource.com/414740
Commit-Ready: Cheng-Yi Chiang <cychiang@chromium.org>
Tested-by: Cheng-Yi Chiang <cychiang@chromium.org>
Reviewed-by: Shyh-In Hwang <josephsih@chromium.org>

[modify] https://crrev.com/876630c215537b11cb59f1c3bd6e628ddfc45ace/client/cros/audio/audio_test_data.py

Project Member

Comment 13 by bugdroid1@chromium.org, Nov 29 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/autotest/+/5672eb6dd4984afd20467b54fddac04b71091713

commit 5672eb6dd4984afd20467b54fddac04b71091713
Author: Cheng-Yi Chiang <cychiang@chromium.org>
Date: Fri Nov 25 10:46:45 2016

[autotest] audio_test_utils: Add debug message for quality check

Add the log so we can see quality measurement result in the log file.

BUG= chromium:667674 
TEST=used with WebRTC test in this patch series

Change-Id: I2b6baf9c6cf747cdacba4bfeaf5838885b5aab56
Reviewed-on: https://chromium-review.googlesource.com/414741
Commit-Ready: Cheng-Yi Chiang <cychiang@chromium.org>
Tested-by: Cheng-Yi Chiang <cychiang@chromium.org>
Reviewed-by: Shyh-In Hwang <josephsih@chromium.org>

[modify] https://crrev.com/5672eb6dd4984afd20467b54fddac04b71091713/client/cros/chameleon/audio_test_utils.py

Project Member

Comment 14 by bugdroid1@chromium.org, Nov 29 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/autotest/+/2520acacf0b43337efcd82fde6e9698b28ebc5ce

commit 2520acacf0b43337efcd82fde6e9698b28ebc5ce
Author: Cheng-Yi Chiang <cychiang@chromium.org>
Date: Fri Nov 25 10:47:08 2016

[autotest] Add server side WebRTC loopback test

Add a test to exercise WebRTC layer audio function.
The loopback is created by AppRTC webpage.
Audio source plays from USB output port from Chameleon.
Cros device records audio from USB, and plays to AppRTC webpage.
Webpage loopbacks audio to Cros device headphone, and finally
audio is recorded on Chameleon LineIn.

BUG= chromium:667674 
TEST=run the test

Change-Id: Ic3e4b6f75c8ace32e3d8116e0198088cca313748
Reviewed-on: https://chromium-review.googlesource.com/414742
Commit-Ready: Cheng-Yi Chiang <cychiang@chromium.org>
Tested-by: Cheng-Yi Chiang <cychiang@chromium.org>
Reviewed-by: Shyh-In Hwang <josephsih@chromium.org>

[add] https://crrev.com/2520acacf0b43337efcd82fde6e9698b28ebc5ce/server/site_tests/audio_AudioWebRTCLoopback/audio_AudioWebRTCLoopback.py
[add] https://crrev.com/2520acacf0b43337efcd82fde6e9698b28ebc5ce/server/site_tests/audio_AudioWebRTCLoopback/control
[add] https://crrev.com/2520acacf0b43337efcd82fde6e9698b28ebc5ce/server/site_tests/audio_AudioWebRTCLoopback/control.quality

Project Member

Comment 15 by bugdroid1@chromium.org, Nov 29 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/autotest/+/eaea996e476b348db3c06b52192504339f2f0e9e

commit eaea996e476b348db3c06b52192504339f2f0e9e
Author: Cheng-Yi Chiang <cychiang@chromium.org>
Date: Mon Nov 28 09:53:37 2016

[autotest] multimedia: Add extra_browser_args argument

Let test pass extra browser args to remote facade factory, and pass that
argument all the way to Cros device facade resource.

BUG= chromium:667674 
TEST=used with next CL.

Change-Id: I8eabc403dcd63542ad22988926b1f59995470e0f
Reviewed-on: https://chromium-review.googlesource.com/414743
Commit-Ready: Cheng-Yi Chiang <cychiang@chromium.org>
Tested-by: Cheng-Yi Chiang <cychiang@chromium.org>
Reviewed-by: Shyh-In Hwang <josephsih@chromium.org>

[modify] https://crrev.com/eaea996e476b348db3c06b52192504339f2f0e9e/server/cros/multimedia/browser_facade_adapter.py
[modify] https://crrev.com/eaea996e476b348db3c06b52192504339f2f0e9e/server/cros/multimedia/remote_facade_factory.py
[modify] https://crrev.com/eaea996e476b348db3c06b52192504339f2f0e9e/client/cros/multimedia/facade_resource.py
[modify] https://crrev.com/eaea996e476b348db3c06b52192504339f2f0e9e/client/cros/multimedia/browser_facade_native.py

Project Member

Comment 16 by bugdroid1@chromium.org, Nov 29 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/autotest/+/5f6051b5fd51892588bd53aa434aa358082347a0

commit 5f6051b5fd51892588bd53aa434aa358082347a0
Author: Cheng-Yi Chiang <cychiang@chromium.org>
Date: Mon Nov 28 10:18:33 2016

[autotest] audio_AudioWebRTCLoopback: Test block size 256 case

Add a control file that tests block size 256 case by setting
--audio-buffer-size argument passed to Chrome.

BUG= chromium:667674 
TEST=run audio_AudioWebRTCLoopback.quality.256 test, check
audio_diagnostics.txt under result directory and see min_cb_level is
256.

Change-Id: I4eb1c9302d959b61646001131b77dbafc22df2ce
Reviewed-on: https://chromium-review.googlesource.com/414964
Commit-Ready: Cheng-Yi Chiang <cychiang@chromium.org>
Tested-by: Cheng-Yi Chiang <cychiang@chromium.org>
Reviewed-by: Shyh-In Hwang <josephsih@chromium.org>

[modify] https://crrev.com/5f6051b5fd51892588bd53aa434aa358082347a0/server/site_tests/audio_AudioWebRTCLoopback/audio_AudioWebRTCLoopback.py
[add] https://crrev.com/5f6051b5fd51892588bd53aa434aa358082347a0/server/site_tests/audio_AudioWebRTCLoopback/control.quality.256

Project Member

Comment 17 by bugdroid1@chromium.org, Nov 29 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/autotest/+/c0c002ad4797a7a341034d80f8eddee912bff8f7

commit c0c002ad4797a7a341034d80f8eddee912bff8f7
Author: Cheng-Yi Chiang <cychiang@chromium.org>
Date: Mon Nov 28 10:26:46 2016

[autotest] audio_AudioWebRTCLoopback: Check audio diagnostic result

Check number of underrun recorded in the audio diagnostic result.
It is expected to be 0.

BUG= chromium:667674 
TEST=run audio_AudioWebRTCLoopback test.

Change-Id: I6d3017b0617b639263a51859595290514f0da286
Reviewed-on: https://chromium-review.googlesource.com/414965
Commit-Ready: Cheng-Yi Chiang <cychiang@chromium.org>
Tested-by: Cheng-Yi Chiang <cychiang@chromium.org>
Reviewed-by: Shyh-In Hwang <josephsih@chromium.org>

[modify] https://crrev.com/c0c002ad4797a7a341034d80f8eddee912bff8f7/server/site_tests/audio_AudioWebRTCLoopback/audio_AudioWebRTCLoopback.py
[modify] https://crrev.com/c0c002ad4797a7a341034d80f8eddee912bff8f7/client/cros/chameleon/audio_test_utils.py

Project Member

Comment 18 by bugdroid1@chromium.org, Nov 29 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/autotest/+/64e95aee0a0ad4ceed37e500ee0e02a81b65b122

commit 64e95aee0a0ad4ceed37e500ee0e02a81b65b122
Author: Cheng-Yi Chiang <cychiang@chromium.org>
Date: Mon Nov 28 10:58:15 2016

[autotest] audio_quality_measurement: Ignore false alarm

Ignore false alarm of "noise before/after sine wave" when it is too
close to the start/end of the sine wave.
We determine start/end of sine wave by frequency of a block.
We detect noise before/after sine wave by magnitude of a block.
The block near start/end of sine wave will have magnitude that
might be incorrectly treated as noise. Add a 0.01 duration to account
for that edge effect.
This is especially easy to seen in WebRTC loopback test because the
magnitude of sine wave is large in the beginning, and then it becomes
much smaller when it stablizes.

Also add debug message for start/end detection.

BUG= chromium:667674 
TEST=run audio_AudioWebRTCLoopback test.

Change-Id: Ibd9bc95c896b290e83e7651093db121d2388b6f1
Reviewed-on: https://chromium-review.googlesource.com/414966
Commit-Ready: Cheng-Yi Chiang <cychiang@chromium.org>
Tested-by: Cheng-Yi Chiang <cychiang@chromium.org>
Reviewed-by: Shyh-In Hwang <josephsih@chromium.org>

[modify] https://crrev.com/64e95aee0a0ad4ceed37e500ee0e02a81b65b122/client/cros/audio/audio_quality_measurement.py

Project Member

Comment 19 by bugdroid1@chromium.org, Dec 19 2016

Labels: merge-merged-factory-reef-8811.B
The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/autotest/+/496a208453233bad66e3a49891fecd50780e89ce

commit 496a208453233bad66e3a49891fecd50780e89ce
Author: Cheng-Yi Chiang <cychiang@chromium.org>
Date: Mon Nov 28 10:58:15 2016

[autotest] audio_quality_measurement: Ignore false alarm

Ignore false alarm of "noise before/after sine wave" when it is too
close to the start/end of the sine wave.
We determine start/end of sine wave by frequency of a block.
We detect noise before/after sine wave by magnitude of a block.
The block near start/end of sine wave will have magnitude that
might be incorrectly treated as noise. Add a 0.01 duration to account
for that edge effect.
This is especially easy to seen in WebRTC loopback test because the
magnitude of sine wave is large in the beginning, and then it becomes
much smaller when it stablizes.

Also add debug message for start/end detection.

BUG= chromium:667674 
TEST=run audio_AudioWebRTCLoopback test.

Change-Id: Ibd9bc95c896b290e83e7651093db121d2388b6f1
Reviewed-on: https://chromium-review.googlesource.com/414966
Commit-Ready: Cheng-Yi Chiang <cychiang@chromium.org>
Tested-by: Cheng-Yi Chiang <cychiang@chromium.org>
Reviewed-by: Shyh-In Hwang <josephsih@chromium.org>
(cherry picked from commit 64e95aee0a0ad4ceed37e500ee0e02a81b65b122)
Reviewed-on: https://chromium-review.googlesource.com/422124
Reviewed-by: Ting Shen <phoenixshen@chromium.org>
Commit-Queue: Ting Shen <phoenixshen@chromium.org>
Tested-by: Ting Shen <phoenixshen@chromium.org>

[modify] https://crrev.com/496a208453233bad66e3a49891fecd50780e89ce/client/cros/audio/audio_quality_measurement.py

Project Member

Comment 20 by bugdroid1@chromium.org, Dec 27 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/autotest/+/276c8f8a080ee09082634887884a90e71100b180

commit 276c8f8a080ee09082634887884a90e71100b180
Author: Cheng-Yi Chiang <cychiang@chromium.org>
Date: Fri Dec 23 09:52:59 2016

audio_AudioWebRTCLoopback: Fix import name

The import module should be webrtc_utils.

BUG= chromium:667674 
TEST=run audio_AudioWebRTCLoopback test.

Change-Id: I2df5ffdb05e8e2f1a7be2a144ec07c3af092722e
Reviewed-on: https://chromium-review.googlesource.com/422722
Commit-Ready: Cheng-Yi Chiang <cychiang@chromium.org>
Tested-by: Cheng-Yi Chiang <cychiang@chromium.org>
Reviewed-by: Hsinyu Chao <hychao@chromium.org>

[modify] https://crrev.com/276c8f8a080ee09082634887884a90e71100b180/server/site_tests/audio_AudioWebRTCLoopback/audio_AudioWebRTCLoopback.py

Project Member

Comment 21 by bugdroid1@chromium.org, Jan 3 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/autotest/+/5cff98e5e56a6647d91d2a7f17d7ce12a3503c7a

commit 5cff98e5e56a6647d91d2a7f17d7ce12a3503c7a
Author: Cheng-Yi Chiang <cychiang@chromium.org>
Date: Fri Dec 30 09:23:18 2016

[autotest] Fix audio_AudioWebRTCLoopback test

Fix the url parameters.
Move the test to audio box only because there are many audio board
setting missing USB connection between DUT and Chameleon.

BUG= chromium:667674 
TEST=run the test with quality check

Change-Id: Ie75ba9039a517a4b1ce66101338d89cc983f18e6
Reviewed-on: https://chromium-review.googlesource.com/424295
Commit-Ready: Cheng-Yi Chiang <cychiang@chromium.org>
Tested-by: Cheng-Yi Chiang <cychiang@chromium.org>
Reviewed-by: Hsinyu Chao <hychao@chromium.org>

[modify] https://crrev.com/5cff98e5e56a6647d91d2a7f17d7ce12a3503c7a/client/cros/multimedia/webrtc_utils.py
[modify] https://crrev.com/5cff98e5e56a6647d91d2a7f17d7ce12a3503c7a/server/site_tests/audio_AudioWebRTCLoopback/control.quality

Project Member

Comment 22 by bugdroid1@chromium.org, Jan 4 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/autotest/+/2c8e70c55263e5d80359b771c5cf3add7257f253

commit 2c8e70c55263e5d80359b771c5cf3add7257f253
Author: Cheng-Yi Chiang <cychiang@chromium.org>
Date: Tue Jan 03 11:15:44 2017

[autotest] audio_test_utils: Fix string format

Fix error message format

BUG= chromium:667674 
TEST=run audio_AudioWebRTCLoopback.quality.256 test on samus and see
underrun error message.

Change-Id: I15ec44bebe61c1f06d7ac289a75479f18d676906
Reviewed-on: https://chromium-review.googlesource.com/424487
Commit-Ready: Cheng-Yi Chiang <cychiang@chromium.org>
Tested-by: Cheng-Yi Chiang <cychiang@chromium.org>
Reviewed-by: Hsinyu Chao <hychao@chromium.org>

[modify] https://crrev.com/2c8e70c55263e5d80359b771c5cf3add7257f253/client/cros/chameleon/audio_test_utils.py

Project Member

Comment 23 by bugdroid1@chromium.org, Jan 4 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/adhd/+/1c80a342901eea138b09961cf25629c8aa69958b

commit 1c80a342901eea138b09961cf25629c8aa69958b
Author: Cheng-Yi Chiang <cychiang@chromium.org>
Date: Wed Jan 04 07:55:52 2017

CRAS: alsa_helper - Fix num_underrun count

When snd_pcm_avail returns a number that equals buffer size, it should
be counted as underrun as well although it might not be an underrun if
total_written happens to be greater than zero.

This is because audio_thread calls cras_iodev_output_underrun when
hw_level and total_written are both zero. If we do not count the case
where avail == buffer_size (that is, hw_level == 0) as an underrun,
num_underrun dumped in audio thread log will be 0, while there is delay
caused by cras_iodev_output_underrun.

With this change, we can rely on num_underrun == 0 in audio thread log
to examine that hw_level remains high enough.

BUG= chromium:667674 
TEST=check num_underruns is the same as number of times
cras_iodev_output_underrun is called.

Change-Id: I170753485b135e5170ff810830668a1b03ece04f
Reviewed-on: https://chromium-review.googlesource.com/425054
Commit-Ready: Cheng-Yi Chiang <cychiang@chromium.org>
Tested-by: Cheng-Yi Chiang <cychiang@chromium.org>
Reviewed-by: Hsinyu Chao <hychao@chromium.org>
Reviewed-by: Chinyue Chen <chinyue@chromium.org>

[modify] https://crrev.com/1c80a342901eea138b09961cf25629c8aa69958b/cras/src/server/cras_alsa_helpers.c
[modify] https://crrev.com/1c80a342901eea138b09961cf25629c8aa69958b/cras/src/tests/alsa_helpers_unittest.cc

Basic check: https://wmatrix.googleplex.com/matrix/unfiltered?tests=audio_AudioWebRTCLoopback&days_back=20&hide_missing=True
Quality check: https://wmatrix.googleplex.com/matrix/unfiltered?tests=audio_AudioWebRTCLoopback.quality&days_back=20&hide_missing=True
Quality check under 256 block size: https://wmatrix.googleplex.com/matrix/unfiltered?tests=audio_AudioWebRTCLoopback.quality.256&days_back=20&hide_missing=True

The tests are up and running. There are failures on many boards.
I will check them.

As for my local testing, tested on samus, pass quality check with 512 block size 50 times.
Fail 20/50 with 256 block size. So changing block size actually impacted quality.
I will investigate why those underruns happen.

Project Member

Comment 25 by bugdroid1@chromium.org, Jan 16 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/autotest/+/1e4295d8846a3fbeabdb95301ad7d3d7c5fbc534

commit 1e4295d8846a3fbeabdb95301ad7d3d7c5fbc534
Author: Cheng-Yi Chiang <cychiang@chromium.org>
Date: Tue Jan 10 09:05:58 2017

[autotest] audio_AudioWebRTCLoopback: Add audio_box dependency

This test should be run in audio box since audio box is equipped with
USB cable between DUT and Chameleon.

BUG= chromium:667674 
TEST=None

Change-Id: Ic815e6d046b9178ba68d81539fc6afd2bde4fd20
Reviewed-on: https://chromium-review.googlesource.com/426299
Commit-Ready: Cheng-Yi Chiang <cychiang@chromium.org>
Tested-by: Cheng-Yi Chiang <cychiang@chromium.org>
Reviewed-by: Hsinyu Chao <hychao@chromium.org>
Reviewed-by: Cheng-Yi Chiang <cychiang@chromium.org>

[modify] https://crrev.com/1e4295d8846a3fbeabdb95301ad7d3d7c5fbc534/server/site_tests/audio_AudioWebRTCLoopback/control
[modify] https://crrev.com/1e4295d8846a3fbeabdb95301ad7d3d7c5fbc534/server/site_tests/audio_AudioWebRTCLoopback/control.quality.256

Project Member

Comment 26 by bugdroid1@chromium.org, Jan 16 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/autotest/+/a975ead3e88aeedb1923fcfc153b32d7452dc6ee

commit a975ead3e88aeedb1923fcfc153b32d7452dc6ee
Author: Cheng-Yi Chiang <cychiang@chromium.org>
Date: Tue Jan 10 09:56:56 2017

[autotest] audio_AudioWebRTCLoopback: Use diagnostic for debugging

Only use diagnostic result for debugging. When hw_level is 0, but there
is data to be written to device, CRAS will record num_underrun, but
output might be normal. Test should check waveform to raise error, and
use num_underrun in audio_diagnostic file for debugging.

BUG= chromium:667674 
TEST=modify control.quality.256 to use smaller block size and run the
test. Check the test fail with waveform quality issue, not diagnostic
issue.

Change-Id: Ia201528cabe24b01337b90d0d48e0f998f4e1ee3
Reviewed-on: https://chromium-review.googlesource.com/426300
Commit-Ready: Cheng-Yi Chiang <cychiang@chromium.org>
Tested-by: Cheng-Yi Chiang <cychiang@chromium.org>
Reviewed-by: Hsinyu Chao <hychao@chromium.org>

[modify] https://crrev.com/a975ead3e88aeedb1923fcfc153b32d7452dc6ee/server/site_tests/audio_AudioWebRTCLoopback/audio_AudioWebRTCLoopback.py
[modify] https://crrev.com/a975ead3e88aeedb1923fcfc153b32d7452dc6ee/client/cros/chameleon/audio_test_utils.py

Project Member

Comment 27 by bugdroid1@chromium.org, Jan 19 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/autotest/+/3bd972cdb50d97267eca16615e524c571ace9804

commit 3bd972cdb50d97267eca16615e524c571ace9804
Author: Cheng-Yi Chiang <cychiang@chromium.org>
Date: Tue Jan 17 08:58:18 2017

[autotest] audio_test_utils: Add method to check audio node types

Check plugged audio node types and set them. If the node type does not
present, it is probably because test environment or dependency is wrong.

BUG= chromium:667674 
TEST=run audio_AudioWebRTCLoopback test on device without USB or
     headphone connection. See error.TestError is raised with
     error messages.

Change-Id: I9c93cf77572c8d2f205c1a7b189f864cb72a6625
Reviewed-on: https://chromium-review.googlesource.com/428790
Commit-Ready: Cheng-Yi Chiang <cychiang@chromium.org>
Tested-by: Cheng-Yi Chiang <cychiang@chromium.org>
Reviewed-by: Cheng-Yi Chiang <cychiang@chromium.org>

[modify] https://crrev.com/3bd972cdb50d97267eca16615e524c571ace9804/server/site_tests/audio_AudioWebRTCLoopback/audio_AudioWebRTCLoopback.py
[modify] https://crrev.com/3bd972cdb50d97267eca16615e524c571ace9804/client/cros/chameleon/audio_test_utils.py

Status: Verified (was: Started)
Already running in the lab

Sign in to add a comment