$30 off During Our Annual Pro Sale. View Details »

レガシーな実装を丁寧にリファクタしモダンな実装にする技術【DeNA TechCon 2022 Autumn】

DeNA_Tech
PRO
September 29, 2022

レガシーな実装を丁寧にリファクタしモダンな実装にする技術【DeNA TechCon 2022 Autumn】

You Tube:https://youtu.be/1C_1equH8a4

概要:
ライブ配信において、動画の中で動作するアイテム動画は、ライブ配信を行うライバーとその配信をみるリスナーをつなぐ大事なコミュニケーション手段です。

このアイテム動画のエフェクト画質は高いほうが良いものの、エフェクト画質が高いとリスナーのもつデバイスの高い処理性能を必要とします。そのため、エフェクト画質とデバイスのパフォーマンスはトレードオフになるなかで、いかに企画要件を満たしたエフェクト画質を実現しつつもパフォーマンスを良くしていくかが肝になってきます。

本発表では、どのようにアイテム動画再生パフォーマンス改善に取り組んでいるのかをご紹介します。

登壇内でのリンク集:
p12, http://wiki.webmproject.org/alpha-channel
p20-1, https://github.com/DeNA/HEVCPlayerView
p20-2, https://engineering.dena.com/blog/2022/07/hevcplayerview
p25-1, https://speakerdeck.com/noppefoxwolf/raibupei-xin-apurifalseaitemuzai-sheng-wometaldeshi-zhuang-surushi-ninatutahua
p25-2, https://developer.apple.com/videos/play/wwdc2019/506/
p25-3, https://developer.apple.com/av-foundation/HEVC-Video-with-Alpha-Interoperability-Profile.pdf

◆ チャンネル登録はこちら↓
https://youtube.com/c/denatech?sub_confirmation=1

◆ Twitter
https://twitter.com/DeNAxTech

◆ DeNA Engineering
https://engineering.dena.com/

◆ DeNA Engineer Blog
https://engineering.dena.com/blog/

◆ DeNA TechCon 2022 Autumn 公式サイト
https://techcon2022.dena.dev/autumn/

DeNA_Tech
PRO

September 29, 2022
Tweet

More Decks by DeNA_Tech

Other Decks in Technology

