Re: screen sharing and webcam video simultaneously

2018-02-16 Thread Adam Roach

On 2/16/18 2:04 PM, Alexander Abagian wrote:

I want to make Firefox stream both screen sharing and common webcam video 
simultaneously. Is it possible at all ? Chrome lets do it with an external 
screen sharing plugin, but here both of the should be produced by getUserMedia 
and I haven't find a way how to make it. mediaDevices.enumerateDevices() does 
never enumerate screen sharing. Constraints could contain a single video member 
for both cam video or the sharing, but I need them both in the moment.


You should be able to grab both video streams and add them both to the 
peer connection. Something like:


(async () => {
  let pc = new RTCPeerConnection();
  let camera = await navigator.mediaDevices.getUserMedia({video: true});
  let screen = await navigator.mediaDevices.getUserMedia({video: 
{mediaSource: "screen"}});

  pc.addTrack(camera.getTracks()[0]);
  pc.addTrack(screen.getTracks()[0]);
  //...
})();


/a
___
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media


Re: Webextensions WebRTC API

2016-09-08 Thread Adam Roach

On 9/8/16 1:18 PM, Andrew Swan wrote:
First, I read through bug 1189060 in which the webrtc extension hooks 
were created.  I'm concerned that I can't actually hook into the 
PeerConnection establishment process in a safe way.  If extension A 
overrides webrtcUI.receiveMessage in the suggested manner, then 
extension B does the same, everything is fine.  But then if extension 
A is unloaded, there's no way for it to unchain its handler.  It can 
detect this at unload time but it can't actually do anything.  Would a 
patch to address this situation be accepted?  Who would be the right 
person to review such a patch?  (Incidentally, I searched through the 
addons from addons.mozilla.org <http://addons.mozilla.org> that are 
indexed on DXR and there are none in the index that are using this 
hook, but we don't yet have everything from AMO indexed in DXR.  
That's all to say, I don't think there's a compatibility issue with 
changing the interface for this hook.)


As you point out, this hook is currently used only very lightly today -- 
mostly likely because the existing documentation consists entirely of 
the hacks post you mentioned. I think that breaking changes should 
probably be okay.


The necessary reviewers for your patch would depend greatly on which 
parts of the system you touch. The patches in 1186060 hit many modules, 
and ultimately had reviews from florian, fabrice, mfinkle, mt, peterv, 
and khuey. For changes in the webrtc module, I'd ask jib for reviews 
(rather than mt). For changes in DOM, probably bz (rather than khuey) 
Any other modules, I'd tag one of the 1186060 reviewers, since they'll 
have context.


Second, looking past PeerConnection, what other things might we want 
to expose to extension authors?  In the description for bug 1281833, 
Adam suggests "The ability to add, remove, or change IP addresses 
exposed by PeerConnections".  This sound like a useful thing but I'm 
unfamiliar with the webrtc implementation, is this even feasible?  
What other things can/should we expose?


What I'd expect here is the means to register a callback that is hit 
whenever a new ICE candidate is generated. The callback receives the 
candidate, and returns a Promise. Once it reaches a verdict on 
whether the candidate is allowed to be presented to the content, it 
either resolves or rejects the promise. (Or, if people don't like the 
aesthetics of a promise reject for normal operation, you can return a 
Promise).


I'm actually not sure what I had in mind when I said "add" and "change", 
since this... won't be useful. Conveying addresses that the ICE stack 
isn't listening on would only make connection setup take longer and/or fail.


--
Adam Roach
Principal Platform Engineer
a...@mozilla.com
+1 650 903 0800 x863
___
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media


Re: [webrtc] Is DTMF support in the FireFox roadmap?

2016-05-10 Thread Adam Roach

On 5/10/16 07:42, Maire Reavy wrote:

On Tue, May 10, 2016 at 4:43 AM, Luis Silva <luisfilsi...@gmail.com> wrote:


Hi guys,

Any plans to support DTMFs in the next releases?


Yes.   We were originally targeting Firefox 49 (which is currently in
development), but some important issues came up that we had to deal with.
So it's more likely to ship in Fx50 --which goes to DevEdition on August
1st and to Beta on Sept 12th (and releases in November).


Luis -- see also 
https://hacks.mozilla.org/2015/11/webrtc-sending-dtmf-in-firefox/ for a 
stopgap measure that may work for you.



--
Adam Roach
Principal Platform Engineer
Office of the CTO
___
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media


Re: H.264 codec and/or SDP issues with RTCPeerConnection

2016-01-27 Thread Adam Roach
 accepted by RTCSessionDescription(), 
there is no remote video playing in Firefox. We could not find any 
error hint.


We have prepared a test case:
1. open https://janus.bfs.de/
2. select "Cisco MCU"
3. select "Connect"

In contrast to that a RTCPeerConnection between Firefox and an 
OpenMCU-ru installation works flawlessly (same gateway, same 
JavaScript code):

1. open https://janus.bfs.de/
2. select "Open MCU"
3. select "Connect"

We have worked hard on this problem for several days now, but we 
could not figure out what is going wrong. We would really appreciate 
your advice, how to track down and fix this problem.


Many thanks in advance and best regards,

Christian

___
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media


___
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media



--
Adam Roach
Principal Platform Engineer
Office of the CTO
___
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media


Air Mozilla Studio

2016-01-13 Thread Adam Roach

WebRTC folks:

I had a brief chat with Richard Milewski last week about a project he's 
working on, and wanted to drop a note to provide some context, as I 
suspect he'll be coming to #media (and/or using this mailing list) to 
ask for assistance as necessary. The project is tentatively titled "Air 
Mozilla Studio," although Richard expressed some desire to find a more 
general name for the effort.


The general idea here is to use WebRTC to connect devices -- typically 
in the same room, although there's no reason that needs to be the case 
-- to a browser that serves as a central video production console. This 
console selects from one of several such devices (including devices 
local to the laptop), and can composite them with local graphics 
(foregrounds and backgrounds) into a single video stream. This video 
stream is then uploaded to a remote server using something like RTMP (or 
whatever YouTube uses nowadays) and/or an HSTS-like series of PUTs or 
PATCHes. This could be done either as the stream is recorded (e.g., 
near-real-time), or saved to local storage and uploaded at a later date.


That's the basic functionality. Of course, doing things like screen 
sharing, chroma keying, and more advanced production would be nice 
future enhancements, but they're not the current focus.


The rationale is to allow amateur users to be able to produce live and 
recorded streams with reasonable production values using nothing more 
than the equipment they would typically have available -- say, a 
computer and a couple of cell phones (used as remote camera/mic units).


There's a bit more information as well as a mock-up of the basic 
interface here:

https://people.mozilla.org/~rmilewski/AirMoStudio/

--
Adam Roach
Principal Platform Engineer
a...@mozilla.com
+1 650 903 0800 x863

___
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media


Re: How to force Hello Firefox to chose H.264 instead of VP8?

2015-06-29 Thread Adam Roach

I think there's some confusion here.

Ethan and Daasoundz DJ are talking about Hello.

