- 本項では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)
動作環境
- 本ツールは Android 7.0 以降の端末で動作します。動作対象の Android ABI は arm7/arm8/x86/x86_64 です。
動作仕様
- H.264面積上限チェッカーを起動すると以下のような画面が出力され、画面下部にあるボタンはそれぞれ以下を意味します。
画面構成
各ボタンの説明
ボタン | 説明 |
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ファイルに出力します。
チェック時に再生する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 を端末にインストールし、起動してください。
初回起動時は以下のようにローカルストレージへのアクセス権限の許可を求められるので、許可するよう設定してください。
ファイルアクセス権限設定画面(Andorid 11以降)
ファイルアクセス権限設定画面(Andorid 11未満)
チェックの開始
- "TEX/BUFF"ボタンで動作を確認したいH.264デコーダー動作モードを選択した後、"START"ボタンを押下してH.264面積上限チェックを開始してください。
開始後、左上に"Checking... "と表示されるテキストが"Done."に切り替わったらチェック終了です。
チェック結果の確認
- チェック結果は画面上の表示、ログ/yamlファイルのそれぞれから確認が可能です。
画面上から確認
- チェック完了後、デフォルトでは以下のような出力画面が表示されます。
以下の出力画面の例では、この端末ではH.264面積上限が存在し、3840x2160 では 2本、1920x1080 では 8本、1280x720/640x480/320x240 では16本までのH.264ムービーが同時再生可能なことを示しています。
チェック結果の表示画面(簡易)
- "DETAIL"ボタン、"STATUS"ボタンを押すと場合は以下のような情報が画面に追加されます。
追加された情報は以下を示しています。
- H.264面積上限は 17280000 から 17356800 の間に存在する
- 解像度3840x2160のH.264ムービーを2本/解像度1280x720のH.264ムービーを1本/解像度320x240のH.264ムービーを1本同時に再生できたものの、解像度320x240のH.264ムービーをもう1本再生しようとすると面積上限に達する
チェック結果の表示画面(詳細)
ログ/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
チェック結果の表示画面(詳細)/ログ/yaml上に出力される各情報について
- チェック結果の表示画面(詳細)、ログの一部、yamlファイルに出力される各項目は以下を意味しています。
H.264面積上限チェック結果のログ/yamlの内容説明
項目 | 説明 |
checker version | H.264面積上限チェッカーのバージョン |
device name | 端末の製品名 |
model number | 端末のモデル番号 |
OS | 端末のOSバージョン(APIレベル) |
decoder info | H.264デコーダーの名称 |
output mode | H.264デコーダー出力形式 (texture/buffer) |
output format | H.264デコーダーの出力カラーフォーマット |
is area limit reached | 面積上限に達したか否か (yes/no) |
estimated lower area limit | value | 面積上限の下方推定値 |
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 limit | value | 面積上限の上方推定値 |
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の下限 |