CRIWARE Unity Plugin Manual  Last Updated: 2024-04-24
H.264面積上限チェッカー
本項ではSDK内の以下に同梱しているビデオユーティリティツール: H.264面積上限チェッカー (H264AreaLimitChecker.apk) について説明します。
  • cri/tools/VideoUtility/AreaLimitChecker/android/H264AreaLimitChecker.apk

概要

H.264面積上限チェッカーはAndroid端末によって異なるH.264面積上限値(*1)と、端末固有のH.264ムービー再生に関する情報を画面やログ、端末内のストレージにyamlファイルとして出力するツールです。
本ツールを使用することで、特定のAndroid端末でどのくらいの解像度と本数で複数本のH.264ムービーを同時再生可能か確認することができます。(*2)
注釈
(*1): 詳細については H.264ムービー再生に失敗するケースについて (D): 解像度面積上限 をご参照ください。
(*2): 本ツールは再生自体が可能であるかを確認するものであり、カクつきの無い安定した再生が可能であるかを確認できるわけではありませんのでご注意ください。

動作環境

本ツールは Android 7.0 以降の端末で動作します。動作対象の Android ABI は arm7/arm8/x86/x86_64 です。

動作仕様

H.264面積上限チェッカーを起動すると以下のような画面が出力され、画面下部にあるボタンはそれぞれ以下を意味します。
android_h264_area_limit_checker_cap_screen_button.png
画面構成
各ボタンの説明
ボタン 説明
TEX/BUFF H.264デコーダーの動作モード: テクスチャ出力 と バッファ出力 を切り替えます。(*4)
START H.264面積上限チェックを開始します。
STOP H.264面積上限チェックの処理を停止します。
QUIT アプリを終了します。
DETAIL H.264面積上限チェックの結果の詳細についての画面表示 ON/OFF を切り替えます。
STATUS H.264面積上限中のプレーヤーの状態についての画面表示 ON/OFF を切り替えます。


STARTボタンを押すと最大同時再生本数(*3)に達するまで、以下5種類の解像度のH.264ムービーを解像度が高い順から順に1本ずつ再生していきます。
最大同時再生本数(*3)に達するかH.264面積上限によるエラー(*1)が発生したら、その端末におけるH.264ムービーの面積上限の推定値とそれに関する情報を画面とログ、ローカルストレージのyamlファイルに出力します。
注釈
(*3): 端末がサポートするH.264デコーダーの最大同時インスタンス数、またはAndroid版Sofdecで設けているH.264最大同時本数の上限16本のことを指します。
(*4): 現在ネイティブの Android版Sofdec SDK では バッファ出力 モードを一般公開しておらず、CRIWARE Unity Plug-in for Smartphone においてのみ使用される機能です。
チェック時に再生するH.264ムービー
再生優先度 解像度 総フレーム数 fps
1 3840x2160 1 29.97
2 1920x1080
3 1280x720
4 640x480
5 320x240
注意
  • 端末によっては結果を出力する前にメモリ不足等でクラッシュすることがあります。例えば以下端末では結果を出力する前に、メモリ不足によりツールが落ちます。
    • Google Pixel 3 (Android 12)
  • 結果を出力する前にツールが落ちてしまう場合は、落ちるまでにどれくらいの 解像度 x 本数 のH.264ムービーを再生したか確認し、その量を面積上限の目安としてください。

チェック方法

実機へのインストール/初回起動時のファイルアクセス権限設定

まずは adb install コマンドで H264AreaLimitChecker.apk を端末にインストールし、起動してください。
初回起動時は以下のようにローカルストレージへのアクセス権限の許可を求められるので、許可するよう設定してください。
android_h264_area_limit_checker_file_access_over11.png
ファイルアクセス権限設定画面(Andorid 11以降)
android_h264_area_limit_checker_file_access_under11.png
ファイルアクセス権限設定画面(Andorid 11未満)

チェックの開始

"TEX/BUFF"ボタンで動作を確認したいH.264デコーダー動作モードを選択した後、"START"ボタンを押下してH.264面積上限チェックを開始してください。
開始後、左上に"Checking... "と表示されるテキストが"Done."に切り替わったらチェック終了です。

チェック結果の確認

チェック結果は画面上の表示、ログ/yamlファイルのそれぞれから確認が可能です。

画面上から確認

