{"action":"created","comment":{"url":"https://api.github.com/repos/google/ExoPlayer/pulls/comments/181306670","pull_request_review_id":111909633,"id":181306670,"diff_hunk":"@@ -0,0 +1,372 @@\n+/*\n+ * Copyright (C) 2018 The Android Open Source Project\n+ *\n+ * Licensed under the Apache License, Version 2.0 (the \"License\");\n+ * you may not use this file except in compliance with the License.\n+ * You may obtain a copy of the License at\n+ *\n+ *      http://www.apache.org/licenses/LICENSE-2.0\n+ *\n+ * Unless required by applicable law or agreed to in writing, software\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n+ * See the License for the specific language governing permissions and\n+ * limitations under the License.\n+ */\n+package com.google.android.exoplayer2.source.rtp;\n+\n+import android.support.annotation.Nullable;\n+\n+import com.google.android.exoplayer2.extractor.ExtractorInput;\n+\n+import java.io.IOException;\n+import java.util.Arrays;\n+\n+/**\n+ * This class wraps a RTP packet providing method to convert from a byte array\n+ *\n+ * A RTP packet is composed of an header and the subsequent payload. It has the following format:\n+ *\n+ *        0                   1                   2                   3\n+ *        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1\n+ *        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n+ *        |V=2|P|X|  CC   |M|     PT      |       sequence number         |\n+ *        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n+ *        |                           timestamp                           |\n+ *        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n+ *        |           synchronization source (SSRC) identifier            |\n+ *        +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+\n+ *        |            contributing source (CSRC) identifiers             |\n+ *        |                             ....                              |\n+ *        +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+\n+ *        | Profile-specific extension ID |   Extension header length     |\n+ *        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n+ *        |                       Extension header                        |\n+ *        |                             ....                              |\n+ *        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n+ *\n+ * The first twelve octets are present in every RTP packet, while the list of\n+ * CSRC identifiers is present only when inserted by a mixer.\n+ *\n+ */\n+public final class RtpPacket {\n+    public static final int MAX_PACKET_SIZE = 65507;\n+\n+    private static final int RTP_VERSION = 0x02;\n+\n+    private static final int RTP_MIN_SIZE = 4;\n+    private static final int RTP_HDR_SIZE = 12; /* RFC 3550 */\n+    private static final int RTP_MAX_HDR_SIZE = 76;\n+\n+    private static final int RTP_XTHDR_SIZE = 4;\n+\n+    private static final int CSRC_SIZE = 4;\n+\n+    /* MPEG payload-type constants */\n+    private static final int RTP_MPA_TYPE = 0x0E;     // MPEG-1 and MPEG-2 audio\n+    private static final int RTP_MPV_TYPE = 0x20;     // MPEG-1 and MPEG-2 video\n+\n+    //Fields that compose the RTP header\n+    private int version;\n+    private boolean padding;\n+    private boolean extension;\n+    private int csrcCount;\n+\n+    private boolean marker;\n+    private int sequenceNumber;\n+    private int payloadType;\n+\n+    private long timestamp;\n+    private long ssrc;\n+\n+    private long[] csrc;\n+\n+    private byte[] hdrExtension;\n+\n+    private byte[] payload;\n+\n+    private int extLen;\n+    private int padLen;\n+\n+    RtpPacket(Builder builder) {\n+        this.version = builder.version;\n+        this.padding = builder.padding;\n+        this.extension = builder.extension;\n+        this.marker = builder.marker;\n+        this.sequenceNumber = builder.sequenceNumber;\n+        this.payloadType = builder.payloadType;\n+        this.timestamp = builder.timestamp;\n+        this.ssrc = builder.ssrc;\n+        this.csrc = builder.csrc;\n+        this.payload = builder.payload;\n+\n+        csrcCount = csrc != null ? csrc.length : 0;\n+    }\n+\n+    RtpPacket(int version, int padLen, byte[] hdrExtension, boolean marker, int payloadType,\n+              int sequenceNumber, long timestamp, long ssrc, long[] csrc, byte[] payload) {\n+        this.version = version;\n+        this.padding = padLen > 0;\n+        this.padLen = padding ? padLen : 0;\n+        this.extension = hdrExtension != null && hdrExtension.length > 0;\n+        this.hdrExtension = hdrExtension;\n+        this.marker = marker;\n+        this.payloadType = payloadType;\n+        this.sequenceNumber = sequenceNumber;\n+        this.timestamp = timestamp;\n+        this.ssrc = ssrc;\n+        this.csrc = csrc;\n+        this.payload = payload;\n+\n+        csrcCount = csrc != null ? csrc.length : 0;\n+        extLen = (extension) ? hdrExtension.length : 0;\n+    }\n+\n+    public int version() { return version; }\n+\n+    public boolean marker() { return marker; }\n+\n+    public boolean hasExtension() { return extension; }\n+\n+    public int payloadType() { return payloadType; }\n+\n+    public int sequenceNumber() { return sequenceNumber; }\n+\n+    public long timestamp() { return timestamp; }\n+\n+    public long ssrc() { return ssrc; }\n+\n+    public long[] csrc() { return csrc; }\n+\n+    public byte[] payload() { return payload; }\n+\n+    public byte[] extension() { return hdrExtension; }\n+\n+\n+    public byte[] toBytes() {","path":"library/rtp/src/main/java/com/google/android/exoplayer2/source/rtp/RtpPacket.java","position":146,"original_position":146,"commit_id":"7319036734afcd7900013149a7255fd19173ab64","original_commit_id":"7319036734afcd7900013149a7255fd19173ab64","user":{"login":"jiriadamec","id":15211501,"avatar_url":"https://avatars2.githubusercontent.com/u/15211501?v=4","gravatar_id":"","url":"https://api.github.com/users/jiriadamec","html_url":"https://github.com/jiriadamec","followers_url":"https://api.github.com/users/jiriadamec/followers","following_url":"https://api.github.com/users/jiriadamec/following{/other_user}","gists_url":"https://api.github.com/users/jiriadamec/gists{/gist_id}","starred_url":"https://api.github.com/users/jiriadamec/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jiriadamec/subscriptions","organizations_url":"https://api.github.com/users/jiriadamec/orgs","repos_url":"https://api.github.com/users/jiriadamec/repos","events_url":"https://api.github.com/users/jiriadamec/events{/privacy}","received_events_url":"https://api.github.com/users/jiriadamec/received_events","type":"User","site_admin":false},"body":"ok, thank you :)","created_at":"2018-04-13T07:34:28Z","updated_at":"2018-04-13T07:34:28Z","html_url":"https://github.com/google/ExoPlayer/pull/3854#discussion_r181306670","pull_request_url":"https://api.github.com/repos/google/ExoPlayer/pulls/3854","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/google/ExoPlayer/pulls/comments/181306670"},"html":{"href":"https://github.com/google/ExoPlayer/pull/3854#discussion_r181306670"},"pull_request":{"href":"https://api.github.com/repos/google/ExoPlayer/pulls/3854"}},"in_reply_to_id":181296336},"pull_request":{"url":"https://api.github.com/repos/google/ExoPlayer/pulls/3854","id":169477751,"html_url":"https://github.com/google/ExoPlayer/pull/3854","diff_url":"https://github.com/google/ExoPlayer/pull/3854.diff","patch_url":"https://github.com/google/ExoPlayer/pull/3854.patch","issue_url":"https://api.github.com/repos/google/ExoPlayer/issues/3854","number":3854,"state":"open","locked":false,"title":"Add RTSP support","user":{"login":"tresvecesseis","id":10452415,"avatar_url":"https://avatars1.githubusercontent.com/u/10452415?v=4","gravatar_id":"","url":"https://api.github.com/users/tresvecesseis","html_url":"https://github.com/tresvecesseis","followers_url":"https://api.github.com/users/tresvecesseis/followers","following_url":"https://api.github.com/users/tresvecesseis/following{/other_user}","gists_url":"https://api.github.com/users/tresvecesseis/gists{/gist_id}","starred_url":"https://api.github.com/users/tresvecesseis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tresvecesseis/subscriptions","organizations_url":"https://api.github.com/users/tresvecesseis/orgs","repos_url":"https://api.github.com/users/tresvecesseis/repos","events_url":"https://api.github.com/users/tresvecesseis/events{/privacy}","received_events_url":"https://api.github.com/users/tresvecesseis/received_events","type":"User","site_admin":false},"body":"This is our first public release of our in-house RTSP Mediasource, we have to rewrite it several\r\ntimes to make it useful for a wider audience and more easily maintainable and extensible.\r\nIt currently supports:\r\n\r\n- RTSP 1.0 (RFC2326) - with Basic and Digest authentication in standard URL encoding (some\r\ndevices use URL parameters to encode user/password info)\r\n- SDP (RFC4566)\r\n- MP2T over UDP\r\n- RTP (RFC3550)\r\n- RTP payloads:\r\n  - MP2T\r\n  - H264 (RFC6184) - single NAL Unit and Non-Interleaved modes\r\n  - AAC (RFC3640) - LR and HR bitrates, simple, multiple and fragmented AAC frames\r\n(interleaved not implemented)\r\n  - AC3 (RFC4184)\r\n  - G711.1 (RFC5391) - R1, R2A, R2B and R3 modes (untested)\r\n  - G711.0 (RFC7655)\r\n\r\nWe are working to integrate Server Trick Modes and asynchronous notifications, but we have to\r\nclarify the best way to control a push media source (we need to modify explayerImpInternal to\r\ncommunicate the player state to the media source - pause - and the media source to inform that\r\nsome events had ocurred - end of stream reached, begin of stream reached, ...) with\r\nthe Exoplayer lead developers in the meantime the trick modes have to be implemented outside the library.","created_at":"2018-02-15T20:32:32Z","updated_at":"2018-04-13T07:34:28Z","closed_at":null,"merged_at":null,"merge_commit_sha":"5733bde022202134aa89a13dca9711dbc12c3c13","assignee":{"login":"tonihei","id":26897506,"avatar_url":"https://avatars1.githubusercontent.com/u/26897506?v=4","gravatar_id":"","url":"https://api.github.com/users/tonihei","html_url":"https://github.com/tonihei","followers_url":"https://api.github.com/users/tonihei/followers","following_url":"https://api.github.com/users/tonihei/following{/other_user}","gists_url":"https://api.github.com/users/tonihei/gists{/gist_id}","starred_url":"https://api.github.com/users/tonihei/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tonihei/subscriptions","organizations_url":"https://api.github.com/users/tonihei/orgs","repos_url":"https://api.github.com/users/tonihei/repos","events_url":"https://api.github.com/users/tonihei/events{/privacy}","received_events_url":"https://api.github.com/users/tonihei/received_events","type":"User","site_admin":false},"assignees":[{"login":"tonihei","id":26897506,"avatar_url":"https://avatars1.githubusercontent.com/u/26897506?v=4","gravatar_id":"","url":"https://api.github.com/users/tonihei","html_url":"https://github.com/tonihei","followers_url":"https://api.github.com/users/tonihei/followers","following_url":"https://api.github.com/users/tonihei/following{/other_user}","gists_url":"https://api.github.com/users/tonihei/gists{/gist_id}","starred_url":"https://api.github.com/users/tonihei/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tonihei/subscriptions","organizations_url":"https://api.github.com/users/tonihei/orgs","repos_url":"https://api.github.com/users/tonihei/repos","events_url":"https://api.github.com/users/tonihei/events{/privacy}","received_events_url":"https://api.github.com/users/tonihei/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":278711100,"url":"https://api.github.com/repos/google/ExoPlayer/labels/cla:%20yes","name":"cla: yes","color":"159818","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/google/ExoPlayer/pulls/3854/commits","review_comments_url":"https://api.github.com/repos/google/ExoPlayer/pulls/3854/comments","review_comment_url":"https://api.github.com/repos/google/ExoPlayer/pulls/comments{/number}","comments_url":"https://api.github.com/repos/google/ExoPlayer/issues/3854/comments","statuses_url":"https://api.github.com/repos/google/ExoPlayer/statuses/7319036734afcd7900013149a7255fd19173ab64","head":{"label":"tresvecesseis:dev-v2-rtsp","ref":"dev-v2-rtsp","sha":"7319036734afcd7900013149a7255fd19173ab64","user":{"login":"tresvecesseis","id":10452415,"avatar_url":"https://avatars1.githubusercontent.com/u/10452415?v=4","gravatar_id":"","url":"https://api.github.com/users/tresvecesseis","html_url":"https://github.com/tresvecesseis","followers_url":"https://api.github.com/users/tresvecesseis/followers","following_url":"https://api.github.com/users/tresvecesseis/following{/other_user}","gists_url":"https://api.github.com/users/tresvecesseis/gists{/gist_id}","starred_url":"https://api.github.com/users/tresvecesseis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tresvecesseis/subscriptions","organizations_url":"https://api.github.com/users/tresvecesseis/orgs","repos_url":"https://api.github.com/users/tresvecesseis/repos","events_url":"https://api.github.com/users/tresvecesseis/events{/privacy}","received_events_url":"https://api.github.com/users/tresvecesseis/received_events","type":"User","site_admin":false},"repo":{"id":31380973,"name":"ExoPlayer","full_name":"tresvecesseis/ExoPlayer","owner":{"login":"tresvecesseis","id":10452415,"avatar_url":"https://avatars1.githubusercontent.com/u/10452415?v=4","gravatar_id":"","url":"https://api.github.com/users/tresvecesseis","html_url":"https://github.com/tresvecesseis","followers_url":"https://api.github.com/users/tresvecesseis/followers","following_url":"https://api.github.com/users/tresvecesseis/following{/other_user}","gists_url":"https://api.github.com/users/tresvecesseis/gists{/gist_id}","starred_url":"https://api.github.com/users/tresvecesseis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tresvecesseis/subscriptions","organizations_url":"https://api.github.com/users/tresvecesseis/orgs","repos_url":"https://api.github.com/users/tresvecesseis/repos","events_url":"https://api.github.com/users/tresvecesseis/events{/privacy}","received_events_url":"https://api.github.com/users/tresvecesseis/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/tresvecesseis/ExoPlayer","description":"An extensible media player for Android","fork":true,"url":"https://api.github.com/repos/tresvecesseis/ExoPlayer","forks_url":"https://api.github.com/repos/tresvecesseis/ExoPlayer/forks","keys_url":"https://api.github.com/repos/tresvecesseis/ExoPlayer/keys{/key_id}","collaborators_url":"https://api.github.com/repos/tresvecesseis/ExoPlayer/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/tresvecesseis/ExoPlayer/teams","hooks_url":"https://api.github.com/repos/tresvecesseis/ExoPlayer/hooks","issue_events_url":"https://api.github.com/repos/tresvecesseis/ExoPlayer/issues/events{/number}","events_url":"https://api.github.com/repos/tresvecesseis/ExoPlayer/events","assignees_url":"https://api.github.com/repos/tresvecesseis/ExoPlayer/assignees{/user}","branches_url":"https://api.github.com/repos/tresvecesseis/ExoPlayer/branches{/branch}","tags_url":"https://api.github.com/repos/tresvecesseis/ExoPlayer/tags","blobs_url":"https://api.github.com/repos/tresvecesseis/ExoPlayer/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/tresvecesseis/ExoPlayer/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/tresvecesseis/ExoPlayer/git/refs{/sha}","trees_url":"https://api.github.com/repos/tresvecesseis/ExoPlayer/git/trees{/sha}","statuses_url":"https://api.github.com/repos/tresvecesseis/ExoPlayer/statuses/{sha}","languages_url":"https://api.github.com/repos/tresvecesseis/ExoPlayer/languages","stargazers_url":"https://api.github.com/repos/tresvecesseis/ExoPlayer/stargazers","contributors_url":"https://api.github.com/repos/tresvecesseis/ExoPlayer/contributors","subscribers_url":"https://api.github.com/repos/tresvecesseis/ExoPlayer/subscribers","subscription_url":"https://api.github.com/repos/tresvecesseis/ExoPlayer/subscription","commits_url":"https://api.github.com/repos/tresvecesseis/ExoPlayer/commits{/sha}","git_commits_url":"https://api.github.com/repos/tresvecesseis/ExoPlayer/git/commits{/sha}","comments_url":"https://api.github.com/repos/tresvecesseis/ExoPlayer/comments{/number}","issue_comment_url":"https://api.github.com/repos/tresvecesseis/ExoPlayer/issues/comments{/number}","contents_url":"https://api.github.com/repos/tresvecesseis/ExoPlayer/contents/{+path}","compare_url":"https://api.github.com/repos/tresvecesseis/ExoPlayer/compare/{base}...{head}","merges_url":"https://api.github.com/repos/tresvecesseis/ExoPlayer/merges","archive_url":"https://api.github.com/repos/tresvecesseis/ExoPlayer/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/tresvecesseis/ExoPlayer/downloads","issues_url":"https://api.github.com/repos/tresvecesseis/ExoPlayer/issues{/number}","pulls_url":"https://api.github.com/repos/tresvecesseis/ExoPlayer/pulls{/number}","milestones_url":"https://api.github.com/repos/tresvecesseis/ExoPlayer/milestones{/number}","notifications_url":"https://api.github.com/repos/tresvecesseis/ExoPlayer/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/tresvecesseis/ExoPlayer/labels{/name}","releases_url":"https://api.github.com/repos/tresvecesseis/ExoPlayer/releases{/id}","deployments_url":"https://api.github.com/repos/tresvecesseis/ExoPlayer/deployments","created_at":"2015-02-26T18:07:23Z","updated_at":"2018-04-03T11:13:26Z","pushed_at":"2018-04-10T06:52:08Z","git_url":"git://github.com/tresvecesseis/ExoPlayer.git","ssh_url":"git@github.com:tresvecesseis/ExoPlayer.git","clone_url":"https://github.com/tresvecesseis/ExoPlayer.git","svn_url":"https://github.com/tresvecesseis/ExoPlayer","homepage":"","size":60483,"stargazers_count":3,"watchers_count":3,"language":"Java","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":3,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":3,"open_issues":0,"watchers":3,"default_branch":"dev"}},"base":{"label":"google:dev-v2","ref":"dev-v2","sha":"75338530ef47b690de021e2ced5bde683d9c6b07","user":{"login":"google","id":1342004,"avatar_url":"https://avatars1.githubusercontent.com/u/1342004?v=4","gravatar_id":"","url":"https://api.github.com/users/google","html_url":"https://github.com/google","followers_url":"https://api.github.com/users/google/followers","following_url":"https://api.github.com/users/google/following{/other_user}","gists_url":"https://api.github.com/users/google/gists{/gist_id}","starred_url":"https://api.github.com/users/google/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/google/subscriptions","organizations_url":"https://api.github.com/users/google/orgs","repos_url":"https://api.github.com/users/google/repos","events_url":"https://api.github.com/users/google/events{/privacy}","received_events_url":"https://api.github.com/users/google/received_events","type":"Organization","site_admin":false},"repo":{"id":20818126,"name":"ExoPlayer","full_name":"google/ExoPlayer","owner":{"login":"google","id":1342004,"avatar_url":"https://avatars1.githubusercontent.com/u/1342004?v=4","gravatar_id":"","url":"https://api.github.com/users/google","html_url":"https://github.com/google","followers_url":"https://api.github.com/users/google/followers","following_url":"https://api.github.com/users/google/following{/other_user}","gists_url":"https://api.github.com/users/google/gists{/gist_id}","starred_url":"https://api.github.com/users/google/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/google/subscriptions","organizations_url":"https://api.github.com/users/google/orgs","repos_url":"https://api.github.com/users/google/repos","events_url":"https://api.github.com/users/google/events{/privacy}","received_events_url":"https://api.github.com/users/google/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/google/ExoPlayer","description":"An extensible media player for Android","fork":false,"url":"https://api.github.com/repos/google/ExoPlayer","forks_url":"https://api.github.com/repos/google/ExoPlayer/forks","keys_url":"https://api.github.com/repos/google/ExoPlayer/keys{/key_id}","collaborators_url":"https://api.github.com/repos/google/ExoPlayer/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/google/ExoPlayer/teams","hooks_url":"https://api.github.com/repos/google/ExoPlayer/hooks","issue_events_url":"https://api.github.com/repos/google/ExoPlayer/issues/events{/number}","events_url":"https://api.github.com/repos/google/ExoPlayer/events","assignees_url":"https://api.github.com/repos/google/ExoPlayer/assignees{/user}","branches_url":"https://api.github.com/repos/google/ExoPlayer/branches{/branch}","tags_url":"https://api.github.com/repos/google/ExoPlayer/tags","blobs_url":"https://api.github.com/repos/google/ExoPlayer/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/google/ExoPlayer/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/google/ExoPlayer/git/refs{/sha}","trees_url":"https://api.github.com/repos/google/ExoPlayer/git/trees{/sha}","statuses_url":"https://api.github.com/repos/google/ExoPlayer/statuses/{sha}","languages_url":"https://api.github.com/repos/google/ExoPlayer/languages","stargazers_url":"https://api.github.com/repos/google/ExoPlayer/stargazers","contributors_url":"https://api.github.com/repos/google/ExoPlayer/contributors","subscribers_url":"https://api.github.com/repos/google/ExoPlayer/subscribers","subscription_url":"https://api.github.com/repos/google/ExoPlayer/subscription","commits_url":"https://api.github.com/repos/google/ExoPlayer/commits{/sha}","git_commits_url":"https://api.github.com/repos/google/ExoPlayer/git/commits{/sha}","comments_url":"https://api.github.com/repos/google/ExoPlayer/comments{/number}","issue_comment_url":"https://api.github.com/repos/google/ExoPlayer/issues/comments{/number}","contents_url":"https://api.github.com/repos/google/ExoPlayer/contents/{+path}","compare_url":"https://api.github.com/repos/google/ExoPlayer/compare/{base}...{head}","merges_url":"https://api.github.com/repos/google/ExoPlayer/merges","archive_url":"https://api.github.com/repos/google/ExoPlayer/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/google/ExoPlayer/downloads","issues_url":"https://api.github.com/repos/google/ExoPlayer/issues{/number}","pulls_url":"https://api.github.com/repos/google/ExoPlayer/pulls{/number}","milestones_url":"https://api.github.com/repos/google/ExoPlayer/milestones{/number}","notifications_url":"https://api.github.com/repos/google/ExoPlayer/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/google/ExoPlayer/labels{/name}","releases_url":"https://api.github.com/repos/google/ExoPlayer/releases{/id}","deployments_url":"https://api.github.com/repos/google/ExoPlayer/deployments","created_at":"2014-06-13T21:19:18Z","updated_at":"2018-04-13T04:43:26Z","pushed_at":"2018-04-10T23:33:32Z","git_url":"git://github.com/google/ExoPlayer.git","ssh_url":"git@github.com:google/ExoPlayer.git","clone_url":"https://github.com/google/ExoPlayer.git","svn_url":"https://github.com/google/ExoPlayer","homepage":"","size":61665,"stargazers_count":9673,"watchers_count":9673,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":3120,"mirror_url":null,"archived":false,"open_issues_count":278,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":3120,"open_issues":278,"watchers":9673,"default_branch":"release-v2"}},"_links":{"self":{"href":"https://api.github.com/repos/google/ExoPlayer/pulls/3854"},"html":{"href":"https://github.com/google/ExoPlayer/pull/3854"},"issue":{"href":"https://api.github.com/repos/google/ExoPlayer/issues/3854"},"comments":{"href":"https://api.github.com/repos/google/ExoPlayer/issues/3854/comments"},"review_comments":{"href":"https://api.github.com/repos/google/ExoPlayer/pulls/3854/comments"},"review_comment":{"href":"https://api.github.com/repos/google/ExoPlayer/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/google/ExoPlayer/pulls/3854/commits"},"statuses":{"href":"https://api.github.com/repos/google/ExoPlayer/statuses/7319036734afcd7900013149a7255fd19173ab64"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"jiriadamec"}}