mozilla :: #media

12 Sep 2017
01:39bwukentuckyfriedtakahe: meeting?
01:40kentuckyfriedtakaheI'll be there in a few moments
01:58jw_wangjya, do you mean bug 1398678?
01:58firebot NEW, Firefox has much longer seek latency than Chrome does when playing Twitch video
02:35gerald^ Sounds like a fun conversation!
03:53jesuppadenot: could you review bug 1397793 and bug 1396107 when you get in, or sometime before 9am-ish EDT? Also, do you think they're low-risk for 57, or should I land them at the start of 58? They do reduce CPU use some (mostly bug 1396107 it appears, since that eliminates something I saw in a profile). Overall the impact isn't huge, though. the other patch likely doesn't impact things as...
03:53jesup...much, unless we also remove or conditionalize the locks.
03:54firebot NEW, rjesup Remove "External" audio interface and switch gUM audio input to APM
03:54firebot NEW, rjesup Insert outgoing audio into peerconnections without using removed external media interfaces
05:56jyamattwoodrow|away: I'm not sure the sanity test is very useful here. One person when he plays the 132*132 videos, gives him a pink tinged image. Yet, the test has succeeded.
05:57jyaSeems that the 134*134 gives much worse effect than the 132*132. I'm not that confident I could come up with a test that does catch up on HW problems.
08:59padenotFord_Prefect, ping
08:59Ford_PrefectHey padenot
09:00padenotFord_Prefect, so, we're making our browser sandbox on linux tighter, and now, for some people, audio using pulse does not work
09:00padenotFord_Prefect, I have a log of sandbox violations, do you think you could have a look and tell us if there is something we can do to make it work again ?
09:01padenotFord_Prefect, we're also doing our audio remoting work so this would be a temporary workaround just for a few releases
09:01Ford_Prefectpadenot: sure, happy to take a look
09:02kinetikpadenot: what is the bug number?
09:03padenotFord_Prefect:, grep for pulse
09:03firebotBug 1396542 UNCONFIRMED, Firefox 57 audio fails on some Linux machines
09:03kinetikpadenot: thanks
09:05padenotpulse can't work too well when you prevent it from reading shm and config files it seems, can't blame it really
09:07Ford_Prefectpadenot: okay, so there are 3 failures -- client.conf, SHM, and machine-id
09:08Ford_PrefectI assume we're speaking because punching a hole for those through the sandbox is not an option?
09:10Ford_PrefectHmm, I assume you've already got a permission allowed for the cookie file?
09:20Ford_Prefectpadenot: or put another way, how can I help? It looks like you already have a handle on why this is failing.
09:20padenotFord_Prefect, well for starters I don't know much about how pulse can communicate from the client to the server
09:22Ford_Prefectpadenot: it'll use client.conf to figure it out (or there are some defaults)
09:22padenotI think the issue is that the person seem to have the config file in a non-standard loaction
09:22Ford_PrefectIt'll use XDG_RUNTIME_DIR and look for /pulse/native as the native unix connection
09:24padenotgcp, ping
09:24Ford_PrefectIn the mean time
09:25padenotgcp, we have a report ( of someone's audio failing, using pulse, since your change to make the sandbox on linux be level 3
09:25firebotBug 1396542 UNCONFIRMED, Firefox 57 audio fails on some Linux machines
09:25padenotgcp, I see weird paths for pulse things on the sandbox violation log, could this be the cause ?
09:25padenotgcp, it works fine for everybody else that has been testing this
09:26padenotgcp, see the attachment: sandbox.log
09:26padenotFord_Prefect, thanks
09:28gcpwe block .pulse
09:28gcp.config/pulse would work
09:29gcpIt's hard to see what is causing the actual failure
09:29gcplike that's a bit weird too
09:31gcp /dev/shm/pulse-shm-3626393402
09:31gcpthat too
09:39gcpSandbox: new policy for /usr/local/xyz/home/phoglund/.Xauthority: 3 ->
09:39gcpSandbox: new policy for /run/user/148424/pulse: 3 -> 3
09:39gcpSandbox: new policy for /run/user/148424/dconf: 1 -> 1
09:40gcpSandbox: Failed errno -13 op 0 flags 02400000 path /dev/shm/pulse-shm-3626393402
09:40gcpwhat's a bit weird
09:40gcpoh but
09:40gcpthis is an old source tree?
09:40gcpoh no it's not
09:42gcp /dev/shm is completely whitelisted for writing even in content
09:42gcpso how can that get EACCESS
09:42padenotgcp, also why is the person's homedir "/usr/local/xyz/home/name"
09:43padenotthat's weird
09:43gcpshouldn't affect us, as we act on
09:43gcprv = GetSpecialSystemDirectory(Unix_HomeDirectory, getter_AddRefs(homeDir));
09:43gcpSandbox: new policy for /usr/local/xyz/home/phoglund/.config/: 35 -> 35
09:44gcpI mean the right stuff is getting whitelisted there
09:45gcpis it the flags?
09:45gcpflags 02400000
09:49Ford_Prefectbtw, ~/.pulse is the old (but supported) config directory, which is now XDG_CONFIG_DIR/pulse
09:51Ford_PrefectAlso, I see an error for .config/pulse
09:57Ford_PrefectProbably doesn't make sense, but is there an overriding policy that denies /usr/... or something?
10:39gcpFord_Prefect: no
10:39gcpFord_Prefect: the error is ENOENT
10:39gcpFord_Prefect: so that's not a sandbox issue :P
10:40gcpthe shm denial looks suspect to me
10:41Ford_Prefectthe machine-id thing shouldn't be a problem in this case
10:41Ford_PrefectSo the shm is likely where the problem is, as you surmise
10:57gcp#define O_NOFOLLOW 00400000
10:58gcpwe cover that tho
10:59Ford_PrefectComment 12 onwards
12:53robswain-Mhmm, using janus it seems to vary the video size according to congestion situation but using object-fit: contain in CSS seems to only be applied initially with firefox
12:53robswain-Mwhen the res of the video changes, it actually changes to be smaller or larger than it was
12:53* robswain-M suspects jib may have an idea about this
12:57jibrobswain-M: well if the video element is not internally constrained, you can listen to its "resize" event, I suppose
12:57jibyou mention CSS which makes me think you're thinking about playback
12:57robswain-Mby internally constrained do you mean that an explicit size has been set on the video element itself?
12:58robswain-Myes, this is a video stream received from a remote that is changing resolution
12:58jibis it changing aspect?
12:59robswain-Mmaybe, but it feels like video resolution changing, with external constraints, should trigger some kind of recalculation of the render dimensions to meet those constraints, right?
12:59jibAlso, are you saying Chrome's CSS rules work differently? I don't want to dissuade you from filing a CSS bug
13:00robswain-Mi'm not sure, i'll try testing it the other way around and paying attention to chrome://webrtc-internals to see what res the video claims to be and such
13:00robswain-Mi'm suspecting the error is mine at the moment as i'm a CSS n00b
13:03jibrobswain-M: well, to start I would untangle this from peer connection (narrow your steps to reproduce) as this sounds like a local playback issue. AFAIK video elements can either be given a fixed size, or by default they resize to fit whatever video they play, and that updates live. e.g.
13:07robswain-Mjib: hmm, in chrome that just seems to open the camera with 640x480 and do nothing more
13:07robswain-Mhitting the buttons does nothing
13:07jibchrome does not support applyConstraints afaik
13:08robswain-Moh, yeah
13:08robswain-Mi just realised that
13:08jibbut as you can see in firefox the video element changes size
13:08robswain-Mmmm, i can try doing something to demo based on that
13:08robswain-Mbut i can't compare to chrome :/
13:09jibI'm a bit confused about what problem you're seeing visually. Is it resizing poorly on you? Not resizing when it should?
13:12robswain-Mi have a div that, due to external constraints, ends up being some size on screen. inside that div i have a video element. on the div i have display: flex; align-items: center; justify-content: center; width and height 100%. on the video element i have width/height 100% and object-fit: contain;
13:12robswain-Mthat should and does make the video fit within the div by scaling and preserving aspect ratio, essentially letterboxing the video within the div
13:12robswain-Mwith me?
13:14robswain-Mthe constraints external to the div can change, and if i do stuff to change them in chrome (i'll have to check firefox actually) then the video gets resized to fit the new size
13:14robswain-Mwhich is what i want
13:15robswain-Min firefox, i've noticed that chrome -> janus -> firefox has chrome sending variable resolution video depending on network conditions or whatever - the point is that the received video over a peer connection can and in this case does change
13:16robswain-Min chrome, the video remains being rendered the same size on the screen but the resolution noticeably changes
13:16robswain-Mwhich is what i want
13:17robswain-Mi haven't noticed aspect ratio changes in the video but i would expect it to recalculate constraints and fit within the externally-constrained div
13:17robswain-Min firefox, when the resolution changes, its visible size as rendered on screen changes, maintaining AR but completely disregarding the external constraints
13:18robswain-Mjib: ^
13:22jibrobswain-M: I'm neither a DOM nor CSS buff unfortunately, but if you see a discrepancy in Chrome and Firefox it's likely a bug in one of them.
13:22jibI've only done very minor CSS tricks, like
13:26robswain-Mjib: thanks, i think these can help making a nice small way to replicate the issue without needing janus
13:26* robswain-M hacks away
13:26robswain-Mjib: here's an example of how it should look:
13:26jibrobswain-M: To file a bug it would be helpful to have a reduced test case. Maybe you could reproduce it using canvas.captureStream and canvas resize?
13:26robswain-Mgoing to add some timed constraints changes
13:27robswain-Mor that
13:27robswain-Mi guess that would be more portable probably
13:28robswain-Mdo you have any fiddle code i can pilfer?
13:28jibyeah but that fiddle uses fixed width/height which is not sufficient in your case right? e.g. if I apply this to the applyConstraints fiddle, it's not vbery interesting -
13:30robswain-Mjib: odd, it seems to work here:
13:32jibWell, CSS uses: width: 120px; height: 120px;
13:33robswain-Mmmm, so maybe i need to go deeper :)
13:35robswain-Mmaking them %-based also works
13:35robswain-Minstead of 120x120
13:35* robswain-M checks he wasn't being crazy
13:36robswain-Mand now it works...
13:36* robswain-M sighs
13:36robswain-Mmaybe the firefox page was using some cached CSS or something
13:37robswain-Msorry for the noise
13:38jesuppadenot: ping
13:38padenotjesup, hi
13:38jesuphey, did you see my message and question from last night on IRC?
13:39padenotI did ! I just did the review
13:40padenotI don't think it will make any difference though
13:43jesupIt is a step towards getting rid of a bunch of patches and un-deletions that we have to maintain (and gives access to the APM for input -- AEC3, etc -- more directly.) I have a second patchset that does the un-delete and switches AudioConduit's 'pull' from NetEq from the External interfaces that we deleted to GetAudioFrame (and swaps the AudioDeviceModule for VoEBase::Init() from normal...
13:43jesup...(which opens pulse, etc) to FakeAudioDeviceModule (which is just a stub and does nothing)
13:44jesupAlso this will let us pull from NetEq directly at GraphRate() instead of WEBRTC_DEFAULT_SAMPLE_RATE (32000)
13:44jesupthat's the last bit I need to get working; I have the rest of it done
13:46jesuppadenot: APM doesn't support 44100 directly. Also, it only resamples if the rates differ, but you need to provide Resampler objects for it to use if it needs
13:49padenotjesup, if you use the float interface (that we want to do because it saves 2 conversions, since the graph itself and cubeb runs in float32), it resamples for you if needed
13:53padenotonly the int16_t interface needs external resampling
13:53jesuppadenot: then there's the larger question: 57 or 58? I'm guessing the larger patches (switch to APM, change pull to GraphRate, etc) for 58, and the smaller patch for pushing data in that you r+'d for 57 (that cuts out some useless overhead analyzing it for NS/AGC)
13:54padenotjesup, yes, I would agree with that
13:55padenotreally we have too much issue at the minute to add code that does not fix crashes
13:55jesuppadenot: I don't think the APM internals use float; certainly not the AEC, so it's going to convert internally if we don't externally. If we do it externally we can use the speex resampler (when needed, which will be often due to 44100)
14:02padenotjesup, it does,
14:03padenotit's all floats all the way down:
14:03jesuppadenot: excellent
14:03padenotsimplifies our code a bunch
14:05jesupso long as the rest of APM is good with that.... got confused by the AEC dumps being all 16-bit-signed. Odd, that.
14:07robswain-Mwhere did cubeb come from and why? is it a mozilla thing or is someone else developing it?
14:07robswain-M(i think i can guess the why)
14:09jesuppadenot: it's the Wav writer, no surprise
14:10padenotrobswain-M, it's a mozilla thing
14:11padenotrobswain-M, what about the why? we need to output audio somehow :-)
14:11padenotjesup, wav can be 32bit float but it's quite rare, firefox does not even support playing it back
14:11robswain-Msure, but i was thinking as an abstraction for multiple audio APIs on different platforms as being its reason to exist
14:12padenotrobswain-M, yes, that's exactly the reason why we're doing it
14:12jesupI believe that's why it's a separate project as well (can be used independently)
14:12padenotrobswain-M, also its got features that no other libraries of the same kind has
14:13padenotjesup, yep, the leading nintendo emulator (gamecube, wii) is using it
14:13* robswain-M nods
14:13padenotjesup, apparently other, but maybe lower profile projects
14:13padenotrobswain-M, also we own the code, so we can do bugfix very quickly
14:14robswain-Mi just saw the name more and more over the past few months
14:14robswain-Mso i wondered what it was about and where it had come from
14:14padenotyeah, it's quite an important component in webrtc really
14:14robswain-Mreally? it's only audio
14:14padenotas in, in Firefox's webrtc implementation
14:15robswain-Mhow new is cubeb?
14:15padenotquite old
14:15robswain-Mok, so it's just that i haven't been paying attention
14:15padenotit got started by kinetik about at the same time when I started working on firefox, around 2011
14:15robswain-Mcool cool
14:16padenotto replace the old libsydneyaudio
14:16padenotwhich was push (= not callback) based
14:18jesupwe added the full-duplex input+output support to it a year+ ago for webrtc use
14:18padenotand multichannel more recently
14:19padenotit's weird to call that multichannel really, stereo is already multichannel
14:23fippoachronop: argh. the local element was not muted :-/
14:24padenotfippo, is that what I was seeing last night?
14:24padenotfippo, I was about to re-try
14:25fippopadenot: yes...
14:26jesupfippo: that explains the problems achronop and kentuckyfriedtakahe were having
14:26jesupoddly I didn't see it when I tried, or not that I noticed
14:27padenotfippo, cool, I was scared for a second
14:28padenotfippo, request from a colleague, is having a thing that detects that the mic has a high enough volume planned or already there ?
14:28fippojesup: with the fake device it becomes very obvious
14:28achronopfippo: yesterday I was messing a lot with IO buffers and I thought I did something wrong, that was my biggest concern tbh
14:29fippopadenot: i need to find time to hook up the good old hark.js
14:29benchark.js is cool
14:30padenotfippo, ah, did not know this, looks cool
14:30fippohrm. this is odd. i have a <video muted=&quot;true&quot;> and video.muted === false
14:31padenotfippo, I think you could use the DynamicsCompressor from web audio to have the same effect with light CPU usage
14:31pehrsonsso it was set to false by js
14:31padenotnot sure
14:32pehrsonsthe html attribute is just the default value iirc
14:32padenotfippo, setting the treshold parameter, and querying .reduction
14:33padenotfippo, or simply use getFloatTimeDomainData, so you skip an FFT computation (which is expensive)
14:33fippopadenot: sounds awesome -- one of the biggest worries I had with hark was cpu usage
14:34fippopehrsons: well, it seems there is a difference between muted=&quot;true&quot; and muted=&quot;muted&quot;...
14:35fippoor maybe not
14:41fippowell, cursing angular in branch names now. should be fixed as soon as I can have someone to review. thanks :-)
15:47abrIm getting really choppy video playback on Nightly under OS X ; top is showing plugin-container taking about half a core. Is this a known issue?
15:49mjfany particular video?
15:50abr100% of youtube, on a quick check of about 8 different videos
15:51abrAnd just like that, its down below 25% and smooth again. Was reliably a problem for at least tens of minutes
15:52mjfI just tried it here, on 10.11 and 10.12 and couldnt see an issue. Hmm.
15:53abrOdd thing was that no one core appeared to be at 100%
15:53abrAnd overall the system was running like 75% idle
15:53abrSo it wasnt a CPU issue, AFAICT
15:55mjfVery strange.
15:55abrOne instance doesnt make a trend Ill drop another line in here if it happens again.
16:34rilliandmajor: How do I fix &quot;The code execution cannot proceed because MSVCR100.dll was not found.&quot;? This is running /c/mozilla-build/yasm/yasm.exe in a win10 vm.
16:41rilliandmajor: nm, I found a package to download
17:39jibabr: FWIW I experienced a nightly content process stuck at ~100% core just today. I wasn&#39;t using webrtc at the time, I frequently run webrtc of some sort, i could have had something going in one of my 120 tabs without knowing -
17:40jibUnfortunately I closed all my 120 tabs before figuring out if a certain tab was responsible, or if it was a full hang
17:42jibdifferent symptoms, it&#39;s just when you said &quot;system was running like 75% idle&quot; it sounded like what I experienced
17:42jibabr: did you close a tab?
17:44jibsorry, I just realized you said &quot;NO one core appeared to be at 100%&quot;, in my case one core was 100%
18:02ngjib: 1-1?
18:03jibah, right, sorry finishing off an email to Lawrence, is in 10 mins ok?
18:04ngjib: sure, no problem
18:17Caspy7_awayI have to run for now, but if anyone feels like stopping in #firefox and helping netflix_dude who can&#39;t play netflix, you&#39;re welcome :)
18:17Caspy7_awaythey&#39;re getting but not in private browsing mode
19:54dbaronSo if I had a WebRTC teleconference on this morning in which I could hear most of the participants, but I couldn&#39;t hear just one (of the 10 or so) participants... would the webrtc log be at all interesting to somebody for diagnosing what went wrong?
19:54dbaron(i.e., the saved log from about:webrtc)
20:43jesupdbaron: I presume is sending you N audio streams. likely the problem was one setting up the stream for that incoming audio track. the log *might* be helpful, though most likely the bug would be with the jitsi JS code and/or server - but the log might point a finger (failed ICE, some other setup error, timing fail)
20:43jesupdrno|irccloud: ^
21:26drno|irccloudjesup, dbaron: unlikely that the webrtc log is going to tell us much as Jitis uses bundle all the time. Probably still worth taking a quick look. Especially since we don&#39;t have anything better to collect after the fact
21:37dmajorrillian: I hope you downloaded it from msft...
21:38rillianyes. no idea if it was the latest version though; it said it was from some update to VS2010
21:40rillianhmm, bitmovin demo crashes in my windows build
21:41rillianbut nothing shows up in about:crashes.
21:41rillianOh, I guess the crash reporter is disabled for local builds?
21:42rilliandmajor: do I need --enable-debug for `./mach run --debug` to work?
21:42dmajorrillian: what is --debug? run under a debugger?
21:43rillianI was hoping it would do that, yes.
21:43dmajorrillian: that should be orthogonal to --enable-debug which turns on assertions and other ifdef DEBUG things
21:43rillianon linux and mac it runs it and attaches the command-line debugger
21:43rillianok, it said something about a missing attribute on the executable
21:44dmajoruh, wha
21:44dmajorrillian: btw, the crash reporter is disabled for debug builds unless your set env MOZ_CRASHREPORTER=1
21:45dmajorwhat attribute is missing?
21:45rillian&#39;RunProgram&#39; has no attribute &#39;DebugInfo&#39;
21:45rillianlooks like a python error from mach
21:46rilliansorry to be vague, I&#39;m having trouble with the scrollback
21:46dmajorrillian: I always thought the incantation was `./mach run --debugger=/path/to/windbg`, maybe --debug is just sugar on top of that?
21:46rilliandmajor: is there a thing I can open in visual studio instead?
21:47rilliandmajor: it&#39;s supposed to do something like that
21:47dmajorrillian: try `mach run --debugger vsjitdebugger` but you may have to be an admin to do so
21:50rillianok. I touched to build trying --enable-debug, so I&#39;ll let you know in another 40 minutes.
21:50rillianis there a way to turn off scroll-on-output in the terminal?
21:51SingingTreeThat mach debug issue seems like one to throw on the laundry list of windows mach sorrows. Gonna take a look for me and the 3 other windows devs
22:05SingingTreeLooks like new Mozilla-build (3) breaks ./mach run --debug. Change in path handling means the debug executable isn&#39;t on the path, so auto detection fails and there&#39;s not a happy error path so it just catches fire.
22:05SingingTreeLooks like we already have a bug too:
22:05firebotBug 1371179 NEW, |mach run --debug| fails with &quot;AttributeError: &#39;RunProgram&#39; object has no attribute &#39;debuggerInfo&#39;&quot;
22:17dmajorAh, cool. Thanks SingingTree
22:32rillianSingingTree: thanks for the link
13 Sep 2017
No messages
Last message: 8 days and 6 hours ago