チェック完了後、デフォルトでは以下のような出力画面が表示されます。
以下の出力画面の例では、この端末ではH.264面積上限が存在し、3840x2160 では 2本、1920x1080 では 8本、1280x720/640x480/320x240 では16本までのH.264ムービーが同時再生可能なことを示しています。
android_h264_area_limit_checker_cap_limit_result_simple.jpg
チェック結果の表示画面(簡易)
"DETAIL"ボタン、"STATUS"ボタンを押すと場合は以下のような情報が画面に追加されます。
追加された情報は以下を示しています。
  • H.264面積上限は 17280000 から 17356800 の間に存在する
  • 解像度3840x2160のH.264ムービーを2本/解像度1280x720のH.264ムービーを1本/解像度320x240のH.264ムービーを1本同時に再生できたものの、解像度320x240のH.264ムービーをもう1本再生しようとすると面積上限に達する
android_h264_area_limit_checker_cap_limit_result_detail.jpg
チェック結果の表示画面(詳細)

ログ/yamlファイル上から確認

ログ上には以下のような出力結果が出力されます。
========== H.264 AREA LIMIT CHECKER RESULT ==========
H.264 AREA LIMIT is between 17280000 and 17356800.
- [device-specific information] -
- checker version: 1.0
device name: SC-02J
model number: SC-02J
OS: 28
decoder info: OMX.qcom.video.decoder.avc
output mode: texture
output format: 2141391878
is area limit reached: yes
estimated lower area limit:
- value: 17280000
number of 3840x2160: 2
number of 1920x1080: 0
number of 1280x720: 0
number of 640x480: 2
number of 320x240: 1
estimated upper area limit:
- value: 17356800
number of 3840x2160: 2
number of 1920x1080: 0
number of 1280x720: 0
number of 640x480: 2
number of 320x240: 2
max decoder handle: 16
max width : 4096
max height: 4096
min width : 64
min height: 64
max framerate: 240
min framerate: 1
=====================================================
output result to /sdcard/cri/crimana/output/h264_area_limit_checker_result_SC-02J_os28_texture_v1_0.yaml


また、ログ出力内容のうち
- [device-specific information] -
から
=====================================================
の間は端末内の以下ディレクトリにyamlファイルとしても出力されます。(*5)
yamlファイルは Android Studio の Device Explorer や "adb pull /sdcard/cri/crimana/output" コマンドで取得して確認してください。
  • /sdcard/cri/crimana/output/
    • h264_area_limit_checker_result_(model)_(osバージョン)_(出力形式)_(ツールバージョン).yaml
    • (例) Pixel 5(Android 14), テクスチャ出力の場合
      • h264_area_limit_checker_result_Pixel_5_os34_texture_v1_0.yaml
注釈
(*5): 端末によってはファイル出力に失敗するケースがあります。失敗していた場合は画面上に"(Failed to output result to local file)"のテキストと、ログ上に以下テキストが出力されます。
Failed to output H.264 area limit checker result to local file.

チェック結果の表示画面(詳細)/ログ/yaml上に出力される各情報について

チェック結果の表示画面(詳細)、ログの一部、yamlファイルに出力される各項目は以下を意味しています。
H.264面積上限チェック結果のログ/yamlの内容説明
項目説明
checker versionH.264面積上限チェッカーのバージョン
device name端末の製品名
model number端末のモデル番号
OS端末のOSバージョン(APIレベル)
decoder infoH.264デコーダーの名称
output modeH.264デコーダー出力形式 (texture/buffer)
output formatH.264デコーダーの出力カラーフォーマット
is area limit reached面積上限に達したか否か (yes/no)
estimated lower area limitvalue面積上限の下方推定値
number of 3840x2160下方推定時に再生した 3840x2160 H.264ムービーの本数
number of 1920x1080下方推定時に再生した 1920x1080 H.264ムービーの本数
number of 1280x720下方推定時に再生した 1280x720 H.264ムービーの本数
number of 640x480下方推定時に再生した 640x480 H.264ムービーの本数
number of 320x240下方推定時に再生した 320x240 H.264ムービーの本数
estimated upper area limitvalue面積上限の上方推定値
number of 3840x2160上方推定時に再生した 3840x2160 H.264ムービーの本数
number of 1920x1080上方推定時に再生した 1920x1080 H.264ムービーの本数
number of 1280x720上方推定時に再生した 1280x720 H.264ムービーの本数
number of 640x480上方推定時に再生した 640x480 H.264ムービーの本数
number of 320x240上方推定時に再生した 320x240 H.264ムービーの本数
max decoder handle端末がサポートするH.264デコーダーの最大同時インスタンス数
max width端末がサポートする解像度の幅の上限
max height端末がサポートする解像度の高さの上限
min width端末がサポートする解像度の幅の下限
min height端末がサポートする解像度の高さの下限
max framerate端末がサポートする解像度のfpsの上限
min framerate端末がサポートする解像度のfpsの下限