Статус документа
Статус документа

ГОСТ Р 53556.5-2013 Звуковое вещание цифровое. Кодирование сигналов звукового вещания с сокращением избыточности для передачи по цифровым каналам связи. Часть III (MPEG-4 audio). Структурированное кодирование звуковых сигналов (SA) (Переиздание)

     9 Определения кода операции ядра SAOL и семантика

9.1 Введение

Все базовые коды операции должны быть реализованы в каждом терминале, который может декодировать объекты типа 3 или 4.

Для каждого базового кода операции описывается следующее:

прототип, показывающий уровень кода операции, параметры, которые требуются при вызове кода операции и уровни этих параметров;

нормативная семантика обратного значения. Семантика описывает, как вычислить исходное значение для каждого вызова кода операции;

нормативная семантика любых побочных эффектов базового кода операции.

9.2 Тип specialop

Тег уровня specialop не является фактическим лексическим элементом языка SAOL и не должен появляться в оркестре SAOL, но используется в качестве сокращения для базовых кодов операции с ними.

Базовые коды операции с уровнем вводят specialop и описывают функции, которые отображаются от одного или более сигналов a-rate в сигнале k-rate. Таким образом, у них есть один или более параметров, которые изменяются в a-rate, и они имеют нормативную семантику a-rate, но они только возвращают значения и/или имеют побочные эффекты в a-rate. При использовании этих кодов операции в выражениях обрабатываются, как kopcode коды, и используются для определения ошибок уровня.

Выражение, запрещенное правилами в 8.6.6 и 8.6.7 для a-rate и k-rate, не должно иметь specialop. Выражение specialop должно быть только в защищенном контексте, если выражение защиты также является specialop выражением. Выражение specialop не должно быть в выражении защиты или кодовом блоке для while оператора. Обращения к specialop кодам операции невозможны в iopcodes, kopcodes и opcodes. Если обращения к specialop кодам операции присутствуют в aopcode и specialop кодах, то операции для a-rate и k-rate выполняются по правилам, определенным в 8.7.7.3.

9.3 Список базовых кодов операции

Несколько базовых кодов операции описываются в последующих подпунктах. Они делятся по категориям, но в этом нет никакого нормативного значения, а только ясность представления.

Математические функции

int, frac, dbamp, ampdb, abs, sgn, exp, log, sqrt, sin, cos, atan, pow, log10, asin, acos, floor, ceil, min, max

Конверторы

gettune, settune, octpch, pchoct, cpspch, pchcps, cpsoct, octcps, midipch, pchmidi, midioct, octmidi, midicps, cpsmidi

Табличные операции

ftlen, ftloop, ftloopend, ftsr, ftbasecps, ftsetloop, ftsetend, ftsetbase, ftsetsr, tableread, tablewrite, oscil, loscil, doscil, koscil

Сигнальные генераторы

kline, aline, kexpon, aexpon, kphasor, aphasor, pluck, buzz, grain

Звуковые генераторы

irand, krand, arand, ilinrand, klinrand, alinrand, iexprand, kexprand, aexprand, kpoissonrand, apoissonrand, igaussrand, kgaussrand, agaussrand

Фильтры

port, hipass, lopass, bandpass, bandstop, biquad, allpass, comb, fir, iir, firt, iirt

Спектральный анализ

fft, ifft

Регулировка усиления

rms, gain, balance, compressor

Демонстрационное преобразование

decimate, upsamp, downsamp, samphold, sblock

Задержки

delay, delay1, fracdelay

Эффекты

reverb, chorus, flange, speedt, fx_speedc

Изменение темпа

gettempo, settempo


Для каждого базового кода операции дается прототип кода операции. Это показывает уровень кода операции, число необходимых и дополнительных формальных параметров и уровень каждого из формальных параметров. Определенные параметры к определенным базовым кодам операции представляются в скобках, когда ' - этот формальный параметр является дополнительным. Определенные коды операции используют в кавычках, что означает, что код операции может обработать произвольное число параметров. Кавычки тегируются с уровнем для таких кодов операции, которые являются уровнем всех параметров. Если нет нормативного языка для определенного кода операции, который определен иначе, то это синтаксическая ошибка, если применяется какой-либо из следующих операторов:

- в обращении кода операции меньше фактических параметров, чем необходимых формальных параметров;

- в обращении кода операции больше фактических параметров, чем необходимо, и дополнительные формальные параметры и определения кода операции не включают переменные, разделенные кавычками;

- фактическое выражение параметра имеет более быстрый уровень, чем соответствующий формальный параметр или переменный формальный параметр, если это - корреспонденция;

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

Имена, связанные с формальными параметрами в базовых прототипах кода операции, не имеют никакого нормативного значения, но используются для ясности при обращении к значениям, которые передают как соответствующие фактические параметры, и описывают, как вычислить значение базового кода операции.

9.4 Математические функции

9.4.1 Введение

Каждый из кодов операции вычисляет математическую функцию.

9.4.2 int

opcode int (xsig x)

Код операции int вычисляет целочисленную часть своего параметра.

Исходное значение должно быть целочисленной частью x.