поток сознания на тему information theory
Oct. 22nd, 2015 10:53 pmв описаниях всяческих навороченных способах кодирования и передачи информации (Reed-Solomon и прочие FEC, торрент, progressive JPEG, rateless/fountain коды, LZ4, PAQ и прочие подобные) часто не хватает важной штуки - graceful degradation, или, в каком-то смысле, latency.
в целом вот понятно, что shannon capacity канала можно достигать сколь угодно эффективно, но при этом выходит, что чем ближе код к этой самой капасити - тем больше процентов (пакетов? ну положим что у нас erasure) надо получить, чтобы хоть что-то увидеть.
и если для arbitrary bitstream'ов это еще как-то обьяснимо (ну надо нам найти точное решение уравнения, никуда не денемся), то для картинок, звука и прочего очень часто хочется всякого graceful degradation, ну, как у того же прогрессивного жпега или FLIF (новый лосслесс кодек для картинок, гуглится)
каких-то принципиальных причин, почему прогрессивка должна ухудшать битрейт - тоже не видно. ключевая проблема в том, что это надо глубоко смерживать два кодека, в смысле, компрессор и FEC.
и это, по-видимому, взрывает мозг дизайнерам кодеков (а в случае с видео есть еще и минимум два сценария, "гифка" и "авто-регулятор битрейта для стриминга"), из-за чего мы этого так до сих пор и не увидели, а жаль!
(это я раздумываю, как бы сделать так, чтобы видеостриминг при потерях пакетов деградировал по качеству, а не заикался, и что-то нифига не придумывается пока что, т.к. тут еще и битрейт экстремально низкий, увы)
в целом вот понятно, что shannon capacity канала можно достигать сколь угодно эффективно, но при этом выходит, что чем ближе код к этой самой капасити - тем больше процентов (пакетов? ну положим что у нас erasure) надо получить, чтобы хоть что-то увидеть.
и если для arbitrary bitstream'ов это еще как-то обьяснимо (ну надо нам найти точное решение уравнения, никуда не денемся), то для картинок, звука и прочего очень часто хочется всякого graceful degradation, ну, как у того же прогрессивного жпега или FLIF (новый лосслесс кодек для картинок, гуглится)
каких-то принципиальных причин, почему прогрессивка должна ухудшать битрейт - тоже не видно. ключевая проблема в том, что это надо глубоко смерживать два кодека, в смысле, компрессор и FEC.
и это, по-видимому, взрывает мозг дизайнерам кодеков (а в случае с видео есть еще и минимум два сценария, "гифка" и "авто-регулятор битрейта для стриминга"), из-за чего мы этого так до сих пор и не увидели, а жаль!
(это я раздумываю, как бы сделать так, чтобы видеостриминг при потерях пакетов деградировал по качеству, а не заикался, и что-то нифига не придумывается пока что, т.к. тут еще и битрейт экстремально низкий, увы)