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

Issue 768136 link

Starred by 2 users

Issue metadata

Status: Available
Owner: ----
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux
Pri: 3
Type: Feature


Participants' hotlists:
AudioService-FixIt


Sign in to add a comment

Feature request: Tab title in PulseAudio stream name

Reported by bach.flo...@gmail.com, Sep 23 2017

Issue description

UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/60.0.3112.113 Chrome/60.0.3112.113 Safari/537.36

Example URL:
Any web page playing audio

Steps to reproduce the problem:
1. Play audio / video with audio in Chromium
2. Open "pavumixer" or another PulseAudio managing software
3. Look at the playback stream title

What is the expected behavior?
The playback stream name should include the webpage / tab title

What went wrong?
The playback stream is named "Playback"

Did this work before? No 

Is it a problem with Flash or HTML5? Both

Does this work in other browsers? N/A

Chrome version: 60.0.3112.113  Channel: n/a
OS Version: Ubuntu 17.04
Flash Version: Shockwave Flash 26.0 r0

Contents of chrome://gpu: 
Graphics Feature Status
Canvas: Software only, hardware acceleration unavailable
CheckerImaging: Disabled
Flash: Software only, hardware acceleration unavailable
Flash Stage3D: Software only, hardware acceleration unavailable
Flash Stage3D Baseline profile: Software only, hardware acceleration unavailable
Compositing: Software only, hardware acceleration unavailable
Multiple Raster Threads: Enabled
Native GpuMemoryBuffers: Software only. Hardware acceleration disabled
Rasterization: Software only, hardware acceleration unavailable
Video Decode: Software only, hardware acceleration unavailable
Video Encode: Software only, hardware acceleration unavailable
WebGL: Hardware accelerated but at reduced performance
WebGL2: Unavailable
Driver Bug Workarounds
clear_uniforms_before_first_program_use
disable_framebuffer_cmaa
scalarize_vec_and_mat_constructor_args
Problems Detected
Accelerated video decode is unavailable on Linux: 137247
Disabled Features: accelerated_video_decode
Accelerated video encode is unavailable on Linux
Disabled Features: accelerated_video_encode
Clear uniforms before first program use on all platforms: 124764, 349137
Applied Workarounds: clear_uniforms_before_first_program_use
Always rewrite vec/mat constructors to be consistent: 398694
Applied Workarounds: scalarize_vec_and_mat_constructor_args
Limited enabling of Chromium GL_INTEL_framebuffer_CMAA: 535198
Applied Workarounds: disable_framebuffer_cmaa
Disable KHR_blend_equation_advanced until cc shaders are updated: 661715
Native GpuMemoryBuffers have been disabled, either via about:flags or command line.
Disabled Features: native_gpu_memory_buffers
Checker-imaging has been disabled via finch trial or the command line.
Disabled Features: checker_imaging
Version Information
Data exported	23/09/2017, 12:40:51
Chrome version	Chrome/60.0.3112.113
Operating system	Linux 4.10.0-33-generic
Software rendering list version	13.9
Driver bug list version	10.94
ANGLE commit id	unknown hash
2D graphics backend	Skia/60 d1f2d15b36f6a6a9d199581b998a7ca924a1f1a8-
Command Line	/usr/lib/chromium-browser/chromium-browser --ppapi-flash-path=/usr/lib/adobe-flashplugin/libpepflashplayer.so --ppapi-flash-version=26.0.0.151 --enable-pinch --flag-switches-begin --flag-switches-end
Driver Information
Initialization time	0
In-process GPU	true
Passthrough Command Decoder	false
Supports overlays	false
Sandboxed	false
GPU0	VENDOR = 0x10de, DEVICE= 0x11c2
GPU1	VENDOR = 0x8086, DEVICE= 0x0412
Optimus	true
Optimus	true
AMD switchable	false
Driver vendor	Google Inc.
Driver version	3.3.0.2
Driver date	2017/04/07
Pixel shader version	3.0
Vertex shader version	3.0
Max. MSAA samples	4
Machine model name	
Machine model version	
GL_VENDOR	Google Inc.
GL_RENDERER	Google SwiftShader
GL_VERSION	OpenGL ES 2.0 SwiftShader
GL_EXTENSIONS	
Disabled Extensions	GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent
Window system binding vendor	
Window system binding version	
Window system binding extensions	
Window manager	Compiz
XDG_CURRENT_DESKTOP	Unity:Unity7
GDMSESSION	ubuntu
Compositing manager	Yes
Direct rendering	Yes
Reset notification strategy	0x0000
GPU process crash count	0
System visual ID	0
RGBA visual ID	0
Compositor Information
Tile Update Mode	One-copy
Partial Raster	Enabled
GpuMemoryBuffers Status
ATC	Software only
ATCIA	Software only
DXT1	Software only
DXT5	Software only
ETC1	Software only
R_8	Software only
RG_88	Software only
BGR_565	Software only
RGBA_4444	Software only
RGBX_8888	Software only
RGBA_8888	Software only
BGRX_8888	Software only
BGRA_8888	Software only
RGBA_F16	Software only
YVU_420	Software only
YUV_420_BIPLANAR	Software only
UYVY_422	Software only

