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
Najważniejszy jest algorytm obliczający ruch (tzw. pole wektorów ruchu). Najczęściej obraz na drugiej ramce jest trochę przesunięty (cały albo jego część) w stosunku do pierwszego. Więc przesyłasz co i o ile jest przesunięte a następnie co się
To też jest nie prawda. Jak niby miałby generować taką grafikę bez DirectX czy OpenGL, które są ogromnymi bibliotekami? Musieliby napisać swoje API do każdej możliwej karty graficznej jeżeli miałaby ona działać
Bez dużej bazy urządzeń obsługujących natywnie dany kodek jakoś nie sądzę żeby taki netflix przerzucił się coś innego więc nie widzę alternatywy szczególnie, że
AV1 już w obecnej, wciąż testowej fazie przewyższa kompresją h265 i ma wszystkie dane ku temu aby się ustandaryzować.
Porównanie h265/VP1/AV1:
https://streaminglearningcenter.com/blogs/av1hevcvp9-comparison-streaming-media-east.html
@muzycznifm: Oni mogli nawet przez przypadek użyć (ponownie wymyślić) opatentowany algorytm. Taki niestety jest obecne bagno patentowe. Zgłasza się patenty po to żeby "zaklepać swoje" albo żeby "zastawić minę". W pierwszym przypadku rozgłasza się taki fakt, w drugim przypadku sprytnie ukrywa patent, tak żeby trudno było na niego trafić. Ukrywa się
Tak samo jak ja w LG G2 nie mam obsługi sprzętowego dekodowania H265 (procesor tych instrukcji nie posiada) i film HEVC mogę odpalić jedynie w MX Playerze z wykorzystaniem jego software'owych kodeków. Po dwugodzinnym filmie zejdzie mi 40% baterii, gdzie przy takim samym filmie
https://en.wikipedia.org/wiki/Nvidia_PureVideo#Table_of_GPUs_containing_a_PureVideo_SIP_block
dlatego prosto parametryczny opis się nie uda, trzeba zrobić cholernie skomplikowaną maszynkę która by nad tym zapanowała... pomysł był już w MPEG-4 (to był rok około 2000) ale
Spekulacje z zastosowaniem deep-learningu i modelem 3D to natomiast w mojej ocenie zupełna fantazja... Jasne, eksperymentuje się z DL i kompresją obrazu czy wideo, ale działają one na odmiennej zasadzie (i nic dziwnego).
Mangozjeby lubią forsować nowe, lepsze technologie, czasem przekombinowane technologie.. FLAC zamiast AAC jako audio, ASS zamiast SRT, 10 bit zamiast 8 bit. Już teraz wiele ripów walą do HEVC.
I tak aż otrzymasz zadowalającą jakość.
a tak na poważnie, to algorytmy robią się tak skomplikowane, że ciężko je zrozumieć bo człowiek ma bardzo ograniczoną pojemność mózgu i powoli przetwarza informację... więc zamiast konstruować nowe, skomplikowane, algorytmy rozwiązujące jakiś problem to uczy się te algorytmy rozwiązywać problem
najczęściej uczy się w trybie "z
Z deep learning w kompresji obrazu są 2 (IMVHO) główne problemy:
- czas kodowania, tu prosto, zanim algorytm znajdzie tą twarz i jej powtarzalność w filmie (z różnych profili) to trochę czasu musi minąć, oczywiście w pewnym momencie Netflixowi i YT powinno sie to zacząć opłacać,
- wielkość „słownika”, zapisanie wszystkich elementów jednak będzie zajmować sporo, swego czasu (lata temu) przytrafiło mi się implementowanie starego algorytmu kompresji (wersji LZ) w