Skip to content

ldacencode

eggman edited this page Apr 7, 2017 · 4 revisions

LDAC encode

  • Read PCM
  • MDCT
  • Quantize

エンコードの概要

  • ヘッダ 固定長を生成
  • MDCTをおこないspectrumを生成
  • band_info 固定長を生成
  • spectrumから gradient を生成 gradientは17 or 29 bitsのどちらか
  • spectrumから scalefactor を生成 scalefactor は 100-160 bitsぐらい (観測結果より)
  • 残りの領域をspectrumに割り当てる。 情報を間引いて残り領域ぴったりぐらいになるように生成する。 あまりは0-20bitsぐらい (観測結果より)
  • 最後にbit列に変換する。

Read PCM

  • 単位 1サンプル
  • 入力 引数 pp_pcm
  • 出力 p_sfinfo->ap_ac[ich]->p_acsub->a_time
            byte_data_to_scalar_s16_ldac(pp_pcm[ich], p_time+nsmpl, nsmpl);

MDCT

  • 単位 256サンプル
  • 入力  サンプリング周波数Fs[kHz]の時系列信号
  • 出力  Dc[kHz]からサンプリング周波数Fsの半分の周波数までのスペクトル
proc_mdct_core_ldac(p_ac->p_acsub->a_time, p_ac->p_acsub->a_spec, nlnn);

Norm

  • 単位 qu 24qu
  • 入力 a_spec
  • 出力 p_idsf id scale factor

Bitalloc

Quantize

  • 入力 スペクトル a_spec
  • 出力 スペクトル a_qspec

call flow

ldaclib_encode
  set_input_pcm_ldac
  proc_mdct_ldac
  ana_frame_status_ldac
  encode_ldac
    encode_audio_block_ldac
      norm_spectrum_ldac
      alloc_bits_ldac
        encode_audio_block_a_ldac
        decrease_offset_low_ldac
        decrease_offset_high_ldac
        encode_side_info_ldac
        encode_audio_block_a_ldac
        increase_offset_low_ldac
        increase_qu_low_0_ldac
        increase_qu_low_ldac
        adjust_remain_bits_ldac
      quant_spectrum_ldac
      quant_residual_ldac
  pack_raw_data_frame_ldac
    pack_audio_block_ldac
    pack_block_alignment_ldac
    pack_frame_alignment_ldac

Clone this wiki locally