Adding the webpage title to the stream name instead of a generic "Playback" helps you identify a single audio source to change its volume or output device if you have multiple chromium tabs / windows playing audio.
 
Cc: nyerramilli@chromium.org
Labels: -Type-Bug Needs-Milestone Type-Feature
Status: Untriaged (was: Unconfirmed)
Thanks for the report.

Considering this as Feature request, marking as Untriaged and requesting Dev team to look into this and update accordingly.
Cc: maxmorin@chromium.org olka@chromium.org
Status: Available (was: Untriaged)
We have this information in chrome://media-internals for controllers, but the way it gets there is very far away from when Pulse sets up the stream. It also requires a hop to the UI thread to get and Pulse requires this to setup the stream, so it would slow down audio stream setup.

There may be some other way I haven't thought of, so marking as available and plus some people, but I don't think this is going to be worth doing.
Components: -Internals>Media Internals>Media>Audio
Labels: -Needs-Milestone
What about starting the stream with the standard title, and then, in background, get the actual title and change it? As far as I know, Pulseaudio allows you to change the stream title without interrupting playback.
Ah, good point, there does seem to be a way to change the name pa_stream_set_name():

https://freedesktop.org/software/pulseaudio/doxygen/stream_8h.html#aac0f980de4097a4a815bcf143df68338

So we could rename it afterwards; that resolve any performance issues, the rest is a matter of plumbing then. Probably this has some linkage with the audio process work Olka and Max are working on (no UI thread or tab titles there), so I'll leave prioritization to them.

Comment 6 by olka@chromium.org, Sep 25 2017

Could you justify the need for this, except it would look nice?
I'd say it's P3.
With our work to move audio interfaces to mojo it will require changes there as well. So it does not worth doing it now, because it'll add extra burden to modification.

Comment 7 by olka@chromium.org, Sep 25 2017

Labels: -Pri-2 Pri-3
I would like use jack directly and create a unique sink/source for each tab, but since we only have pulse to work with, I would settle for scripting something with module-jack-[sink|source].  The problem is I don't see any way to associate a tab with a pulse stream.

https://freedesktop.org/software/pulseaudio/doxygen/proplist_8h.html

Setting the 'media.title' property of the stream would be a good start, though I would like to have access to the tab's ID to be sure.
Cc: dalecur...@chromium.org
 Issue 847589  has been merged into this issue.
> Could you justify the need for this, except it would look nice?

PA "remembers" routing and volume info, etc., by stream title IIUC.  So rather than having to keep flip-flopping where "Chrome"'s audio is being routed (i.e. headset sound card vs. speakers sound card) as I switch from a Skype call to a YouTube video and back and forth (i.e. every time I switch from one to the other), if the PA stream is given the tab name, it will automatically set the routing for me every subsequent time I use that web-app/page.

So from a usability perspective, it's a "set once and forget about it" type of task instead of having to set it every single time one uses a webapp/page.
Per previous comments here and in the recently merged  issue 847589 , setting up the stream initially with a placeholder (i.e. "Chrome" as it is currently) value and then changing it once the tab name is known I think is perfectly fine.  I suspect it will get changed to the new name more quickly than one can find it to adjust it's properties in pavucontrol anyway.

Sign in to add a comment