реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
Iouri
сообщение Apr 11 2008, 21:11
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 364
Регистрация: 11-07-05
Пользователь №: 6 707



господа,

Стоит задача взять данные с 8 аудиокодеков 16bit 48KHZ sampling rate сжать без потерь
и передать, на другом конце принять и разжать. Требования:
1. Compression/Decomression должно быть сделано на FPGA
2. Максимальная задержка 1mS
3. Среда передачи Ethernet

Подскажите какой алгоритм лучше использвать, что почитать по теме и все замечания предложения с удовольствием выслушаю
спасибо всем откликнувшимся

всем приятных выходных
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Apr 11 2008, 21:58
Сообщение #2


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(Iouri)
2. Максимальная задержка 1mS
Прикольно smile.gif Буферизация не более 48 значений (это в идеале), а в реале наверно 32 в лучшем случае.

Сообщение отредактировал vetal - Apr 13 2008, 22:48


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
Stanislav
сообщение Apr 11 2008, 22:06
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987



Цитата(Iouri @ Apr 12 2008, 01:11) *
господа,

Стоит задача взять данные с 8 аудиокодеков 16bit 48KHZ sampling rate сжать без потерь
и передать, на другом конце принять и разжать. Требования:
1. Compression/Decomression должно быть сделано на FPGA
2. Максимальная задержка 1mS
3. Среда передачи Ethernet

Подскажите какой алгоритм лучше использвать, что почитать по теме и все замечания предложения с удовольствием выслушаю
спасибо всем откликнувшимся
Дык, требования к сжималке неплохо было бы ещё огласить. Битрейт постоянный/переменный, его величина, и т.д.

Навскидку - адаптивная дельта-модуляция (ADPCM), один из самых простых алгоритмов, работающих при малой длине буфера, но и сжатие получается небольшое. После первого знакомства с ней, можно побить сигнал на полосы, и к каждой попробовать прикрутить "свою" ADPCM, причём битрейт в полосах получится разный. Реализация этого алгоритма также очень проста, а компрессия - побольше.
Далее, что-нибудь вроде LD-LP, типа, как в стандарте G728. Сжималка там с потерями, но принцип построения линейного предсказателя можно взять на вооружение и для lossless компрессора. Этот метод посложнее будет, конечно. Разбивка сигнала на полосы также может оказаться полезной.
Ну, и гугль ещё никто не отменял. " сжатие аудио без потерь " и " "low delay audio" " дают море информации. Выбирайте на любой вкус. smile.gif



Цитата(GetSmart @ Apr 12 2008, 01:58) *
Прикольно smile.gif Буферизация не более 48 значений (это в идеале), а в реале наверно 32 в лучшем случае.
И что же здесь Вы усматриваете прикольного?

Сообщение отредактировал vetal - Apr 13 2008, 22:43


--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
Go to the top of the page
 
+Quote Post
Doka
сообщение Apr 12 2008, 07:08
Сообщение #4


Electrical Engineer
******

Группа: СуперМодераторы
Сообщений: 2 163
Регистрация: 4-10-04
Пользователь №: 778



я бы посмотрел в сторону таких специализированных форматов как FLAC, в основе которых опять же - линейное предсказание + RLE.

но надо понимать, что чудес не бывает и надо выбирать между задержкой и степенью сжатия.


--------------------
Блог iDoka.ru
CV linkedin.com/in/iDoka
Sources github.com/iDoka


Never stop thinking...........................
Go to the top of the page
 
+Quote Post
Stanislav
сообщение Apr 12 2008, 07:14
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987



Цитата(Doka @ Apr 12 2008, 11:08) *
но надо понимать, что чудес не бывает и надо выбирать между задержкой и степенью сжатия.
В любом случае, "степень сжатия" для lossless получится небольшой. Вероятно, гораздо меньшей, чем того бы хотелось автору темы...


--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
Go to the top of the page
 
+Quote Post
blackfin
сообщение Apr 12 2008, 07:27
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(Iouri @ Apr 12 2008, 00:11) *
Стоит задача взять данные с 8 аудиокодеков 16bit 48KHZ sampling rate сжать без потерь
и передать, на другом конце принять и разжать.

