Obiecałem więc napisałem o problemach z H265 i na końcu kilka moich przemyśleń o przyszłości kodeków wideo ;-)
Więc H265 (znany też jako HEVC – High Efficiency Video Coding) jest ulepszoną wersją H264. Nie ma rewolucji ale przyrost jakości jest znaczny. To jest (zależy jak liczyć) czwarta generacja koderów wideo: MJPEG→MPEG2→H264→H265. Różnica pomiędzy generacjami to mniej więcej 10-cio krotny wzrost złożoności obliczeniowej oraz dwukrotny spadek strumienia przy tej samej jakości (przynajmniej tak argumentował taki jeden znany profesorek na jakimś wykładzie na którym byłem).
Nie wdając się w szczegóły, organizacja MPEG LA (MPEG Licensing Administration
https://en.wikipedia.org/wiki/MPEG_LA) zarządza najważniejszymi patentami wymaganymi przez kodeki wideo z grupy MPEG. To działa tak, że uniwersytety i firmy uczestniczące w wytworzeniu danego kodeka zgłosiły oraz utrzymują własne patenty, natomiast MPEG LA dba o to, żeby firmy które używają kodeków płaciły odpowiednie daniny. To nie jest głupi pomysł bo przynajmniej nie trzeba się użerać z kilkunastoma patent-holderami, negocjować osobno, etc...
Ile kosztuje H264? Zwykłym ludzikom wydaje się, że to jest darmocha – odpalają YT na komórce, gra i buczy to o co chodzi;-) Otóż nie… Zapłaciliśmy za patenty w cenie usługi. Wikipedia (
https://en.wikipedia.org/wiki/High_Efficiency_Video_Coding) podaje, że producent sprzętu wykorzystującego H264 (nie wiem czy dotyczy encodera czy dekodera) nie płaci za pierwsze 100 000 sztuk, za następne płaci $0.1 za sztukę do wysokości $6.5 milionów rocznie. Czyli chałupniczy/eksperymentalny producent nie płaci nic, a duży, tłukący setki milionów chipów rocznie zapłaci co najwyżej $6.5 czyli jakieś drobne pieniądze. To raczej dotyczy producentów CPU/GPU w których są te algorytmy zawarte a nie producentów komórek, którzy kupują już “licencjonowany” sprzęt. MPEG LA próbowało też pobierać fee od producentów contentu, czyli Google (YT), Netflix, etc… Ale odpuścili bo producenci nie chcieli płacić ;-) I to było ok, wszyscy zaakceptowali takie warunki, kwoty są dość rozsądne i niewygórowane.
W przypadku nowego kodera, H265, podwyższono limity na $0.2 per urządzenie, nie więcej niż $25 milionów rocznie. Nadal bez nakładania opłat dla producentów treści. Nowy, lepszy kodek, wyższa kwota ale nadal w granicach rozsądku – to było spodziewane, producenci sprzętu nie mieli obiekcji.
Ale wtedy z chciwości niektórych firm wzięła górę… Część właścicieli patentów utworzyła nowe koncorcium, HEVC Advance (
https://en.wikipedia.org/wiki/HEVC_Advance) i zażądała dodatkowych opłat za swoje patenty. W skład konsorcjum wchodzi: Dolby Laboratories (domyślam się, że standardy przestrzeni barwnych), General Electric (?!?), MediaTek (tanie CPU), Philips (chytre żydy), Mitsubishi Electric (prąd do kodeców sprzedają czy co?), Warner Bros (wiadomo…), Samsung Electronics (odrabiają straty z Applowych pozwów?) i Technicolor SA. To konsorcjum zażądało DODATKOWO $2.8 za każde urządzenie, bez limitu rocznego oraz 0.5% przychodów od firm generujących treść kodowaną w H265.
Jak to usłyszały zainteresowany firmy to zapewne niejednemy się wyrwało… pojebało was !?!?!. Do tej pory płaciliśmy $0.2 za CPU (co i tak jest 100% wzrostem w porównaniu do poprzedniej generacji koderów) a teraz będziemy płacili $0.2+$2.8 ?!? Czyli klient do każdego CPU dekodującego H265 będzie musiał dopłacić $3!!!. Firmy produkujące content miały zapłacić 0.5% przychodu (revenue)… Netflix za 2016 ma $8.83 miliarda przychodu z czego udało się zarobić $187 milionów (net income) więc musiał by zapłacić $44 miliony za licencje za używanie H265.
Wszyscy się spodziewali, że to takie straszenie, żeby było z czego (łaskawie) spuszczać. Ceny spadły (info na wiki), ale i tak pozostały wysokie. W międzyczasie konsorcjum opuścił Technicolor SA, stwierdził że sam się będzie zajmował własnymi patentami, etc… Czyli wszystko się ostro skomplikowało.
W wyniku czego Google powiedziało: wała, od dawna rozwijamy swój kodek VP8-VP9, nie potrzebujemy H265, wolimy swój, będziemy mieli nad nim pełną kontrolę. Netflix powiedział „po naszym trupie”, używają H264 i też kombinują czy podpiąć się do VP (bo jest free) czy swój robić. Producenci sprzętu chyba nie mają wyjścia i bulą ciężki hajs. Czyli kupując smartfona płacimy za te patenty :( MPEG LA zastanawia się jak z tego wyjść, prawdopodobnie dali ciała i na początku rozwoju H265 nie ustalili reguł patentowych myśląc, że będzie po staremu.
Smród jest taki, że H265 pójdzie chyba na straty :( MPEG LA najpierw próbowało się dogadać z MPEG Advance, w międzyczasie grozili wypuszczeniem nowego kodeka bez spornych patentów (obkrojonego). Ale chyba potencjalni użytkownicy mają dość niepewności, potencjalnych problemów i pozwów w przyszłości więc tam gdzie się da, nie pchają się w H265. Sprawa się ciągnie od 2015 i nadal nie wszystko wiadomo w temacie…
Mi się wydaje, że hegemonia MPEG została przełamana i będą alternatywy. Taki H264 jest niemożebnie skomplikowany przez co kłopotliwy w implementacji. Skomplikowany w sensie, że posiada dużo różnych i mało przydatnych profili, ustawień, etc… Jest dla przykładu profil „multiview”, który świetnie się nadaje do wideo 3D, ale poza BR nigdzie się go nie używa :-/ Nie ma za to dobrych profili do VR (sferyczny ekran), HDR nie istnieje, etc… A głównym powodem przejścia na H265 jest natywna implementacja HDR , rozdzielczości 4k+ i szybszych FPSów. Ale nawet w tym kodeku nie ma profili dla VR, nad czym dla przykładu Google płacze.
Według mnie, będą powstawać specjalizowane kodeki profilowane pod konkretne zadania zamiast takich kobył jak H265. Technologia kodowania jest już dość dobrze znana i nie potrzeba ogromnego zespołu żeby zrobić nowy kodek, zwłaszcza że uczelnie chętnie pomogą bo jest to temat wybitnie doktorato-gennny ;-) Firmy takie jak Netflix mają specyficzne wymagania, oni chętnie urwą 1% strumienia jeżeli tylko użytkownik tego nie zauważy :-) bo to jest ich największy koszt operacyjny. Jak będą mieli swój kodek to będą mogli w nim grzebać bez patrzenia się na standard – szybko i efektywnie.
Ale najciekawsze będzie jak zaczną używać deep-learning do kompresowania. To ma gigantyczny potencjał. Filmy można (trzeba!) kompresować nie frame-by-frame tylko holistycznie. Cały film naraz. W końcu w filmie występuje mała grupa aktorów i ich gęby się nie zmieniają, więc zamiast kompresować cały czas tą samą gębę można zrobić jej model 3D i tylko wklejać w odpowiednie miejsce (tak obrazowo mówiąc). To powinno zmniejszyć objętość filmów o rzędy wielkości. To jest stary pomysł, już w MPEG-4 było to zaproponowane ale jakoś się nie przyjęło – tam był dla przykładu pomysł, że jak oglądamy „dziennik telewizyjny” to tło jest nieruchome a tylko „gęba” się zmienia, więc kompresujmy oddzielnie tło (raz + ewentualne uaktualnienia) oraz tą gębę oddzielnie, różnymi algorytmami. Deep-learning jest już znane z tego, że świetnie znajduje podobieństwa, klasyfikuje, klastruje i wypełnia ubytki w danych. Wydaje się świetnie nadawać do kompresji wideo :)
Komentarze (114)
najlepsze
A jak już są patenty na kodeki itp to niechaj obowiązują 10lat lub mniej.
@kwanty: dzięki za fajny tekst, ale czy to powyższe było konieczne? Wiedza aż tryska z tekstu (i fajnie się czyta) i nagle to