{"action":"created","issue":{"url":"https://api.github.com/repos/servo/servo/issues/24068","repository_url":"https://api.github.com/repos/servo/servo","labels_url":"https://api.github.com/repos/servo/servo/issues/24068/labels{/name}","comments_url":"https://api.github.com/repos/servo/servo/issues/24068/comments","events_url":"https://api.github.com/repos/servo/servo/issues/24068/events","html_url":"https://github.com/servo/servo/issues/24068","id":485898706,"node_id":"MDU6SXNzdWU0ODU4OTg3MDY=","number":24068,"title":"Embedder API for gstreamer audio setup","user":{"login":"asajeffrey","id":403333,"node_id":"MDQ6VXNlcjQwMzMzMw==","avatar_url":"https://avatars1.githubusercontent.com/u/403333?v=4","gravatar_id":"","url":"https://api.github.com/users/asajeffrey","html_url":"https://github.com/asajeffrey","followers_url":"https://api.github.com/users/asajeffrey/followers","following_url":"https://api.github.com/users/asajeffrey/following{/other_user}","gists_url":"https://api.github.com/users/asajeffrey/gists{/gist_id}","starred_url":"https://api.github.com/users/asajeffrey/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/asajeffrey/subscriptions","organizations_url":"https://api.github.com/users/asajeffrey/orgs","repos_url":"https://api.github.com/users/asajeffrey/repos","events_url":"https://api.github.com/users/asajeffrey/events{/privacy}","received_events_url":"https://api.github.com/users/asajeffrey/received_events","type":"User","site_admin":false},"labels":[{"id":1046321076,"node_id":"MDU6TGFiZWwxMDQ2MzIxMDc2","url":"https://api.github.com/repos/servo/servo/labels/A-content/media","name":"A-content/media","color":"d7e102","default":false},{"id":104292340,"node_id":"MDU6TGFiZWwxMDQyOTIzNDA=","url":"https://api.github.com/repos/servo/servo/labels/A-embedding","name":"A-embedding","color":"d7e102","default":false},{"id":1108818256,"node_id":"MDU6TGFiZWwxMTA4ODE4MjU2","url":"https://api.github.com/repos/servo/servo/labels/P-magic%20leap","name":"P-magic leap","color":"336699","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":10,"created_at":"2019-08-27T16:01:25Z","updated_at":"2019-08-29T18:12:31Z","closed_at":null,"author_association":"MEMBER","body":"This came up in the context of magicleap, but it applies to any device which needs to be able to customize the audio back end.\r\n\r\nCurrently we pass in the (E)GLContext from the embedder to Servo, and then to gstreamer for use as the video target, but we don't have a similar setup for audio. This makes it tricky to support devices like magicleap's 3D audio, even though gstreamer can handle it, because Servo is sitting between gstreamer and the embedder."},"comment":{"url":"https://api.github.com/repos/servo/servo/issues/comments/526300681","html_url":"https://github.com/servo/servo/issues/24068#issuecomment-526300681","issue_url":"https://api.github.com/repos/servo/servo/issues/24068","id":526300681,"node_id":"MDEyOklzc3VlQ29tbWVudDUyNjMwMDY4MQ==","user":{"login":"gterzian","id":2792687,"node_id":"MDQ6VXNlcjI3OTI2ODc=","avatar_url":"https://avatars2.githubusercontent.com/u/2792687?v=4","gravatar_id":"","url":"https://api.github.com/users/gterzian","html_url":"https://github.com/gterzian","followers_url":"https://api.github.com/users/gterzian/followers","following_url":"https://api.github.com/users/gterzian/following{/other_user}","gists_url":"https://api.github.com/users/gterzian/gists{/gist_id}","starred_url":"https://api.github.com/users/gterzian/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gterzian/subscriptions","organizations_url":"https://api.github.com/users/gterzian/orgs","repos_url":"https://api.github.com/users/gterzian/repos","events_url":"https://api.github.com/users/gterzian/events{/privacy}","received_events_url":"https://api.github.com/users/gterzian/received_events","type":"User","site_admin":false},"created_at":"2019-08-29T18:12:31Z","updated_at":"2019-08-29T18:12:31Z","author_association":"COLLABORATOR","body":"@xclaesse Thanks!\r\n\r\nSo that means we cannot pass a callback from the main-thread to the audio backend upon initialization, since that callback would not be executing on the main-thread. \r\n\r\nInstead, it sounds like we need to send a message from the audio backend(dealing internally with the gstreamer message-bus) to the main-thread(the \"embedder\" really), and asking it to create the `lumin::AudioNode` and send it back to the backend, probably then itself blocking on a reply back from the backend that the rest of the plumbing has been performed, as a way to block the main-thread event-loop while the backend is busy hooking-up the `lumin::AudioNode`\r\n\r\nFor me the only question is whether the message sending the `lumin::AudioNode` to the backend could be over IPC or not. Is lumin::AudioNode something that could be serialized and sent across process?\r\n"}}
{"actor":{"display_login":"gterzian"}}