А стОит ли сжимать?
Битрейт для ваших 8 аудиокодеков с 16bit 48KHZ sampling rate будет равен 6,144 Мбит/с.
Если стерео, то 12,288 Мбит/с, - вполне проходит через 100Mb Ethernet.
Go to the top of the page
 
+Quote Post
Doka
сообщение Apr 12 2008, 07:35
Сообщение #7


Electrical Engineer
******

Группа: СуперМодераторы
Сообщений: 2 163
Регистрация: 4-10-04
Пользователь №: 778



Цитата(Stanislav @ Apr 12 2008, 11:14) *
В любом случае, "степень сжатия" для lossless получится небольшой. Вероятно, гораздо меньшей, чем того бы хотелось автору темы...

до 50% - не так уж и плохо для Lossless Audio


--------------------
Блог iDoka.ru
CV linkedin.com/in/iDoka
Sources github.com/iDoka


Never stop thinking...........................
Go to the top of the page
 
+Quote Post
Stanislav
сообщение Apr 13 2008, 18:07
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987



Цитата(Doka @ Apr 12 2008, 11:35) *
до 50% - не так уж и плохо для Lossless Audio
Я бы сказал - отлично. smile.gif
Однако, при столь малой длине буфера получить такой результат весьма сложно (если вообще возможно). Во всяком случае, хорошо проверенными методами линейного предсказания не отделаться... Вероятно, придётся городить компрессор, использующий статистики более высоких порядков, что весьма затруднительно реализовать на FPGA.

Естественно, речь идёт о постоянной битовой скорости.

Приличным результатом при зажержке в 1 мс я бы признал к-т компрессии 0,75; очень хорошим - 0,66 (2/3).
А 0,5 - просто выдающимся. smile.gif


--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
Go to the top of the page
 
+Quote Post
Relayer
сообщение Apr 13 2008, 19:20
Сообщение #9


Участник
*

Группа: Новичок
Сообщений: 37
Регистрация: 30-07-07
Пользователь №: 29 445



Цитата(Iouri @ Apr 12 2008, 00:11) *
Подскажите какой алгоритм лучше использвать, что почитать по теме и все замечания предложения с удовольствием выслушаю


очень рекомендую посмотреть на TTA codec http://en.wikipedia.org/wiki/TTA_%28codec%29
полностью доступен в сырках. работает быстро и хорошо. мое мнение - это один из лучших открытых алгоритмов lossless audio compression

PS боже упаси вас послушать нашего "теоретика" - lpc прост в теории но имеет свои подводные камни. лучше возьмите какойто готовый алгоритм и реализуйте его - сэкономите массу времени smile.gif

Цитата(Doka @ Apr 12 2008, 10:35) *
до 50% - не так уж и плохо для Lossless Audio


50% - это очень даже хорошо. обычно 30-40%
Go to the top of the page
 
+Quote Post
Stanislav
сообщение Apr 13 2008, 19:21
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987



Цитата(Relayer @ Apr 13 2008, 22:47) *
очень рекомендую посмотреть на TTA codec http://en.wikipedia.org/wiki/TTA_%28codec%29
полностью доступен в сырках. работает быстро и хорошо. мое мнение - это один из лучших открытых алгоритмов lossless audio compression
Интересно, каким боком данный алгоритм соответствует условиям задачи?

For audio data compression TTA compressor uses a frames with a duration about 1 sec.



Цитата(Relayer @ Apr 13 2008, 22:47) *
PS боже упаси вас послушать нашего "теоретика" - lpc прост в теории но имеет свои подводные камни. лучше возьмите какойто готовый алгоритм и реализуйте его - сэкономите массу времени smile.gif
1. Вы переходите рамки дозволенного при общении на форуме. Рекомендую перечитать ещё раз его правила.

2. Ваши знания совершенно недостаточны для того, чтобы отличить LPC от не-LPC.
Читаем описание алгоритма TTA:

Below we give the main of methods which have been tested in the TTA compressor constructing activity:

1. Signal approximation with a set of polynomial predictors;
2. Signal modeling by linear prediction method (LPC);
3. Signal modeling with adaptive filters.

The best results have been received by method of signal modeling with adaptive filters.

