Slide 1

Slide 1 text

7JEFPEFDPEFPOJ04 ŠQPUBUPUJQT ! !OPQQFGPYXPMG  

Slide 2

Slide 2 text

OPQQF ‣ !OPQQFGPYXPMG ‣ ! ͖ͭͶ޷͖ ‣ J04ΞϓϦ։ൃ̔೥໨ %F/"೥໨ ‣ ιʔγϟϧϥΠϒࣄۀ෦ ! !OPQQFGPYXPMG  

Slide 3

Slide 3 text

! !OPQQFGPYXPMG  

Slide 4

Slide 4 text

OPQQFGPYXPMG,JUTVOFCJ ಁաಈը࠶ੜϏϡʔϥΠϒϥϦ IUUQTHJUIVCDPNOPQQFGPYXPMG,JUTVOFCJ ! !OPQQFGPYXPMG  

Slide 5

Slide 5 text

! !OPQQFGPYXPMG  

Slide 6

Slide 6 text

,JUTVOFCJͷ࢓૊Έ ϏσΦͷσίʔυˠϚεΫ߹੒ˠඳը ! !OPQQFGPYXPMG  

Slide 7

Slide 7 text

,JUTVOFCJͷ࢓૊Έ ϏσΦͷσίʔυˠϚεΫ߹੒ˠඳը ࠓ೔͸͜ͷลͷ࿩Λ͠·͢ ! !OPQQFGPYXPMG  

Slide 8

Slide 8 text

ϏσΦϑΝΠϧͷલఏ஌ࣝ ྫ͑͹ɺNQNPWXNW ෳ਺ͷϝσΟΞίϯςφͷू·ΓɺओʹಈըͱԻ੠͕֨ ೲ͞Ε͍ͯΔͷ͕ҰൠతͳϑΥʔϚοτ ଞʹ΋ࣈນ΍੩ࢭըͷίϯςφؚ͕·ΕΔ͜ͱ΋͋Δ ! !OPQQFGPYXPMG  

Slide 9

Slide 9 text

ϏσΦϑΝΠϧͷલఏ஌ࣝ ! !OPQQFGPYXPMG  

Slide 10

Slide 10 text

ϏσΦϑΝΠϧͷσίʔυͱ͸ ϝσΟΞίϯςφΛ࠶ੜग़དྷΔঢ়ଶʹ෮ݩ͢Δ ‣ ϏσΦίϯςφ͔Β̍ϑϨʔϜ͝ͱͷը૾Λऔಘ ‣ Ի੠ίϯςφ͔ΒԻ೾৘ใΛऔಘ ‣ ࣈນίϯςφ͔ΒจࣈྻΛऔಘ FUD ͜ΕΒΛߦͬͯಈըͱͯ͠࠶ੜ͢Δ ! !OPQQFGPYXPMG  

Slide 11

Slide 11 text

ϏσΦͷίʔσοΫ ϏσΦίϯςφͷූ߸ԽʢΤϯίʔυʣํ๏͸ෳ਺͋ Δɻ ྫ͑͹ɺII71 ίʔσοΫͷҧ͍ʹΑͬͯѹॖ཰΍ॲཧʹඞཁͳύϫʔ ͕มΘΔɻ ! !OPQQFGPYXPMG  

Slide 12

Slide 12 text

J04ͰͷϏσΦίϯςφͷσίʔυํ๏ ‣ "7"TTFU3FBEFS ‣ 75%FDPNQSFTTJPO4FTTJPO ‣ ⒎NQFH ! !OPQQFGPYXPMG  

Slide 13

Slide 13 text

ରԠίʔσοΫͷ֬ೝ ͜ΕΒͷϑϨʔϜϫʔΫ͸಺෦Ͱ04୺຤ͷσίʔμ ͷ࣮૷Λར༻͍ͯ͠Δɻ ಉ͡NQͰ΋)͔)Έ͍ͨͳίʔσοΫͷҧ ͍͕͋Γɺ04΍୺຤ʹΑͬͯαϙʔτ͕ҟͳΔͷͰ஫ ҙɻ ! !OPQQFGPYXPMG  

