Submit Search
Upload
Stagefright入門
•
Download as ODP, PDF
•
1 like
•
4,003 views
L
l_b__
Follow
横浜Androidプラットフォーム部第13回勉強会で発表した資料です。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 34
Download now
Recommended
Stagefright入門
Stagefright入門
l_b__
第8回Unity勉強会 Unityサウンド入門編 と サウンドワークショップ事例 Tech buzz8 Unity Study 20120927 tanaka
第8回Unity勉強会 Unityサウンド入門編 と サウンドワークショップ事例 Tech buzz8 Unity Study 20120927 tanaka
Takashi Tanaka
20分で理解するdisplaysystem
20分で理解するdisplaysystem
magoroku Yamamoto
Elog and Ebuild Phase Hook
Elog and Ebuild Phase Hook
Yasuhiro Asaka
「Adx2 LE」Unity活用編 初~中級編
「Adx2 LE」Unity活用編 初~中級編
Takaaki Ichijo
ラズパイオーディオで学ぶシステム構築入門
ラズパイオーディオで学ぶシステム構築入門
VirtualTech Japan Inc./Begi.net Inc.
ソフトシンセを作りながら学ぶPythonプログラミング
ソフトシンセを作りながら学ぶPythonプログラミング
Ransui Iso
みんなのPython勉強会#77 パッケージングしよう
みんなのPython勉強会#77 パッケージングしよう
Atsushi Odagiri
Recommended
Stagefright入門
Stagefright入門
l_b__
第8回Unity勉強会 Unityサウンド入門編 と サウンドワークショップ事例 Tech buzz8 Unity Study 20120927 tanaka
第8回Unity勉強会 Unityサウンド入門編 と サウンドワークショップ事例 Tech buzz8 Unity Study 20120927 tanaka
Takashi Tanaka
20分で理解するdisplaysystem
20分で理解するdisplaysystem
magoroku Yamamoto
Elog and Ebuild Phase Hook
Elog and Ebuild Phase Hook
Yasuhiro Asaka
「Adx2 LE」Unity活用編 初~中級編
「Adx2 LE」Unity活用編 初~中級編
Takaaki Ichijo
ラズパイオーディオで学ぶシステム構築入門
ラズパイオーディオで学ぶシステム構築入門
VirtualTech Japan Inc./Begi.net Inc.
ソフトシンセを作りながら学ぶPythonプログラミング
ソフトシンセを作りながら学ぶPythonプログラミング
Ransui Iso
みんなのPython勉強会#77 パッケージングしよう
みんなのPython勉強会#77 パッケージングしよう
Atsushi Odagiri
Lithium Labo #1
Lithium Labo #1
Yusuke Ando
debugging server with strace
debugging server with strace
Yoshinari Takaoka
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
Etsuji Nakai
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
UnityTechnologiesJapan002
Nio2
Nio2
Appresso Engineering Team
Easy caching and logging package using annotation in Python
Easy caching and logging package using annotation in Python
Yasunori Horikoshi
Inside winnyp
Inside winnyp
FFRI, Inc.
VSTiつくるよゼミ
VSTiつくるよゼミ
y3eadgbe
○○大学の本当にあった怖い話
○○大学の本当にあった怖い話
idkqh7 Nishino
談話と特殊効果 #1
談話と特殊効果 #1
幸雄 村上
DTMF — DTMF と自作アプリの軌跡 #yidev
DTMF — DTMF と自作アプリの軌跡 #yidev
Tomohiro Kumagai
ラズパイオーディオで学ぶLinuxシステム構築
ラズパイオーディオで学ぶLinuxシステム構築
VirtualTech Japan Inc./Begi.net Inc.
組み込みシステムのセキュリティ
組み込みシステムのセキュリティ
FFRI, Inc.
Yapf2013
Yapf2013
l_b__
Eclipseを使ったandroid nativeデバッグ
Eclipseを使ったandroid nativeデバッグ
l_b__
Open binder
Open binder
l_b__
JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)
l_b__
ABS2015 のセッション紹介
ABS2015 のセッション紹介
l_b__
PF開発に使えるAOSPのツール達
PF開発に使えるAOSPのツール達
l_b__
Androidの新ビルドシステム
Androidの新ビルドシステム
l_b__
Intentの概要
Intentの概要
l_b__
Android デバッグ小ネタ
Android デバッグ小ネタ
l_b__
More Related Content
What's hot
Lithium Labo #1
Lithium Labo #1
Yusuke Ando
debugging server with strace
debugging server with strace
Yoshinari Takaoka
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
Etsuji Nakai
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
UnityTechnologiesJapan002
Nio2
Nio2
Appresso Engineering Team
Easy caching and logging package using annotation in Python
Easy caching and logging package using annotation in Python
Yasunori Horikoshi
Inside winnyp
Inside winnyp
FFRI, Inc.
VSTiつくるよゼミ
VSTiつくるよゼミ
y3eadgbe
○○大学の本当にあった怖い話
○○大学の本当にあった怖い話
idkqh7 Nishino
談話と特殊効果 #1
談話と特殊効果 #1
幸雄 村上
DTMF — DTMF と自作アプリの軌跡 #yidev
DTMF — DTMF と自作アプリの軌跡 #yidev
Tomohiro Kumagai
ラズパイオーディオで学ぶLinuxシステム構築
ラズパイオーディオで学ぶLinuxシステム構築
VirtualTech Japan Inc./Begi.net Inc.
組み込みシステムのセキュリティ
組み込みシステムのセキュリティ
FFRI, Inc.
What's hot
(13)
Lithium Labo #1
Lithium Labo #1
debugging server with strace
debugging server with strace
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
Nio2
Nio2
Easy caching and logging package using annotation in Python
Easy caching and logging package using annotation in Python
Inside winnyp
Inside winnyp
VSTiつくるよゼミ
VSTiつくるよゼミ
○○大学の本当にあった怖い話
○○大学の本当にあった怖い話
談話と特殊効果 #1
談話と特殊効果 #1
DTMF — DTMF と自作アプリの軌跡 #yidev
DTMF — DTMF と自作アプリの軌跡 #yidev
ラズパイオーディオで学ぶLinuxシステム構築
ラズパイオーディオで学ぶLinuxシステム構築
組み込みシステムのセキュリティ
組み込みシステムのセキュリティ
Viewers also liked
Yapf2013
Yapf2013
l_b__
Eclipseを使ったandroid nativeデバッグ
Eclipseを使ったandroid nativeデバッグ
l_b__
Open binder
Open binder
l_b__
JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)
l_b__
ABS2015 のセッション紹介
ABS2015 のセッション紹介
l_b__
PF開発に使えるAOSPのツール達
PF開発に使えるAOSPのツール達
l_b__
Androidの新ビルドシステム
Androidの新ビルドシステム
l_b__
Intentの概要
Intentの概要
l_b__
Android デバッグ小ネタ
Android デバッグ小ネタ
l_b__
Android,Brillo,ChromeOS
Android,Brillo,ChromeOS
l_b__
Viewers also liked
(10)
Yapf2013
Yapf2013
Eclipseを使ったandroid nativeデバッグ
Eclipseを使ったandroid nativeデバッグ
Open binder
Open binder
JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)
ABS2015 のセッション紹介
ABS2015 のセッション紹介
PF開発に使えるAOSPのツール達
PF開発に使えるAOSPのツール達
Androidの新ビルドシステム
Androidの新ビルドシステム
Intentの概要
Intentの概要
Android デバッグ小ネタ
Android デバッグ小ネタ
Android,Brillo,ChromeOS
Android,Brillo,ChromeOS
Recently uploaded
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
Recently uploaded
(8)
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
Stagefright入門
1.
Stagefright 入門 ~
Android Multimedia~ 横浜 Android プラットフォーム部 第13回勉強会 2011/9/19 @ l_b__
2.
3.
ソース自体は Eclair から入っていたが、正式採用は
Gingerbread
4.
意味は「舞台負け」「気後れ」「舞台あがり」(研究社新英和中辞典より)
5.
6.
Uri myUri =
....; // initialize Uri here
7.
MediaPlayer mediaPlayer =
new MediaPlayer();
8.
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
9.
mediaPlayer.setDataSource(getApplicationContext(), myUri);
10.
mediaPlayer.prepare();
11.
mediaPlayer.start();
12.
13.
コアである MediaPlayer.java の実行ステップ数450行!
14.
15.
で、 JNI を通した呼び先が
Stagefright。
16.
17.
しかし ffmpeg はライセンスに
GPL を採用。
18.
しかも...
19.
Hall of Shame
20.
21.
で、 ffmpeg はあきらめ、他のエンジンを探したらしい。
22.
そして採用されたのが PacketVideo 社の
CORE をオープンソース化した OpenCore。
23.
以後、 Froyo まで/
external/opencore の下に存在。
24.
25.
開発向けガイドなどのドキュメント類が/external/opencore/doc配下にある。
26.
OpenCoreには一つ面白い特徴が。
27.
28.
29.
30.
OpenGL,OpenCL,OpenVG,OpenSL,OpenKODE,WebGL,EGL,WebCL,OpenWF etc etc.
31.
OpenAL が Khronos
策定で無いのをさっき知ったのはここだけの話です。
32.
33.
OpenMAXにはDL(Development Layer)、IL、AL(Application Layer)があり、ILはコーデックを叩きやすくするAPIが定義されている。
34.
OpenMAX IL http://pc.watch.impress.co.jp/docs/2004/0729/kaigai104.htm
から
35.
36.
Stagefrightが公開されたのはEclairから。
37.
38.
動画再生はファイル/ストリームからコンテナ形式に従ってフレームを取り出し、デコードして取り出した画像を画面表示すること。
39.
40.
前の I フレーム/
P フレームを参照して復号する P フレーム
41.
42.
43.
サンプリング周波数単位で、音圧を変換した量子化ビットを記録したもの。
44.
サンプリング周波数は音声をどの頻度でデータ化するかをHzで表したもの。
45.
量子化ビット(ビット深度)はどの程度の精度で音圧を記録するか。
46.
47.
データサイズは1秒辺り44100x2byte(=16bit)x2(ch)=176400byte
48.
このデータをコーデックでエンコード・デコードする。
49.
50.
ファイル/ストリームがどのコンテナ形式かをチェックし、対応するDataSource/MediaSourceに格納
51.
52.
デコードしたフレームをSurface/AudioTrackに設定してSurfaceFlinger/AudioFlingerに渡して再生する(Rendrer)
53.
StageFrightを簡単な図で http://events.linuxfoundation.org/events/embedded-linux-conference/garcia の資料http://elinux.org/images/5/52/Elc2011_garcia.pdfから
54.
55.
56.
57.
58.
OpenMAX IL の使い方は
Bellagio( http://omxil.sourceforge.net/)が詳しく 、サンプルソースがある。
59.
/ external/opencore/doc にある開発ガイドにも説明あり。
60.
以下 openmax_call_sequences.pdf から抜粋
61.
62.
コンポーネント名から機能(何のCodecか)を取得。
63.
64.
コンポーネントのパラメータ取得
65.
66.
この後、コンポーネントの状態をLoaded->Idle->Executingにする。
67.
68.
69.
70.
画像データは必要ならスケーリング、画像フォーマット(YUV->RGB)変換を行い、Surfaceを使ってSurfaceFlingerで描画。
71.
音声データはAudioTrackを使ってAudioFlingerで再生。
72.
http://freepine.blogspot.com/2010/01/overview-of-stagefrighter-player.html Stagefrightの構成図
73.
74.
オレンジがOpenMAX ILの実装部分。
75.
水色がレンダリング処理部分。
76.
赤が全体を制御する機能部分。
77.
78.
StagefrightにはOpenMAX DLというオープンスタンダードが使われています。
79.
80.
なので、Android標準で対応していないフォーマットの動画・音声も頑張ればHWデコードをサポートした形で自作アプリから再生できます。 以上です。
Download now