Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ABEMAのRenderScript Intrinsics Replacement Toolk...
Search
Go Takahana
May 29, 2023
Technology
1.5k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ABEMAのRenderScript Intrinsics Replacement Toolkit 導入事例
Go Takahana
May 29, 2023
More Decks by Go Takahana
See All by Go Takahana
プロダクトで安全にDataStore移行する
takahana
2
1.9k
Other Decks in Technology
See All in Technology
【GCC2026】大規模言語モデルを活用した内製検索サービスの社内展開や業務活用
bandainamcostudios
PRO
0
490
型落ちシンクライアント端末のPoEモジュールを自作したかった話
logica0419
0
290
関東Kaggler会発表資料
takoi
1
280
平文パスワードはログに“残り” ── 肝心の侵入は“痕跡すら残らない”
kuroneko13
0
120
AI時代のアウトプット――変わったこと、変わらないこと / Devsumi 2026 Kansai #devsumi
jnchito
0
500
【GCC2026】鉄拳8でのVFX開発事例
bandainamcostudios
PRO
0
240
Rust×eBPFでEDRっぽいものをつくる
sunlife3
2
810
形式手法特論:Hyperproperty とモデル検査 #kernelvm / Kernel VM Study Tokyo 19th
ytaka23
0
630
Software Supply Chain Attackからクラウド環境を守るためにできること
lhazy
2
290
MIXIで活躍できるエンジニアを 若手社員目線で考えてみる
mixi_engineers
PRO
0
120
AIコーディングの次。コードレビューと理解負荷を解消して組織の開発生産性を高める
moongift
PRO
2
2.7k
LLM・AIエージェントシステムベストプラクティス
shibuiwilliam
6
1.6k
Featured
See All Featured
WCS-LA-2024
lcolladotor
0
800
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
How GitHub (no longer) Works
holman
316
150k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
So, you think you're a good person
axbom
PRO
2
2.1k
Scaling GitHub
holman
464
140k
Into the Great Unknown - MozCon
thekraken
41
2.7k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
540
How to make the Groovebox
asonas
2
2.3k
Leo the Paperboy
mayatellez
8
2.2k
Everyday Curiosity
cassininazir
0
290
Transcript
ABEMAͷRenderScript Intrinsics Replacement Toolkit ಋೖࣄྫ גࣜձࣾAbemaTV ߴඓ ڷ
ߴඓ ڷ Takahana Go • 21৽ଔͰαΠόʔΤʔδΣϯτʹೖࣾ • ABEMAͷAndroidϞόΠϧ / TVΞϓϦͷ։ൃ
@go_takahana
1. ώʔϩʔΤϦΞͷॳͷ࣮ݱํ๏ 2. ΅͔͠ը૾࡞ํ๏ͷબ 3. ·ͱΊ
ώʔϩʔΤϦΞͷ ॳͷ࣮ݱํ๏
ϗʔϜͷώʔϩʔΤϦΞ • ABEMAͷࠓͷΠνΦγ࡞Λհ͢Δ • αϜωΠϧͷഎܠ΅͔ͨ͠αϜωΠϧ ※ϑϦʔը૾ʹࠩ͠ସ͍͑ͯ·͢
αϜωΠϧΛҾཱ͖ͯΔ ※ϑϦʔը૾ʹࠩ͠ସ͍͑ͯ·͢
ΫϥΠΞϯτͰ΅͔͠ը૾Λ࡞͢Δ αʔόʔ ΫϥΠΞϯτ • λΠτϧ • ը૾URL
΅͔͠ը૾࡞ํ๏ͷݕ౼ ํ๏ ϝϦοτ ݒ೦ ը૾ϩʔμʔͷ #MVS5SBOTGPSNBUJPO (MJEFͱ$PJMΛར༻͍ͯ͠Δ ͷͰಋೖ͕؆୯
3FOEFS4DSJQUΛར༻͍ͯ͠Δ ˞$PJMͰͰআࡁΈ αʔυύʔςΟͷ ը૾ՃϥΠϒϥϦ ಋೖ͕؆୯ 3FOEFS4DSJQUΛར༻͍ͯ͠Δ ϝϯςͮ͠Β͍ $PNQPTFͷ.PEJ fi FSCMVS ͙͑͢Δ "OESPJEҎ্Ͱ͔͑͠ͳ͍ ※ϝϦοτσϝϦοτABEMAΞϓϦʹ͓͚ΔͷͰɺଞΞϓϦʹ͓͍ͯҟͳΔ߹͕͋Γ·͢ɻ
RenderScript ͷαϙʔτऴྃ https://developer.android.com/guide/topics/renderscript/compute?hl=ja
Coil BlurTransformation আࡁΈ • 2.0.0ͰআࡁΈ • ཧ༝ɺRenderScript ͷαϙʔτऴ͔ྃͨ͠ΒͩͱࢥΘΕΔ ৄࡉΘ͔Βͳ͔͕ͬͨɺDiscussion ͷ༰Λࢀߟʹ͍ͯ͠Δ
• Ҿ͖ଓ͖ར༻͍ͨ͠ͳΒɺݩͷίʔυΛίϐʔ͢ΔΑ͏ʹҊ͕ग़͍ͯΔ https://coil-kt.github.io/coil/changelog/#200-may-10-2022 https://github.com/coil-kt/coil/discussions/1362
Modi fi er.blur Android 12 Ҏ্Ͱར༻Մೳ https://developer.android.com/reference/kotlin/androidx/compose/ui/ Modifier#(androidx.compose.ui.Modifier).blur(androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp,androidx.compose.ui.draw.BlurredEdgeTreatment)
Modi fi er.blur Android 12 Ҏ্Ͱར༻Մೳ • RenderEffect Λར༻͍ͯ͠Δ
RenderEffect Android 12 Ҏ্Ͱར༻Մೳ @Stable fun Modifier.blur( radiusX: Dp, radiusY: Dp, edgeTreatment: BlurredEdgeTreatment = BlurredEdgeTreatment.Rectangle, ): Modifier { ... graphicsLayer { this.renderEffect = // Only non-zero blur radii are valid BlurEffect parameters if (horizontalBlurPixels > 0f && verticalBlurPixels > 0f) { BlurEffect(horizontalBlurPixels, verticalBlurPixels, tileMode) } else { null }
΅͔͠ը૾࡞ํ๏ͷݕ౼ʢ࠶ܝʣ ํ๏ ϝϦοτ ݒ೦ ը૾ϩʔμʔͷ #MVS5SBOTGPSNBUJPO (MJEFͱ$PJMΛར༻͍ͯ͠Δ ͷͰಋೖ͕؆୯
3FOEFS4DSJQUΛར༻͍ͯ͠Δ ˞$PJMͰͰআࡁΈ αʔυύʔςΟͷ ը૾ՃϥΠϒϥϦ ಋೖ͕؆୯ 3FOEFS4DSJQUΛར༻͍ͯ͠Δ ϝϯςͮ͠Β͍ $PNQPTFͷ.PEJ fi FSCMVS ͙͑͢Δ "OESPJEҎ্Ͱ͔͑͠ͳ͍ ※ϝϦοτσϝϦοτABEMAΞϓϦʹ͓͚ΔͷͰɺଞΞϓϦʹ͓͍ͯҟͳΔ߹͕͋Γ·͢ɻ ❌ ❌ ❌
ࣗલͰ࣮͠Α͏💪
΅͔͠ը૾࡞ํ๏ͷબ
ߟྀ͖͢ • αϙʔτόʔδϣϯ ΞϓϦ API 21 (Android 5.0) Ҏ্Λαϙʔτ •
ύϑΥʔϚϯε͕ѱ͘ͳΒͳ͍͔ جຊతʹը૾ॲཧॏ͍ͨ
ݕ౼ͨ͠બࢶ ํ๏ αϙʔτ7FS ಋೖͷ͢͠͞ ύϑΥʔϚϯε උߟ 3FOEFS& ff FDU ˚
˓ ʁ 3FOEFS4DSJQU*OUSJOTJDT 3FQMBDFNFOU5PPMLJU ˓ ˚ ˕ 3FOEFS4DSJQUͷସπʔϧɻ 3FOEFS4DSJQUͷഒͷ ύϑΥʔϚϯε͕ݟࠐΊΔɻ˞ ࣗલͰը૾ॲཧ ˓ ˓ ˚ ˞IUUQTEFWFMPQFSBOESPJEDPNHVJEFUPQJDTSFOEFSTDSJQUNJHSBUF IMKBTDSJQUT ͠RenderScriptͷύϑΥʔϚϯε͕ྑ͚Εɺ Android 12 Ҏ্ͰRenderEffectɺͦΕະຬͰ Toolkit Λར༻͢Εྑ͍͔͠Εͳ͍ɻ
Macrobenchmark ͰύϑΥʔϚϯεܭଌ • FrameTimingMetrics Λར༻ ϑϨʔϜੜʹ͔͔͕ͬͨ࣌ؒΘ͔Δ • ςετΞϓϦͰ΅͔͠ը૾͕දࣔ͞ΕΔ·Ͱͷ ظؒΛܭଌ
ܭଌ݁Ռ (Pixel 7) • P50 ~ P99 .. ύʔηϯλΠϧɻσʔλΛখ͍͞ॱʹฒͯɺॳΊ͔Β͑ͯԿ%·Ͱ͔ɻ •
frameDurationCpsMs … ϑϨʔϜͷੜʹ͔͔ͬͨ࣌ؒ • (60fps) 16.67ms Ҏ্ͳΒ৭ɺ(90fps) 11.11ms Ҏ্ͳΒԫ৭ • frameOverrunMs … ʢਖ਼ͷʣͲΕ͘Β͍ϑϨʔϜੜ͕Ε͔ͨɺʢෛͷʣͲΕ͚ͩϑϨʔϜੜ͕ૣ͔͔ͬͨ • ෛͷͳΒ੨৭ • ࢼߦճ 20ճ
AndroidViewͷํ͕ϑϨʔϜੜ͕ૣ͍͋Γ • ಉ͘͡ RenderEffect Λ͍ͬͯͯɺAndroidViewͷํ͕ૣ͍͋Γ • AndroidViewʹ͓͍ͯɺRenderEffect ͩͱ60fpsͰϑϨʔϜམͪ͢Δέʔ ε͕͋ͬͨ ※ࢲͷ
Pixel 7 ʹ͓͍ͯ
AndroidView × Toolkit Λબ • ࠓճͷௐࠪͰɺ࠷ϑϨʔϜམ͕ͪগͳ͔ͬͨͨΊɻ
·ͱΊ
·ͱΊ • RenderScript αϙʔτ͕ऴ͍ྃͯ͠Δ • ͦͷସͱͯ͠ɺRenderScript Intrinsics Replacement Toolkit ͕͋Δ
• ࠓճͷௐࠪͰɺAndroidView × Toolkit ͕ϑϨʔϜམ͕ͪগͳ͔ͬͨ ABEMAͷAndroidΞϓϦͰ Toolkit Λ࠾༻
͋Γ͕ͱ͏͍͟͝·ͨ͠