Slide 14

Slide 14 text

ྫ͑͹)&7$͸Ұ෦ͷνοϓͰ͔͠ϋΠύϑΥʔϚϯεͳσίʔυΛ͢Δ͜ͱ͕Ͱ͖ͳ͍ɻ ! !OPQQFGPYXPMG  

Slide 15

Slide 15 text

ରԠίʔσοΫͷ֬ೝ ެࣜαΠτͷ4QFDΈΕ͹αϙʔτ͍ͯ͠ΔίʔσοΫ ͕Θ͔Δɻ ରԠίʔσοΫΛऔಘ͢Δϝιου͸ݟ͔ͭΒͳ͔ͬ ͨɻ ! IUUQTXXXBQQMFDPNKQJQIPOFYTQFDTͱ͔ ! !OPQQFGPYXPMG  

Slide 16

Slide 16 text

"7"TTFU3FBEFS let reader = try! AVAssetReader(asset: asset) let output = AVAssetReaderTrackOutput(track: asset.videoTrack) reader.add(output) reader.startReading() output.copyNextSampleBuffer() output.copyNextSampleBuffer() output.copyNextSampleBuffer() ... ͱͯ΋؆୯ DPQZ/FYU4BNQMF#V⒎FSΛݺͿͨͼʹऔΕΔϑϨʔϜ ͷλΠϜελϯϓ͕ਐΉ ! !OPQQFGPYXPMG  

Slide 17

Slide 17 text

"7"TTFU3FBEFSͷಛ௃ ‣ ରԠίʔσοΫͰ͋Ε͹ίʔσοΫΛؾʹͤͣʹσ ίʔυͰ͖Δ ‣ ඇৗʹ؆୯ͳΠϯλʔϑΣΠε ‣ ࣍ͷTBNQMF#V⒎FS͔͠औΕͳ͍ ! !OPQQFGPYXPMG  

Slide 18

Slide 18 text

75%FDPNQSFTTJPO4FTTJPOͷಛ௃ ௿ϨΠϠʔͷϏσΦσίʔυ༻ϑϨʔϜϫʔΫ ଟ෼"7"TTFU3FBEFS"7"TTFU3FBEFS5SBDL0VUQVU͸ ͜ΕΛ࢖͍ͬͯΔʁ ΍΍ෳࡶͰ໘౗ͳ୅ΘΓʹॊೈੑ͕ߴ͍ ! !OPQQFGPYXPMG  

Slide 19

Slide 19 text

75%FDPNQSFTTJPO4FTTJPOͷྲྀΕ  IBWDΛ෼ׂ  ө૾ؚ͕·ΕΔνϟϯΫΛऔΓग़͢  75%FDPNQSFTTJPO4FTTJPOΛੜ੒  νϟϯΫΛ4FTTJPOʹ౉͢  σίʔυࡁΈͷ*NBHF#V⒎FS͕ίʔϧόοΫʹฦ͞ αϯϓϧͰ͸ྫͱͯ͠ΩʔϑϨʔϜΛऔΓग़͍ͯ͠Δ ! !OPQQFGPYXPMG  

Slide 20

Slide 20 text

IBWDΛ෼ׂ /"-pMFGPSNBU ! !OPQQFGPYXPMG  

Slide 21

Slide 21 text

! !OPQQFGPYXPMG  

Slide 22

Slide 22 text

ө૾ؚ͕·ΕΔνϟϯΫΛऔΓग़͢ /"-ͷϔομΛࢀরͯ͠Yͷ΋ͷ͕ΩʔϑϨʔϜΛ ͍࣋ͬͯΔɻ ࠩ෼৘ใ͕ෆཁͳ׬શͳϑϨʔϜ ! !OPQQFGPYXPMG  

