как посчитать absolute granule position?

Список разделов Ogg Vorbis Тех-поддержка

Описание: Инструменты, кодеки, сопроводительная информация, алгоритмы, программирование.

Сообщение #1 kd » 09.02.2012, 22:03

вынимаю A_VORBIS stream из матрешки и кладу его в контейнер OGG. сегменты в страницы кладу, как они были в блоке у матрешки... не знаю как посчитать absolute granule position для страницы? пробовал сделать (ClasterTime + BlockData.TimeCode) / SamplesPerSec

плееры, вроде, даже таймлайн правильно рисуют... но звук идет рваный... и vdubMod демуксит с другими значениями absolute granule position. отзовитесь кто знает... :) спс
kd
Репутация: -1
С нами: 12 лет 1 месяц

Сообщение #2 kd » 10.02.2012, 20:56

или иными словами: вот пакет

EC 3C 0F 73 | 6F 49 46 62 | E7 79 98 7B | 4B 32 12 08
29 57 80 D0 | D6 D6 31 5F | ED 8D 5B D1 | 4B E4 3B FC
5C 97 7E 01

как узнать сколько в нем PCM audio samples? :)
kd
Репутация: -1
С нами: 12 лет 1 месяц

Сообщение #3 VEG » 11.02.2012, 13:42

У нас тут, к сожалению, знатоков таких технических составляющих не осталось :( Подозреваю, что нужно копать libvorbis, декодировать им данные и получать длину данных.
VEG M
Администратор
Аватара
Откуда: Finland
Репутация: 40
С нами: 18 лет 4 месяца

Сообщение #4 kd » 11.02.2012, 21:16

ну, я, наверное, разобрался...

почему-то я сперва решил, что раз пакеты лежат в xiph lacing, значит они уже нарезаны по 255... ничего подобного - в матрешке они лежат целиком, и местами у меня получались не правильные segment tables - отсюда и рвался звук.

а в absolute granule position я кладу время блока (ms) * SamplesPerSec / 1000 без учета к-ва каналов (как сказано в документации).
вроде, играет правильно.

заглянул в исходники vdubmod-a... они там, похоже, считают agp через BitRate... но битрейтов в заголове может быть 3 (min,aver,max)...
что-то мне лениво думать.... :))

всем спасибо за внимание и удачи!
kd
Репутация: -1
С нами: 12 лет 1 месяц


Вернуться в Тех-поддержка



cron