LINUX.ORG.RU

Расшифровка параметров кодека

 ,


0

1

Хочу настроить aac и h264 кодеки
Читаю https://tools.ietf.org/html/rfc3640#section-3.3.6

Настройка такая(5.1 channel AAC stream with a
sampling rate of 48 kHz)

streamtype=5;profile-level-id=16;mode=AAC-hbr;config=11B0;sizelength=13;indexlength=3;indexDeltaLength=3

Хочу понять как генерировать profile-level-id и config, для настройки профилей

написано что config это шестнадцатеричное число которое является AudioSpecificConfig в ISO/IEC 14496-3. Открываю http://read.pudn.com/downloads98/doc/comm/401153/14496/ISO_IEC_14496-3 Part 3...

Там поиском нахожу AudioSpecificConfig
Table 1.8 – Syntax of AudioSpecificConfig()
AudioSpecificConfig ()
{
audioObjectType; 5 bslbf
samplingFrequencyIndex; 4 bslbf
if ( samplingFrequencyIndex==0xf )
samplingFrequency; 24 uimsbf
channelConfiguration; 4 bslbf
if ( audioObjectType == 1 || audioObjectType == 2 ||
audioObjectType == 3 || audioObjectType == 4 ||
audioObjectType == 6 || audioObjectType == 7 )
GASpecificConfig();
if ( audioObjectType == 8 )
CelpSpecificConfig();
if ( audioObjectType == 9 )
HvxcSpecificConfig();
if ( audioObjectType == 12 )
TTSSpecificConfig();
if ( audioObjectType == 13 || audioObjectType == 14 ||
audioObjectType == 15 || audioObjectType==16)
StructuredAudioSpecificConfig();
if ( audioObjectType == 17 || audioObjectType == 19 ||
audioObjectType == 20 || audioObjectType == 21 ||
audioObjectType == 22 || audioObjectType == 23 )
GASpecificConfig();
if ( audioObjectType == 24)
ErrorResilientCelpSpecificConfig();
if ( audioObjectType == 25)
ErrorResilientHvxcSpecificConfig();
if ( audioObjectType == 26 || audioObjectType == 27)
ParametricSpecificConfig();
if ( audioObjectType == 17 || audioObjectType == 19 ||
audioObjectType == 20 || audioObjectType == 21 ||
audioObjectType == 22 || audioObjectType == 23 ||
audioObjectType == 24 || audioObjectType == 25 ||
audioObjectType == 26 || audioObjectType == 27 ) {
epConfig; 2 bslbf
if ( epConfig == 2 || epConfig == 3 ) {
ErrorProtectionSpecificConfig();
}


Из этой каши как я понял мне нужно определить

AudioObjectType
samplingFrequencyIndex - мне нужно 0x3 48000Khz
channelConfiguration - 2 - стерео

Вот как это все связать с config & profile-level-id не понятно

Как они получили эти цифры?
profile-level-id=16
config=11B0


Ранее в такие дебри не влезал, но без этого не настроить правильно кодек )

AudioObjectType
A five bit field indicating the audio object type
Допустим я выбираю AudioObjectType=1(AAC Main), что значит пятибитное поле, как куда его писать?

★★★★

Вот формат

AudioSpecificConfig{
   audioObjectType - 5 bit
   samplingFrequencyIndex - 4 bit
   channelConfiguration - 4 bit
}


В моем случае
audioObjectType = 1 (AAC Main)
samplingFrequencyIndex  = 3 (48000Khz)
channelConfiguration  = 2

Как это все запаковать в 16ричное число?

gobot ★★★★ ()

Разобрался )
Если кому понадобится, вот
http://thompsonng.blogspot.com/2010/03/aac-configuration.html
https://www.rapidtables.com/convert/number/hex-to-decimal.html


AAC Configuration
AAC is MPEG4 part 3 and it comes with a configuration data before it can be decoded by a decoder. This configuration data can usually be found in the SDP, under audio track -> config. Normally, it is a 2 bytes in hexadecimal. Below is a sample of the information which may be contains in the configuration data.


1210 = 0001 0010 0001 0000

5 bits for object type = 00010 = 2 = AAC low complexity

4 bits for sampling rate = 0100 = 44100hz

4 bit for channel = 0010 = 2 channel

1 bit for frame length flag = 0 for 1024 sample

1 bit for depends on core coder = 0

1 bit for extension flag = 0

frame length flag:
0: Each packet contains 1024 samples
1: Each packet contains 960 samples

The full specification for AudioSpecificConfig is stated in ISO 14496-3 Section 1.6.2.1

See http://wiki.multimedia.cx/index.php?title=MPEG-4_Audio for complete list.

gobot ★★★★ ()

зачем ? почти не один енкодер так и декодер их не особо то не использует

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.