как посчитать 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
С нами: 13 лет 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
С нами: 13 лет 1 месяц

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

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

Сообщение #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
С нами: 13 лет 1 месяц


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

Быстрый ответ


Введите код в точности так, как вы его видите. Регистр символов не имеет значения.
Код подтверждения
:hi: :smile: :wink: :twisted: :sad: :evil: :smoke: :eh: :eek: :fie: :silenced: :razz: :oops: :help: :spy: :insane: :biggrin: :toothless: :ill: :nervious: :weirdface: :pray: :clap: :think: :boxing: :cyclop: :rambo: :zombie: :cry: Ещё смайлики…

   

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



cron