iPhone 4 (A4チップ) のAVCデコード・処理能力の実験

掲示板読んでて気になったので、iPhone 4 (A4チップ)のAVC/H.264のデコード・処理能力についてちょっと調べてみた。(すでに掲示板には投下済みですが^^)

結論から言うと720pHigh@L3.1な動画で110fps前後です。 再生する動画にもよりますので参考値です

実験に用いた動画は簡単なアニメーションをつくるためにPNGフォーマットの連番ファイルを用意し、AviUtlにて30.000fps/3000フレーム/100秒の音声なし、動画コーデックなし、無圧縮AVIフォーマットファイルを作成した。

それをHandBrakeにてAVC圧縮、MP4フォーマットファイルを作成。
エンコード設定は次の通り。とりあえずデコード処理は複雑だろう。(by MediaInfo)

cabac=1 / ref=4 / deblock=1:0:0 / analyse=0x3:0x113 / me=umh / subme=10 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=1 / me_range=24 / chroma_me=1 / trellis=2 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / threads=6 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=2 / b_pyramid=1 / b_adapt=2 / b_bias=0 / direct=3 / weightb=1 / open_gop=0 / weightp=2 / keyint=300 / keyint_min=30 / scenecut=40 / intra_refresh=0 / rc_lookahead=40 / rc=crf / mbtree=1 / crf=17.0 / qcomp=0.60 / qpmin=10 / qpmax=51 / qpstep=4 / vbv_maxrate=12000 / vbv_bufsize=10000 / crf_max=0.0 / nal_hrd=vbr / ip_ratio=1.40 / aq=1:1.00

動画の概要は1280x720p HighProfile Level 3.1
それらをmp4fpsmodを用いてフレームレートを変更。

準備したフレームレート

  • 1fps(0.03倍速)
  • 3fps(0.1倍速)
  • 15fps(0.5倍速)
  • 30fps(オリジナル)
  • 60fps(2倍速)
  • 120fps(4倍速)
  • 150fps(5倍速)
  • 300fps(10倍速)
  • 600fps(20倍速)

    実験に用いた環境

iPhone 4

  • A4チップ
  • iOS v4.3.3

VLC player

  • Intel Core i5 第2世代のなにか(詳しくはiMacの2011.5の安いやつ見て欲しい)
  • VLC player v1.1.10

実験結果

1往復がちょうど300フレームになります。
デコードフレーム数は人間の目で確かめた曖昧なものです。ご了承ください。

  iPhone 4 fps VLC player  
3000フレームを3000秒でデコード 1fps 3000フレームを3000秒でデコード
3000フレームを1000秒でデコード 3fps 3000フレームを1000秒でデコード
3000フレームを200秒でデコード 15fps 3000フレームを200秒でデコード
3000フレームを100秒でデコード 30fps 3000フレームを100秒でデコード
3000フレームを50秒でデコード 60fps 3000フレームを50秒でデコード
25秒で約2900フレームデコード
=約116fps
120fps 3000フレームを25秒でデコード
× 21秒で約2100フレームデコード
=約105fps
150fps 3000フレームを21秒でデコード
× 10秒で約1200フレームデコード
=約120fps
300fps 3000フレームを10秒でデコード
× 5秒で約600フレームデコード
=約120fps
600fps 完全に画が破綻していて再生フレーム数確認不能 ×

考察とか発見とか

  • A4チップのAVCデコード・処理能力は1280x720p HighProfile Level 3.1な動画において約110?120fps前後ぐらいが限界だった。
  • 1fpsの動画を見るとフレーム間予測による特殊なデコード(つまり順番通りでない)の模様が開始数秒間見れるかもしれない。
  • VLC player v1.1.10は最後のコンマ数秒間もしくは数フレームのデコードをサボる。
  • iOSは決められた時間内に最後まで1フレームずつデコードを丁寧にしっかりする呑気なヤツ。
    (ちゃんと処理するけど時間オーバー分はゴソっと再生を諦める派)
  • VLCは再生すべきフレーム数と時間はきっちり守る頑固者なのでデコードは適当。
    (処理できなくてもガンガン突っ走る派)

あとがき

  • iPad 2は既にiPhone 5に搭載予定のA5チップ搭載済みなので持ってる方はどれくらいパワーアップしているかぜひ検証お願いします。
  • 他のスマフォ持ってる方もお時間あればぜひ検証をお願いします。
  • 解像度、BaselineやMainなどのプロファイルやレベル等のデコード処理が優しい動画は別途要検証事項。
  • もう少し時間あったら110fps前後の動画やBaseline,Mainの動画でも自分が検証してまとめたい。

実験資料のダウンロード

実験に用いた動画9つを含むZIPファイルをダウンロード(約5MB)

コメント

非公開コメント