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 Multimedia Framework
by
Picker Weng
PDF
AndroidとSELinux
by
android sola
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
A practical guide to buildroot
by
Emertxe Information Technologies Pvt Ltd
ODP
Embedded Android : System Development - Part III
by
Emertxe Information Technologies Pvt Ltd
PDF
Android起動周りのノウハウ
by
chancelab
PDF
Run Qt on Linux embedded systems using Yocto
by
Marco Cavallini
Android Multimedia Framework
by
Picker Weng
AndroidとSELinux
by
android sola
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
A practical guide to buildroot
by
Emertxe Information Technologies Pvt Ltd
Embedded Android : System Development - Part III
by
Emertxe Information Technologies Pvt Ltd
Android起動周りのノウハウ
by
chancelab
Run Qt on Linux embedded systems using Yocto
by
Marco Cavallini
What's hot
PDF
Booting Android: bootloaders, fastboot and boot images
by
Chris Simmonds
PDF
Android Boot Time Optimization
by
Kan-Ru Chen
PDF
Embedded Android : System Development - Part I
by
Emertxe Information Technologies Pvt Ltd
PDF
Embedded Android Workshop
by
Opersys inc.
PPTX
YoctoをつかったDistroの作り方とハマり方
by
wata2ki
PPTX
Android Booting Sequence
by
Jayanta Ghoshal
PPTX
Linux Kernel Booting Process (1) - For NLKB
by
shimosawa
PDF
Bootloaders
by
Anil Kumar Pugalia
PDF
Embedded Android : System Development - Part II (HAL)
by
Emertxe Information Technologies Pvt Ltd
PDF
Android OTA updates
by
Gary Bisson
PDF
Embedded_Linux_Booting
by
Rashila Rr
PPT
Learning AOSP - Android Linux Device Driver
by
Nanik Tolaram
PPT
linux device driver
by
Rahul Batra
PDF
Linux boot process
by
Archana Chandrasekharan
PPTX
Android internals By Rajesh Khetan
by
Rajesh Khetan
PDF
Understanding the Android System Server
by
Opersys inc.
PDF
Network Drivers
by
Anil Kumar Pugalia
PDF
Introduction to Linux Drivers
by
Anil Kumar Pugalia
DOCX
linux file sysytem& input and output
by
MythiliA5
PDF
Linux programming - Getting self started
by
Emertxe Information Technologies Pvt Ltd
Booting Android: bootloaders, fastboot and boot images
by
Chris Simmonds
Android Boot Time Optimization
by
Kan-Ru Chen
Embedded Android : System Development - Part I
by
Emertxe Information Technologies Pvt Ltd
Embedded Android Workshop
by
Opersys inc.
YoctoをつかったDistroの作り方とハマり方
by
wata2ki
Android Booting Sequence
by
Jayanta Ghoshal
Linux Kernel Booting Process (1) - For NLKB
by
shimosawa
Bootloaders
by
Anil Kumar Pugalia
Embedded Android : System Development - Part II (HAL)
by
Emertxe Information Technologies Pvt Ltd
Android OTA updates
by
Gary Bisson
Embedded_Linux_Booting
by
Rashila Rr
Learning AOSP - Android Linux Device Driver
by
Nanik Tolaram
linux device driver
by
Rahul Batra
Linux boot process
by
Archana Chandrasekharan
Android internals By Rajesh Khetan
by
Rajesh Khetan
Understanding the Android System Server
by
Opersys inc.
Network Drivers
by
Anil Kumar Pugalia
Introduction to Linux Drivers
by
Anil Kumar Pugalia
linux file sysytem& input and output
by
MythiliA5
Linux programming - Getting self started
by
Emertxe Information Technologies Pvt Ltd
Viewers also liked
KEY
日本Androidの会発表スライド androidのメディア機能の話
by
Tatsuya Matsumoto
PPT
OpenMAX Overview
by
Yoss Cohen
PDF
20分で理解するdisplaysystem
by
magoroku Yamamoto
PPTX
Understanding open max il
by
Chethan Pchethan
PPTX
A slightly deeper dive into Stagefright
by
Alexy Joseph
PDF
IOMX in Android
by
Raghavan Venkateswaran
PDF
Android media framework overview
by
Jerrin George
PDF
Android最速のフォトグラファーに、俺はなる!
by
Kazutoshi Kashimoto
PDF
さらば、Stagefright 脆弱性
by
Tsukasa Oi
ODP
Stagefright入門
by
l_b__
PDF
Open binder
by
l_b__
PDF
Eclipseを使ったandroid nativeデバッグ
by
l_b__
ODP
Yapf2013
by
l_b__
PDF
JellyBeanのソースをとりあえず眺めてみた(手抜き)
by
l_b__
PDF
ABS2015 のセッション紹介
by
l_b__
PDF
PF開発に使えるAOSPのツール達
by
l_b__
PDF
Androidの新ビルドシステム
by
l_b__
ODP
Intentの概要
by
l_b__
ODP
Android デバッグ小ネタ
by
l_b__
PPTX
Surface flingerservice(서피스플링거서비스초기화 jb)
by
fefe7270
日本Androidの会発表スライド androidのメディア機能の話
by
Tatsuya Matsumoto
OpenMAX Overview
by
Yoss Cohen
20分で理解するdisplaysystem
by
magoroku Yamamoto
Understanding open max il
by
Chethan Pchethan
A slightly deeper dive into Stagefright
by
Alexy Joseph
IOMX in Android
by
Raghavan Venkateswaran
Android media framework overview
by
Jerrin George
Android最速のフォトグラファーに、俺はなる!
by
Kazutoshi Kashimoto
さらば、Stagefright 脆弱性
by
Tsukasa Oi
Stagefright入門
by
l_b__
Open binder
by
l_b__
Eclipseを使ったandroid nativeデバッグ
by
l_b__
Yapf2013
by
l_b__
JellyBeanのソースをとりあえず眺めてみた(手抜き)
by
l_b__
ABS2015 のセッション紹介
by
l_b__
PF開発に使えるAOSPのツール達
by
l_b__
Androidの新ビルドシステム
by
l_b__
Intentの概要
by
l_b__
Android デバッグ小ネタ
by
l_b__
Surface flingerservice(서피스플링거서비스초기화 jb)
by
fefe7270
Similar to Stagefright入門
PDF
Media Art II openFrameworks 複数のシーンの管理・切替え
by
Atsushi Tadokoro
PDF
Interactive Music II Processingによるアニメーション
by
Atsushi Tadokoro
PDF
openFrameworks Workshop in Kanazawa v001
by
Teruaki Tsubokura
PDF
Designing video game hardware in verilog
by
Atsuki Takahashi
PDF
オープンソース開発と、あるフレームバッファコンソールの話~名古屋応用編~
by
nullnilaki
PDF
Arduino入門
by
Junichi Minamino
PDF
Processing workshop v3.0
by
Wataru Kani
PDF
ライブストリーミングの基礎知識その2
by
kumaryu
PDF
Processing workshop
by
Wataru Kani
PDF
メディア・アート II 第1回: ガイダンス openFrameworks入門
by
Atsushi Tadokoro
KEY
女子美術大学メディアアート演習ⅡB 2012 Spring 第10回 1/2
by
Satoru Tokuhisa
PDF
Tokyo Video Tech #2 動画配信の課題とCMAF活用のメリットデメリット
by
Masashi Ito
PDF
自由ソフトウェアによるライブストリーミング
by
Takatsugu Nokubi
PDF
Xbyakの紹介とその周辺
by
MITSUNARI Shigeo
PDF
Fbx解説 (1 構文編) (1)
by
らりお ザ・何とは言わない天然水ソムリエ
PDF
情報編集(Web) HTML5 実践2 Processing.jsを使う
by
Atsushi Tadokoro
PPT
d-kami x86-2
by
Daisuke Kamikawa
PDF
ストリーミングのげんざい
by
Tetsuya Morimoto
PDF
「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望
by
Atsushi Tadokoro
PDF
Movie Format in a Nutshell 2013
by
Ryo Amano
Media Art II openFrameworks 複数のシーンの管理・切替え
by
Atsushi Tadokoro
Interactive Music II Processingによるアニメーション
by
Atsushi Tadokoro
openFrameworks Workshop in Kanazawa v001
by
Teruaki Tsubokura
Designing video game hardware in verilog
by
Atsuki Takahashi
オープンソース開発と、あるフレームバッファコンソールの話~名古屋応用編~
by
nullnilaki
Arduino入門
by
Junichi Minamino
Processing workshop v3.0
by
Wataru Kani
ライブストリーミングの基礎知識その2
by
kumaryu
Processing workshop
by
Wataru Kani
メディア・アート II 第1回: ガイダンス openFrameworks入門
by
Atsushi Tadokoro
女子美術大学メディアアート演習ⅡB 2012 Spring 第10回 1/2
by
Satoru Tokuhisa
Tokyo Video Tech #2 動画配信の課題とCMAF活用のメリットデメリット
by
Masashi Ito
自由ソフトウェアによるライブストリーミング
by
Takatsugu Nokubi
Xbyakの紹介とその周辺
by
MITSUNARI Shigeo
Fbx解説 (1 構文編) (1)
by
らりお ザ・何とは言わない天然水ソムリエ
情報編集(Web) HTML5 実践2 Processing.jsを使う
by
Atsushi Tadokoro
d-kami x86-2
by
Daisuke Kamikawa
ストリーミングのげんざい
by
Tetsuya Morimoto
「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望
by
Atsushi Tadokoro
Movie Format in a Nutshell 2013
by
Ryo Amano
Recently uploaded
PDF
Machine Tests Benchmark Suite. Explain github.com/alexziskind1/machine_tests #2
by
Tasuku Takahashi
PPTX
楽々ナレッジベース「楽ナレ」3種比較 - Dify / AWS S3 Vector / Google File Search Tool
by
Kiyohide Yamaguchi
PDF
流行りに乗っかるClaris FileMaker 〜AI関連機能の紹介〜 by 合同会社イボルブ
by
Evolve LLC.
PDF
エンジニアが選ぶべきAIエディタ & Antigravity 活用例@ウェビナー「触ってみてどうだった?Google Antigravity 既存IDEと...
by
NorihiroSunada
PDF
20251210_MultiDevinForEnterprise on Devin 1st Anniv Meetup
by
Masaki Yamakawa
PDF
Machine Tests Benchmark Suite. Explain github.com/alexziskind1/machine_tests #1
by
Tasuku Takahashi
Machine Tests Benchmark Suite. Explain github.com/alexziskind1/machine_tests #2
by
Tasuku Takahashi
楽々ナレッジベース「楽ナレ」3種比較 - Dify / AWS S3 Vector / Google File Search Tool
by
Kiyohide Yamaguchi
流行りに乗っかるClaris FileMaker 〜AI関連機能の紹介〜 by 合同会社イボルブ
by
Evolve LLC.
エンジニアが選ぶべきAIエディタ & Antigravity 活用例@ウェビナー「触ってみてどうだった?Google Antigravity 既存IDEと...
by
NorihiroSunada
20251210_MultiDevinForEnterprise on Devin 1st Anniv Meetup
by
Masaki Yamakawa
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