{"action":"created","issue":{"url":"https://api.github.com/repos/google/ExoPlayer/issues/1838","repository_url":"https://api.github.com/repos/google/ExoPlayer","labels_url":"https://api.github.com/repos/google/ExoPlayer/issues/1838/labels{/name}","comments_url":"https://api.github.com/repos/google/ExoPlayer/issues/1838/comments","events_url":"https://api.github.com/repos/google/ExoPlayer/issues/1838/events","html_url":"https://github.com/google/ExoPlayer/issues/1838","id":178053546,"number":1838,"title":"RFC: Extending dash manifest with custom data","user":{"login":"pakerfeldt","id":195860,"avatar_url":"https://avatars.githubusercontent.com/u/195860?v=3","gravatar_id":"","url":"https://api.github.com/users/pakerfeldt","html_url":"https://github.com/pakerfeldt","followers_url":"https://api.github.com/users/pakerfeldt/followers","following_url":"https://api.github.com/users/pakerfeldt/following{/other_user}","gists_url":"https://api.github.com/users/pakerfeldt/gists{/gist_id}","starred_url":"https://api.github.com/users/pakerfeldt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pakerfeldt/subscriptions","organizations_url":"https://api.github.com/users/pakerfeldt/orgs","repos_url":"https://api.github.com/users/pakerfeldt/repos","events_url":"https://api.github.com/users/pakerfeldt/events{/privacy}","received_events_url":"https://api.github.com/users/pakerfeldt/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2016-09-20T13:03:37Z","updated_at":"2016-09-22T14:01:54Z","closed_at":"2016-09-22T14:01:54Z","body":"This is not a question with ExoPlayer per se but since I know there's a lot of DASH knowledge here I hope I can reach out for some comments.\r\n\r\nWe're looking for a way to embed custom data into our DASH manifests. Specifically for providing thumbnails for the clients. To me it feels like it would fit very well in the AdaptationSet model.\r\n\r\nConsider something like this:\r\n\r\n>     <AdaptationSet id=\"10\" contentType=\"image\" mimeType=\"image/jpeg\">\r\n         <Representation id=\"0\" width=\"1280\" height=\"720\" framerate=\"100\">\r\n             <BaseURL>http://cdn.example.com/c760d497c55344118cccfbe477e85315/dc806700ec1e4b33d0935f85a36bbf13/sprite_1280_720_100</BaseURL>\r\n         </Representation>\r\n         <Representation id=\"1\" width=\"1920\" height=\"1080\" framerate=\"100\">\r\n             <BaseURL>http://cdn.example.com/c760d497c55344118cccfbe477e85315/dc806700ec1e4b33d0935f85a36bbf13/sprite_1920_1280_100</BaseURL>\r\n         </Representation>\r\n    </AdaptationSet>\r\n\r\nThe only bit that's perhaps a bit awkward is the framerate, which I use to retrofit information of how many thumbnails are encoded in the given jpeg.\r\n\r\nWe would use our own AdaptationSet id to identify the set and extract the data necessary. This seems to work just fine with ExoPlayer, however Shaka fails to handle the AdaptationSet while parsing the manifest. I'm trying to understand if this is a valid usage of DASH or if we should define our own app namespace in the XML and put the information under a custom element. Going with the latter I would definitely have to modify ExoPlayer a bit or somehow parse the XML a second time which complicates things a bit."},"comment":{"url":"https://api.github.com/repos/google/ExoPlayer/issues/comments/248912172","html_url":"https://github.com/google/ExoPlayer/issues/1838#issuecomment-248912172","issue_url":"https://api.github.com/repos/google/ExoPlayer/issues/1838","id":248912172,"user":{"login":"ojw28","id":7881572,"avatar_url":"https://avatars.githubusercontent.com/u/7881572?v=3","gravatar_id":"","url":"https://api.github.com/users/ojw28","html_url":"https://github.com/ojw28","followers_url":"https://api.github.com/users/ojw28/followers","following_url":"https://api.github.com/users/ojw28/following{/other_user}","gists_url":"https://api.github.com/users/ojw28/gists{/gist_id}","starred_url":"https://api.github.com/users/ojw28/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ojw28/subscriptions","organizations_url":"https://api.github.com/users/ojw28/orgs","repos_url":"https://api.github.com/users/ojw28/repos","events_url":"https://api.github.com/users/ojw28/events{/privacy}","received_events_url":"https://api.github.com/users/ojw28/received_events","type":"User","site_admin":false},"created_at":"2016-09-22T14:01:54Z","updated_at":"2016-09-22T14:01:54Z","body":"> however Shaka fails to handle the AdaptationSet while parsing the manifest\r\n\r\nI think a player should probably ignore an AdaptationSet that it doesn't know how to handle, or at least have the option of doing so. If Shaka is failing for this reason then you should probably open a bug on that project asking if it would be more correct for them to ignore it.\r\n\r\n> I'm trying to understand if this is a valid usage of DASH or if we should define our own app namespace in the XML and put the information under a custom element. Going with the latter I would definitely have to modify ExoPlayer a bit or somehow parse the XML a second time which complicates things a bit.\r\n\r\nThe DASH spec is very permissive (most often you'll find that something is just not defined, rather than being explicitly forbidden). So it feels quite likely that you're not explicitly violating the spec. You'd have to convince yourself though; I didn't look in any depth. On the assumption that you're not explicitly violating the spec, I guess the remaining risk would be that handling of contentType=\"image\" AdaptationSet elements could be defined in some future version of the spec or in the DASH interop guidelines, in a way that's different to what you've done.\r\n\r\nNote that if you control server and client side (for all clients), then interoperability becomes less important. There's nothing forcing you to use XML style DASH manifests at all in this scenario. You could use your own binary format (e.g. for efficiency) and include whatever you like. If using ExoPlayer in such a scenario, the extra client work you'd need to do would be to parse your binary format into a DashManifest instance for the player (whilst also doing whatever else you want to do with additional data in the response). Injecting a DashManifest might be awkward (not possible?) in V2 right now, but we'll add that functionality back in as/when someone needs it."}}
{"actor":{"display_login":"ojw28"}}