This method uses IIR (Infinite Impulse Response model) filters, which parameters are changing adoptively during the work process. The base system element is the p-dimensional nonrecursive filter, which in general case is described by the following expression:

(1)

where x'[n] - is a predicted value of the new sample x[n]; v[n,k] - next value of the filter weight coefficients; r - signal delay. Filter weight coefficients are defined by the formulae:

(2)

where m - is an coefficient which defines the filter's adaptation speed; e[n] - next value of output signal (error signal); sgn - sign of the signal [.];

The minimization of the residue e[n] = x[n] − x'[n] can be achieved with a help of various algorithms, such as Widrow-Hoff's least mean square error algorithm (LMS) which is based on statistical approach or recursive least squares algorithm (RLS)

Довожу до Вашего сведения, что сжатие в данном кодеке достигается именно методами линейного предсказания (LPC), о чём явно поведано в описании (см. Формулу 1). Правда, в этом может удостовериться только умеющий читать техническую литературу по-английски.

Сообщение отредактировал vetal - Apr 13 2008, 22:44


--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
Go to the top of the page
 
+Quote Post
Stanislav
сообщение Apr 13 2008, 19:48
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987



Цитата(Relayer @ Apr 13 2008, 23:20) *
50% - это очень даже хорошо. обычно 30-40%
Пожалуйста, предложите алгоритм, который будет "обычно" жать без потерь на 30-40% при задержке сигнала в 1 мс.
Иначе всё написанное Вами следует воспринимать не иначе, как словесный спам.

Сообщение отредактировал vetal - Apr 13 2008, 22:45


--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
Go to the top of the page
 
+Quote Post
Relayer
сообщение Apr 13 2008, 21:26
Сообщение #12


Участник
*

Группа: Новичок
Сообщений: 37
Регистрация: 30-07-07
Пользователь №: 29 445



Цитата(Stanislav @ Apr 13 2008, 22:21) *
Читаем описание алгоритма TTA


так вот 1сек размер фрейма связан с тем, что формат файлово-ориентированный (что впрочем не мешает его модифицировать в потоковый) и основное требование - возможность позиционирования в произвольное место файла. если мы заглянем в исходники то мы увидим след (я буду комментировать происходящее по версии 3.0 - разница с последними версиями незначительна а код читается лучше):

