Slide 1

Slide 1 text

$7#V⒎FSͷ࿩ 30110/(*TXJGUୈճ๬೥ձ

Slide 2

Slide 2 text

OPQQF ! 1PDPDIBJ04ΤϯδχΞ " ͖ͭͶ͔Θ͍͍ # 30110/(*TXJGUॳࢀઓ $ J04%$ͰඳըपΓͷ࿩Λ͠·͠ ͨW

Slide 3

Slide 3 text

Slide 4

Slide 4 text

ಈըΛѻ͏ػձͷ૿Ճ w ಈը഑৴ΞϓϦ΍IFWDͷొ৔ɺ$PSF7JEFPʹ৮ΕΔػ ձ͕૿͍͑ͯΔ w σʔλ΍ϝσΟΞΛѻ͏#V⒎FSܥΫϥεͷར༻ස౓͸ ૿Ճ w ΈΜͳɺؾ࣋ͪͰ$71JYFM#V⒎FSΛ࢖͍ͬͯ·ͤΜ͔ʁ

Slide 5

Slide 5 text

#V⒎FSܥΫϥεͷۙگ w ݹ͍ΫϥεͳͷͰɺ΄΅มߋ͸ͳ͍ w ͔͠͠؀ڥ͸มԽɺΫϥΠΞϯτͰͷσίʔυ΍ 0QFO(-&4΍.FUBM΁ͷσʔλ౉͠ʹར༻͞ΕΔ

Slide 6

Slide 6 text

$7#V⒎FS

Slide 7

Slide 7 text

$7#V⒎FS w $7#V⒎FSͷ$7͸$PSF7JEFPͷ$7 σʔλόοϑΝΛ௚઀৮Βͣʹ؆୯ʹಡΈॻ͖͢Δͨ Ίͷ*'

Slide 8

Slide 8 text

Slide 9

Slide 9 text

୅දతͳ$7#V⒎FSͷ೿ੜ w $7*NBHF#V⒎FS w $71JYFM#V⒎FS w $70QFO(-&45FYUVSF

Slide 10

Slide 10 text

$7#V⒎FS͡Όͳ͍ํ w $.4BNQMF#V⒎FS ͜Ε͸ҧ͏ w $.#MPDL#V⒎FS ͜Ε΋ҧ͏

Slide 11

Slide 11 text

ͲΜͳ࣌ʹऔಘͰ͖Δ΋ͷ͔ DJ*NBHFQJYFM#V⒎FS@d ͱ͔ MFUJC$.4BNQMF#V⒎FS(FU*NBHF#V⒎FS TC

Slide 12

Slide 12 text

$7#V⒎FSͷਖ਼ମ w $7*NBHF#V⒎FS public typealias CVImageBuffer = CVBuffer w $71JYFM#V⒎FS public typealias CVPixelBuffer = CVImageBuffer w $70QFO(-&45FYUVSF public typealias CVOpenGLESTexture = CVImageBuffer

Slide 13

Slide 13 text

$71JYFM#V⒎FSWT$7*NBHF#V⒎FS w 2UZQFBMJBTͳΜͩ͠ಉ͡Ͱ͠ΐʁ w "Զʹ΋Θ͔ΒΜ

Slide 14

Slide 14 text

$71JYFM#V⒎FSWT$7*NBHF#V⒎FS w $71JYFM#VGGFS ϝϞϦ಺ͷϐΫηϧόοϑΝʹΞΫηε͢ΔͨΊͷΫϥ ε w $7*NBHF#VGGFS ϝϞϦ಺ͷը૾ʹΞΫηε͢ΔͨΊͷΫϥε

Slide 15

Slide 15 text

ϐΫηϧ৘ใΞΫηεͷྫ w ॎԣͷαΠζ w σʔλαΠζ ը૾ΞΫηεͷྫ w Χϥʔεϖʔε

Slide 16

Slide 16 text

