{"action":"created","comment":{"url":"https://api.github.com/repos/w3c/webrtc-pc/pulls/comments/23877195","id":23877195,"diff_hunk":"@@ -2075,6 +1826,314 @@\n   </section>\n \n   <section>\n+      <h2>RTP Media API</h2>\n+\n+      <p>The RTP media API lets a web application send and receive <code>MediaStreamTrack</code>s\n+      over a peer-to-peer connection. Tracks, when added to a RTCPeerConnection, result in\n+      signaling; when this signaling is forwarded to a remote peer, it causes\n+      corresponding tracks to be created on the remote side.</p>\n+\n+      <p>The actual encoding and transmission of <code>MediaStreamTrack</code>s is managed through\n+      objects called <code>RTCRtpSender</code>s. Similarly, the reception and decoding of\n+      <code>MediaStreamTrack</code>s is managed through objects called <code>RTCRtpReceiver</code>s.</p>\n+\n+      <p>A <code><a>RTCPeerConnection</a></code> object contains a\n+      <dfn id=\"senders-set\">set of <code>RTCRtpSender</code>s</dfn>, representing tracks to\n+      be sent, and a <dfn id=\"receivers-set\">set of <code>RTCRtpReceiver</code>s</dfn>,\n+      representing tracks that are to be received on this\n+      <code><a>RTCPeerConnection</a></code> object. Both of these sets are\n+      initialized to empty sets when the\n+      <code><a>RTCPeerConnection</a></code> object is created.</p>\n+\n+      <section>\n+        <h3>RTCPeerConnection Interface Extensions</h3>\n+\n+        <p>The RTP media API extends the\n+        <code><a>RTCPeerConnection</a></code> interface as described below.</p>\n+\n+        <dl class=\"idl\" title=\"partial interface RTCPeerConnection\">\n+          <dt>sequence&lt;RTCRtpSender&gt; getSenders()</dt>\n+\n+          <dd>\n+            <p>Returns a sequence of <code><a>RTCRtpSender</a></code> objects\n+            representing the RTP senders that are currently attached to this\n+            <code><a>RTCPeerConnection</a></code> object.</p>\n+\n+            <p>The <dfn id=\n+            \"dom-peerconnection-getsenders\"><code>getSenders()</code></dfn>\n+            method MUST return a new sequence that represents a snapshot of all\n+            the <code><a>RTCRtpSenders</a></code> objects in this\n+            <code><a>RTCPeerConnection</a></code> object's <a href=\n+            \"#senders-set\">set of senders</a>. The conversion from the\n+            senders set to the sequence, to be returned, is user agent defined\n+            and the order does not have to stable between calls.</p>\n+          </dd>\n+\n+          <dt>sequence&lt;RTCRtpReceiver&gt; getReceivers()</dt>\n+\n+          <dd>\n+            <p>Returns a sequence of <code><a>RTCRtpReceiver</a></code> objects\n+            representing the RTP receivers that are currently attached to this\n+            <code><a>RTCPeerConnection</a></code> object.</p>\n+\n+            <p>The <dfn id=\n+            \"dom-peerconnection-getreceivers\"><code>getReceivers()</code></dfn>\n+            method MUST return a new sequence that represents a snapshot of all\n+            the <code><a>RTCRtpReceiver</a></code> objects in this\n+            <code><a>RTCPeerConnection</a></code> object's <a href=\n+            \"#receivers-set\">set of receivers</a>. The conversion from\n+            the receivers set to the sequence, to be returned, is user agent\n+            defined and the order does not have to stable between calls.</p>\n+          </dd>\n+\n+          <dt>RTCRtpSender addTrack (MediaStreamTrack track, MediaStream... streams)</dt>\n+\n+          <dd>\n+            <p>Adds a new track to the RTCPeerConnection, and indicate that it\n+              is contained in the specified MediaStreams.</p>\n+\n+            <p>When the <dfn id=\"dom-peerconnection-addtrack\"><code title=\n+            \"\">addTrack()</code></dfn> method is invoked, the user agent MUST\n+            run the following steps:</p>\n+\n+            <ol>\n+              <li>\n+                <p>Let <var>connection</var> be the\n+                <code><a>RTCPeerConnection</a></code> object on which the\n+                <code><a>MediaStreamTrack</a></code>, <var>track</var>, is to be\n+                added.</p>\n+              </li>\n+\n+              <li>\n+                <p>If <var>connection</var>'s <a href=\n+                \"#dom-peerconnection-signaling-state\"><code>RTCPeerConnection</code>\n+                signalingState</a> is <code>closed</code>, throw an\n+                <code>InvalidStateError</code> exception and abort these\n+                steps.</p>\n+              </li>\n+\n+              <li>\n+                <p>If an <code>RTCRtpSender</code> for <var>track</var> already exists in\n+                <var>connection</var>'s <a href=\"#senders-set\">set of senders</a>,\n+                then abort these steps.</p>\n+              </li>\n+\n+              <li>\n+                <p>Create a new <code>RTCRtpSender</code> for <var>track</var>, add it to\n+                 <var>connection</var>'s <a href=\"#senders-set\">set of senders</a>,\n+                 and return it to the caller.</p>\n+              </li>\n+\n+              <li>\n+                <p>A track could have contents that are inaccessible to the\n+                application. This can be due to being marked with a\n+                <var>peerIdentity</var> option or anything that would make a\n+                track <a href=\n+                \"http://www.w3.org/html/wg/drafts/html/master/infrastructure.html#cors-cross-origin\">\n+                CORS cross-origin</a>. These tracks can be supplied to the\n+                addTrack method, and have an <code>RTCRtpSender</code> created for them, but content\n+                MUST NOT be transmitted, though tracks marked with\n+                <var>peerIdentity</var> can be transmitted if they meet the\n+                requirements for sending (see <a href=\"#isolated-pc\">\n+                isolated streams and RTCPeerConnection</a>).</p>\n+\n+                <p>All other tracks that are not accessible to the application\n+                MUST NOT be sent to the peer, with silence (audio), black\n+                frames (video) or equivalently absent content being sent in\n+                place of track content.</p>\n+\n+                <p>Note that this property can change over time.</p>\n+              </li>\n+\n+              <li>\n+                <p>If <var>connection</var>'s <a href=\n+                \"#dom-peerconnection-signaling-state\"><code>RTCPeerConnection</code>\n+                signalingState</a> is <code>stable</code>, then fire a <a href=\n+                \"#event-negotiation\">negotiationneeded</a> event at\n+                <var>connection</var>.</p>\n+              </li>\n+            </ol>\n+          </dd>\n+\n+          <dt>void removeTrack (RTCRtpSender sender)</dt>\n+\n+          <dd>\n+            <p>Removes <var>sender</var>, and its associated <code>MediaStreamTrack</code>, from the\n+            <code><a>RTCPeerConnection</a></code>.</p>\n+\n+            <!-- onended -->\n+            <p>When the other peer stops sending a track in this manner, a","path":"webrtc.html","position":610,"original_position":686,"commit_id":"da69f13024499a69fde439a3dfafd837bf62e715","original_commit_id":"d4bbf46821c0533768aeda91fbb741d1a3a9d7e9","user":{"login":"juberti","id":1821693,"avatar_url":"https://avatars.githubusercontent.com/u/1821693?v=3","gravatar_id":"","url":"https://api.github.com/users/juberti","html_url":"https://github.com/juberti","followers_url":"https://api.github.com/users/juberti/followers","following_url":"https://api.github.com/users/juberti/following{/other_user}","gists_url":"https://api.github.com/users/juberti/gists{/gist_id}","starred_url":"https://api.github.com/users/juberti/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/juberti/subscriptions","organizations_url":"https://api.github.com/users/juberti/orgs","repos_url":"https://api.github.com/users/juberti/repos","events_url":"https://api.github.com/users/juberti/events{/privacy}","received_events_url":"https://api.github.com/users/juberti/received_events","type":"User","site_admin":false},"body":"resolved","created_at":"2015-01-30T22:23:59Z","updated_at":"2015-01-30T22:23:59Z","html_url":"https://github.com/w3c/webrtc-pc/pull/175#discussion_r23877195","pull_request_url":"https://api.github.com/repos/w3c/webrtc-pc/pulls/175","_links":{"self":{"href":"https://api.github.com/repos/w3c/webrtc-pc/pulls/comments/23877195"},"html":{"href":"https://github.com/w3c/webrtc-pc/pull/175#discussion_r23877195"},"pull_request":{"href":"https://api.github.com/repos/w3c/webrtc-pc/pulls/175"}}},"pull_request":{"url":"https://api.github.com/repos/w3c/webrtc-pc/pulls/175","id":27060709,"html_url":"https://github.com/w3c/webrtc-pc/pull/175","diff_url":"https://github.com/w3c/webrtc-pc/pull/175.diff","patch_url":"https://github.com/w3c/webrtc-pc/pull/175.patch","issue_url":"https://api.github.com/repos/w3c/webrtc-pc/issues/175","number":175,"state":"open","locked":false,"title":"Merge doohickey branch to master","user":{"login":"juberti","id":1821693,"avatar_url":"https://avatars.githubusercontent.com/u/1821693?v=3","gravatar_id":"","url":"https://api.github.com/users/juberti","html_url":"https://github.com/juberti","followers_url":"https://api.github.com/users/juberti/followers","following_url":"https://api.github.com/users/juberti/following{/other_user}","gists_url":"https://api.github.com/users/juberti/gists{/gist_id}","starred_url":"https://api.github.com/users/juberti/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/juberti/subscriptions","organizations_url":"https://api.github.com/users/juberti/orgs","repos_url":"https://api.github.com/users/juberti/repos","events_url":"https://api.github.com/users/juberti/events{/privacy}","received_events_url":"https://api.github.com/users/juberti/received_events","type":"User","site_admin":false},"body":"","created_at":"2015-01-08T21:20:57Z","updated_at":"2015-01-30T22:23:59Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/w3c/webrtc-pc/pulls/175/commits","review_comments_url":"https://api.github.com/repos/w3c/webrtc-pc/pulls/175/comments","review_comment_url":"https://api.github.com/repos/w3c/webrtc-pc/pulls/comments/{number}","comments_url":"https://api.github.com/repos/w3c/webrtc-pc/issues/175/comments","statuses_url":"https://api.github.com/repos/w3c/webrtc-pc/statuses/da69f13024499a69fde439a3dfafd837bf62e715","head":{"label":"w3c:doohickey","ref":"doohickey","sha":"da69f13024499a69fde439a3dfafd837bf62e715","user":{"login":"w3c","id":379216,"avatar_url":"https://avatars.githubusercontent.com/u/379216?v=3","gravatar_id":"","url":"https://api.github.com/users/w3c","html_url":"https://github.com/w3c","followers_url":"https://api.github.com/users/w3c/followers","following_url":"https://api.github.com/users/w3c/following{/other_user}","gists_url":"https://api.github.com/users/w3c/gists{/gist_id}","starred_url":"https://api.github.com/users/w3c/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/w3c/subscriptions","organizations_url":"https://api.github.com/users/w3c/orgs","repos_url":"https://api.github.com/users/w3c/repos","events_url":"https://api.github.com/users/w3c/events{/privacy}","received_events_url":"https://api.github.com/users/w3c/received_events","type":"Organization","site_admin":false},"repo":{"id":23384500,"name":"webrtc-pc","full_name":"w3c/webrtc-pc","owner":{"login":"w3c","id":379216,"avatar_url":"https://avatars.githubusercontent.com/u/379216?v=3","gravatar_id":"","url":"https://api.github.com/users/w3c","html_url":"https://github.com/w3c","followers_url":"https://api.github.com/users/w3c/followers","following_url":"https://api.github.com/users/w3c/following{/other_user}","gists_url":"https://api.github.com/users/w3c/gists{/gist_id}","starred_url":"https://api.github.com/users/w3c/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/w3c/subscriptions","organizations_url":"https://api.github.com/users/w3c/orgs","repos_url":"https://api.github.com/users/w3c/repos","events_url":"https://api.github.com/users/w3c/events{/privacy}","received_events_url":"https://api.github.com/users/w3c/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/w3c/webrtc-pc","description":"WebRTC 1.0 API","fork":false,"url":"https://api.github.com/repos/w3c/webrtc-pc","forks_url":"https://api.github.com/repos/w3c/webrtc-pc/forks","keys_url":"https://api.github.com/repos/w3c/webrtc-pc/keys{/key_id}","collaborators_url":"https://api.github.com/repos/w3c/webrtc-pc/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/w3c/webrtc-pc/teams","hooks_url":"https://api.github.com/repos/w3c/webrtc-pc/hooks","issue_events_url":"https://api.github.com/repos/w3c/webrtc-pc/issues/events{/number}","events_url":"https://api.github.com/repos/w3c/webrtc-pc/events","assignees_url":"https://api.github.com/repos/w3c/webrtc-pc/assignees{/user}","branches_url":"https://api.github.com/repos/w3c/webrtc-pc/branches{/branch}","tags_url":"https://api.github.com/repos/w3c/webrtc-pc/tags","blobs_url":"https://api.github.com/repos/w3c/webrtc-pc/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/w3c/webrtc-pc/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/w3c/webrtc-pc/git/refs{/sha}","trees_url":"https://api.github.com/repos/w3c/webrtc-pc/git/trees{/sha}","statuses_url":"https://api.github.com/repos/w3c/webrtc-pc/statuses/{sha}","languages_url":"https://api.github.com/repos/w3c/webrtc-pc/languages","stargazers_url":"https://api.github.com/repos/w3c/webrtc-pc/stargazers","contributors_url":"https://api.github.com/repos/w3c/webrtc-pc/contributors","subscribers_url":"https://api.github.com/repos/w3c/webrtc-pc/subscribers","subscription_url":"https://api.github.com/repos/w3c/webrtc-pc/subscription","commits_url":"https://api.github.com/repos/w3c/webrtc-pc/commits{/sha}","git_commits_url":"https://api.github.com/repos/w3c/webrtc-pc/git/commits{/sha}","comments_url":"https://api.github.com/repos/w3c/webrtc-pc/comments{/number}","issue_comment_url":"https://api.github.com/repos/w3c/webrtc-pc/issues/comments/{number}","contents_url":"https://api.github.com/repos/w3c/webrtc-pc/contents/{+path}","compare_url":"https://api.github.com/repos/w3c/webrtc-pc/compare/{base}...{head}","merges_url":"https://api.github.com/repos/w3c/webrtc-pc/merges","archive_url":"https://api.github.com/repos/w3c/webrtc-pc/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/w3c/webrtc-pc/downloads","issues_url":"https://api.github.com/repos/w3c/webrtc-pc/issues{/number}","pulls_url":"https://api.github.com/repos/w3c/webrtc-pc/pulls{/number}","milestones_url":"https://api.github.com/repos/w3c/webrtc-pc/milestones{/number}","notifications_url":"https://api.github.com/repos/w3c/webrtc-pc/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/w3c/webrtc-pc/labels{/name}","releases_url":"https://api.github.com/repos/w3c/webrtc-pc/releases{/id}","created_at":"2014-08-27T09:39:00Z","updated_at":"2015-01-29T15:52:51Z","pushed_at":"2015-01-30T21:46:22Z","git_url":"git://github.com/w3c/webrtc-pc.git","ssh_url":"git@github.com:w3c/webrtc-pc.git","clone_url":"https://github.com/w3c/webrtc-pc.git","svn_url":"https://github.com/w3c/webrtc-pc","homepage":null,"size":14722,"stargazers_count":9,"watchers_count":9,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":15,"mirror_url":null,"open_issues_count":58,"forks":15,"open_issues":58,"watchers":9,"default_branch":"master"}},"base":{"label":"w3c:master","ref":"master","sha":"537d8b37ae762693ad1a93c6eb4662cd3184caec","user":{"login":"w3c","id":379216,"avatar_url":"https://avatars.githubusercontent.com/u/379216?v=3","gravatar_id":"","url":"https://api.github.com/users/w3c","html_url":"https://github.com/w3c","followers_url":"https://api.github.com/users/w3c/followers","following_url":"https://api.github.com/users/w3c/following{/other_user}","gists_url":"https://api.github.com/users/w3c/gists{/gist_id}","starred_url":"https://api.github.com/users/w3c/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/w3c/subscriptions","organizations_url":"https://api.github.com/users/w3c/orgs","repos_url":"https://api.github.com/users/w3c/repos","events_url":"https://api.github.com/users/w3c/events{/privacy}","received_events_url":"https://api.github.com/users/w3c/received_events","type":"Organization","site_admin":false},"repo":{"id":23384500,"name":"webrtc-pc","full_name":"w3c/webrtc-pc","owner":{"login":"w3c","id":379216,"avatar_url":"https://avatars.githubusercontent.com/u/379216?v=3","gravatar_id":"","url":"https://api.github.com/users/w3c","html_url":"https://github.com/w3c","followers_url":"https://api.github.com/users/w3c/followers","following_url":"https://api.github.com/users/w3c/following{/other_user}","gists_url":"https://api.github.com/users/w3c/gists{/gist_id}","starred_url":"https://api.github.com/users/w3c/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/w3c/subscriptions","organizations_url":"https://api.github.com/users/w3c/orgs","repos_url":"https://api.github.com/users/w3c/repos","events_url":"https://api.github.com/users/w3c/events{/privacy}","received_events_url":"https://api.github.com/users/w3c/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/w3c/webrtc-pc","description":"WebRTC 1.0 API","fork":false,"url":"https://api.github.com/repos/w3c/webrtc-pc","forks_url":"https://api.github.com/repos/w3c/webrtc-pc/forks","keys_url":"https://api.github.com/repos/w3c/webrtc-pc/keys{/key_id}","collaborators_url":"https://api.github.com/repos/w3c/webrtc-pc/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/w3c/webrtc-pc/teams","hooks_url":"https://api.github.com/repos/w3c/webrtc-pc/hooks","issue_events_url":"https://api.github.com/repos/w3c/webrtc-pc/issues/events{/number}","events_url":"https://api.github.com/repos/w3c/webrtc-pc/events","assignees_url":"https://api.github.com/repos/w3c/webrtc-pc/assignees{/user}","branches_url":"https://api.github.com/repos/w3c/webrtc-pc/branches{/branch}","tags_url":"https://api.github.com/repos/w3c/webrtc-pc/tags","blobs_url":"https://api.github.com/repos/w3c/webrtc-pc/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/w3c/webrtc-pc/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/w3c/webrtc-pc/git/refs{/sha}","trees_url":"https://api.github.com/repos/w3c/webrtc-pc/git/trees{/sha}","statuses_url":"https://api.github.com/repos/w3c/webrtc-pc/statuses/{sha}","languages_url":"https://api.github.com/repos/w3c/webrtc-pc/languages","stargazers_url":"https://api.github.com/repos/w3c/webrtc-pc/stargazers","contributors_url":"https://api.github.com/repos/w3c/webrtc-pc/contributors","subscribers_url":"https://api.github.com/repos/w3c/webrtc-pc/subscribers","subscription_url":"https://api.github.com/repos/w3c/webrtc-pc/subscription","commits_url":"https://api.github.com/repos/w3c/webrtc-pc/commits{/sha}","git_commits_url":"https://api.github.com/repos/w3c/webrtc-pc/git/commits{/sha}","comments_url":"https://api.github.com/repos/w3c/webrtc-pc/comments{/number}","issue_comment_url":"https://api.github.com/repos/w3c/webrtc-pc/issues/comments/{number}","contents_url":"https://api.github.com/repos/w3c/webrtc-pc/contents/{+path}","compare_url":"https://api.github.com/repos/w3c/webrtc-pc/compare/{base}...{head}","merges_url":"https://api.github.com/repos/w3c/webrtc-pc/merges","archive_url":"https://api.github.com/repos/w3c/webrtc-pc/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/w3c/webrtc-pc/downloads","issues_url":"https://api.github.com/repos/w3c/webrtc-pc/issues{/number}","pulls_url":"https://api.github.com/repos/w3c/webrtc-pc/pulls{/number}","milestones_url":"https://api.github.com/repos/w3c/webrtc-pc/milestones{/number}","notifications_url":"https://api.github.com/repos/w3c/webrtc-pc/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/w3c/webrtc-pc/labels{/name}","releases_url":"https://api.github.com/repos/w3c/webrtc-pc/releases{/id}","created_at":"2014-08-27T09:39:00Z","updated_at":"2015-01-29T15:52:51Z","pushed_at":"2015-01-30T21:46:22Z","git_url":"git://github.com/w3c/webrtc-pc.git","ssh_url":"git@github.com:w3c/webrtc-pc.git","clone_url":"https://github.com/w3c/webrtc-pc.git","svn_url":"https://github.com/w3c/webrtc-pc","homepage":null,"size":14722,"stargazers_count":9,"watchers_count":9,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":15,"mirror_url":null,"open_issues_count":58,"forks":15,"open_issues":58,"watchers":9,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/w3c/webrtc-pc/pulls/175"},"html":{"href":"https://github.com/w3c/webrtc-pc/pull/175"},"issue":{"href":"https://api.github.com/repos/w3c/webrtc-pc/issues/175"},"comments":{"href":"https://api.github.com/repos/w3c/webrtc-pc/issues/175/comments"},"review_comments":{"href":"https://api.github.com/repos/w3c/webrtc-pc/pulls/175/comments"},"review_comment":{"href":"https://api.github.com/repos/w3c/webrtc-pc/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/w3c/webrtc-pc/pulls/175/commits"},"statuses":{"href":"https://api.github.com/repos/w3c/webrtc-pc/statuses/da69f13024499a69fde439a3dfafd837bf62e715"}}}}