{"action":"closed","number":160,"pull_request":{"url":"https://api.github.com/repos/smartdevicelink/sdl_android/pulls/160","id":32966290,"html_url":"https://github.com/smartdevicelink/sdl_android/pull/160","diff_url":"https://github.com/smartdevicelink/sdl_android/pull/160.diff","patch_url":"https://github.com/smartdevicelink/sdl_android/pull/160.patch","issue_url":"https://api.github.com/repos/smartdevicelink/sdl_android/issues/160","number":160,"state":"closed","locked":false,"title":"Feature/audio video streaming services","user":{"login":"mrapitis","id":8443128,"avatar_url":"https://avatars.githubusercontent.com/u/8443128?v=3","gravatar_id":"","url":"https://api.github.com/users/mrapitis","html_url":"https://github.com/mrapitis","followers_url":"https://api.github.com/users/mrapitis/followers","following_url":"https://api.github.com/users/mrapitis/following{/other_user}","gists_url":"https://api.github.com/users/mrapitis/gists{/gist_id}","starred_url":"https://api.github.com/users/mrapitis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mrapitis/subscriptions","organizations_url":"https://api.github.com/users/mrapitis/orgs","repos_url":"https://api.github.com/users/mrapitis/repos","events_url":"https://api.github.com/users/mrapitis/events{/privacy}","received_events_url":"https://api.github.com/users/mrapitis/received_events","type":"User","site_admin":false},"body":":boom: Ready For Review :boom: \r\n\r\n<h2>Summary</h2>\r\n\r\nThis PR introduces new and updates existing API’s that provide H.264 video and PCM audio streaming services.  Utilizing startH264 and startPCM API methods, developers can open video and audio services and subsequently stream raw H264 video and raw PCM audio to sdlcore.  A brief overview regarding SDL services is described below:\r\n\r\n<h2>SDL Services</h2>\r\n\r\nOnce an application is registered successfully and has established a session, the app has access to services.  After registration, the app may start and stop video and audio services over the established session. By default, applications that are registered receive access to two basic services, RPC and Hybrid.\r\n\r\nBelow are various services defined by SmartDeviceLink\r\n<ul> \r\n<li>RPC Service – (automatically started when the app registers) defines the specific APIs sdlcore must perform on behalf of an application , establishes the application listing within sdlcore, performs control functions, and manages HMI.</li>\r\n<li>Hybrid Service -  (automatically started when the app registers) mimics the RPC Service directly, but includes binary data as part of the RPC service</li>\r\n<li>Audio Service (started after a successful startPCM request has been completed)\r\nSends raw PCM audio data from the device to sdlcore. </li>\r\n<li>H.264 Service (started after a successful startH264 request has been completed)\r\nSends raw H264 video data from the device to sdlcore. </li>\r\n</ul>\r\n\r\n<h3>TODO</h3>\r\n- [X] Add functional hooks for AudioStreaming Service into proxy layers: Protocol, Connection, Base.\r\n- [X] Update existing incomplete developer facing api’s for startH264, startPCM, endH264, end endPCM methods.\r\n- [X] Increase AbstractPacketizer, StreamPacketizer read buffer sizes for optimal performance\r\n- [X] Increase default PipedInputStream buffer size for optimal performance.\r\n- [X] Add method to perform video encoding internally in proxy making a generic opengl surface available for app developers. \r\n- [X] Update java documentation to detail usage of developer facing video / audio streaming API's below.\r\n```\r\npublic boolean startH264(InputStream is) \r\n\r\npublic OutputStream startH264() \r\n\r\npublic void endH264() \r\n\r\npublic boolean startPCM(InputStream is) \r\n\r\npublic OutputStream startPCM() \r\n\r\npublic void endPCM() \r\n```","created_at":"2015-04-09T15:24:37Z","updated_at":"2015-07-23T13:39:03Z","closed_at":"2015-07-23T13:39:03Z","merged_at":null,"merge_commit_sha":"54aa1e19780a84ae30dc777b7b828a2f2db5690f","assignee":{"login":"joeygrover","id":6579474,"avatar_url":"https://avatars.githubusercontent.com/u/6579474?v=3","gravatar_id":"","url":"https://api.github.com/users/joeygrover","html_url":"https://github.com/joeygrover","followers_url":"https://api.github.com/users/joeygrover/followers","following_url":"https://api.github.com/users/joeygrover/following{/other_user}","gists_url":"https://api.github.com/users/joeygrover/gists{/gist_id}","starred_url":"https://api.github.com/users/joeygrover/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/joeygrover/subscriptions","organizations_url":"https://api.github.com/users/joeygrover/orgs","repos_url":"https://api.github.com/users/joeygrover/repos","events_url":"https://api.github.com/users/joeygrover/events{/privacy}","received_events_url":"https://api.github.com/users/joeygrover/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/smartdevicelink/sdl_android/pulls/160/commits","review_comments_url":"https://api.github.com/repos/smartdevicelink/sdl_android/pulls/160/comments","review_comment_url":"https://api.github.com/repos/smartdevicelink/sdl_android/pulls/comments{/number}","comments_url":"https://api.github.com/repos/smartdevicelink/sdl_android/issues/160/comments","statuses_url":"https://api.github.com/repos/smartdevicelink/sdl_android/statuses/6061b632a611dfb13f306f550c8a6b242bebfe98","head":{"label":"mrapitis:feature/audio-video-streaming","ref":"feature/audio-video-streaming","sha":"6061b632a611dfb13f306f550c8a6b242bebfe98","user":{"login":"mrapitis","id":8443128,"avatar_url":"https://avatars.githubusercontent.com/u/8443128?v=3","gravatar_id":"","url":"https://api.github.com/users/mrapitis","html_url":"https://github.com/mrapitis","followers_url":"https://api.github.com/users/mrapitis/followers","following_url":"https://api.github.com/users/mrapitis/following{/other_user}","gists_url":"https://api.github.com/users/mrapitis/gists{/gist_id}","starred_url":"https://api.github.com/users/mrapitis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mrapitis/subscriptions","organizations_url":"https://api.github.com/users/mrapitis/orgs","repos_url":"https://api.github.com/users/mrapitis/repos","events_url":"https://api.github.com/users/mrapitis/events{/privacy}","received_events_url":"https://api.github.com/users/mrapitis/received_events","type":"User","site_admin":false},"repo":{"id":26880912,"name":"sdl_android","full_name":"mrapitis/sdl_android","owner":{"login":"mrapitis","id":8443128,"avatar_url":"https://avatars.githubusercontent.com/u/8443128?v=3","gravatar_id":"","url":"https://api.github.com/users/mrapitis","html_url":"https://github.com/mrapitis","followers_url":"https://api.github.com/users/mrapitis/followers","following_url":"https://api.github.com/users/mrapitis/following{/other_user}","gists_url":"https://api.github.com/users/mrapitis/gists{/gist_id}","starred_url":"https://api.github.com/users/mrapitis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mrapitis/subscriptions","organizations_url":"https://api.github.com/users/mrapitis/orgs","repos_url":"https://api.github.com/users/mrapitis/repos","events_url":"https://api.github.com/users/mrapitis/events{/privacy}","received_events_url":"https://api.github.com/users/mrapitis/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/mrapitis/sdl_android","description":"SmartDeviceLink Android Proxy","fork":true,"url":"https://api.github.com/repos/mrapitis/sdl_android","forks_url":"https://api.github.com/repos/mrapitis/sdl_android/forks","keys_url":"https://api.github.com/repos/mrapitis/sdl_android/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mrapitis/sdl_android/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mrapitis/sdl_android/teams","hooks_url":"https://api.github.com/repos/mrapitis/sdl_android/hooks","issue_events_url":"https://api.github.com/repos/mrapitis/sdl_android/issues/events{/number}","events_url":"https://api.github.com/repos/mrapitis/sdl_android/events","assignees_url":"https://api.github.com/repos/mrapitis/sdl_android/assignees{/user}","branches_url":"https://api.github.com/repos/mrapitis/sdl_android/branches{/branch}","tags_url":"https://api.github.com/repos/mrapitis/sdl_android/tags","blobs_url":"https://api.github.com/repos/mrapitis/sdl_android/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mrapitis/sdl_android/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mrapitis/sdl_android/git/refs{/sha}","trees_url":"https://api.github.com/repos/mrapitis/sdl_android/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mrapitis/sdl_android/statuses/{sha}","languages_url":"https://api.github.com/repos/mrapitis/sdl_android/languages","stargazers_url":"https://api.github.com/repos/mrapitis/sdl_android/stargazers","contributors_url":"https://api.github.com/repos/mrapitis/sdl_android/contributors","subscribers_url":"https://api.github.com/repos/mrapitis/sdl_android/subscribers","subscription_url":"https://api.github.com/repos/mrapitis/sdl_android/subscription","commits_url":"https://api.github.com/repos/mrapitis/sdl_android/commits{/sha}","git_commits_url":"https://api.github.com/repos/mrapitis/sdl_android/git/commits{/sha}","comments_url":"https://api.github.com/repos/mrapitis/sdl_android/comments{/number}","issue_comment_url":"https://api.github.com/repos/mrapitis/sdl_android/issues/comments{/number}","contents_url":"https://api.github.com/repos/mrapitis/sdl_android/contents/{+path}","compare_url":"https://api.github.com/repos/mrapitis/sdl_android/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mrapitis/sdl_android/merges","archive_url":"https://api.github.com/repos/mrapitis/sdl_android/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mrapitis/sdl_android/downloads","issues_url":"https://api.github.com/repos/mrapitis/sdl_android/issues{/number}","pulls_url":"https://api.github.com/repos/mrapitis/sdl_android/pulls{/number}","milestones_url":"https://api.github.com/repos/mrapitis/sdl_android/milestones{/number}","notifications_url":"https://api.github.com/repos/mrapitis/sdl_android/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mrapitis/sdl_android/labels{/name}","releases_url":"https://api.github.com/repos/mrapitis/sdl_android/releases{/id}","created_at":"2014-11-19T20:48:09Z","updated_at":"2015-04-08T14:03:55Z","pushed_at":"2015-07-22T19:33:00Z","git_url":"git://github.com/mrapitis/sdl_android.git","ssh_url":"git@github.com:mrapitis/sdl_android.git","clone_url":"https://github.com/mrapitis/sdl_android.git","svn_url":"https://github.com/mrapitis/sdl_android","homepage":"","size":924,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"smartdevicelink:develop","ref":"develop","sha":"4d252164a1d078eb7428da4c878ccc9a67a6bf34","user":{"login":"smartdevicelink","id":8671397,"avatar_url":"https://avatars.githubusercontent.com/u/8671397?v=3","gravatar_id":"","url":"https://api.github.com/users/smartdevicelink","html_url":"https://github.com/smartdevicelink","followers_url":"https://api.github.com/users/smartdevicelink/followers","following_url":"https://api.github.com/users/smartdevicelink/following{/other_user}","gists_url":"https://api.github.com/users/smartdevicelink/gists{/gist_id}","starred_url":"https://api.github.com/users/smartdevicelink/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/smartdevicelink/subscriptions","organizations_url":"https://api.github.com/users/smartdevicelink/orgs","repos_url":"https://api.github.com/users/smartdevicelink/repos","events_url":"https://api.github.com/users/smartdevicelink/events{/privacy}","received_events_url":"https://api.github.com/users/smartdevicelink/received_events","type":"Organization","site_admin":false},"repo":{"id":24610319,"name":"sdl_android","full_name":"smartdevicelink/sdl_android","owner":{"login":"smartdevicelink","id":8671397,"avatar_url":"https://avatars.githubusercontent.com/u/8671397?v=3","gravatar_id":"","url":"https://api.github.com/users/smartdevicelink","html_url":"https://github.com/smartdevicelink","followers_url":"https://api.github.com/users/smartdevicelink/followers","following_url":"https://api.github.com/users/smartdevicelink/following{/other_user}","gists_url":"https://api.github.com/users/smartdevicelink/gists{/gist_id}","starred_url":"https://api.github.com/users/smartdevicelink/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/smartdevicelink/subscriptions","organizations_url":"https://api.github.com/users/smartdevicelink/orgs","repos_url":"https://api.github.com/users/smartdevicelink/repos","events_url":"https://api.github.com/users/smartdevicelink/events{/privacy}","received_events_url":"https://api.github.com/users/smartdevicelink/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/smartdevicelink/sdl_android","description":"SmartDeviceLink mobile library for Android","fork":false,"url":"https://api.github.com/repos/smartdevicelink/sdl_android","forks_url":"https://api.github.com/repos/smartdevicelink/sdl_android/forks","keys_url":"https://api.github.com/repos/smartdevicelink/sdl_android/keys{/key_id}","collaborators_url":"https://api.github.com/repos/smartdevicelink/sdl_android/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/smartdevicelink/sdl_android/teams","hooks_url":"https://api.github.com/repos/smartdevicelink/sdl_android/hooks","issue_events_url":"https://api.github.com/repos/smartdevicelink/sdl_android/issues/events{/number}","events_url":"https://api.github.com/repos/smartdevicelink/sdl_android/events","assignees_url":"https://api.github.com/repos/smartdevicelink/sdl_android/assignees{/user}","branches_url":"https://api.github.com/repos/smartdevicelink/sdl_android/branches{/branch}","tags_url":"https://api.github.com/repos/smartdevicelink/sdl_android/tags","blobs_url":"https://api.github.com/repos/smartdevicelink/sdl_android/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/smartdevicelink/sdl_android/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/smartdevicelink/sdl_android/git/refs{/sha}","trees_url":"https://api.github.com/repos/smartdevicelink/sdl_android/git/trees{/sha}","statuses_url":"https://api.github.com/repos/smartdevicelink/sdl_android/statuses/{sha}","languages_url":"https://api.github.com/repos/smartdevicelink/sdl_android/languages","stargazers_url":"https://api.github.com/repos/smartdevicelink/sdl_android/stargazers","contributors_url":"https://api.github.com/repos/smartdevicelink/sdl_android/contributors","subscribers_url":"https://api.github.com/repos/smartdevicelink/sdl_android/subscribers","subscription_url":"https://api.github.com/repos/smartdevicelink/sdl_android/subscription","commits_url":"https://api.github.com/repos/smartdevicelink/sdl_android/commits{/sha}","git_commits_url":"https://api.github.com/repos/smartdevicelink/sdl_android/git/commits{/sha}","comments_url":"https://api.github.com/repos/smartdevicelink/sdl_android/comments{/number}","issue_comment_url":"https://api.github.com/repos/smartdevicelink/sdl_android/issues/comments{/number}","contents_url":"https://api.github.com/repos/smartdevicelink/sdl_android/contents/{+path}","compare_url":"https://api.github.com/repos/smartdevicelink/sdl_android/compare/{base}...{head}","merges_url":"https://api.github.com/repos/smartdevicelink/sdl_android/merges","archive_url":"https://api.github.com/repos/smartdevicelink/sdl_android/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/smartdevicelink/sdl_android/downloads","issues_url":"https://api.github.com/repos/smartdevicelink/sdl_android/issues{/number}","pulls_url":"https://api.github.com/repos/smartdevicelink/sdl_android/pulls{/number}","milestones_url":"https://api.github.com/repos/smartdevicelink/sdl_android/milestones{/number}","notifications_url":"https://api.github.com/repos/smartdevicelink/sdl_android/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/smartdevicelink/sdl_android/labels{/name}","releases_url":"https://api.github.com/repos/smartdevicelink/sdl_android/releases{/id}","created_at":"2014-09-29T19:49:09Z","updated_at":"2015-06-02T20:49:46Z","pushed_at":"2015-07-23T13:38:25Z","git_url":"git://github.com/smartdevicelink/sdl_android.git","ssh_url":"git@github.com:smartdevicelink/sdl_android.git","clone_url":"https://github.com/smartdevicelink/sdl_android.git","svn_url":"https://github.com/smartdevicelink/sdl_android","homepage":"","size":5484,"stargazers_count":10,"watchers_count":10,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":15,"mirror_url":null,"open_issues_count":86,"forks":15,"open_issues":86,"watchers":10,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/smartdevicelink/sdl_android/pulls/160"},"html":{"href":"https://github.com/smartdevicelink/sdl_android/pull/160"},"issue":{"href":"https://api.github.com/repos/smartdevicelink/sdl_android/issues/160"},"comments":{"href":"https://api.github.com/repos/smartdevicelink/sdl_android/issues/160/comments"},"review_comments":{"href":"https://api.github.com/repos/smartdevicelink/sdl_android/pulls/160/comments"},"review_comment":{"href":"https://api.github.com/repos/smartdevicelink/sdl_android/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/smartdevicelink/sdl_android/pulls/160/commits"},"statuses":{"href":"https://api.github.com/repos/smartdevicelink/sdl_android/statuses/6061b632a611dfb13f306f550c8a6b242bebfe98"}},"merged":false,"mergeable":false,"mergeable_state":"dirty","merged_by":null,"comments":1,"review_comments":6,"commits":18,"additions":982,"deletions":150,"changed_files":21}}