10.154 ETSI の基本操作

コンパイルツールでは、コンパイラ組み込み関数を使用して、元の ETSI ファミリの基本操作をサポートしています。

元の ETSI ファミリの基本操作は、ETSI G.729 勧告『Coding of speech at 8 kbit/s using conjugate-structure algebraic-code-excited linear prediction (CS-ACELP)』で説明されています。
ユーザコード内で ETSI の基本操作を使用するには、dspfns.h 標準ヘッダファイルをインクルードします。dspfns.h に提供されているコンパイラ組み込み関数を以下の表に示します。

表 10-15 ARM Compilation Tools がサポートする ETSI の基本操作

組み込み関数
abs_s L_add_c L_mult L_sub_c norm_l
add L_deposit_h L_negate mac_r round
div_s L_deposit_l L_sat msu_r saturate
extract_h L_mac L_shl mult shl
extract_l L_macNs L_shr mult_r shr
L_abs L_msu L_shr_r negate shr_r
L_add L_msuNs L_sub norm_s sub
ヘッダファイル dspfns.h も、C または C++ プログラムで使用するためのグローバル変数として、特定のステータスフラグを公開します。dspfns.h によって公開されたステータスフラグを以下の表に示します。

表 10-16 ARM Compilation Tools で公開されている ETSI ステータスフラグ

ステータスフラグ 説明
Overflow
オーバーフローステータスフラグ
通常、サチュレート関数には、オーバーフローについて固定作用があります。
Carry
キャリーステータスフラグ

#include <limits.h>
#include <stdint.h>
#include <dspfns.h>       // include ETSI basic operations
int32_t C_L_add(int32_t a, int32_t b)
{
    int32_t c = a + b;
    if (((a ^ b) & INT_MIN) == 0)
    {
        if ((c ^ a) & INT_MIN)
        {
            c = (a < 0) ? INT_MIN : INT_MAX;
        }
    }
    return c;
}
__asm int32_t asm_L_add(int32_t a, int32_t b)
{
    qadd r0, r0, r1
    bx lr
}
int32_t foo(int32_t a, int32_t b)
{
    int32_t c, d, e, f;
    Overflow = 0;         // set global overflow flag
    c = C_L_add(a, b);    // C saturating add
    d = asm_L_add(a, b);  // assembly language saturating add
    e = __qadd(a, b);     // ARM intrinsic saturating add
    f = L_add(a, b);      // ETSI saturating add
    return Overflow ? -1 : c == d == e == f; // returns 1, unless overflow
}
関連する概念
4.9 European Telecommunications Standards Institute(ETSI)の基本操作に対するコンパイラサポート
関連情報
ETSI Recommendation G.191: Software tools for speech and audio coding standardization
ETSI Recommendation G.729: Coding of speech at 8 kbit/s using conjugate-structure algebraic-code-excited linear prediction (CS-ACELP)
ETSI Recommendation G723.1 : Dual rate speech coder for multimedia communications transmitting at 5.3 and 6.3 kbit/s
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.