Transcript

  1. Ȼ ḄᶚḖᵩᷟאᓙṋÿ׶ᷥḇᶰᵺ᷋ḟḕḡ ᷗᶈᷝᷟאᓙᷥḛḌࢇᒯ ࡵӓ߅Ԝᯔᰦ<Œ‹\ᰦ/i‹‰Œx\ᰦᯕ

  2. ȼ ȼ ᭅᮩ ዎڠᅏś Ɣ ᭆ᭄ᭅ᭍ۏ iĕᜅɚ࿧᯸Ḙᷨݗ}dqyq‹˜ᰦ/iep{}y}oqi‰᯹ ż ḟ᷋Ḗᵩᵶ᷿ḇᯠ!5ᯡḧᯠ!ᯡᷨħ̅Ϣᵶ᷿ḇ ż

    ḟ᷋ḖᵩᶰᵩᶎᶊḇᵾḇᵩḐᵩᶂḜᯠ!ᰦ q{iᯡ Ɣ ᭆ᭄ᭆᭅۏ ż ᯦ᶢḁᷝᶆḍᵩᶰᵺᷝḟṫᵩᯧࣸԻᶆḁḳṧᯠ-x˜i\…ᰦn}ˆᰦ{gˆ}qgᯡ
  3. Ƚ Ƚ ᭆᮩ ᶣṪ᷐ᷥ ᷓᷟḏᷜᰝḇᶰᵺ᷋ḟḇᷝᶢᶣᶉ᷄ḡᶲ᷍ḛᶺᯈ

  4. Ⱦ Ⱦ ᭆᮩ ᶣṪ᷐ᷥ ୽ኀᡮ༥ṎĆɥΒǑ௅ᶙṮḭḧᅲᶲḡᰝḘᷜᷟᶪ᷎ᶙᷟᶲᯄ ᷿Ḋᶈ᷋Ḩᷯᵩᷠᵩᷨ๗ᔯṋݜḀḃᷟᶲᯄ ḇᶰᵺ᷋ḟḇᷝᶢᶉছḞᷥĆɥΒṋʧḛᷨᶙއᶲᯄ

  5. ȿ ȿ ªf.ɵxpª.pª¡ ᭅᮩ ዎڠᅏś ᭆᮩ ᶣṪ᷐ᷥ ᭇᮩ -x˜i\…ᷨᅏś ᭈᮩ

    ᔯఞḕḞᶺḭḞ-x˜i\…ᷨᖁᥥ ᭉᮩ ḇᶰᵺ᷋ḟḇᷝᶢᷨąೠȒ \ᮩ ⮬㌟䛾䝥䝻䝆䜵䜽䝖䜢▱䜛 dᮩ ᩛ䠄䝁䞊䝗䠅䛸࿡᪉䠄䝏䞊䝮䝯䞁䝞䞊䠅䜢▱䜛 ᭊᮩ -x˜i\…ᷨḇᶰᵺ᷋ḟḇᷝᶢᅜ੯ ᭋᮩ ÿ׶ᷥḇᶰᵺ᷋ḟḇᷝᶢḛḌḞ᷐ᷨ/q…‰
  6. ɀ ɀ ᭇᮩ -x˜i\…ᷨᅏś Ɣ ᯦ᶢḁᷝᶆḍᵩᶰᵺᷝḟṫᵩᯧṋ ݺ᜷᷿ᷥḄᶳᶉ᷄Ḍᶆḁḳṧ ż ᷋ᶳḯ᷋ᵶ᷋ḓḜ ż

    /} }ḇḜḨ ż ᭆັᤞʭ˚ Ɣ ᭆ᭄ᭅ᭍ۏᭌਨᭇযᷥḇḇᵩḜ
  7. Ɂ Ɂ ᭈᮩ ᔯఞḕḞᶺḭḞ-x˜i\…ᷨᖁᥥ

  8. ɂ ɂ Ɍᶬᶍᷨ-x˜i\… Ɣ ᶢḁᶆḍṋݺ᜷᷿ᷥḄᶳᶉ᷄Ḍᶆḁḳṧ ż ᷋ᶳḯ᷋ᵶ᷋ḓḜ ż /} }ḇḜḨ

    ż ᭆັᤞʭ˚ Ɣ ᭆ᭄ᭅ᭍ۏᭌਨᭇযᷥḇḇᵩḜ
  9. Ⱥȹ Ⱥȹ ḇ᷽ṫḨḇƙ࡙ᶣᭆ᭄ᭅ᭍ۏᭊਨᭋয ḇ᷽ṫḨḇƙ࡙ᰆḇḇᵩḜ᷍ᶉᭆ᷂ਨܩᯄ

  10. ȺȺ ȺȺ Ɣ 0ḜḄḯᶎᶉᵶ᷋ḓḜḏḃḌᶰᵺᶳḍṎ ż ᵾᶳᷠḇᶊᵩḟ᷷ᷨᵩḜᷖᮭ Ɣ ᶰḍ\‘\ᶉᡮ༥ḏḃᰝௗḆᅲᶿḌ\‘\᷈ᵩᶎ Ɣ ฎዎᷨ

    ʛ๗ḧᰝ\‘\᷈ᵩᶎḧ}‹yq{ᷨಥѿᶉŒyyᰀ0{‰\ni‹˜ Ɣ ඎॿᷥͪඟḏḃᰝᵵḤ᷇ḤᶺḀਛছḏḃḌ,— Ɣ ḘᷖḘᷖƤᶲঝᶙᡲᜫḭḡᶲḌ,— ࢇᒯ༭ᗾșᷖԕᶲ
  11. ȺȻ ȺȻ Ɣ ᭆ᭄ᭅ᭍ۏᡮ༥ᡮ՛ᶉᶰḍ\‘\ᶉᡮ༥ḏḃḡᶲḌ ż ܷ৙\‘\ᶙě˨ᷨ᷑ᷝᵾᵩ ż ʻ຦ṋĵ׌ḕḡᶲḞ\‘\ḁᶳᶆḁḇḧ}‹yq{ᶉʻ຦ḛḌଇᕏ৙ᡲᶙඎᶺḭḞ Ɣ -x˜i\…ᷥw}q{ḕḞḧ᷄ᷥᶣᭉ˚ᶬᶍ}‹yq{̣ḏḃḡᶲḞ

    Ɣ ௗḆᅲᶿḌᰦᰍ᷐ᷜᶍ᷊ḏᶲᰎᰦḧ᷇ḉᷨ}‹yq{̣ ż ݇᥉჌ѩᶙۛḛᶝḌḧ᷇ḉ ż ݇᥉ḕḞӅΒᷨᶳ᷷ᷝ᷋ḨᶙԚ᷄ḛᶝḌ᝞ʭ Ɣ ᶍḲḒḇᶰᵺ᷋ḟḇᷝᶢḛḌᷟḀᶊᶰᵺ᷋ḨḜḟᷝᶈᵩᶎṋƤᶲḞᶲ ż }ˆ}Œ‹q{iṎy}’ ᷟᷥᶣḧᷖᵵḃ}‹yq{ᶙறḕᶲ
  12. Ⱥȼ Ⱥȼ ᭉᮩ ḇᶰᵺ᷋ḟḇᷝᶢᷨąೠȒ

  13. ȺȽ ȺȽ Ɣ ḇḜ᷋ᕈםۦṋ࿈ᕯḛḌ ż ḇᶰᵺ᷋ḟḇᷝᶢᶙЁᥥṋܜ᷄ᙉ᷇ḛΆኀސṋሪࠝḛḌ Ŷ œṎ̂෪ᷟᶍᷨຢπṎȃ۬ᶦᷨ݇᥉ Ŷ šሬᷨᗿຣ᯸ᶊᵩḟᘚຣᷖ΢ᷙ᯹ᶦᷨ݇᥉

    Ŷ ዎ࿧ᷨʻ཈ᶦᷨ݇᥉ ዎᚑ᷿ᷨḊṫᶖ᷋ḨṋྖḌ ḇᶰᵺ᷋ḟḇᷝᶢṋᰦᰍḛḌᰎᰦḇḜ᷋ḧ ḇᶰᵺ᷋ḟḇᷝᶢṋᰦᰍḕᷟᶲᰎᰦḇḜ᷋ṋᶉ᷄Ḍᶇᶿ௅࿈ᷥᕗƵḛḌ
  14. ȺȾ ȺȾ Ɣ ḇᶰᵺ᷋ḟḇᷝᶢᷨរᔑސᷨɢᜊᕯᗃṋƙḌ ż -x˜i\…ᷨḥᵩᷚᷥᶣɢᜊᕯᗃᶙᵵḭḞ Ŷ ḥᵩᷚᷥᶣᷖḤḉᷜ)!ᷖ΢᷍ḃḌ Ŷ ᷇ᷨɢᜊᕯᗃᶙඎᶲӅΒᶣƙḌḧ᷇ḉᶺḀݮᔑ

    Ɣ ᡮ༥ᜍۦᷨƎą Ɣ ᷿Ḋᶈ᷋ḨϛᘪᷨƎą Ɣ ᷿Ḋᶈ᷋Ḩᷨ؃πᷨƎą Ɣ زœ̣ᷨ˫ᜍ Ɣ ᡮ༥ሬᷨᷗḥᶀᵩḖṛᷝᷨƎą᯸᛹቏ḇḜ᷋᯹ κঝᯔḥᵩᷚ᷑ᷝᵾᵩᯕṋྖḌ
  15. Ⱥȿ Ⱥȿ ḇᶰᵺ᷋ḟḇᷝᶢᷨរᔑސᷨɢᜊᕯᗃṋƙḌ κঝᯔḥᵩᷚ᷑ᷝᵾᵩᯕṋྖḌ

  16. Ⱥɀ Ⱥɀ Ɣ ḇᶰᵺ᷋ḟḇᷝᶢᷨរᔑސᷨɢᜊᕯᗃṋƙḌ ż -x˜i\…ᷨḥᵩᷚᷥᶣɢᜊᕯᗃᶙᵵḭḞ Ŷ ḥᵩᷚᷥᶣᷖḤḉᷜ)!ᷖ΢᷍ḃḌ Ŷ ᷇ᷨɢᜊᕯᗃᶙඎᶲӅΒᶣƙḌḧ᷇ḉᶺḀݮᔑ

    Ɣ ᡮ༥ᜍۦᷨƎą Ɣ ᷿Ḋᶈ᷋ḨϛᘪᷨƎą Ɣ ᷿Ḋᶈ᷋Ḩᷨ؃πᷨƎą Ɣ زœ̣ᷨ˫ᜍ κঝᯔḥᵩᷚ᷑ᷝᵾᵩᯕṋྖḌ
  17. ȺɁ ȺɁ Ɣ ḇᶰᵺ᷋ḟḇᷝᶢᷨរᔑސᷨɢᜊᕯᗃṋƙḌ ż -x˜i\…ᷨḥᵩᷚᷥᶣɢᜊᕯᗃᶙᵵḭḞ Ŷ ḥᵩᷚᷥᶣᷖḤḉᷜ)!ᷖ΢᷍ḃḌ Ŷ ᷇ᷨɢᜊᕯᗃᶙඎᶲӅΒᶣƙḌḧ᷇ḉᶺḀݮᔑ

    Ɣ ᡮ༥ᜍۦᷨƎą Ɣ ᷿Ḋᶈ᷋ḨϛᘪᷨƎą Ɣ ᷿Ḋᶈ᷋Ḩᷨ؃πᷨƎą Ɣ زœ̣ᷨ˫ᜍ Ɣ ᡮ༥ሬᷨᷗḥᶀᵩḖṛᷝᷨƎą᯸᛹቏ḇḜ᷋᯹ κঝᯔḥᵩᷚ᷑ᷝᵾᵩᯕṋྖḌ ⛥䛻䜘䛟ぢⴠ䛸䛥䜜䜛䈊
  18. Ⱥɂ Ⱥɂ Ɣ ḇᶰᵺ᷋ḟḇᷝᶢᶙᰦᰍĆ׃ᰎᰦᷟᷨᶣᰝϛᘪᷨࢢNjᷥዎǍᶙඎᶲᶺḀ ż ؂ᗪᷨḢḜḨ᷈ᵩᶎ᯸ḢḜḨ᷀ᵩḜ᯹ṋ຦ߵḛḌ Ŷ ḇᶰᵺ᷋ḟḇᷝᶢ཰ࡵˌᷥঁᶑḡ᷊ᷮᷨᷖጂᶲ Ɣ ḇᶰᵺ᷋ḟḇᷝᶢ؂ᗪᶣᅋᶺ᷊ḥ᷀ḯḨṋʮḭḡჄ๗ḛḌ

    ż Ʃ᯹/q‹yi᮫ᰦ—\z…yi,i…}‰q‹}ˆ˜ṋ}‹yq{̣ḛḌ Ŷ ṎḌ᷇ḧ Ɣ —\z…yi,i…}‰q‹}ˆ˜ᷨḢḜḨ᷈ᵩᶎṋਞ᷊ ż ᶉ᷄ḃᵽݮᔑᷟḢḜḨ᷀ᵩḜᷖਞ᷊ Ɣ  ᶉዎ̂ԌऌḛḌ Ɣ ዎ̂ԌऌḏḃḞ᷈ᵩᶎṋਦ᜷̣ḛḌ Ɣ ḢḜḨ᷈ᵩᶎᶙ)\‰‰ḛḌ᷇ḧṋ࿈ᕯḛḌ Ŷ }{iᷨ੔Ű Ɣ ᯠṎḌ᷇ḧᯡׅᷨĴ Ɣ ),᷎ᷨᵩṫ ংᯔ᷈ᵩᶎᯕṋྖḌ
  19. Ȼȹ Ȼȹ ᷿ḁᷝᷦᷝᶢ Ɣ ḇḜ᷋ᕈםۦᰝᶂṫᷣḜ᷿ḁᷝᰝ݇᥉჌ѩᷟᶍᶺḀ᷿ḁᷝᷦᷝᶢ ż ݇᥉჌ѩᶙؐḏᶲᷖᷨᶣᔷັ༭ᷥ᥎மאট Ɣ ݇᥉჌ѩᶙԚ᷄ᶲᷖᷨᶣ᷈ᷝᶰḇ᷋ḨṋᝃᶿḌḞ᷐ᰝšᷨƙତṋþ৙༭ᷥ௄᷐Ḟᶲ Ŷ

    ܷᕥḇᶰᵺ᷋ḟḇᷝᶢਵᡲᷨḇḇᵩḜḜ᷀ṫṣᵩḍṋᖅঁ Ŷ Ԛ᷊᷄᷈ᷝᶰḇ᷋ḨḛḌḧᰝḘᷨᔯ౽ḛḀĆɥΒṋοᶅ Ɣ ḇᶰᵺ᷋ḟḇᷝᶢݗᷨ+ḧḇḇᵩḜᔷັ ż ݇᥉჌ѩᰝ+ਵᡲᰝḇḇᵩḜḟᶳᷔᷝᶢ
  20. ȻȺ ȻȺ ᭊᮩ -x˜i\…ᷨḇᶰᵺ᷋ḟḇᷝᶢᅜ੯

  21. ȻȻ ȻȻ }‹yq{̣ Ɣ }‹yq{̣ᷨఞݭ ż ᭆ᭄ᭆ᭄ᮩᭅᮩᭇ᭄ᷥ}Ḑᶳᷝ Ɣ ୽ኀᡮ༥ḧĒᒬḕḡᷨ}‹yq{̣ ż

    ᭆ᭄ᭆ᭄ۏąਵᰆᭆ᭄ᭆᭅąਵ ż ěᷥฎၫḕḞ y\‰‰̈́ƍᶉḇᶰᵺ᷋ḟḇᷝᶢᶉ᷄Ḍᷖᷨᶙĕݭ Ɣ ݇᥉჌ѩᶙɛƒᷥͮᶅ}‹yq{̣ ż ᭆ᭄ᭆᭆۏĄਵ ż ୽ኀᡮ༥ṋᶬᶃ௄᷐Ḍ ż e‹q‘q‹˜Ṏ5qi’}giyᷟᶍ0ḄᶳṏᵩḧḘḃᷥפᅜΒḕḡᶲḌ y\‰‰ḞḤ
  22. Ȼȼ Ȼȼ Ḙᷨš Ɣ ṋฎዎאᓙᶺḀ \ooiˆᰦqy‹ᷥဥᒬ Ɣ þ᝞ᷨ,i…}‰q‹}ˆ˜ḧ5qi’}giyṋ }ˆ}Œ‹q{iᮼy}’̣ Ɣ

    þ᝞ᷨັᤞṋ0q-‹\‹iᶉ෽ࠌṋჄ๗ḛḌṖḲᷥԌਛ ż {gˆ}qgᰦ i‘iy}…iˆ‰ᰦᰀ᱃ᰦ0ᰦy\˜iˆᰦᰀ᱃ᰦ inq{iᰦ0ᰦ‰‹\‹i Ɣ }}oyiᰦŒ\‘\ḁᶳᶆḁḇᢩᷨͩ Ɣ ‹yq{‹ᷨ؏ɚ Ɣ ᖡüᶳ᷀ḡᷟᶲႵࡰᷨǑ௅
  23. ȻȽ ȻȽ ᭋᮩ ÿ׶ᷥḇᶰᵺ᷋ḟḇᷝᶢḛḌḞ᷐ᷨ/q…‰

  24. ȻȾ ȻȾ ݇᥉჌ѩᶣؐḏ᷊

  25. Ȼȿ Ȼȿ ؐḏᶲḇᶰᵺ᷋ḟᶣᅫᶑᡲ᷊ᷟ Ɣ ܜ຦ ż p‹‹…‰᮫᮹᮹‹’q‹‹iˆᮩe}z᮹‹ᰅ’\g\᮹‰‹\‹Œ‰᮹ᭅᭇᭅᭉᭈᭈᭈ᭍ᭊᭋᭋ᭍ ᭊᭈᭋᭇᭌᭊᭅ Ɣ -x˜i\…ᷨӅΒ

    ż ᭆ᜔ᡲᷨḜ᷿ḇᷝḨᷨḲḤᭅযṋ४Ѝᷥ˚Ḇܷḡ /\xŒ‹}ᰦ6\g\ ḇᶰᵺ᷋ḟḇᷝᶢṋοΧᷨṖḲᷥᯠᅫᶑᡲᷟ ᷊ᯡᒬḲ᷈ḫᶣᰝḇᶰᵺ᷋ḟḇᷝᶢṋᅋᶺ᷊ʭ ᔯḕᰝযü᷿ᷨḊᶢḁᷔᷝᶢᷨΗᷖඎ᷄ᭅḜḢḯ ᷿ᷥḛḌ᷇ḧᶉḛ p‹‹…‰᮫᮹᮹‹ᰀ’\g\ᮩp\‹i{\dy}oᮩw…᮹i{‹ˆ˜᮹eyi\{ᰀe}giᰀ ‹p\‹ᰀ’}ˆx‰ Ჳ‹ᰅ’\g\
  26. ȻɁ ȻɁ ᮾ i…ˆie\‹igᷨ౦຦

  27. Ȼɂ Ȼɂ བྷᷨˌᷨḇᶰᵺ᷋ḟḇᷝᶢᷥᣛĕᮭ Ɣ ᵵḭḤᷖ᷇ḭḤᷖཙḕḞᶲᮭḭḡᷟḌ ż ݇᥉჌ѩᷖඎᢡᷥۛᶙḌ ż ৙ᡲᶙඎᢡᷥඎ᷊ᷟḌ ż

    ᶢḯḧ࡚ࠗḕḡḥ᷀ḯḨ̣ᶇᶿḛḌ Ɣ -x˜i\…ᶉᷖᰝ}‹yq{̣ᷨšᷥ }ˆ}Œ‹q{iṎy}’̣ḕḞᶲ᝞ʭᶙḞ᷊ḏᷜ ż ȾɌ᥎۟ṋᔗԡṀᷟᶲᶉᰝ४᷐ḡᔷັṋၫḡḌ
  28. ȼȹ ȼȹ ᶟಫቍᵵḆᶙḧḲᶟṦᶲ᷍ḕḞ