Closed Bug 1517764 Opened 7 years ago Closed 6 years ago

Fennec Audio Quality

Categories

(Firefox for Android Graveyard :: Audio/Video, defect, P3)

defect

Tracking

(Not tracked)

RESOLVED WORKSFORME

People

(Reporter: csheany, Unassigned)

References

Details

(Whiteboard: [needinfo reporter])

User Agent: Mozilla/5.0 (Android 7.1.1; Tablet; rv:66.0) Gecko/66.0 Firefox/66.0 Steps to reproduce: 1. Play a YouTube video 2. Play a YouTube video in VLC Actual results: Firefox sounds noticeably worse on speakers. I don't think it is the engine but the path it takes to get there as with headphones the difference is negligible. Expected results: To be determined
Thanks for the report! However this is not very actionable. Can you provide more details? Things like: - Android device - Youtube video that exhibits the problems (available encodings can vary, and served encodings can vary, for instance - do you know whether fennec and vlc are being served the same files?) - Type of quality difference (is it audio artifacts like frequent millisecond-long dropouts, or encoding artifacts like a general bad quality, more narrow frequency spectrum, etc?) Perhaps a recording that demonstrates the quality difference would be easiest for the latter point.
Flags: needinfo?(csheany)
Thank you for your response. The device is a Samsung Galaxy Tab A. Perhaps the files at audiocheck.net/testtones_whitenoise.php are more helpful. It seems frequency spectrum related.
Flags: needinfo?(csheany)
(In reply to csheany from comment #2) > Perhaps the files at audiocheck.net/testtones_whitenoise.php are more > helpful. Can you provide steps to reproduce for that site?
Flags: needinfo?(csheany)
The files should able to be played and downloaded to compare. It should be a direct link.
Flags: needinfo?(csheany)
Yes, but please provide a detailed STR so that we can be sure we test for the problem you are exhibiting and not something else. https://developer.mozilla.org/en-US/docs/Mozilla/QA/Bug_writing_guidelines#Writing_precise_steps_to_reproduce
Flags: needinfo?(csheany)
Of course. 1. Open audiocheck.net/testtones_whitenoise.php 2. Play the file 3. Download 4. Play in VLC
Flags: needinfo?(csheany)
Alternatively, 1. Open mozilla.org/en-US/firefox/ 2. Play a video 3. Download 4. Play in VLC

I am testing the file from audiocheck.net/testtones_whitenoise.php and I don't see the difference. I am using the same device to play the downloaded file. Do I need a special configuration, voice level etc? Do you see the same difference if you use the YouTube app comparing to use firefox for the same video?

It's probably better to define the "quality" first so we can find a way to test and compare the sound played from Firefox with others. Roughly search the VLC code on Android, there is an equalizer[0]. Not sure if it's the cause if there is a difference.

[0] https://github.com/videolan/vlc-android/blob/eaca15d39d8bc7d6bde43f4faf28e4e950746d12/libvlc/src/org/videolan/libvlc/MediaPlayer.java#L231

Thank you for looking into it.

What I am hearing is that Firefox sounds filtered.

I thought volume might have been playing tricks but they seem fairly matched.

How does Firefox handle mono output?

Alex, how many speakers does your model have?

Flags: needinfo?(achronop)

It has one speaker. Do you have more one?

Flags: needinfo?(achronop)

Mine has one as well. Thought that might have been a variable.

Do you have the same quality gap on Chrome? Could you record the two cases, just to get an idea how worse it is.

Bewteen Firefox or VLC?

Do you have a suggestion for recording?

Firefox sounds like earbuds.

I'm not sure if it's because there is too much treble or not enough bass.

Chrome between VLC, do you see the same quality difference there.

I would suggest to use an external recorder. For example to bring your phone speaker close to your PC microphone and use an audio recorder app. Instead of an app you could use your browser and an online recorder. I see that one on a random search [1]. Feel free to use a different one, I haven't really try it.

[1] https://www.speakpipe.com/voice-recorder

Fennec isn't as good as Focus with WebView which isn't as good as VLC.

csheany, did you have a chance to try this with Chrome and compare Chrome's output with VLC's output?

Flags: needinfo?(csheany)

That is what Comment 17 was based on.

Flags: needinfo?(csheany)

As a part of triage process, I restore the NI since we are waiting on answers. Thanks.

Flags: needinfo?(csheany)
Whiteboard: [needinfo reporter]

To elaborate,

Fennec sounds like mostly tweeter where Focus with WebView sounds like mostly woofer.

VLC sounds like the right amount of both but also more extended.

Flags: needinfo?(csheany)

Hi, Alex,
Do you mind to take a look for this bug again?
Thank you!

Flags: needinfo?(achronop)

I am not sure how to handle it because I am not able to reproduce and understand the problem.

@csheany: would you like to set the "media.forcestereo.enabled"=false in about:config and check again. Also, can you please upload the content of about:support page in case we see something useful there.

Flags: needinfo?(achronop)
Flags: needinfo?(csheany)

I tested the pref setting but it didn't seem to help.

Flags: needinfo?(csheany)

Could you navigate to the about:support page using the url bar and copy the information from there via the "copy text to clipboard" option to this bug?

Flags: needinfo?(csheany)

Application Basics

Name: Fennec
Version: 67.0a1
Build ID: 20190130094929
Update Channel: nightly
User Agent: Mozilla/5.0 (Android 7.1.1; Tablet; rv:67.0) Gecko/67.0 Firefox/67.0
OS: Linux 25
Multiprocess Windows: 0/1 Disabled
Web Content Processes:
Enterprise Policies:
Google Key: Found
Mozilla Location Service Key: Found
Safe Mode: false

Crash Reports for the Last 3 Days

All Crash Reports Nightly Features

Name: Web Compat
Version: 3.0.1
ID: webcompat@mozilla.org

Name: WebCompat Reporter
Version: 1.1.0
ID: webcompat-reporter@mozilla.org

Extensions

Name: Pushlog
Version: 0.0.5
Enabled: true
ID: pushlog@calixteman

Name: uBlock Origin
Version: 1.18.2
Enabled: true
ID: uBlock0@raymondhill.net

Name: Video Background Play Fix
Version: 1.4.3
Enabled: true
ID: video-bg-play@timdream.org

Security Software
----------------- Type:

Type:

Type:

Graphics

Features
Compositing: OpenGL
Asynchronous Pan/Zoom: touch input enabled; autoscroll enabled
WebGL 1 Driver WSI Info: EGL_VENDOR: Qualcomm, Inc EGL_VERSION: 1.4 EGL_EXTENSIONS: EGL_QUALCOMM_shared_image EGL_KHR_image EGL_KHR_image_base EGL_QCOM_create_image EGL_KHR_lock_surface EGL_KHR_lock_surface2 EGL_KHR_lock_surface3 EGL_KHR_fence_sync EGL_KHR_cl_event EGL_KHR_cl_event2 EGL_IMG_context_priority EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_texture_3D_image EGL_KHR_gl_renderbuffer_image EGL_EXT_create_context_robustness EGL_ANDROID_blob_cache EGL_ANDROID_framebuffer_target EGL_KHR_create_context EGL_KHR_wait_sync EGL_KHR_gl_colorspace EGL_ANDROIDX_no_config_context EGL_KHR_partial_update EGL_ANDROID_image_crop EGL_ANDROID_recordable EGL_ANDROID_native_fence_sync EGL_ANDROID_image_native_buffer EGL_KHR_gl_colorspace EGL_IMG_image_plane_attribs
WebGL 1 Driver Renderer: Qualcomm -- Adreno (TM) 306
WebGL 1 Driver Version: OpenGL ES 3.0 V@145.0 AU@ (GIT@I750f7f2fa6)
WebGL 1 Driver Extensions: GL_AMD_compressed_ATC_texture GL_AMD_performance_monitor GL_AMD_program_binary_Z400 GL_EXT_debug_label GL_EXT_debug_marker GL_EXT_discard_framebuffer GL_EXT_robustness GL_EXT_texture_format_BGRA8888 GL_EXT_texture_type_2_10_10_10_REV GL_NV_fence GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth_texture GL_OES_depth24 GL_OES_EGL_image GL_OES_EGL_sync GL_OES_EGL_image_external GL_OES_element_index_uint GL_OES_fbo_render_mipmap GL_OES_fragment_precision_high GL_OES_get_program_binary GL_OES_packed_depth_stencil GL_OES_depth_texture_cube_map GL_OES_rgb8_rgba8 GL_OES_standard_derivatives GL_OES_texture_3D GL_OES_texture_float GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_texture_npot GL_OES_vertex_half_float GL_OES_vertex_type_10_10_10_2 GL_OES_vertex_array_object GL_QCOM_alpha_test GL_QCOM_binning_control GL_QCOM_driver_control GL_QCOM_perfmon_global_mode GL_QCOM_extended_get GL_QCOM_extended_get2 GL_QCOM_tiled_rendering GL_QCOM_writeonly_rendering GL_EXT_sRGB GL_EXT_sRGB_write_control GL_EXT_texture_sRGB_decode GL_EXT_texture_filter_anisotropic GL_EXT_multisampled_render_to_texture GL_EXT_color_buffer_float GL_EXT_color_buffer_half_float GL_EXT_disjoint_timer_query
WebGL 1 Extensions: ANGLE_instanced_arrays EXT_blend_minmax EXT_color_buffer_half_float EXT_frag_depth EXT_sRGB EXT_texture_filter_anisotropic EXT_disjoint_timer_query OES_element_index_uint OES_standard_derivatives OES_texture_float OES_texture_float_linear OES_texture_half_float OES_texture_half_float_linear OES_vertex_array_object WEBGL_color_buffer_float WEBGL_compressed_texture_etc WEBGL_compressed_texture_etc1 WEBGL_debug_renderer_info WEBGL_debug_shaders WEBGL_depth_texture WEBGL_draw_buffers WEBGL_lose_context
WebGL 2 Driver WSI Info: EGL_VENDOR: Qualcomm, Inc EGL_VERSION: 1.4 EGL_EXTENSIONS: EGL_QUALCOMM_shared_image EGL_KHR_image EGL_KHR_image_base EGL_QCOM_create_image EGL_KHR_lock_surface EGL_KHR_lock_surface2 EGL_KHR_lock_surface3 EGL_KHR_fence_sync EGL_KHR_cl_event EGL_KHR_cl_event2 EGL_IMG_context_priority EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_texture_3D_image EGL_KHR_gl_renderbuffer_image EGL_EXT_create_context_robustness EGL_ANDROID_blob_cache EGL_ANDROID_framebuffer_target EGL_KHR_create_context EGL_KHR_wait_sync EGL_KHR_gl_colorspace EGL_ANDROIDX_no_config_context EGL_KHR_partial_update EGL_ANDROID_image_crop EGL_ANDROID_recordable EGL_ANDROID_native_fence_sync EGL_ANDROID_image_native_buffer EGL_KHR_gl_colorspace EGL_IMG_image_plane_attribs
WebGL 2 Driver Renderer: Qualcomm -- Adreno (TM) 306
WebGL 2 Driver Version: OpenGL ES 3.0 V@145.0 AU@ (GIT@I750f7f2fa6)
WebGL 2 Driver Extensions: GL_AMD_compressed_ATC_texture GL_AMD_performance_monitor GL_AMD_program_binary_Z400 GL_EXT_debug_label GL_EXT_debug_marker GL_EXT_discard_framebuffer GL_EXT_robustness GL_EXT_texture_format_BGRA8888 GL_EXT_texture_type_2_10_10_10_REV GL_NV_fence GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth_texture GL_OES_depth24 GL_OES_EGL_image GL_OES_EGL_sync GL_OES_EGL_image_external GL_OES_element_index_uint GL_OES_fbo_render_mipmap GL_OES_fragment_precision_high GL_OES_get_program_binary GL_OES_packed_depth_stencil GL_OES_depth_texture_cube_map GL_OES_rgb8_rgba8 GL_OES_standard_derivatives GL_OES_texture_3D GL_OES_texture_float GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_texture_npot GL_OES_vertex_half_float GL_OES_vertex_type_10_10_10_2 GL_OES_vertex_array_object GL_QCOM_alpha_test GL_QCOM_binning_control GL_QCOM_driver_control GL_QCOM_perfmon_global_mode GL_QCOM_extended_get GL_QCOM_extended_get2 GL_QCOM_tiled_rendering GL_QCOM_writeonly_rendering GL_EXT_sRGB GL_EXT_sRGB_write_control GL_EXT_texture_sRGB_decode GL_EXT_texture_filter_anisotropic GL_EXT_multisampled_render_to_texture GL_EXT_color_buffer_float GL_EXT_color_buffer_half_float GL_EXT_disjoint_timer_query
WebGL 2 Extensions: EXT_color_buffer_float EXT_texture_filter_anisotropic EXT_disjoint_timer_query OES_texture_float_linear WEBGL_compressed_texture_etc WEBGL_compressed_texture_etc1 WEBGL_debug_renderer_info WEBGL_debug_shaders WEBGL_lose_context
Uses Tiling: true
Uses Tiling (Content): true
Target Frame Rate: 60
GPU #1
Active: Yes
Description: Model: SM-T350, Product: gt58wifixx, Manufacturer: samsung, Hardware: qcom, OpenGL: Qualcomm -- Adreno (TM) 306 -- OpenGL ES 3.0 V@145.0 AU@ (GIT@I750f7f2fa6)
Vendor ID: Qualcomm
Device ID: Adreno (TM) 306
Driver Version: OpenGL ES 3.0 V@145.0 AU@ (GIT@I750f7f2fa6)

Diagnostics
AzureCanvasAccelerated: 0
AzureCanvasBackend: skia
AzureContentBackend: skia
AzureFallbackCanvasBackend: none
TileHeight: 256
TileWidth: 256
Device Reset: Trigger Device Reset
Decision Log
HW_COMPOSITING:
force_enabled by user: Force-enabled by pref
OPENGL_COMPOSITING:
force_enabled by user: Force-enabled by pref
WEBRENDER:
opt-in by default: WebRender is an opt-in feature
unavailable by runtime: WebRender not ready for use on non-e10s Android
WEBRENDER_QUALIFIED:
blocked by env: Has battery
OMTP:
disabled by default: Disabled by default

Media

Audio Backend: opensl
Max Channels: 2
Preferred Sample Rate: 48000
Output Devices
Name: Group
Input Devices
Name: Group

Important Modified Preferences

apz.minimap.enabled: true
browser.cache.disk.capacity: 524288
browser.cache.disk.filesystem_reported: 1
browser.search.useDBForOrder: true
browser.startup.homepage_override.mstone: 67.0a1
dom.presentation.device.name: SM-T350
extensions.lastAppVersion: 67.0a1
general.useragent.updates.lastupdated: 1548773136684
media.gmp-gmpopenh264.abi: arm-eabi-gcc3
media.gmp-gmpopenh264.lastUpdate: 1548772998
media.gmp-gmpopenh264.version: 1.7.1
media.gmp-manager.buildID: 20190130094929
media.gmp-manager.lastCheck: 1548859393
media.gmp.storage.version.observed: 1
media.peerconnection.enabled: false
network.cookie.cookieBehavior: 1
network.dns.disablePrefetch: true
network.http.speculative-parallel-limit: 0
network.predictor.cleaned-up: true
network.predictor.enabled: false
network.prefetch-next: false
privacy.trackingprotection.pbmode.enabled: false
signon.rememberSignons: false
storage.vacuum.last.index: 0

Important Locked Preferences

JavaScript

Incremental GC: true

Accessibility

Activated: true
Prevent Accessibility: 0

Library Versions

NSPR
Expected minimum version: 4.20
Version in use: 4.20

NSS
Expected minimum version: 3.42
Version in use: 3.42

NSSSMIME
Expected minimum version: 3.42
Version in use: 3.42

NSSSSL
Expected minimum version: 3.42
Version in use: 3.42

NSSUTIL
Expected minimum version: 3.42
Version in use: 3.42

Internationalization & Localization

Application Settings
Requested Locales: ["en-US"]
Available Locales: ["an","ar","as","ast","az","be","bg","bn-BD","bn-IN","br","bs","ca","cak","cs","cy","da","de","dsb","el","en-CA","en-GB","en-US","en-ZA","eo","es-AR","es-CL","es-ES","es-MX","et","eu","fa","ff","fi","fr","fy-NL","ga-IE","gd","gl","gn","gu-IN","he","hi-IN","hr","hsb","hu","hy-AM","id","is","it","ja","ka","kab","kk","kn","ko","lij","lo","lt","lv","mai","ml","mr","ms","my","nb-NO","ne-NP","nl","nn-NO","oc","or","pa-IN","pl","pt-BR","pt-PT","rm","ro","ru","sk","sl","son","sq","sr","sv-SE","ta","te","th","tr","trs","uk","ur","uz","vi","wo","xh","zam","zh-CN","zh-TW"]
App Locales: ["en-US","en-CA","en-GB","en-ZA"]
Regional Preferences: ["en-US"]
Default Locale: "en-US"
Operating System
System Locales: ["en-US"]
Regional Preferences: ["en-US"]

Flags: needinfo?(csheany)

Alex, have you found anything useful from comment 26, by any chance?

Chun-Min, according to csheany it sounds like the problem is only noticeable when playing on the speaker, do you know whether Cubeb produces uses different backends or produce different PCM samples for different outputs on Android?

Flags: needinfo?(cchang)
Flags: needinfo?(achronop)

I am afraid I am not sure why it is happening. I've examined that about:support output but I am still not sure how to approach it. From cubeb point of view only the default output is supported. This does not change much in this scenario because when headphones are on they are becoming the default output. Regarding the samples, cubeb does not process them (other than resampling when is needed). They are provided by cubeb client, which is Gecko in our case, the purpose of cubeb is to push them to the device.

Flags: needinfo?(achronop)

I am not familiar with the Android backend, but I found some differences compared our implementation with what Chromium did:

Maybe it's related to what bug 1525198 comment 4 found.

Flags: needinfo?(cchang)
See Also: → 1525198

Are you able to extract that information from VLC as well?

Priority: -- → P3
Flags: needinfo?(cchang)

Alex, would you mind giving this a listen :)

Jack White - Sixteen Saltines https://m.youtube.com/watch?v=ah_df0cPs9g

Flags: needinfo?(achronop)

Thanks, I would like to but it says "video is not availbale". I guess it is related to the bug ...

Btw some work about android performance is going on on Bug 1531833 if you like to keep an eye on.

Flags: needinfo?(achronop)

Already cc'ed :)

I don't know what to do with this. Nobody except from the reporter has ever reproduced this. I'm closing it, because we can't do much, but please comment if you find a way to reproduce it.

Status: UNCONFIRMED → RESOLVED
Closed: 6 years ago
Flags: needinfo?(cchang)
Resolution: --- → WORKSFORME
Product: Firefox for Android → Firefox for Android Graveyard
You need to log in before you can comment on or make changes to this bug.