{"action":"created","issue":{"url":"https://api.github.com/repos/mpv-player/mpv/issues/2815","repository_url":"https://api.github.com/repos/mpv-player/mpv","labels_url":"https://api.github.com/repos/mpv-player/mpv/issues/2815/labels{/name}","comments_url":"https://api.github.com/repos/mpv-player/mpv/issues/2815/comments","events_url":"https://api.github.com/repos/mpv-player/mpv/issues/2815/events","html_url":"https://github.com/mpv-player/mpv/issues/2815","id":133431745,"number":2815,"title":"Black crush and color deviations with some ICC profiles","user":{"login":"haasn","id":1149047,"avatar_url":"https://avatars.githubusercontent.com/u/1149047?v=3","gravatar_id":"","url":"https://api.github.com/users/haasn","html_url":"https://github.com/haasn","followers_url":"https://api.github.com/users/haasn/followers","following_url":"https://api.github.com/users/haasn/following{/other_user}","gists_url":"https://api.github.com/users/haasn/gists{/gist_id}","starred_url":"https://api.github.com/users/haasn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/haasn/subscriptions","organizations_url":"https://api.github.com/users/haasn/orgs","repos_url":"https://api.github.com/users/haasn/repos","events_url":"https://api.github.com/users/haasn/events{/privacy}","received_events_url":"https://api.github.com/users/haasn/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":232,"created_at":"2016-02-13T13:27:14Z","updated_at":"2016-05-03T05:40:42Z","closed_at":"2016-04-01T08:28:38Z","body":"Continuation of the discussion in #534.\r\n\r\nSome ICC profiles are experiencing black crush when used in mpv, in particular ones that use complex transfer curves rather than simple pure powers.\r\n\r\nProposed solutions including reworking the 3DLUT/lcms mechanism to pick a connection space more gracefully."},"comment":{"url":"https://api.github.com/repos/mpv-player/mpv/issues/comments/216443212","html_url":"https://github.com/mpv-player/mpv/issues/2815#issuecomment-216443212","issue_url":"https://api.github.com/repos/mpv-player/mpv/issues/2815","id":216443212,"user":{"login":"haasn","id":1149047,"avatar_url":"https://avatars.githubusercontent.com/u/1149047?v=3","gravatar_id":"","url":"https://api.github.com/users/haasn","html_url":"https://github.com/haasn","followers_url":"https://api.github.com/users/haasn/followers","following_url":"https://api.github.com/users/haasn/following{/other_user}","gists_url":"https://api.github.com/users/haasn/gists{/gist_id}","starred_url":"https://api.github.com/users/haasn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/haasn/subscriptions","organizations_url":"https://api.github.com/users/haasn/orgs","repos_url":"https://api.github.com/users/haasn/repos","events_url":"https://api.github.com/users/haasn/events{/privacy}","received_events_url":"https://api.github.com/users/haasn/received_events","type":"User","site_admin":false},"created_at":"2016-05-03T05:40:42Z","updated_at":"2016-05-03T05:40:42Z","body":"> Why can't we implement slope limiting by editing the LUT generated by LittleCMS?\r\n\r\nIt would be doable but complicated. Inside the 3DLUT there are three steps:\r\n\r\n1. Convert from input space to PCS\r\n2. Desaturate inside PCS to make it fit into the target gamut\r\n3. Encode from PCS to the target space (via ICC LUT etc.)\r\n\r\nSlope limiting needs access to information from step 2. Specifically, the algorithm does something like `out = min( ICC(in), in * V )`. (Although I'm not entirely sure why it's ‘min’ here and not ‘max’, when the goal is to eliminate black crush..)\r\n\r\nAnyway, to replicate the algorithm we would probably need to reimplement LittleCMS' desaturation algorithm, although we could theoretically get away with it due to the fact that it only matters for things close to black (which are very desaturated either way)."}}