Slide 23

Slide 23 text

OBMVOJUUZQF *40*&$Ͱఆٛ IUUQXXXTUBSPDFBOTPSHFCPPL*40QEG ! !OPQQFGPYXPMG  

Slide 24

Slide 24 text

75%FDPNQSFTTJPO4FTTJPOΛੜ੒ VTDecompressionSessionCreate(_:, _:, _:, _:, _:, _:) Ҿ਺ʹ͸ίʔϧόοΫઌ΍ϑϨʔϜͷ৘ใ QJYFM'PSNBU ΍)ͷύϥϝʔλ ͕ඞཁ ! !OPQQFGPYXPMG  

Slide 25

Slide 25 text

νϟϯΫΛ4FTTJPOʹ౉͢ CMSampleBufferCreateReady(sampleBuffer) VTDecompressionSessionDecodeFrame(_:, _:, _:, _:, &sampleBuffer) CZUF഑ྻΛ௚઀౉͢ࣄ͸ग़དྷͳ͍ͷͰɺCZUF഑ྻ͔Β ࡞ͬͨ#MPDL#V⒎FSΛݩʹ4BNQMF#V⒎FSΛ࡞Γ౉͢ɻ ! !OPQQFGPYXPMG  

Slide 26

Slide 26 text

σίʔυࡁΈͷ*NBHF#V⒎FS͕ίʔϧόοΫʹฦ͞Ε Δ callback.decompressionOutputCallback = { (_, _, _, _, imageBuffer, _, _) in // imageBuffer } 4FTTJPOʹొ࿥ͨ͠DBMMCBDL΁σίʔυ͞Εͨ JNBHF#V⒎FS͕ฦͬͯ͘Δ ! !OPQQFGPYXPMG  

Slide 27

Slide 27 text

! !OPQQFGPYXPMG  

Slide 28

Slide 28 text

1SPT$POT &BTZ 4USFBNJOH 1FSGPSNBODF $VTUPNJ[F "7"TTFU3FB EFS P Y P ˚ 75%FDPNQSF TTJPO4FTTJPO Y P P P ϦϞʔτͷΞηοτͷQJYFM#V⒎FS͸औΕͳ͍ ! !OPQQFGPYXPMG  

Slide 29

Slide 29 text

75%FDPNQSFTTJPO4FTTJPO ‣ ετϦʔϛϯάͰ΋Ωϟϓνϟ͕औΕΔ ‣ "7"TTFU3FBEFSʹόά͕͋ͬͯ΋େৎ෉ ‣ ෼ࢄͯ͠Τϯίʔυ͍ͨ࣌͠ͱ͔ʹศར ‣ ΤϥʔνΣοΫͱ͔ͪΌΜͱ͠ͳ͍ͱ͍͚ͳ͍ ! !OPQQFGPYXPMG  

Slide 30

Slide 30 text

)%FDPEF4BNQMF IUUQTHJUIVCDPNOPQQFGPYXPMG)%FDPEF4BNQMF ! !OPQQFGPYXPMG  

Slide 31

Slide 31 text

OPQQFGPYXPMG,JUTVOFCJ VTDecompressionSession͸ະαϙʔτ ύϑΥʔϚϯεʹҰఆͷޮՌ͕͋Γͦ͏Ͱ͋Ε͹࣮૷༧ ఆ ! !OPQQFGPYXPMG  

Slide 32

Slide 32 text

J04%$ͷ$G1ग़ͯ͠Έ·ͨ͠ɻ ࠓճͷ࿩ͷ΄͔ɺ,JUTVOFCJΛ.FUBMରԠͤͯ͞Ͳ͏ͳ Δͷ͔ͱ͔ൺֱͯ͠Έ͍ͨͱࢥ͍ͬͯ·͢ ! !OPQQFGPYXPMG