Byron and Randell are talking about WebRTC more generally.

Daasoundz: The confusion probably arises from the fact that you say 
you're testing your webapp and that you're using Firefox Hello to do 
so. I have no idea how you plan to make this work, but the current 
design of Hello doesn't really contemplate interacting with non-Hello 
endpoints, and I can think of a large handful of problems you're going 
to run into in trying to do so. (To be clear, there is still a desire -- 
at least, among some people -- to eventually federate Hello with other 
clients, but that's way beyond our planning horizon for now.)


I think you need to give a more detailed explanation of what you're 
trying to accomplish before anyone on this list can provide you with 
useful answers.


/a

On 6/29/15 09:37, Randell Jesup wrote:

On 6/29/2015 2:38 AM, Daasoundz DJ wrote:

Le vendredi 26 juin 2015 17:21:11 UTC+2, Byron Campen a écrit :

You can also rewrite the local SDP to alter the priority.


It's an idiot question but ... how can I rewrite the local SDP ? 
and/or where do I find it ?


After you get the offer (from createOffer) or receive it (from the 
other end), modify the m=audio line in offer.sdp to put the payload 
number in the a=rtpmap line for G722 before all other audio codecs.


i.e.
...
m=audio number transport list of payload values
...
a=rtpmap:payload G722/8000/1 (note: the /1 is optional)
other a=rtpmap's

You want payload to be the first in the list of payload values in 
the m=audio line.


It's all just (careful) string manipulation.  Don't assume any 
particular number will be used for payload!





--
Adam Roach
Principal Platform Engineer
a...@mozilla.com
+1 650 903 0800 x863
___
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media


Re: device selection and getUserMedia in privileged code

2015-03-20 Thread Adam Roach
Yes, this work is underway. See bug 1046245.

/a



 On Mar 20, 2015, at 07:44, jolic...@gmail.com jolic...@gmail.com wrote:

 Hello,

 It seems impossible for privileged code (chrome://) to select a device for 
 getUserMedia ( 
 https://mxr.mozilla.org/mozilla-central/source/dom/media/MediaManager.cpp#1715
  ).

 I can use getUserMedia, but only the default device is used ( 
 https://mxr.mozilla.org/mozilla-central/source/dom/media/MediaManager.cpp#1193
  )

 Is there any workaround, or is it planned to add the functionality, it can be 
 useful for extensions and xulrunner app. And I don't really understand the 
 limitation.

 Thank you.

 Nicolas
 ___
 dev-media mailing list
 dev-media@lists.mozilla.org
 https://lists.mozilla.org/listinfo/dev-media
___
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media


Re: [webdev] Blog Post: Privacy and Google Analytics

2015-02-26 Thread Adam Roach
I have some sympathy on the IE10 issue, and think a broader conversation
is warranted there.

With regard to DNT and GA as they apply to Hello, I'm not sure the
situation is directly comparable to www.m.o: we're talking about a
real-time communications service, not just a web page. People will
rightfully be more concerned about privacy with Hello than they do going
to our website.

In earlier conversations with the legal department, the formal advice
provided for Hello in particular was: Currently the policy regarding
DNT and GA is inconsistent across the Mozilla and has been handled
differently by different business owners. Marketplace for example turns
off GA when DNT is on. That means the Hello team should set the approach
for the moment. As I've mentioned in various conversations lately, Hello
data is going to become some of the most sensitive stuff that Mozilla
touches, so I'd suggest that we should have a bias in favor of privacy
and user preference. In this case, that would mean respecting DNT.

I've copied Marshall Erwin in case he wants to weigh in.

/a

On 2/26/15 13:45, Christopher More wrote:
 I commented in that bug that IE10 should be ignored as it does not signal
 user intent:
 http://en.wikipedia.org/wiki/Do_Not_Track#Internet_Explorer_10_default_setting_controversy

 You probably also saw my note on dev-webdev about DNT and GA and why we
 haven't disabled it on www.mozilla.org. If you haven't, I will copy/paste
 it below:

 Google Analytics isn't respecting DNT for a variety of reasons, but it
 doesn't technically mean that it can't. It would simply be a conditional
 statement around the tag loading. We have this conversation about every 6
 months since 2012. :-)

 * GA does not collect PII. It's all aggregate trends as hit-level data
 isn't very useful.
 * We don't directly link the GA sessions/cookies to other 3rd party
 services for additional tracking
 * All cookies are 1st party Mozilla domain cookies.
 * We don't do cross-domain GA tracking as each sub-domain has its own
 unique tag and has a sub-domain filter attached to the GA profile.
 * We use GA to understand the UX and find out what is working.
 * We don't do GA re-targeting like other companies do as common practice.
 * We have opt-ed out (at the account level) of Google or 3rd parties from
 using the aggregate data to understand general trends.
 * We have enabled IP anonymization at the tag level for a few websites.
 Others Mozilla websites could do the same.
 * We provide a user opt-out of GA and Optimizely for sites that use them in
 our websites privacy policy.

 Idealistically, we could say that Apache, caching proxies, or our 3rd party
 CDN should not set server/router/network logs when DNT is enabled as that
 could be considered by some as tracking.

 I have also some some research on DNT on www.mozilla.org and while the
 percentage is small, there are some browsers that are enabled by default
 from the factory, which would make them pretty much disappear from metrics
 that are being used to understand the health of the Firefox product. Not
 having a clear picture on metrics could negatively impact the health of
 Firefox and ultimately lead to reduced impact on our mission. Oh wait, now
 I am being idealistic. :-)

 More light reading on the topic:

 https://bugzilla.mozilla.org/show_bug.cgi?id=858839

 https://bugzilla.mozilla.org/show_bug.cgi?id=697436

 -cmore


 On Thu, Feb 26, 2015 at 8:57 AM, Gavin Sharp ga...@gavinsharp.com wrote:

 +cmore, gareth

 I think most of these suggestions are already implemented (see e.g.
 https://bugzilla.mozilla.org/show_bug.cgi?id=1129507).

 Gavin

 On Thu, Feb 26, 2015 at 12:48 AM, Alexis Métaireau ale...@mozilla.com
 wrote:
 Hi,

 Here is a set of good practices in the usage of Google Analytics. I
 believe
 we should implement these for the loop-client webapp, which is relying
 on GA
 currently.

 — Alex


  Forwarded Message 
 Subject:[webdev] Blog Post: Privacy and Google Analytics
 Date:   Mon, 23 Feb 2015 21:53:06 -0800
 From:   Chris Van Wiemeersch cwiemeer...@mozilla.com
 To: dev-webdev dev-web...@lists.mozilla.org



 I stumbled upon this blog post by fellow Mozillian, Guillaume Marty
 (gmarty):

 http://gu.illau.me/posts/privacy-and-google-analytics/

 A few months ago on the Marketplace team we discussed whether Google
 Analytics should be disabled when Do Not Track is enabled. The consensus
 was no - but with an asterisk.

 This blog post is a good read for those who want to use Google Analytics
 without sacrificing user privacy (i.e., you!).


 Best,

 cvan
 ___
 dev-webdev mailing list
 dev-web...@lists.mozilla.org
 https://lists.mozilla.org/listinfo/dev-webdev



 ___
 dev-media mailing list
 dev-media@lists.mozilla.org
 https://lists.mozilla.org/listinfo/dev-media




-- 
Adam Roach
Principal Platform Engineer
a...@mozilla.com
+1 650 903 0800 x863

IETF Internet Video Codec (NETVC) BoF approved

2015-02-12 Thread Adam Roach
We just got official word that the NETVC BoF (Birds-of-a-Feather) 
session has been approved for the upcoming March IETF meeting in Dallas. 
This is an important step in developing an internet-focused realtime 
video codec with favorable (and ideally royalty-free) licensing terms.


I'll note that this isn't the formation of a working group to actually 
perform the work of developing a codec and publishing the 
specifications. In the IETF process, holding a face-to-face BoF session 
is designed to let the IETF community comment on the proposed charter 
for a working group before it is formed, and to determine whether 
forming a new working group is warranted.


That said, I am very optimistic about the probable outcome of the BoF 
resulting in a new video codec working group.


I'd like to extend a special thanks to the entire Daala team; their work 
has been critical in laying the foundation for the standards work that 
will follow, and this BoF would never have happened without them. I'd 
like to thank Tim Terriberry and Jack Moffitt in particular for doing 
all of the heavy lifting of driving the IETF process.


I will be co-chairing the BoF. Feel free to reach out to me with any 
process questions you may have.


A description of the BoF is here: 
http://trac.tools.ietf.org/bof/trac/wiki#NETVC
The proposed working group charter that will be discussed is here: 
https://daala.etherpad.mozilla.org/video-codec-charter


--
Adam Roach
Principal Platform Engineer
a...@mozilla.com
+1 650 903 0800 x863
___
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media


Re: WebRTC: missing media type in SDP -- FF 33 beta

2014-09-11 Thread Adam Roach

On 9/11/14 12:09, Rajarshi Chaudhuri wrote:

Thx Adam. Checked the bug you mentioned. It is related - but anyway, specific 
to the issue I mentioned  - even with the new format, the OfferToReceiveVideo 
value is not respected by Firefox v33 beta - that would be resolved in the 
release version?


In the new format, OfferToReceiveVideo isn't valid. You need to use  
offerToReceiveVideo.


If you're missing the difference, look very carefully at the first 
letter of those two different strings.


--
Adam Roach
Principal Platform Engineer
a...@mozilla.com
+1 650 903 0800 x863
___
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media


Re: WebRTC: missing media type in SDP -- FF 33 beta

2014-09-10 Thread Adam Roach
See https://bugzilla.mozilla.org/show_bug.cgi?id=1063808

/a

 On Sep 10, 2014, at 19:00, Rajarshi Chaudhuri ccrajar...@gmail.com wrote:
 
 Hi -
 
 For the current FF 33 beta, I see one issue with WebRTC. The problem is that 
 when the user has only one media type (say audio or video, but not both), and 
 creates an offer with both offerToReceiveAudio and offerToReceiveVideo set to 
 true, previously the missing media type would still be in the offer SDP as 
 recvonly.
 
 In current case - the missing media type is totally missing from the offer 
 SDP.  I It could be any recent change (as this was not there in earlier 
 versions)? 
 
 Thx
 RCC
 ___
 dev-media mailing list
 dev-media@lists.mozilla.org
 https://lists.mozilla.org/listinfo/dev-media
___
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media


Re: Using a video as a *source*?

2014-07-14 Thread Adam Roach

On 7/14/14 13:20, Adam Roach wrote:

On 7/14/14 13:15, Benjamin Smedberg wrote:
Can I use a video element as a source for webrtc/peerconnection? 
For GMP testing, I was hoping to be able to feed a known video 
through webrtc, and not have to worry about actual camera stuff.


Not yet...


Heh. I guess I stand corrected on that point.

--
Adam Roach
Principal Platform Engineer
a...@mozilla.com
+1 650 903 0800 x863
___
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media


Re: Loop Server MVP: Protocol and Architectural Enhancements

2014-06-24 Thread Adam Roach

On 6/19/14 09:25, Mark Banner wrote:

A few follow-up comments having been looking through some of the bugs:

Getting Call Information


The mix of GET /call/{token} and GET /calls?version= is confusing 
- to know which calls we have incoming, we have to get /calls, but the 
new GET /call/{token} is going to give us the part of the 
information we need to display before the call is accepted.


I'll see if I can clarify the language here, but these serve two very 
different purposes, and don't ever make sense for the same party to do.


GET /call/{token} for outgoing calls. It is what a link clicker would 
access to find out who he is about to call. Consider the case in which 
you send me a link and Eric sends me a link, and I save them off for 
later use. Then, at some point in the future, I try to call you with the 
link, but get the wrong one. This is the call that is going to allow the 
link-clicker interface to tell me that I'm about to call Eric instead of 
you.


GET /calls?version= is to get information for incoming calls.




Extra Call Information
--

According to 
https://people.mozilla.org/~dhenein/labs/loop-mvp-spec/#call-incoming-unknown 
we should have the date the url was generated - I don't see that in 
the docs currently.


Good catch. Thanks.



Which Calls
--

Should we also change /calls?version= to only ever return one call? 
Currently if two incoming calls came in close together, we'd be 
getting duplicate information for the second call.


The list of calls at any given moment should only include those calls 
that are currently in an alerting state -- that is, they've been 
initiated, but the caller hasn't abandoned the call; the caller has 
neither accepted nor rejected the call; and the server has not timed-out 
the call.


In other words, the only way you'll see two records is if two people are 
actively sitting around waiting for you to answer their calls. And, in 
that case, I think we're going to want to tell the user that they have 
two incoming calls right now, and give them the ability to answer the 
one of greater interest to them.


In other words, the calls you get from /calls?version= should ideally 
represent only those calls that are in active setup at the moment.



Call URL generation and identification

In POST /call-url I believe the callerId parameter should now become 
optional or removed, as the user may or may not specify it.


The discussions with Darrin so far have included ideas like having the 
client put randomly selected names (e.g., adjective/animal pairs) in 
when the link generator does not specify one.


Although, I'm actually a bit puzzled, as I thought in an earlier 
version of the document, you could specify the caller id and duration 
separate to getting the call url, but this seems to have been lost.


That's what POST /call-url/{token} does -- it allows adjusting URL data 
after the fact. So, for automatic generation, the client uses POST 
/call-url/ with information that it automatically selects (i.e., 
without user intervention). The user can then, if he so chooses, modify 
that preselected information, which causes a POST /call-url/{token} 
call to update the information on the server.


--
Adam Roach
Principal Platform Engineer
a...@mozilla.com
+1 650 903 0800 x863
___
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media


Re: Loop Server MVP: Protocol and Architectural Enhancements

2014-06-16 Thread Adam Roach

On 6/16/14 14:50, Tarek Ziadé wrote:

Le 16/06/14 11:54, ale...@mozilla.com a écrit :

..

Maximum Simultaneous Connections 11,656,238

Current max sockets connections on an EC2 host is 250K. This means we'll
need approx. 46 servers to handle the long term max sim. connections.



...

This seems to be a lot of servers (for 500M users).

It seems unrealistic to consider that 500M users will use Loop imho.
Shouldn't we base this on the number of weekly active users maybe ?



At the beginning of the project, when we were setting up parameters 
around what the architecture should be designed for, 500M was the 
top-line number I was instructed to use. Not that we expect to have this 
many ever -- it would make us the second-largest telecom operator in the 
world -- but if the architecture cannot scale beyond this number, we 
consider that an acceptable limitation.


The important thing, from a mid-term perspective, is that we need to be 
able to scale to more than one server if we get 11M or 12M users; and 
the design very much takes this into account, by allowing scaling across 
multiple servers.


--
Adam Roach
Principal Platform Engineer
a...@mozilla.com
+1 650 903 0800 x863
___
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media


Re: Loop Server MVP: Protocol and Architectural Enhancements

2014-06-16 Thread Adam Roach
), but it's not clear to me what this is specifically. Can you 
elaborate? I don't  understand why this needs to be relayed by the server.