Код
int compress(FILE *fdin, FILE *fdout) {
    while (fframes--) {
        read_wave(data, byte_size, framelen * (num_chan >> is_float), fdin);
        encoder_init(tta, num_chan, byte_size);
        for (p = data, prev = 0; p < data + framelen * num_chan; p++) {
            // compress stage 1: fixed order 1 prediction
            case 2:    *p -= PREDICTOR1(*last, 5);    break;    // bps 16
            // compress stage 2: adaptive hybrid filter
            hybrid_filter(fst, p, 1);
            value = ENC(*p);
            // encode Rice unsigned
            put_unary(unary);
        }
    }
    // update the seek table


это очень поскипанный код. но суть будет понятна. для каждого фрейма читаем его, инициализируем таблицы накапливающие статистики Rice кодера, для каждого семпла вызываем тривиальный PREDICTOR1:

Код
#define PREDICTOR1(x, k)    ((long)((((uint64)x << k) - x) >> k))


после чего прогоняем через т.н. гибридный фильтр, после чего кодируем райсом и обновляем статистики этого самого райса.
легко заметить следующее:
1. семпл попадает на выход без всяких задержек! т.е. для его кодирования нам необходима только информация о предыдущих семплах, но не о будущих.
2. требование позиционирования = возможность декодировать любой произвольный блок из потока в случайном порядке (radnom access) приводит к тому что мы вынуждены сбрасывать статистики Rice и гибридного фильтра в начале каждого блока. если с фильтром не все так критично, то сброс статистик Rice естественно приводит к ухудшению сжатия. именно поэтому разработчики определили размер фрейма в 1 сек как компромис между ухудшением сжатия и точностью позиционирования при random access
3. никакой допинформации кроме как маркера для позиционирования в файле с фреймом не связывается. для статистик Rice используется backward adaptation - т.е. декодер накапливает эти статистики в процессе декодирования и параметры кода в явном виде передавать не надо.

TTA элементарно преобразовывается в потоковый алгоритм. никаких задержек в 1 сек естественно не будет. понятие фрема зависит от того как мы будем принимать поток. если мы принимаем поток от начала и до конца и канал гарантирует доставку пакетов клиенту без пропусков - тогда можно все передать одним фреймом не сбрасывая статистики. это благоприятно скажется на сжатии. если у нас броадкастинг - т.е. клиент может подключиться в произвольный момент времени - тоже ничего страшного. делаем маркеры с интервалом одна сек, по ним обнуляем статистику. клиент ждет маркера и после его получения (макс 1 сек ожидания) начинает синхронно декодировать поток.

почему это все так важно? дело в том что TTA использует те самые техники в которых наш знайка ни в зуб ногой. а именно Rice и backward adaptation. т.е. декодер синхронно с процессом декодирования набирает статистику которая позволяет ему правильно декодировать коды Rice

Сообщение отредактировал vetal - Apr 17 2008, 20:54
Go to the top of the page
 
+Quote Post
Stanislav
сообщение Apr 13 2008, 22:22
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987



Цитата(Relayer @ Apr 14 2008, 01:26) *
у вас явно очень плохо со слухом. я нигде не говорил что TTA не содержит lpc. а вы гдето умудрились это прочитать и раздули базар как на привозе. так что обратитесь к доктору для проверки органов восприятия информации и их прочистки соответствующими инструментами
Интересно, а какой смысл тогда заключён в этой сентенции:
Цитата(Relayer @ Apr 13 2008, 23:20) *
PS боже упаси вас послушать нашего "теоретика" - lpc прост в теории но имеет свои подводные камни.
?
Прошу ответить. Настаиваю, чтобы Вы пояснили, что в данной теме мной написано неправильно, и какое моё утверждение Вы опровергли данным заявлением?
Об остальном - после.


--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
Go to the top of the page
 
+Quote Post
vetal
сообщение Apr 13 2008, 22:48
Сообщение #14


Гуру
******

Группа: Модераторы
Сообщений: 2 095
Регистрация: 27-08-04
Из: Россия, СПб
Пользователь №: 553



Тема почищена. Общайтесь без оскорблений и перехода на личности! twak.gif
Go to the top of the page
 
+Quote Post
Relayer
сообщение Apr 14 2008, 20:53
Сообщение #15


Участник
*

Группа: Новичок
Сообщений: 37
Регистрация: 30-07-07
Пользователь №: 29 445



Цитата(Stanislav @ Apr 14 2008, 01:22) *
Интересно, а какой смысл тогда заключён в этой сентенции:?
Прошу ответить. Настаиваю, чтобы Вы пояснили, что в данной теме мной написано неправильно, и какое моё утверждение Вы опровергли данным заявлением?
Об остальном - после.


смысл заключается в том, что если вы не работали с чем-то - не надо это советовать. теория это хорошо, а практика порой ставит задачи которые теория не рассматривает или рассматривает, но в чересчур абстрактном виде. человек попросил конкретных предложений, а вы водичку льете и предлагаете научно исследовательской работой с не гарантированным результатом заняться.

так что остального и после - не будет. вначале закончим с ТТА

Цитата(Stanislav @ Apr 13 2008, 22:21) *
Интересно, каким боком данный алгоритм соответствует условиям задачи?
For audio data compression TTA compressor uses a frames with a duration about 1 sec.


вы согласны с тем что здесь написали полную чушь? smile.gif алгоритм вполне соответствует задаче. со структурой алгоритма вы не знакомы, иначе бы такое не написали. а учитывая что ТТА появился в public domain не вчера, а в начале 2000х и то, что открытых lossless audio compression алгоритмов можно по пальцам руки пересчитать мне очень странно что вы о нем не слышали ... профессионалу такое непростительно. хотя конечно если ваши познания о методах сжатия носят ознакомительно-поверхностный характер - я не в претензии. вот только зачем вводить в заблуждение окружающих ?

Сообщение отредактировал Relayer - Apr 14 2008, 20:57
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 18:18
Рейтинг@Mail.ru


Страница сгенерированна за 0.015 секунд с 7
ELECTRONIX ©2004-2016