Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
l_b__
PDF, PPTX
22,334 views
Stagefright入門
横浜Androidプラットフォーム部第13回勉強会で発表した資料です。
Technology
◦
Read more
14
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 34
2
/ 34
3
/ 34
4
/ 34
5
/ 34
6
/ 34
7
/ 34
8
/ 34
9
/ 34
10
/ 34
11
/ 34
12
/ 34
13
/ 34
14
/ 34
15
/ 34
16
/ 34
17
/ 34
18
/ 34
19
/ 34
20
/ 34
21
/ 34
22
/ 34
23
/ 34
24
/ 34
25
/ 34
26
/ 34
27
/ 34
28
/ 34
29
/ 34
30
/ 34
31
/ 34
32
/ 34
33
/ 34
34
/ 34
More Related Content
PDF
AndroidとSELinux
by
android sola
PDF
Run Qt on Linux embedded systems using Yocto
by
Marco Cavallini
PDF
Power Management from Linux Kernel to Android
by
National Cheng Kung University
PDF
Embedded Android : System Development - Part II (Linux device drivers)
by
Emertxe Information Technologies Pvt Ltd
PDF
Android起動周りのノウハウ
by
chancelab
ODP
Embedded Android : System Development - Part III
by
Emertxe Information Technologies Pvt Ltd
PDF
A practical guide to buildroot
by
Emertxe Information Technologies Pvt Ltd
PDF
Android Multimedia Framework
by
Picker Weng
AndroidとSELinux
by
android sola
Run Qt on Linux embedded systems using Yocto
by
Marco Cavallini
Power Management from Linux Kernel to Android
by
National Cheng Kung University
Embedded Android : System Development - Part II (Linux device drivers)
by
Emertxe Information Technologies Pvt Ltd
Android起動周りのノウハウ
by
chancelab
Embedded Android : System Development - Part III
by
Emertxe Information Technologies Pvt Ltd
A practical guide to buildroot
by
Emertxe Information Technologies Pvt Ltd
Android Multimedia Framework
by
Picker Weng
What's hot
PDF
Booting Android: bootloaders, fastboot and boot images
by
Chris Simmonds
PDF
Embedded Android : System Development - Part I
by
Emertxe Information Technologies Pvt Ltd
PDF
Linux programming - Getting self started
by
Emertxe Information Technologies Pvt Ltd
PDF
Embedded Android Workshop
by
Opersys inc.
PDF
Network Drivers
by
Anil Kumar Pugalia
PPTX
Android internals By Rajesh Khetan
by
Rajesh Khetan
PPTX
YoctoをつかったDistroの作り方とハマり方
by
wata2ki
PDF
Android Boot Time Optimization
by
Kan-Ru Chen
PDF
Android OTA updates
by
Gary Bisson
PPT
Learning AOSP - Android Linux Device Driver
by
Nanik Tolaram
DOCX
linux file sysytem& input and output
by
MythiliA5
PDF
Embedded Android : System Development - Part II (HAL)
by
Emertxe Information Technologies Pvt Ltd
PPTX
Android Booting Sequence
by
Jayanta Ghoshal
PDF
Introduction to Linux Drivers
by
Anil Kumar Pugalia
PDF
Understanding the Android System Server
by
Opersys inc.
PPTX
Linux Kernel Booting Process (1) - For NLKB
by
shimosawa
PDF
Embedded_Linux_Booting
by
Rashila Rr
PDF
Bootloaders
by
Anil Kumar Pugalia
PDF
Linux boot process
by
Archana Chandrasekharan
PPT
linux device driver
by
Rahul Batra
Booting Android: bootloaders, fastboot and boot images
by
Chris Simmonds
Embedded Android : System Development - Part I
by
Emertxe Information Technologies Pvt Ltd
Linux programming - Getting self started
by
Emertxe Information Technologies Pvt Ltd
Embedded Android Workshop
by
Opersys inc.
Network Drivers
by
Anil Kumar Pugalia
Android internals By Rajesh Khetan
by
Rajesh Khetan
YoctoをつかったDistroの作り方とハマり方
by
wata2ki
Android Boot Time Optimization
by
Kan-Ru Chen
Android OTA updates
by
Gary Bisson
Learning AOSP - Android Linux Device Driver
by
Nanik Tolaram
linux file sysytem& input and output
by
MythiliA5
Embedded Android : System Development - Part II (HAL)
by
Emertxe Information Technologies Pvt Ltd
Android Booting Sequence
by
Jayanta Ghoshal
Introduction to Linux Drivers
by
Anil Kumar Pugalia
Understanding the Android System Server
by
Opersys inc.
Linux Kernel Booting Process (1) - For NLKB
by
shimosawa
Embedded_Linux_Booting
by
Rashila Rr
Bootloaders
by
Anil Kumar Pugalia
Linux boot process
by
Archana Chandrasekharan
linux device driver
by
Rahul Batra
Viewers also liked
PDF
Android media framework overview
by
Jerrin George
PDF
IOMX in Android
by
Raghavan Venkateswaran
PDF
Androidの新ビルドシステム
by
l_b__
PPTX
Understanding open max il
by
Chethan Pchethan
ODP
Android デバッグ小ネタ
by
l_b__
PPT
OpenMAX Overview
by
Yoss Cohen
PDF
PF開発に使えるAOSPのツール達
by
l_b__
PDF
Open binder
by
l_b__
KEY
日本Androidの会発表スライド androidのメディア機能の話
by
Tatsuya Matsumoto
PDF
20分で理解するdisplaysystem
by
magoroku Yamamoto
PDF
JellyBeanのソースをとりあえず眺めてみた(手抜き)
by
l_b__
PPTX
A slightly deeper dive into Stagefright
by
Alexy Joseph
PDF
さらば、Stagefright 脆弱性
by
Tsukasa Oi
PDF
Eclipseを使ったandroid nativeデバッグ
by
l_b__
ODP
Stagefright入門
by
l_b__
ODP
Yapf2013
by
l_b__
PPTX
Surface flingerservice(서피스플링거서비스초기화 jb)
by
fefe7270
ODP
Intentの概要
by
l_b__
PDF
ABS2015 のセッション紹介
by
l_b__
PDF
Android最速のフォトグラファーに、俺はなる!
by
Kazutoshi Kashimoto
Android media framework overview
by
Jerrin George
IOMX in Android
by
Raghavan Venkateswaran
Androidの新ビルドシステム
by
l_b__
Understanding open max il
by
Chethan Pchethan
Android デバッグ小ネタ
by
l_b__
OpenMAX Overview
by
Yoss Cohen
PF開発に使えるAOSPのツール達
by
l_b__
Open binder
by
l_b__
日本Androidの会発表スライド androidのメディア機能の話
by
Tatsuya Matsumoto
20分で理解するdisplaysystem
by
magoroku Yamamoto
JellyBeanのソースをとりあえず眺めてみた(手抜き)
by
l_b__
A slightly deeper dive into Stagefright
by
Alexy Joseph
さらば、Stagefright 脆弱性
by
Tsukasa Oi
Eclipseを使ったandroid nativeデバッグ
by
l_b__
Stagefright入門
by
l_b__
Yapf2013
by
l_b__
Surface flingerservice(서피스플링거서비스초기화 jb)
by
fefe7270
Intentの概要
by
l_b__
ABS2015 のセッション紹介
by
l_b__
Android最速のフォトグラファーに、俺はなる!
by
Kazutoshi Kashimoto
Similar to Stagefright入門
PDF
ライブストリーミングの基礎知識その2
by
kumaryu
PDF
Fbx解説 (1 構文編) (1)
by
らりお ザ・何とは言わない天然水ソムリエ
PDF
Media Art II openFrameworks 複数のシーンの管理・切替え
by
Atsushi Tadokoro
PDF
メディア・アート II 第1回: ガイダンス openFrameworks入門
by
Atsushi Tadokoro
PDF
Tokyo Video Tech #2 動画配信の課題とCMAF活用のメリットデメリット
by
Masashi Ito
PDF
Xbyakの紹介とその周辺
by
MITSUNARI Shigeo
PDF
オープンソース開発と、あるフレームバッファコンソールの話~名古屋応用編~
by
nullnilaki
PDF
「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望
by
Atsushi Tadokoro
PDF
openFrameworks Workshop in Kanazawa v001
by
Teruaki Tsubokura
PDF
Processing workshop
by
Wataru Kani
PDF
Designing video game hardware in verilog
by
Atsuki Takahashi
PDF
Interactive Music II Processingによるアニメーション
by
Atsushi Tadokoro
PDF
Arduino入門
by
Junichi Minamino
PDF
ストリーミングのげんざい
by
Tetsuya Morimoto
PDF
自由ソフトウェアによるライブストリーミング
by
Takatsugu Nokubi
PPT
d-kami x86-2
by
Daisuke Kamikawa
KEY
女子美術大学メディアアート演習ⅡB 2012 Spring 第10回 1/2
by
Satoru Tokuhisa
PDF
Movie Format in a Nutshell 2013
by
Ryo Amano
PDF
Processing workshop v3.0
by
Wataru Kani
PDF
情報編集(Web) HTML5 実践2 Processing.jsを使う
by
Atsushi Tadokoro
ライブストリーミングの基礎知識その2
by
kumaryu
Fbx解説 (1 構文編) (1)
by
らりお ザ・何とは言わない天然水ソムリエ
Media Art II openFrameworks 複数のシーンの管理・切替え
by
Atsushi Tadokoro
メディア・アート II 第1回: ガイダンス openFrameworks入門
by
Atsushi Tadokoro
Tokyo Video Tech #2 動画配信の課題とCMAF活用のメリットデメリット
by
Masashi Ito
Xbyakの紹介とその周辺
by
MITSUNARI Shigeo
オープンソース開発と、あるフレームバッファコンソールの話~名古屋応用編~
by
nullnilaki
「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望
by
Atsushi Tadokoro
openFrameworks Workshop in Kanazawa v001
by
Teruaki Tsubokura
Processing workshop
by
Wataru Kani
Designing video game hardware in verilog
by
Atsuki Takahashi
Interactive Music II Processingによるアニメーション
by
Atsushi Tadokoro
Arduino入門
by
Junichi Minamino
ストリーミングのげんざい
by
Tetsuya Morimoto
自由ソフトウェアによるライブストリーミング
by
Takatsugu Nokubi
d-kami x86-2
by
Daisuke Kamikawa
女子美術大学メディアアート演習ⅡB 2012 Spring 第10回 1/2
by
Satoru Tokuhisa
Movie Format in a Nutshell 2013
by
Ryo Amano
Processing workshop v3.0
by
Wataru Kani
情報編集(Web) HTML5 実践2 Processing.jsを使う
by
Atsushi Tadokoro
Recently uploaded
PDF
エンジニアが選ぶべきAIエディタ & Antigravity 活用例@ウェビナー「触ってみてどうだった?Google Antigravity 既存IDEと...
by
NorihiroSunada
PDF
流行りに乗っかるClaris FileMaker 〜AI関連機能の紹介〜 by 合同会社イボルブ
by
Evolve LLC.
PPTX
楽々ナレッジベース「楽ナレ」3種比較 - Dify / AWS S3 Vector / Google File Search Tool
by
Kiyohide Yamaguchi
PDF
20251210_MultiDevinForEnterprise on Devin 1st Anniv Meetup
by
Masaki Yamakawa
PDF
Machine Tests Benchmark Suite. Explain github.com/alexziskind1/machine_tests #2
by
Tasuku Takahashi
PDF
Machine Tests Benchmark Suite. Explain github.com/alexziskind1/machine_tests #1
by
Tasuku Takahashi
エンジニアが選ぶべきAIエディタ & Antigravity 活用例@ウェビナー「触ってみてどうだった?Google Antigravity 既存IDEと...
by
NorihiroSunada
流行りに乗っかるClaris FileMaker 〜AI関連機能の紹介〜 by 合同会社イボルブ
by
Evolve LLC.
楽々ナレッジベース「楽ナレ」3種比較 - Dify / AWS S3 Vector / Google File Search Tool
by
Kiyohide Yamaguchi
20251210_MultiDevinForEnterprise on Devin 1st Anniv Meetup
by
Masaki Yamakawa
Machine Tests Benchmark Suite. Explain github.com/alexziskind1/machine_tests #2
by
Tasuku Takahashi
Machine Tests Benchmark Suite. Explain github.com/alexziskind1/machine_tests #1
by
Tasuku Takahashi
Stagefright入門
1.
横浜 Android プラットフォーム部
第13回勉強会 Stagefright 入門 ~ Android Multimedia~ 2011/9/19 @l_b__
2.
Stagefright とは? ➲
Gingerbread から採用された動画・音声再生を行う ためのメディアプレーヤーフレームワーク ➲ ソース自体は Eclair から入っていたが、正式採用は Gingerbread ➲ 意味は「舞台負け」「気後れ」「舞台あがり」(研究 社新英和中辞典より)
3.
MediaPlayer のおさらい ➲
基本的な MediaPlayer の使い方(音楽再生) Uri myUri = ....; // initialize Uri here MediaPlayer mediaPlayer = new MediaPlayer(); mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC) ; mediaPlayer.setDataSource(getApplicationContext(), myUri); mediaPlayer.prepare(); mediaPlayer.start();
4.
MediaPlayer のソースを見る ➲ frameworks/base/me
dia 以下がマルチメディ ア関連のソース。 ➲ コアである MediaPlayer.java の実 行ステップ数450行!
5.
MediaPlayer のソース ➲ イベント処理を行っているだけでほ
とんどの機能で Native を呼んでい る。 ➲ で、 JNI を通した呼び先が Stagefright。
6.
Android のマルチメディア史 ➲ 元々はメディアエンジンとして
ffmpeg (http://ffmpeg.org/) を採 用する予定だったらしい。 ➲ しかし ffmpeg はライセンスに GPL を採用。 ➲ しかも...
7.
Hall of Shame
8.
Android のマルチメディア史 ➲
ライセンス違反ソフトの晒し上げページを作るほど 強硬派。 ➲ で、 ffmpeg はあきらめ、他のエンジンを探したら しい。 ➲ そして採用されたのが PacketVideo 社の CORE を オープンソース化した OpenCore。 ➲ 以後、 Froyo まで/ external/opencore の下に存 在。
9.
OpenCore ➲
OpenCore はプレーヤー部分である pvPlayer と各 Codec から構成。 ➲ 開発向けガイドなどのドキュメント類 が/ external/opencore/doc 配下にある。 ➲ OpenCore には一つ面白い特徴が。
10.
OpenMAX ➲
OpenCore は OpenMAX をサポート。 ➲ OpenMAX(http://www.khronos.org/open max/) とは ● Khronos グループが策定しているポータビリ ティを重視したクロスプラットフォーム向け のメディア API
11.
余談: Khronos って? ➲
様々なオープンスタンダード API を策定して いるコンソーシアム。 ➲ OpenGL,OpenCL,OpenVG,OpenSL,OpenK ODE,WebGL,EGL,WebCL,OpenWF etc etc. ➲ OpenAL が Khronos 策定で無いのをさっき知ったのはここだけの話で す。
12.
OpenCore と OpenMAX ➲
OpenCore がサポートしているのは OpenMAX IL(Integration Layer) ➲ OpenMAX には DL(Development Layer)、IL、AL(Application Layer) があ り、 IL はコーデックを叩きやすくする API が定義されている。
13.
OpenMAX IL http://pc.watch.impress.co.jp/docs/2004/0729/kaigai104.htm から
14.
ここは想像 ➲
OpenCore にスタンダードなエンコード/デ コードの API が用意されていたので、 Java 側の AndroidMediaFramework に合わせて 作り直したのが Stagefright じゃないかな と。 ➲ Stagefright が公開されたのは Eclair から。
15.
動画再生の基礎 ➲
動画はおおざっぱに言うと、パラパラ漫画の 絵(フレーム)を1枚ずつどう圧縮し(符号化)、 どういう形でファイル/ストリームに格納する か(コンテナ)。 ➲ 動画再生はファイル/ストリームからコンテナ 形式に従ってフレームを取り出し、デコード して取り出した画像を画面表示すること。
16.
動画再生の図 ➲
取り出したフレームには ● それだけで復号できる I フレーム ● 前の I フレーム/ P フレームを参照して復号する P フレーム ● 前後のフレームを参照して復号する B フレーム ➲ デコーダには I フレームを含む形でフレームを渡す必要がある
17.
音声再生の基礎 ➲
基本は PCM(Pulse Code Modulation) フォー マット。 ➲ サンプリング周波数単位で、音圧を変換した 量子化ビットを記録したもの。 ➲ サンプリング周波数は音声をどの頻度でデー タ化するかを Hz で表したもの。 ➲ 量子化ビット(ビット深度)はどの程度の精度 で音圧を記録するか。
18.
音声再生の基礎 ➲
CD の場合、サンプリング周波数は 44.1 KHz、 量子化ビット数は16 bit、 ステ レオで2 ch。 ➲ データサイズは1秒辺り 44100 x2byte(=16bit)x2(ch)=176400byt e ➲ このデータをコーデックでエンコード・デ コードする。
19.
で、 Stagefright の話 ➲
Stagefright の機能を簡単に ● アプリから渡された uri を元にファイル/スト リームを取得 ● ファイル/ストリームがどのコンテナ形式かを チェックし、対応する DataSource/MediaSource に格納
20.
Stagefright の処理(承前) ●
コンテナからフレームを取り出し ( Parser)、OpenMAX IL でデコード ● デコードしたフレームを Surface/AudioTrack に設定して SurfaceFlinger/AudioFlinger に 渡して再生する( Rendrer)
21.
StageFright を簡単な図で http://events.linuxfoundation.org/events/embedded- linux-conference/garcia の資料 http://elinux.org/images/5/52/Elc2011_garcia.pdf
から
22.
Parser 処理 ➲
ファイル/ストリームデータを格納する MediaSource クラス及びコンテナタイプ毎の サブクラスから MediaExtractor のコンテナ タイプ毎のサブクラスを呼び出して処理。 ● MPEG4 の場合、 MPEG4Source と MPEG4Extractor ➲
23.
Parse 処理 ➲
内部では泥臭くバイナリデータをパース。 ➲ フレームのデータを取得しておく。 ● 画面サイズ、フレームレート、 RGB フォー マット、サンプリングレート、ビット深度等 デコード、レンダリングに必要な情報
24.
デコード処理 ➲
OpenMAX IL の API を使ってデコードする。 ➲ OpenMAX IL の使い方は Bellagio( http://omxil.sourceforge.net/)が詳しく、サンプ ルソースがある。 ➲ /external/opencore/doc にある開発ガイドにも説 明あり。 ➲ 以下 openmax_call_sequences.pdf から抜粋
25.
OMX Core 初期化
➲ OMX_Init で初期化 し、使用可能な Codec をコンポーネ ント名として取得す る。 ➲ コンポーネント名か ら機能(何の Codec か)を取得。
26.
OMX コンポーネント設定
➲ OMXGetHandle で コンポーネントハン ドルを取得する。 ➲ コンポーネントのパ ラメータ取得
27.
OMX 入出力バッファ設定
➲ フレームを入力し、 デコードされたデー タを出力するバッ ファを設定する。 ➲ この後、コンポーネ ントの状態を Loaded→Idle→Exe cuting にする。
28.
OMX のポート ➲
コンポーネントの入出力ポートを介してデ コード前/後のデータをやり取りする。
29.
OMX デコード処理 ➲
バッファにデータを設定した後、 EmptyThisBuffer でデ コード開始、 FillThisBuffer でデコードされたデータを取り 出し。
30.
Renderer 処理 ➲
OMX コンポーネントから取得したデータを出 力する。 ➲ 画像データは必要ならスケーリング、画像 フォーマット( YUV→RGB) 変換を行 い、 Surface を使って SurfaceFlinger で描 画。 ➲ 音声データは AudioTrack を使って AudioFlinger で再生。
31.
Stagefright の構成図 http://freepine.blogspot.com/2010/01/overview-of- stagefrighter-player.html
32.
Stagefright の構成 ➲
緑が DataSource、MediaSource と MediaExtractor。 ファイル/ストリームから フレーム(やメタデータ)をパースする処理部 分。 ➲ オレンジが OpenMAX IL の実装部分。 ➲ 水色がレンダリング処理部分。 ➲ 赤が全体を制御する機能部分。
33.
まとめ ➲
Android のマルチメディア処理はほとんど Native の Stagefright で行われます。 ➲ Stagefright には OpenMAX DL というオー プンスタンダードが使われています。
34.
最後に ➲
OpenMAX Dl の API は共有ライブラリとし て公開されているので、実は普通に JNI を 使った Android アプリから叩けます。 ➲ なので、 Android 標準で対応していない フォーマットの動画・音声も頑張れば HW デ コードをサポートした形で自作アプリから再 生できます。 以上です。
Download