It needs to be relayed by the server because the endpoints don't have 
any other way to communicate with each other. The point is to supervise 
call setup to the point that both endpoints are satisfied that the call 
is established. To have a polished UX, we need this information so that 
reasonable progress and error information can be rendered to the user.



Offered traffic 0.1 Erlang per subscriber

Is this a typo? I don't understand the meaning.


No, it's not a typo -- it's an estimate of the peak traffic generated on 
a per subscriber basis. Erlang is a unit of voice traffic load (see 
https://en.wikipedia.org/wiki/Erlang_%28unit%29). Reasonable values for 
offered traffic are generally in the range of 0.05 to 0.15 Erlang per 
subscriber (and I suspect ours will be on the lower end of this), so I 
picked a value somewhere in the middle.


I'm including my assumptions here in case someone with a telecom traffic 
engineering background wants to double-check my work.




Transition


While the (lack thereof) concerns you're raising are valid, it doesn't
seem to make sense to avoid flag days for something that's MLP and only
released in nightly. e.g. in case it breaks, I believe we should just
let it break for now and focus on getting the new APIs right rather than
having backwards compatibility at this stage of the project.



I suppose a large portion of this depends on how quickly the change can 
be made to the server, and how many users are experimenting with the 
service at that time. In any case, given how little effort it would be 
to keep the already issued URLs valid, I see no reason to rip out 
working code rather than simply moving it behind a length check.


--
Adam Roach
Principal Platform Engineer
a...@mozilla.com
+1 650 903 0800 x863
___
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media


Loop Server MVP: Protocol and Architectural Enhancements

2014-06-13 Thread Adam Roach


For those of you working with Loop, I'm looking for feedback on some API 
and architectural enhancements necessary to satisfy our MVP use cases. 
Although there is still work remaining, the first three major sections 
of this document are functionally complete and ready for review:


https://wiki.mozilla.org/Loop/Architecture/MVP

Note that this URL is a temporary scratch area for this work. Once it is 
more baked, the intention is to move it to a more final location within 
the main Architecture document and/or the Loop Server API documentation.


--
Adam Roach
Principal Platform Engineer
a...@mozilla.com
+1 650 903 0800 x863
___
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media


Re: No WebRTC team meeting this week (so we're free to attend the Town Hall about the FxOS goals for 2014)

2014-04-21 Thread Adam Roach

On 4/21/14 15:17, Maire Reavy wrote:
NOTE: If there are any important heads up notifications for the team 
or any blocker issues/questions that you would have raised in the 
face-to-face, please respond to this thread with what you would have 
said. 


I'm on PTO this upcoming Friday and the Friday following.


--
Adam Roach
Principal Platform Engineer
a...@mozilla.com
+1 650 903 0800 x863
___
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media


Re: WebRTC Service: On temporary call URLs

2014-02-24 Thread Adam Roach

On 2/24/14 05:07, Alexis Métaireau wrote:
That's interesting, because I had something in mind that I haven't 
made explicit: because the token server returns nodes to use for the 
users, I was planning on using this in order to avoid charging the 
load balancers. e.g. something like this (Bob wants to be called):


1. Temp URL is generated by the server for Bob. This URL is tied to a 
node, e.g. https://node42.loop.services.mozilla.com/call/{token}

2. Bob gives this URL to Alice in order to be called
3. Alice clicks on the link and the node know what's the format of the 
token because /node42/ runs only this version of the service.


As long as the version of the service is valid, node42 is up, and when 
this is not valid anymore we can ditch it.


Sure, that does effectively the same thing with the load distribution 
advantage you describe. I'm perfectly happy binding the token syntax to 
the authority name like you suggest.


However, this approach doesn't work well in the case we want these 
temporary URLs to be persistant (the b. case).


If we're handing out different servers for different format versions, we 
can defer this until we actually deploy permanent tokens (assuming we 
eventually decide to do so). In other words, the permanent tokens will 
need to be at a different authority (machine), and we can use versioning 
for that machine's URLs only.


So let's go with what you propose, and we can worry about putting 
versions in the URL path when and if they become necessary.


--
Adam Roach
Principal Platform Engineer
a...@mozilla.com
+1 650 903 0800 x863
___
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media


Re: WebRTC Service: On temporary call URLs

2014-02-21 Thread Adam Roach

On 2/21/14 11:58, Romain Testard wrote:
Guys, I want to clearly understand, will this prevent URL 
customisation (mz.la/romain) as well as easy to remember generated 
URLs (mz.la/two_driving_dolphins) ?
I'm not sure we want to do these things but I want to understand the 
implications of that decision.


Because of the mechanism I'm proposing for revocation, the URLs we're 
generating right now will be time-limited. This can be a relatively long 
time period, like on the order of a month, but not indefinite. So, you 
can go ahead and shorten these URLs with a service, but the shortened 
URL's period of validity will be bound to the longer URL's period of 
validity, unless the service allows you to update the long URL 
associated with a short URL.


That said, because we have an indicator of the token format (the 
version in my original email on this topic), it's very easy to bolt on 
permanent call-me URLs at a later date, once we know how they need to 
behave. But how they need to behave is actually much trickier than it 
appears at first glance; in particular, the revocation story gets murky: 
if you've given mz.lo/romain out to hundreds of people, revocation is 
a pretty extreme measure, akin to changing a phone number. And we almost 
certainly don't want to roll permanent URLs out without some kind of 
revocation, as this could make the service functionally useless for 
people: would you continue to use the service if you started getting 
nuisance calls on mz.la/romain as frequently as you get email spam?


So I think the important thing to note is that we don't support what you 
propose right now, but we do have specific architectural hooks that will 
allow us to add it at a later date once we better understand the 
requirements.


--
Adam Roach
Principal Platform Engineer
a...@mozilla.com
+1 650 903 0800 x863
___
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media


Re: WebRTC Service: On temporary call URLs

2014-02-20 Thread Adam Roach

On 2/20/14 04:54, Alexis Métaireau wrote:

Adam, thanks for starting this discussion,

Le 20/02/2014 04:52, Adam Roach a écrit :

Putting this together, what we want is something that semantically
evaluates to:

http://authority/action/url-format-version/{serial
#,caller,callee,expiration,hmac}

As Martin points out, URLs should not represent actions, they should
represent things.


Sure, for most of the HTTP interactions, this is true, and it's a good 
principle in general. The way I was viewing this was that the handed-out 
call URLs (unlike other operations we're performing) weren't going to be 
idempotent: accessing the resource twice would create two calls. In 
traditional HTTP design, this would typically be relegated to something 
like POST, but we can't pass around URLs with an embedded method in a 
well-supported way.


That said, I see that the GET/POST proposal you have addresses this in a 
more resource-based fashion, and agree that it's a cleaner way to handle 
URLs.



On the experiment we made with Romain Gauthier and Nicolas Perriault, we
went ahead and chose the following scheme...

# A * means this URI requires authentication (a valid token from the token 
server,
# which contains user id).

* POST /call-url/  →  Create the call url a callee can click on.
   GET  /calls/{token}  →  Get the app (that's the url in question, which
   displays an app)
   POST /calls/{token}  →  Add an incoming call (does a simple push notif
   and gets room tokens)
* GET  /calls/ →  List incoming calls for the authenticated user.

{token} was something that is containing the user id of the callee plus
a . I don't understand why we're trying to put information about the
caller here, since we don't know who is this.


Keep in mind that the nominal user experience for this, once we get to 
MVP, will be rooted in an address book. I'll have my list of contacts, 
which includes phone numbers and email addresses. When an address book 
user is activated by a user, we'll check whether the contact info 
corresponds to a Loop user. If so, we place a call in that direction; 
otherwise, we offer to create a call me URL and (if possible) deliver 
it using the contact means (email or phone/SMS) corresponding to the 
address book entry. So, when we create the URL, we'll know who the user 
intends to give it to.


This is important because it allows us to say You have an incoming call 
from Alexis rather than You have an incoming call from some random 
person. The delivery of calling party identity is simply considered 
table stakes for a communications service nowadays [1].



In your proposal, I don't understand what is the serial #, and
especially why it can't replace the version as you specify it.


The serial number is different for each and every URL issued, and is 
used for revocation purposes.


The version allows us to transition between schemes in the future, if 
we need to change the properties of the URL -- it allows us to 
unambiguously change the format of the {token} [2]. For example, if we 
decide to re-key the HMAC, we can increase the version number. The same 
goes if we decide to add fields, encode them differently, or even go to 
a completely different design (such as a sparse key into a database 
table). It gives us an out to reconsider the design of the token if it 
doesn't meet future needs.



It seems straightforward to just have a serial number (randomly
generated and not auto incremented, because auto increment is harder to
scale) that we can revoke if needed.


Sure, random would work, as long as we have sufficiently low chance of 
collision. It would be a pretty big error if revocation of one URL 
caused a different URL to also be revoked because they shared the same 
random identifier.



It means that before displaying the app and accepting a call (we can
also chose one of them only), we will have to check in the database if
this serial # is still a valid one.


If I understand you correctly, you're describing an intended feature of 
the system, not a problem: the check for revocation of a serial # is 
part of the revocation mechanism.



We could let the user chose what's the duration of their call-url, and
default to something specified in a configuration file if the user don't
specify anything.


Right, that's the intention.


Ideally, we also want the ability to identify multiple versions of URL
encodings, should we decide to migrate to include an enhanced scheme
in the future.

If you're thinking about having multiple versions of the service running
at once, then I think this shouldn't be handled this way. When you ask
for a node to the token server, you ask for a particular version of the
service, and you get an endpoint to this service.

This allows us to not have to deal with multiple versions of the API in
the server code. If that's not what you're refering to, can you provide
more info?


It's not multiple versions

Architecture Decisions and Action Items for User-Facing WebRTC Project

2014-02-19 Thread Adam Roach
(Sorry for the long subject -- I think we have a project name picked 
out, but since it hasn't been officially communicated yet, I'm using the 
descriptive term User-Facing WebRTC Project.)


Based on conversations this morning, we have a number of decisions and 
pending action items for the user-facing product architecture. These are 
summarized below. I've marked action items with a single letter to 
indicate the associated timeframe: L for MLP, and V for MVP [1].


I have action items recorded for Mark Banner, Nicolas Perriault, Dan 
Mosedale, Eric Rescorla, Alexis Metaireau, and myself.



 Client Architecture


Decisions

 * The panel JavaScript will ship with the browser and ride the trains,
   at least through MVP.
 * Local data storage will make use of the IndexedDB API. We may choose
   to wrap it to make it less painful to use.
 * Unit testing of client code will be performed with the mochi test
   framework.


Action Items

 * L: *Adam* to contact Gavin, Dolske, and Shane to determine future
   availability and support for Social API
 * L: *Mark* to experiment with loading chrome: URLs in the Social API
   to determine whether doing so gives us sufficient elevated privileges.
 * L: *Nicolas* to examine use of client libraries (jQuery, Backbone)
   to determine how much effort we're likely to save versus the effort
   of ensuring we can run the libraries safely in the context of
   elevated privileges.
 * V: *Adam* to research possibilities for running part of the code
   with chrome privileges and others with content privileges, so as to
   minimize the exposure to security issues.
 * V: *Dan* to evaluate the use of templates for the use of l10n
   (will all WebRTC browsers have template support?).
 * L: *EKR* to touch base with Doug to determine tools used to test
   Sync, evaluate applicability to our use cases.
 * L: *Adam* to contact David Burns and Ted to determine the level of
   effort it would take to make Marionette and Steeplechase work
   together, to facilitate system testing.
 * L: *Adam* to ask Ted who to contact regarding the prospect of
   running a subset of Mochi tests on Chrome/Chromium.
 * L: *Adam* to talk to Andreas and Denelle about partner library code
   landing and versioning.


 Server Architecture


Decisions

 * Development will be performed in node.js
 * No external libraries are identified for use at this time. Any
   external libraries will be discussed and agreed upon before importing.
 * Current assumption is that we will use AWS for deployment. This can
   be revisited if circumstances arise that makes that deployment
   environment suboptimal.
 o As an aside, the ability to run the server code locally is a
   hard requirement.
 * We will use github pull requests to ensure that patches are reviewed
   prior to landing.


Action Items

 * L: *Adam* to task appropriate party with evaluation of available
   databases.
 * L: *Alexis* to create repo in under mozilla github; *Adam* to send
   him list of team members so they can be added to the committers.
 * L: *Mark* to investigate state of github/bugzilla integration.




[1] That's Minimum Landable Product (aka demo) and Minimum Viable 
Product for anyone not used to these acronyms.


--
Adam Roach
Principal Platform Engineer
a...@mozilla.com
+1 650 903 0800 x863
___
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media


WebRTC Service: On temporary call URLs

2014-02-19 Thread Adam Roach
[For the tl;dr, skip down the the line starting Putting this all 
together.]


I realize that, while I've had a few discussions with people about the 
nature of the temporary calling URLs, I haven't really communicated some 
of the requirements we have around them, and how we can meet those 
requirements.


Users need the ability to revoke a URL that they have passed out -- if 
it, for example, falls into the hands of marketers or people from whom 
they do not wish to receive communications, users need a means to tell 
the server that the URL can no longer be used to reach them. This means 
the calling URLs must be unique each time they are generated; and, 
ideally, will identify the party to whom they were given. This also 
means that the URLs need to be tamper-proof, which implies some form of 
integrity protection.


Second, for this kind of system where users can and will create 
boundless state at a potentially rapid pace, we need to ensure that the 
server is not required to store all that state -- it just doesn't scale. 
This means the calling URLs need to encode all the information necessary 
to identify the called party and the calling party.


Now, revocation is inherently state that we need to store; but 
revocation events should be infrequent. Nonetheless, we don't want to 
store such state in perpetuity, which means all calling URLs need to be 
time bounded: once a URL expires, we can discard any associated 
revocation state. We can also optimize the size of the data we need to 
store for revocation: by including a short, unique serial number in each 
URL, a revocation record can consist simply of that serial number along 
with a date after which the URL is no longer valid (and, consequently, 
after which the revocation can be discarded). Both pieces of information 
are readily available from a URL each time it is used. If we use, say, 
64-bit serials and 32-bit expirations, this requires nominally 96 bits 
of state per revocation, which is pretty cheap.


Ideally, we also want the ability to identify multiple versions of URL 
encodings, should we decide to migrate to include an enhanced scheme in 
the future.


Putting this together, what we want is something that semantically 
evaluates to:


http://authority/action/url-format-version/{serial 
#,caller,callee,expiration,hmac}


Where hmac is an HMAC that includes the serial #, the caller, the 
callee, and the expiration. We may find that we want to add more fields 
to the part I have inside brackets here; using an explicit URL format 
versioning allows us to do this very easily.




For example (and this is meant to be illustrative, not normative), a URL 
that is minted to call from a...@mozilla.com to a...@nostrum.com, 
with an expiration of March 1st, 2014 at 21:19:13 CST might crafted 
first by concatenating these three fields together, prepended with a 
serial number (1 in this example):


secret = Bjqcy:FCwn^1P.s,v9,+;9AN(w%X$:
state = 1:a...@mozilla.com:a...@nostrum.com:1393730353
hmac = HMAC_SHA265(secret, state) % 0x1 = 0x7a4a77ba
call_string = base64(concat(state, hmac)) = 
MTphYnIuY29tOmFkYW0uY29tOjEzOTM3MzAzNTN6Sne6


This would then be combined with the authority 
(loop.services.mozilla.com), the action (call) and the version (1) 
to create the following url:


http://loop.services.mozilla.com/call/1/MTphYnIuY29tOmFkYW0uY29tOjEzOTM3MzAzNTN6Sne6

(n.b., we probably want to strongly obscure the fields inside the blob 
so as to avoid the ability to back out a called-party's contact 
information -- a...@nostrum.com in this example -- but for MLP, this 
should be sufficient)


--
Adam Roach
Principal Platform Engineer
a...@mozilla.com
+1 650 903 0800 x863
___
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media


Re: WebRTC Service: On temporary call URLs

2014-02-19 Thread Adam Roach

On 2/19/14 22:32, Martin Thomson wrote:

I think that you need to consider confidentiality here as well.  It might be 
desirable to have the addressing information concealed.  That implies a 
mechanism like: http://tools.ietf.org/html/draft-rescorla-stateless-tokens


You'll note that I employ pretty much that technique exactly, modulo the 
encryption (which I call out in the final paragraph as not in this 
version, but probably desirable for the next, and which the draft 
concedes is optional) and the use of bitmasks and bloom filters for 
invalidation (since revocation is expected to be exceedingly rare).



That leads to the next concern, which is that committing to a URI format is not 
wise in general because that can dictate server architecture.  If you do as you 
describe (s/http/https), then loop.services.mozilla.com is it.  You can't hand 
out tokens that reference a specific deployment or server, you can't move stuff 
without paying redirect or proxying costs.


Apparently, I was not sufficiently clear. I was not describing client 
behavior in any way whatsoever. I was describing server behavior. The 
intention here is exactly that the client asks for a full URL, and the 
server provides one. The client is in no way involved in synthesis of 
the URL.


--
Adam Roach
Principal Platform Engineer
a...@mozilla.com
+1 650 903 0800 x863
___
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media


Re: mozilla, webrtc and TURN server

2014-01-29 Thread Adam Roach

On 1/29/14 04:36, Ijatsu wrote:

I give to webRTC a set of 2 TURN server address...


How are you passing these to the PeerConnection? Chrome started out 
using a non-standard format along the lines of:


{ iceServers: [ {url: turn:username@host, credential: password } ] };

Firefox uses the format specified in the evolving standard, which Chrome 
now supports as well:


{ iceServers: [ { url: turn:host , username: username , credential: 
password} ] }


If you try using the first format, then Firefox cannot find the 
username, and will not attempt to authenticate itself to the TURN server.


--
Adam Roach
Principal Platform Engineer
a...@mozilla.com
+1 650 903 0800 x863
___
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media


Re: ICE-TCP and BUNDLE

2013-12-14 Thread Adam Roach

On 12/14/13 13:42, bryandonno...@gmail.com wrote:
When broadcasting to a large audience, 1 sec latency is nothing, and 
packets are not dropped on the floor.


Indeed.

I do, then, wonder why you would want to use WebRTC, rather than an 
icecast-style setup using streaming HTTP. What you describe isn't 
real-time (at least, not in the way WebRTC uses that term), so WebRTC 
doesn't really seem like the right tool. In fact, your application seems 
like it would benefit greatly from the kind of multi-second buffering 
that we would consider to be wildly unacceptable for WebRTC.


--
Adam Roach
Principal Platform Engineer
a...@mozilla.com
+1 650 903 0800 x863
___
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media


Re: webRTC and cisco openH264

2013-12-13 Thread Adam Roach

On 12/13/13 14:59, Bo Xu wrote:

could you tell me if there is any schedule for Firefox support Cisco openH264?


Not yet. The plan is as soon as possible. There's a lot of work going 
on right now to make that happen, but I don't think we can provide a 
time estimate yet.



I have tested the openH.264 codec itself, but I am not sure when Firefox will 
include it: will Mozilla update webRTC first to handle H.264?


I'll let someone else answer that, as I'm not entirely sure how we're 
hooking into the video engine.



and do users need to download openH264's binary from Cisco when they install 
Firefox? or Mozilla will include openH264's binary inside the new version of 
Firefox? Thanks!


Users will not need to take any additional actions, and shouldn't notice 
any difference in behavior. Firefox will automatically download the 
codec binary from Cisco's servers.


--
Adam Roach
Principal Platform Engineer
a...@mozilla.com
+1 650 903 0800 x863
___
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media


Re: Live video streaming for Firefox OS?

2013-10-25 Thread Adam Roach

On 10/25/13 16:40, Felix E. Klee wrote:

On Fri, Oct 25, 2013 at 10:16 PM, Chris Double
chris.dou...@double.co.nz wrote:

You should be able to stream Theora or WebM videos using Icecast or
similar: http://icecast.org/

And client-side?

Note that I'm talking about *live* video streaming.



As far as I know, there's nothing about icecast that would get in the 
way of doing (nearly) live streaming of video. For example, see this 
page: http://current.workingdirectory.net/posts/2012/vp8-and-debian/


Now, if you don't mind getting your server to deal with SDP, SRTP/DTLS, 
and ICE (or ICE LITE), then WebRTC could certainly be used for 
low-latency live streaming. You'll probably find yourself doing quite a 
bit of custom development for this, at least, in the short term. But 
should certainly be feasible. I believe the current roadmap has WebRTC 
landing in FirefoxOS 1.3.


--
Adam Roach
Principal Platform Engineer
a...@mozilla.com
+1 650 903 0800 x863
___
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media


Re: Live video streaming for Firefox OS?

2013-10-25 Thread Adam Roach

On 10/25/13 16:59, Felix E. Klee wrote:

On Fri, Oct 25, 2013 at 11:50 PM, Adam Roach a...@mozilla.com wrote:

low-latency live streaming.

Actually, latency isn't a big issue, as long as it's no more than say a
second.


Yeah, an icecast-like thing is probably the way to go, then. Once you 
get your server set up, this is extremely easy to use in a webpage. For 
example, drop this into an HTML file:


video width=160 height=100 
src=http://radioserver1.delfa.net:80/256.opus; controls/


Now, if that URL pointed to an icecasted VP8 stream instead of an 
icecasted opus stream, you'd be watching video instead of listening to 
extremely smooth jazz. (Sorry, I can't find a good video example at the 
moment.)


Would this be an interim solution, or is WebRTC the future for video 
live streaming? I'm new to this field. Only Icecast I have used years 
ago to set up an audio live stream (mobile phone - SIP - IceCast - 
MP3 stream). 


WebRTC is designed for real-time communications, which you can basically 
model as those use cases that require ~100ms one-way (~200ms round-trip) 
delay or less to work. This is required, for example, to have a 
conversation between two people. (WebRTC is also quite important for 
doing direct browser-to-browser communication, but that doesn't seem to 
have much bearing on what you're doing).


These capabilities do come with a certain level of complexity, however. 
Given that you don't need sub-second latencies, you're probably better 
off just doing an icecast approach.


--
Adam Roach
Principal Platform Engineer
a...@mozilla.com
+1 650 903 0800 x863
___
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media


Re: MediaStream constructor

2013-10-23 Thread Adam Roach

On 10/23/13 12:41, hendersonpho...@gmail.com wrote:

If it's possible, how do I construct a MediaStream in firefox without calling 
GetUserMedia?


You can't. The only specified way to procure one is via the success 
callback of getUserMedia (representing a local camera and/or microphone) 
and through the onaddstream callback from RTCPeerConnection that's 
triggered by calling setRemoteDescription (representing remote media 
received over the network).


The idea behind a MediaStream is that it represents some kind of 
*source* that you're going to attach to something. If you were to 
somehow manage to construct one in a vacuum, what source would you 
expect it to represent?


In other words: what are you trying to do?

--
Adam Roach
Principal Platform Engineer
a...@mozilla.com
+1 650 903 0800 x863
___
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media


Re: PeerConnection.removeStream

2013-10-23 Thread Adam Roach

On 10/23/13 15:34, Tom Hughes wrote:

It appears that PeerConnection.removeStream is not yet implemented. The
code refers to https://bugzilla.mozilla.org/show_bug.cgi?id=844295, but
that bug is targeted towards implementing the current behavior where
removeStream throws an exception since the underlying functionality doesn't
work.

Is there a bug that tracks the dependencies to make it work?


This is considered part of the whole renegotiation functionality, which 
is being tracked in Bug 857115: 
https://bugzilla.mozilla.org/show_bug.cgi?id=857115


See also https://hacks.mozilla.org/2013/09/webrtc-update-and-workarounds/

--
Adam Roach
Principal Platform Engineer
a...@mozilla.com
+1 650 903 0800 x863
___
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media


Re: Question on DTLS roles

2013-09-18 Thread Adam Roach

On 9/18/13 17:22, Rajarshi Chaudhuri wrote:

Hi -

I'm using FF nightly 26 and 27 for WebRTC. And things are not exactly 
peer-to-peer - as we have our own Media Gateway in between. It seems like FF 
nightly assumes the DTLS client role regardless of who is the caller?


Yes, we had a regression here that didn't get caught until late in the 
cycle. See https://bugzilla.mozilla.org/show_bug.cgi?id=917619




Also FF nightly does not seem to respect the setup attribute in the SDP answer (though it has the 
setup attribute in its own offer SDP with the value actpass indicating that it's 
willing to assume either role).


That is a different problem, and not one that I've seen. Can you send me 
a copy of the offer and the answer so I can try to figure out what's 
going wrong here?



--
Adam Roach
Principal Platform Engineer
a...@mozilla.com
+1 650 903 0800 x863
___
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media


Re: ice-lite support

2013-07-31 Thread Adam Roach

On 7/31/13 11:33, pablo.pl...@gmail.com wrote:

Does Firefox support ice-lite?


I would Firefox to interwork with an ice-lite implementation just fine. 
If you find any issues with doing so, please let us know.



Is there a reason not to use ice-lite when building MCU?


Using ICE Lite in an MCU is probably okay in the majority of deployment 
scenarios, since they will generally be deployed in non-NATed, 
non-firewalled configuration. Do be aware, however, that implementing 
your MCU with ice-lite does impose on it the limitation that it will 
work only in those kinds of deployments.


--
Adam Roach
Principal Platform Engineer
a...@mozilla.com
+1 650 903 0800 x863
___
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media


Re: How to turn on WebRTC debug logs on Firefox?

2013-07-09 Thread Adam Roach

On 7/9/13 13:29, prakashr.i...@gmail.com wrote:

In Chrome, we can turn on detailed debug logs to see ICE connections, STUN 
pings and other media related logs, Is there instructions somewhere for how to 
do this in firefox?



I don't know of any detailed instructions anywhere, but logging in 
Firefox in general is controlled via environment variables.


For ICE/STUN/TURN:
Set R_LOG_DESTINATION=stderr
Set R_LOG_LEVEL=3 (can be anything between 1 and 9)
Set R_LOG_VERBOSE=1 if you want to include the module name 
generating the message


For signaling (SDP offer/answer handling) and media transport, we use 
the normal Mozilla logging infrastructure, which uses a comma-separated 
list of modules, each one with its indicated log level; for WebRTC, 
you'll be most interested in these:

Set NSPR_LOG_MODULES=signaling:5,mtransport:5

You can also add ,timestamp:1 to that list if you want each log 
message to include timestamps.



--
Adam Roach
Principal Platform Engineer
a...@mozilla.com
+1 650 903 0800 x863
___
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media


Re: onicecandidate plan

2013-07-02 Thread Adam Roach

On 7/2/13 21:43, Iwan Budi Kusnanto wrote:

Is there any plan to implement onicecandidate in firefox?
If yes, when it will be?



I presume your question is whether and when Firefox plans to implement 
trickle ICE, since we already do call onicecandidate once (with a null 
candidate) after the local description is set.


Trickle ICE is definitely planned. I can't give you a date or target 
release, since trickle ICE is a relatively low priority: it is simply a 
minor timing optimization, and does not (for example) improve 
interoperability or NAT traversal. If you're interested in following 
this issue once work starts on it, add your name to the CC list for this 
bug:


https://bugzilla.mozilla.org/show_bug.cgi?id=842549


--
Adam Roach
Principal Platform Engineer
a...@mozilla.com
+1 650 903 0800 x863
___
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media


Re: changing ice credentials in answer

2013-06-26 Thread Adam Roach

On 6/26/13 11:39, bryandonno...@gmail.com wrote:

Is it possible to modify the ice-ufrag and ice-pwd in the SDP returned by 
createAnswer?

It has no effect when I modify the SDP before calling setLocalDescription.

Is this a known issue?  Should I file a bug?


See https://bugzilla.mozilla.org/show_bug.cgi?id=784514

However, note that the W3C has not yet determined what parts of SDP the 
scripts are allowed to edit, and which parts are immutable. If we had 
the conversation today, I'm pretty sure the ufrag and password would not 
be considered candidates for editing.


To put a finer point on it: I'm probably the one who will be 
implementing the SDP editing handling, and I did not plan on allowing 
these values to be changed. Can you explain why you would want to do this?


--
Adam Roach
Principal Platform Engineer
a...@mozilla.com
+1 650 903 0800 x863
___
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media


Re: Does FF supports h264 RTP packetization?

2013-06-24 Thread Adam Roach

On 6/24/13 04:39, tao siping wrote:

I heard some news that firefox already supports native h264
encoder/decoder, that is really great. My question is does firefox also
support rtp packetization for h264?


No.

Currently, both Chrome and Firefox use VP8 as the only video codec for 
WebRTC.


There are some thorny IPR issues involved here -- even more than for 
video playback -- which can cause problems for free software, for both 
senses of the word free. The licensing fees cause problems for gratis 
software, while the restrictions inherent in licensed IPR cause problems 
for libre software.


As far as I know, the most recent public statement on the topic is a 
blog post from Mozilla's CTO, Brendan Eich:  We are taking the fight 
for unencumbered formats to the next battlefront, WebRTC, also as 
promised. More on that front later. (see 
https://brendaneich.com/2012/10/html5-video-update/).


--
Adam Roach
Principal Platform Engineer
a...@mozilla.com
+1 650 903 0800 x863
___
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media


Re: In onaddstream-Handler, 'this' does not equal the corresponding RTCPeerConnection-Object

2013-06-21 Thread Adam Roach
Prior to the landing of 
https://bugzilla.mozilla.org/show_bug.cgi?id=823512, the callbacks were 
all spoofed using normal function calls rather than event processing. 
This has several implications, one of which is the behavior you describe 
below.


The patch for that bug has landed on Firefox 24 already. Please re-try 
your testing on a recent version of Nightly and let us know whether you 
see any unexpected behavior: http://nightly.mozilla.org/


This fix should make it into Aurora next week, Beta in early August, and 
the full release version of Firefox in late September.


/a

On 6/21/13 08:16, Kai Schreyer wrote:

When I log the 'this'-Object inside of the onaddstream-Handler to the console, 
instead of observing it in Firebug, I can see that it equals the 
onaddstream-Function.


But I am still of the opinion, that 'this' (inside of the onaddstream-Handler) 
should refer to the corresponding RTCPeerConnection-Object.

Right?


Cheers Kai
___
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media



--
Adam Roach
Principal Platform Engineer
a...@mozilla.com
+1 650 903 0800 x863
___
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media


Re: WebRTC Test Day on June 21st

2013-06-17 Thread Adam Roach

On 6/17/13 16:36, Jason Smith wrote:

Hi Everyone,

On Friday June 21st, QA will be organizing a test day for WebRTC on 
Desktop Firefox and Firefox for Android. See 
http://aaronmt.com/blog/2013/06/17/webrtc-testday/ for more information.


I would greatly appreciate if you can jump into the #testday channel 
this Friday to help answer questions we will get...


That shouldn't be a problem.

In looking at the blog entry, I'm a bit worried about the phrase  
...ensure that all feature functionality that is included in this 
upcoming release is on its way to a feature and testing complete state. 
It implies that Nightly contains code that is some substantial portion 
of the way -- say, more than 50% -- to being feature complete. I think 
that's misleading.


--
Adam Roach
Principal Platform Engineer
a...@mozilla.com
+1 650 903 0800 x863
___
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media


Re: Reflection Comments from a Recent Experience of Building Three End to End WebRTC Web Applications

2013-05-20 Thread Adam Roach

On 5/21/13 07:29, Eric Rescorla wrote:

 * In the process of building an interoperable WebRTC application
between Chrome and Firefox, when I did not provide
DtlsStrpKeyAgreement to true as an optional constraint to Chrome,
Firefox would fail to establish the handshake by reporting an error
of DCB has not been created during the addIceCandidate function.
Why is this the case?

There seem to be several questions.

- Why doesn't it work? Because the offer without DTLS is incompatible with
Firefox, which requires DTLS.
- Why is there a lame error message? File a bug.


Please do file a bug on this, with a repro test if you have one. The 
DCB has not been created message should be impossible to trigger from 
content javascript, no matter what you're calling, no matter what 
parameters you're sending in. This is likely indicative of a more 
serious bug than just an inscrutable error message.



--
Adam Roach
Principal Platform Engineer
a...@mozilla.com
+1 650 903 0800 x863
___
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media


Re: Does Firefox support stun yet?

2013-03-01 Thread Adam Roach
Yes. If you don't specify a server, it'll use Mozilla's STUN server by default. 
At least, for now. 

You might need to be running Aurora or Nightly for this to work properly. 

Also, we don't currently take DNS names for STUN servers, although we're 
working on it at the moment. 

/a

On Mar 1, 2013, at 19:10, Eric Davies ericthecycl...@gmail.com wrote:

 I haven't found any demos that work when one peer is behind a NAT. Does 
 Firefox support STUN yet?
 
 Eric.
 ___
 dev-media mailing list
 dev-media@lists.mozilla.org
 https://lists.mozilla.org/listinfo/dev-media
___
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media