一部端末で発生する音途切れ対策
一部のARROWS系端末上で発生するノイズ(音途切れ)への対処について記載します。

CRI Atomライブラリで音声を再生する際、デフォルト設定のままだと一部のARROWS系端末上でノイズ(音途切れ)が発生します。
CRIでは以下の端末でノイズ発生を確認しています。
対処方法:サウンドデコードバッファの調整
CRI Atomライブラリ内では、サウンドのデコード結果を貯めるバッファが用意されます。このバッファからOS側へサウンドデータ供給が行われますが、一部端末では再生音が途切れてしまうことがあります。これは、CRIのサウンドデコードバッファのサイズがデフォルトでは小さすぎるためです。端末毎に適切なサイズにバッファを拡大する必要があります。

以下の関数を使用し、症状が解消するまでサウンドデコードバッファのサイズを増やしてください。

サウンドデコードバッファの調整関数
(a) criAtom_SetSoundBufferingTime_ANDROID
(b) criAtom_SetSoundStartBufferingTime_ANDROID


関数(a)でサウンドデコードバッファサイズ自体を調整します。このバッファ内にどの程度サウンドデータが溜まったら再生開始するかは、関数(b)で指定します。指定値はミリ秒単位となります。

どの程度増やすべきかは、機種やアプリケーションの負荷状況に依存します。問題の無い数値を各機種ごとに調べて判断する必要があります。

バッファサイズ調整の方法としては、ノイズが発生しなくなるまで(a)も(b)も同じ数値で増やしていきます。 次にNSR(ネイティブサウンドレンダラ)を使用している場合は(b)の数値分だけ再生開始遅延になってしまいますので、 音途切れしない程度に(b)の数値のみ減らしてください。

例えば次のような記述で途切れ無く再生できることを確認しています。

    {
        /* サウンドデコードバッファ量の設定(ミリ秒単位) */
        criAtom_SetSoundBufferingTime_ANDROID(200);

        /* 再生開始バッファリング時間の設定(ミリ秒単位) */
        criAtom_SetSoundStartBufferingTime_ANDROID(150);

        criAtomEx_Initialize_Android(&atomex_config, NULL, 0);
            …
    }
基本的にはデフォルト値のまま運用してください。音途切れが発生する特定の端末についてのみ、アプリ側で端末判定を行ってバッファ時間を個別設定してください。端末モデル判定には、Android APIのandroid.os.Buildクラスを利用することをおすすめします。

CRI Middleware logo Copyright (c) 2012-2018 CRI Middleware Co., Ltd. CRI ADX2 LE マニュアル (for Cocos2d-x) SDKVer.2.10版