{"action":"created","issue":{"url":"https://api.github.com/repos/gpac/gpac/issues/339","labels_url":"https://api.github.com/repos/gpac/gpac/issues/339/labels{/name}","comments_url":"https://api.github.com/repos/gpac/gpac/issues/339/comments","events_url":"https://api.github.com/repos/gpac/gpac/issues/339/events","html_url":"https://github.com/gpac/gpac/pull/339","id":119483642,"number":339,"title":"Added missing DASH-IF IOP profiles.","user":{"login":"vladimir-kazakov","id":3518844,"avatar_url":"https://avatars.githubusercontent.com/u/3518844?v=3","gravatar_id":"","url":"https://api.github.com/users/vladimir-kazakov","html_url":"https://github.com/vladimir-kazakov","followers_url":"https://api.github.com/users/vladimir-kazakov/followers","following_url":"https://api.github.com/users/vladimir-kazakov/following{/other_user}","gists_url":"https://api.github.com/users/vladimir-kazakov/gists{/gist_id}","starred_url":"https://api.github.com/users/vladimir-kazakov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vladimir-kazakov/subscriptions","organizations_url":"https://api.github.com/users/vladimir-kazakov/orgs","repos_url":"https://api.github.com/users/vladimir-kazakov/repos","events_url":"https://api.github.com/users/vladimir-kazakov/events{/privacy}","received_events_url":"https://api.github.com/users/vladimir-kazakov/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2015-11-30T12:34:48Z","updated_at":"2015-12-03T08:48:12Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/gpac/gpac/pulls/339","html_url":"https://github.com/gpac/gpac/pull/339","diff_url":"https://github.com/gpac/gpac/pull/339.diff","patch_url":"https://github.com/gpac/gpac/pull/339.patch"},"body":"This change resolves the issue #41. It adds missing DASH-IF IOP profiles, as well as obsoletes the current, wrong ones. Using obsolete profiles will produce a warning.\r\n\r\nThe logic of using DASH-IF IOP profiles was also changed. Previously, using `dashavc264:live` was implicitly enabling `-url-template`, for example. But since `:live` and `:onDemand` parts are not included in the names of profiles anymore, users have to be more specific about what they want. For, example, in order to achieve the same behavior as in the previous example, the user must specify: `-profile \"dashif264\" -url-template`. For on-demand case, it will be something like this: `-profile \"dashif264\" -single-segment`.\r\n\r\nThis change is only about correct identifiers for different DASH-IF IOP profiles. Strictly speaking, each profile has its own restrictions, so, ideally, MP4Box would generate some warnings or errors if the user wants to do something that is restricted. I'm not sure that it's needed, though. First of all, it would complicate MP4Box, which is bad. And another reason is that perhaps it's a job of validators to check for compliance.\r\n\r\nAnyway, with this change, it's now possible to conform to different DASH-IF IOP profiles, using not only H.264/AVC, but H.265/HEVC as well."},"comment":{"url":"https://api.github.com/repos/gpac/gpac/issues/comments/161554412","html_url":"https://github.com/gpac/gpac/pull/339#issuecomment-161554412","issue_url":"https://api.github.com/repos/gpac/gpac/issues/339","id":161554412,"user":{"login":"vladimir-kazakov","id":3518844,"avatar_url":"https://avatars.githubusercontent.com/u/3518844?v=3","gravatar_id":"","url":"https://api.github.com/users/vladimir-kazakov","html_url":"https://github.com/vladimir-kazakov","followers_url":"https://api.github.com/users/vladimir-kazakov/followers","following_url":"https://api.github.com/users/vladimir-kazakov/following{/other_user}","gists_url":"https://api.github.com/users/vladimir-kazakov/gists{/gist_id}","starred_url":"https://api.github.com/users/vladimir-kazakov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vladimir-kazakov/subscriptions","organizations_url":"https://api.github.com/users/vladimir-kazakov/orgs","repos_url":"https://api.github.com/users/vladimir-kazakov/repos","events_url":"https://api.github.com/users/vladimir-kazakov/events{/privacy}","received_events_url":"https://api.github.com/users/vladimir-kazakov/received_events","type":"User","site_admin":false},"created_at":"2015-12-03T08:48:12Z","updated_at":"2015-12-03T08:48:12Z","body":"Hi, Romain! I've reviewed your changes, and here are some issues that I noticed (I also added some comments to some of your commits).\r\n\r\n**DASH-IF IOP profiles**\r\n\r\nYou removed some profiles, and I don't understand why. `dashavc264:onDemand` and `dashavc264:live` were using the `http://dashif.org/guidelines/dash264` identifier. According to DASH-IF IOP of any version (table 1), this is not the #HD profile. This (dash264), #SD and #HD are 3 different profiles, and they're described in the v2 of IOP, sections 6, 7 and 8 respectively.\r\n\r\nAnd again, what MP4Box was using is DASH-AVC/264, which is described in the v2, section 6.\r\n\r\nI don't understand why valid and active profiles were removed.\r\n\r\n> I think you didn't spot that the AVC/264 profiles we implemented were the IOP 2.0\r\n\r\nPrevious AVC/264 was \"dash264\". It's just one of the IOP profiles. It's in the IOP since the first version. My implementation wasn't changing anything regarding this. Old profile names were deprecated, and the new name is \"dashif264\", which is the same \"dash264\".\r\n\r\n**IOP versions**\r\n\r\nI noticed that you started to reference specific versions of IOP. This is not needed, because each IOP profile has its own unique identifier. Even if such profile will be deprecated, nobody will be allowed to reuse the old identifier. So, specifying the version of IOP is meaningless, and this may confuse people who will work with the code. For example, why the code says v2, if a specific profile is referenced in v1? This problem can be avoided by not referencing any version at all. And this is perfectly possible, since each profile has its own unique identifier. It doesn't really matter in which IOP version it was defined.\r\n\r\n**About TODO**\r\n\r\nIt would be nice to see new IOP profiles before additional checks will be implemented. I'd propose to implement checks as a separate task. The reason is that new profiles would allow to produce correct IOP content, even without additional checks. Currently, people are locked to AVC DASH media up to 720p (dash264 profile). Proposed changes would enable people to go beyond this limitation, without the need to wait for some window in the 1st quarter of 2016 :).\r\n\r\nIn other words, these checks are a nice usability addition, but it's not something super-important, without which it's not possible to use new profiles."}}