υΩϡϝϯτ $7*NBHF#VGGFS(FU%JTQMBZ4J[F @ "$(4J[FTUSVDUVSFEFpOJOHUIFOPNJOBMEJTQMBZ TJ[FPGUIFCV⒎FS3FUVSOT[FSPTJ[FJGDBMMFE XJUIBOPO$7*NBHF#VGGFS3FGUZQFPS /6--

Slide 17

Slide 17 text

ݕূ var pb: CVPixelBuffer? = nil CVPixelBufferCreate(kCFAllocatorDefault, 128, 128, kCVPixelFormatType_32BGRA, nil, &pb) CVImageBufferGetDisplaySize(pb!) // -> (128.0, 128.0)

Slide 18

Slide 18 text

ಈըΛѻ͏ػձͷ૿Ճ w ಈը഑৴ΞϓϦ΍IFWDͷొ৔ɺ$PSF7JEFPʹ৮ΕΔػ ձ͕૿͍͑ͯΔ w σʔλ΍ϝσΟΞΛѻ͏#V⒎FSܥΫϥεͷར༻ස౓͸ ૿Ճ w ΈΜͳɺؾ࣋ͪͰ$71JYFM#V⒎FSΛ࢖͍ͬͯ·ͤΜ͔ʁ

Slide 19

Slide 19 text

ؾ࣋ͪͰ࢖͍ͬͯΔ

Slide 20

Slide 20 text

6**NBHFͱͷҧ͍

Slide 21

Slide 21 text

6**NBHFͱͷҧ͍ w $7#V⒎FS ΞυϨεΛࢀর͍ͯ͠Δ͚ͩͳͷͰɺϩοΫ͸͢Δ͕ ίϐʔ΍Ωϟογϡ͸͞Εͳ͍ தؒϨϯμϦϯά΋উखʹ͞Εͳ͍ ϏσΦͷΑ͏ʹߴ଎ʹॲཧ͢Δඞཁ͕͋ΔՕॴʹ࠷ద

Slide 22

Slide 22 text

ΞυϨεͷϩοΫ $7#V⒎FSͷσʔλόοϑΝʹ$16͔ΒΞΫηε͢Δ ৔߹͸ΞυϨεΛϩοΫ͢Δඞཁ͕͋Δ CVPixelBufferLockBaseAddress(pb, .readOnly) defer { CVPixelBufferUnlockBaseAddress(pb, .readOnly) }

Slide 23

Slide 23 text

$71JYFM#V⒎FSͷத਎Λදࣔ͢Δ

Slide 24

Slide 24 text

Ұ൪؆୯ͳํ๏ $71JYFM#V⒎FS$**NBHF6**NBHF CIImage(cvPixelBuffer: CVPixelBuffer) UIImage(ciImage: ciImage)

Slide 25

Slide 25 text

.FUBMͰදࣔ͢Δ CVMetalTextureCacheܦ༝Ͱ $71JYFM#V⒎FS.5-5FYUVSF .5,7JFXͳͲͰදࣔ

Slide 26

Slide 26 text

0QFO(-&4Ͱදࣔ͢Δ CVOpenGLESTextureCacheܦ༝Ͱ $71JYFM#V⒎FS0QFO(-&45FYUVSF (-,7JFXͳͲͰදࣔ

Slide 27

Slide 27 text

$.4BNQMF#V⒎FSͱ͸

Slide 28

Slide 28 text

Slide 29

Slide 29 text

$.4BNQMF#V⒎FSͱ͸ ɾඞͣ͠΋$71JYFM#V⒎FS͕ೖ͍ͬͯΔͱ͸ݶΒͳ͍

Slide 30

Slide 30 text

࿩ͦ͏ͱࢥ͍ͬͯͨ࿩୊ ɾ$71JYFM#V⒎FS͔Β$.4BNQMF#V⒎FSΛ࡞Δ࿩ ɾϢʔεέʔε ɾར఺

Slide 31

Slide 31 text