4.7.47. ETSI 기본 연산

RVCT는 ETSI G.729 Recommendation Coding of speech at 8 kbit/s using conjugate-structure algebraic-code-excited linear prediction (CS-ACELP)에 설명되어 있는 원래 ETSI 계열의 기본 연산을 지원합니다.

ETSI 기본 연산을 사용자 코드에 사용하려면 dspfns.h 표준 헤더 파일을 포함해야 합니다. dspfns.h에서 제공되는 내장 함수는 Table 4.13에 나열되어 있습니다.

Table 4.13. RVCT에서 지원하는 ETSI 기본 연산 

intrinsic
abs_sL_add_cL_multL_sub_cnorm_l
addL_deposit_hL_negatemac_rround
div_sL_deposit_lL_satmsu_rsaturate
extract_hL_macL_shlmultshl
extract_lL_macNsL_shrmult_rshr
L_absL_msuL_shr_rnegateshr_r
L_addL_msuNsL_subnorm_ssub

dspfns.h 헤더 파일은 특정 상태 플래그를 C 또는 C++ 프로그램에서 사용할 전역 변수처럼 나타낼 수도 있습니다. dspfns.h에 의해 나타나는 상태 플래그는 Table 4.14에 나열되어 있습니다.

Table 4.14. RVCT에 나타나는 ETSI 상태 플래그 

상태 플래그설명
Overflow

Overflow 상태 플래그입니다.

일반적으로 포화 함수에서 오버플로에 대한 까다로운 결과입니다.

Carry

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
}

추가 참고

  • C 코드 및 내장 함수의 조합을 통한 ETSI 기본 연산의 정의에 대해서는 dspfns.h 헤더 파일을 참조하십시오.

  • 컴파일러 사용 설명서에서 3-7페이지의 ETSI 기본 연산

  • ETSI Recommendation G.191: Software tools for speech and audio coding standardization

  • ITU-T Software Tool Library 2005 User's manual: ETSI Recommendation G.191의 일부로 포함

  • ETSI Recommendation G723.1: Dual rate speech coder for multimedia communications transmitting at 5.3 and 6.3 kbit/s

  • ETSI Recommendation G.729: Coding of speech at 8 kbit/s using conjugate-structure algebraic-code-excited linear prediction (CS-ACELP)

Copyright © 2007 ARM Limited. All rights reserved.ARM DUI 0348AK
Non-Confidential