WEBVTT
00:00:01.380 --> 00:00:03.910
Hi, my name is Alex Turner,
I'm a program manager on
00:00:03.910 --> 00:00:06.810
the developer platform team
that brings you guys Kinect.
00:00:06.810 --> 00:00:09.320
And, one of the things I really
wanna talk to you today about is
00:00:09.320 --> 00:00:11.890
the Media Capture Frames API.
00:00:11.890 --> 00:00:13.955
And You might have heard
of media capture before,
00:00:13.955 --> 00:00:14.995
you might have used it.
00:00:14.995 --> 00:00:18.005
If you've done any kind of UPD
apps that deal with video or
00:00:18.005 --> 00:00:20.925
audio or photos, it's that
core Windows API that's
00:00:20.925 --> 00:00:22.515
build on top of
media foundation.
00:00:22.515 --> 00:00:24.605
And that's what let's you
get that kind of data into
00:00:24.605 --> 00:00:27.335
your app and you can do things
like encode video with it,
00:00:27.335 --> 00:00:28.575
bring an audio streams,
00:00:28.575 --> 00:00:31.965
trigger low lag photography
using the camera sensors.
00:00:31.965 --> 00:00:33.910
So you can do all sorts
of fun stuff there.
00:00:33.910 --> 00:00:36.470
But if you guys are used to
the Kinect SDK are used to
00:00:36.470 --> 00:00:39.170
a different kind of VPI that
deals with video one that pulls
00:00:39.170 --> 00:00:40.410
in a series of frames.
00:00:40.410 --> 00:00:43.060
But really lets you reason
about each frame individually,
00:00:43.060 --> 00:00:44.910
makes it convenient
to get at frames.
00:00:44.910 --> 00:00:47.550
And do computer vision on them
to correlate the different
00:00:47.550 --> 00:00:48.900
cameras that are giving
you these frames, so
00:00:48.900 --> 00:00:50.950
that you can figure out how
they relate to one another and
00:00:50.950 --> 00:00:52.730
kind of find pixels across.
00:00:52.730 --> 00:00:54.800
And so if you want to do
those kind of things,
00:00:54.800 --> 00:00:56.840
you need some extra capability
that haven't been in media
00:00:56.840 --> 00:00:57.940
capture up to today.
00:00:57.940 --> 00:00:59.660
And that's what this new
frames A-P-I provides.
00:00:59.660 --> 00:01:01.750
And for
those of you that do Kinect,
00:01:01.750 --> 00:01:04.180
there are some cool new
benefits that come with that.
00:01:04.180 --> 00:01:08.390
One of them is that we've had
Kinect for Windows 8.1 SDK for
00:01:08.390 --> 00:01:09.560
writing store apps.
00:01:09.560 --> 00:01:12.190
And by baking into media
foundation, we've created
00:01:12.190 --> 00:01:14.810
the way that you're gonna be
able to use Kinect as part of
00:01:14.810 --> 00:01:15.880
Windows 10.
00:01:15.880 --> 00:01:18.690
And as part of the Windows 10
anniversary update that's coming
00:01:18.690 --> 00:01:21.040
later this year, that's
gonna be available for you.
00:01:22.280 --> 00:01:23.860
The other cool thing is,
that you're gonna see that
00:01:23.860 --> 00:01:26.580
Kinect cameras now are kind of
a full part of Windows, right.
00:01:26.580 --> 00:01:28.920
That you can pull them in and
pull in the RGB feed and
00:01:28.920 --> 00:01:32.270
just use that anywhere, that
you use cover RGB feeds today.
00:01:32.270 --> 00:01:34.760
And whether you're pulling in
kind of a media foundation,
00:01:34.760 --> 00:01:35.890
camera feed, you can do that.
00:01:37.410 --> 00:01:39.990
And we're also gonna show you
some of code I'm gonna dig in.
00:01:39.990 --> 00:01:42.530
I'll show you exactly how
you can use this new API and
00:01:42.530 --> 00:01:43.350
what it looks like to go,
00:01:43.350 --> 00:01:45.179
and we'll rate this new frame
sources that are available.
00:01:46.260 --> 00:01:48.280
So one thing you can
see here is I've got
00:01:48.280 --> 00:01:50.820
an app up that's showing some of
the streams that are coming in
00:01:50.820 --> 00:01:53.110
off of a Kinect that
I've got here to my left.
00:01:53.110 --> 00:01:57.070
And if I go over here
you can see here,
00:01:58.430 --> 00:02:00.470
it's detected me here and you
can see all the different frames
00:02:00.470 --> 00:02:02.310
including in the middle,
kind of a traditional
00:02:02.310 --> 00:02:03.880
thing you probably think
most of when you see Kinect.
00:02:03.880 --> 00:02:07.010
Which is the joints that
represent where the Kinect has
00:02:07.010 --> 00:02:10.790
actually figured out my skeletal
structure, my body joints.
00:02:10.790 --> 00:02:12.340
And so if you look at
the upper left we've got
00:02:12.340 --> 00:02:14.850
just a standard
color image feed.
00:02:14.850 --> 00:02:16.510
And the lower left
we have infrared.
00:02:16.510 --> 00:02:19.290
And you can see as I get closer
to the IR illuminator it's
00:02:19.290 --> 00:02:19.920
getting brighter.
00:02:19.920 --> 00:02:21.990
We're showing red here for
the things that are brighter and
00:02:21.990 --> 00:02:24.180
purple for the things
that have less IR light.
00:02:25.560 --> 00:02:27.160
And in the upper right we're
showing the depth data.
00:02:27.160 --> 00:02:29.930
So this is actually just
showing exactly how far
00:02:29.930 --> 00:02:31.040
we're able to figure
out things are.
00:02:31.040 --> 00:02:32.840
So here black is very close,
00:02:32.840 --> 00:02:35.890
red is close and as I kind of
get further away you can see
00:02:35.890 --> 00:02:37.710
that's representing how far for
the sensor.
00:02:39.170 --> 00:02:41.600
And then in the middle here, you
can see it's got my skeleton.
00:02:41.600 --> 00:02:42.920
It's got the joints figured out.
00:02:42.920 --> 00:02:45.570
And then the lower right, it's
using those joints to figure out
00:02:45.570 --> 00:02:47.610
which pixels in
the image represent me.
00:02:47.610 --> 00:02:50.920
What is the Kinect's opinion
about where I am in the image,
00:02:50.920 --> 00:02:52.920
versus some other human being
that might be in there.
00:02:56.630 --> 00:02:59.260
So, that's pretty cool.
00:02:59.260 --> 00:03:00.570
Well let's take a look
at some other stuff.
00:03:00.570 --> 00:03:03.010
If I actually close this out and
launch the camera app.
00:03:05.100 --> 00:03:07.380
This is just the standard
Windows 10 camera app.
00:03:09.020 --> 00:03:11.140
But, you can see now,
00:03:11.140 --> 00:03:13.760
that what it's able to pull
in this Connect sensor.
00:03:13.760 --> 00:03:16.623
So it's not coming in purely
through some custom Connect
00:03:16.623 --> 00:03:18.708
system right now,
it's able to come in,
00:03:18.708 --> 00:03:21.227
it's able to use standard
camera features here.
00:03:21.227 --> 00:03:23.158
It's doing face detection
on the video stream
00:03:25.370 --> 00:03:27.414
If I come back here and I click
the thing that would normally
00:03:27.414 --> 00:03:29.220
just kinda switch between
front and back cameras.
00:03:29.220 --> 00:03:30.090
And now, we're able to see cool,
00:03:30.090 --> 00:03:32.460
this is the front camera of
the Surface book that I'm in.
00:03:32.460 --> 00:03:34.770
If I click it again,
I've got the camera back here.
00:03:36.210 --> 00:03:39.000
And so, if I have an app that's
just kind of pulling in media
00:03:39.000 --> 00:03:41.680
foundation data,
I'm able to do all these things.
00:03:41.680 --> 00:03:44.190
I'm able to have my camera
sensors up here on the laptop.
00:03:44.190 --> 00:03:45.750
I'm able to have
my camera sensors
00:03:45.750 --> 00:03:47.430
that are coming in
off of the Kinect.
00:03:47.430 --> 00:03:48.460
I can do kind of
all of the above,
00:03:48.460 --> 00:03:50.600
I can pull in an app that
does all of this together.
00:03:54.102 --> 00:03:55.620
All right, so
we've seen all this cool stuff,
00:03:55.620 --> 00:03:57.460
let's actually figure
out how the a p i works.
00:03:57.460 --> 00:03:58.250
Lets take a look in v s.
00:04:01.040 --> 00:04:02.690
So what I have here
is a simple project,
00:04:02.690 --> 00:04:04.370
it's a lot simpler than
the one we looked at before,
00:04:04.370 --> 00:04:06.440
we're just going to pull
in all our image data.
00:04:06.440 --> 00:04:07.960
But it's going to pull
it in from whatever
00:04:07.960 --> 00:04:09.090
sources are available,
00:04:09.090 --> 00:04:11.410
as you saw We can pull it
in from a connect sensor.
00:04:11.410 --> 00:04:13.900
We can pull it in just from the
RGB cameras that are front or
00:04:13.900 --> 00:04:16.250
back facing on my laptop.
00:04:16.250 --> 00:04:17.800
So let's take a quick look
at what the app does.
00:04:17.800 --> 00:04:19.951
I'm just gonna run
it quickly here.
00:04:26.991 --> 00:04:28.530
You can see it's pulling
in some color data.
00:04:30.240 --> 00:04:32.020
Starting off here with
the Kinect camera.
00:04:35.615 --> 00:04:38.320
Go here and say, cool this
is the front facing camera.
00:04:38.320 --> 00:04:42.910
And click next, this is the back
facing camera for the laptop and
00:04:42.910 --> 00:04:47.341
I can cycle back around and pull
in the data again from Kinect.
00:04:50.516 --> 00:04:51.866
And here what we're doing,
00:04:51.866 --> 00:04:54.180
we're just displaying
it on the screen.
00:04:54.180 --> 00:04:56.470
Because this is just
a super simple sample app.
00:04:56.470 --> 00:04:59.370
But the cool thing you're gonna
see is it actually comes in not
00:04:59.370 --> 00:05:02.190
as just video control that is
kind of opaque, and just puts
00:05:02.190 --> 00:05:04.890
stuff out on to the screen for
you or encodes it to a file.
00:05:04.890 --> 00:05:05.960
You're actually going
to get access to
00:05:05.960 --> 00:05:07.000
every individual bitmap.
00:05:07.000 --> 00:05:09.130
So when you want to go do that
analysis yourself, you can.
00:05:10.300 --> 00:05:12.520
So, the way you
pull that off here.
00:05:12.520 --> 00:05:16.130
First step, is to get access to
the frame source groups that you
00:05:16.130 --> 00:05:17.550
actually care about.
00:05:17.550 --> 00:05:20.430
So, you have media frames, these
are gonna be the individual
00:05:20.430 --> 00:05:22.450
payloads that come in
one frame at a time,
00:05:22.450 --> 00:05:24.620
at some framerate
from your sensor.
00:05:24.620 --> 00:05:27.230
And each sensor is
called a frame source.
00:05:27.230 --> 00:05:29.630
And so, what you're able to do
then is get these frame sources
00:05:29.630 --> 00:05:31.340
not just individually but
as a group, right?
00:05:31.340 --> 00:05:34.050
If you think of a Kinect,
you have a set of sensors
00:05:34.050 --> 00:05:37.580
that not just operate maybe
on a clock where you can get
00:05:37.580 --> 00:05:39.450
data from them at some
cadence together.
00:05:39.450 --> 00:05:42.080
They also operate where you
know like here's one sensor.
00:05:42.080 --> 00:05:42.720
Here's another sensor.
00:05:42.720 --> 00:05:43.540
I know the extrinsics.
00:05:43.540 --> 00:05:45.320
I know the calibration
between the sensors.
00:05:45.320 --> 00:05:47.850
For an individual sensor,
I might know the intrinsics.
00:05:47.850 --> 00:05:49.960
I know how the camera
lens actually works.
00:05:49.960 --> 00:05:51.330
I can figure out
how to project or
00:05:51.330 --> 00:05:52.850
unproject relative
to the real world.
00:05:54.410 --> 00:05:56.270
So I end up getting these
sensors that know how to work
00:05:56.270 --> 00:05:58.810
well together, and we're getting
back the list of all these
00:05:58.810 --> 00:06:00.250
groups, the groups
of such sensors.
00:06:01.250 --> 00:06:04.450
So when I look down here, you
see I'm saying take that list
00:06:04.450 --> 00:06:07.890
and go ahead and
find the groups where
00:06:07.890 --> 00:06:11.070
there is one sensor that I care
about that meets my criteria.
00:06:11.070 --> 00:06:13.370
And so, we're saying take the
group get all the SourceInfos,
00:06:13.370 --> 00:06:14.460
this is the meta data for
00:06:14.460 --> 00:06:16.020
all the various sources
that are a part of that.
00:06:16.020 --> 00:06:17.970
And then I'm gonna say
FirstOrDefault and
00:06:17.970 --> 00:06:19.740
I'm going to pass in
the SelectSource.
00:06:19.740 --> 00:06:22.400
And SelectSource here is
just gonna be our condition
00:06:22.400 --> 00:06:23.730
when I go in here,
00:06:23.730 --> 00:06:25.470
you can have a condition
that's as complex as you want.
00:06:25.470 --> 00:06:27.230
In our case,
we're just gonna say,
00:06:27.230 --> 00:06:29.350
find one where the frame
source kind is 'color.
00:06:29.350 --> 00:06:32.430
And you see here, I could go
here and say, Well, maybe where
00:06:32.430 --> 00:06:34.980
the frame source type is
infrared or anything else.
00:06:34.980 --> 00:06:36.390
But for our case, just so
00:06:36.390 --> 00:06:38.210
we can get multiple sensors
we're gonna say, color.
00:06:40.160 --> 00:06:42.620
So, What we do now,
once I've actually got that,
00:06:42.620 --> 00:06:44.280
I've got that selected,
I can pull it out to a list.
00:06:44.280 --> 00:06:46.160
I find the ones where we
actually have a color sensor.
00:06:46.160 --> 00:06:47.990
You could have a group that
just has a higher end depth,
00:06:47.990 --> 00:06:49.160
maybe there's no color.
00:06:49.160 --> 00:06:50.080
So find ones where
I've got that.
00:06:50.080 --> 00:06:51.660
So I find the ones where
I've got that, and
00:06:51.660 --> 00:06:54.640
as long as I've got at least one
thing here, I'm gonna go ahead
00:06:54.640 --> 00:06:57.700
and start setting up to actually
project onto that screen,
00:06:57.700 --> 00:06:59.180
actually render those
frames from that sensor.
00:07:00.880 --> 00:07:02.570
So just like with media capture,
00:07:02.570 --> 00:07:05.280
you start off by making a media
capture initialisation study.
00:07:05.280 --> 00:07:08.000
This is where you configure all
the knobs on media capture so
00:07:08.000 --> 00:07:09.680
it knows what you want to do.
00:07:09.680 --> 00:07:11.370
But in this case,
instead of saying hey,
00:07:11.370 --> 00:07:14.370
here's the particular camera
that we want to go to and
00:07:14.370 --> 00:07:15.920
actually start streaming from.
00:07:15.920 --> 00:07:19.110
What I'm saying is, here is the
SourceGroup that I care about.
00:07:19.110 --> 00:07:20.600
So there's a different
path you can go through in
00:07:20.600 --> 00:07:22.310
the initialization settings
that says you wanna use
00:07:22.310 --> 00:07:23.700
these frame sources.
00:07:23.700 --> 00:07:25.730
But I'm doing that here by
taking the SourceGroup from
00:07:25.730 --> 00:07:28.020
the one that we selected,
the first one.
00:07:28.020 --> 00:07:30.610
And I'm saying the SharingMode
is SharedReadOnly.
00:07:30.610 --> 00:07:31.830
And what this means is,
00:07:31.830 --> 00:07:33.860
this is actually one of
the new features that you get,
00:07:33.860 --> 00:07:36.190
by coming through the media
foundation architecture.
00:07:36.190 --> 00:07:39.060
I can say I wanna load this
up here but I don't actually
00:07:39.060 --> 00:07:41.688
care to have exclusive
control over this sensor.
00:07:41.688 --> 00:07:43.720
I might have another app that's
running on this system that also
00:07:43.720 --> 00:07:45.320
wants to do stuff
with this sensor,
00:07:45.320 --> 00:07:48.030
with this image data
that's coming in.
00:07:48.030 --> 00:07:51.000
So by saying share read only,
I'm able to get the data and
00:07:51.000 --> 00:07:52.730
read it, and somebody else
might be configuring it, but
00:07:52.730 --> 00:07:54.380
I can always actually
just read it on my app.
00:07:55.950 --> 00:07:58.300
So I pull that in and
specifically I also say I want
00:07:58.300 --> 00:08:00.500
access to this data on this CPU
and this is how we're gonna be
00:08:00.500 --> 00:08:02.550
able to pull in this all for
bit maps.
00:08:05.040 --> 00:08:06.580
So I go here now I've
set this all up.
00:08:06.580 --> 00:08:08.810
I set up a media capture
like I normally would.
00:08:08.810 --> 00:08:11.590
I initialize it with those
initialization settings
00:08:11.590 --> 00:08:13.580
except this time as you
saw the initialization
00:08:13.580 --> 00:08:16.065
settings are telling it we
wanna use the new frames API.
00:08:16.065 --> 00:08:20.340
[COUGH] Once I have that in now,
I can take the media capture and
00:08:20.340 --> 00:08:22.420
I can interrogate
the frame sources and say,
00:08:22.420 --> 00:08:24.700
hey for this given ID,
I want the frame source.
00:08:24.700 --> 00:08:26.870
Now that you've initialized and
taken the source info, and
00:08:26.870 --> 00:08:29.670
we've realized the actual frame
sources that we wanna load.
00:08:29.670 --> 00:08:31.300
So I get back that frame source,
and
00:08:31.300 --> 00:08:33.320
that frame source is how I'm
gonna go create a reader.
00:08:33.320 --> 00:08:36.140
The reader is what's gonna
feed me the frames over time.
00:08:36.140 --> 00:08:38.580
So with that source in hand,
I can say hey.
00:08:38.580 --> 00:08:40.710
I want RGB 32 frames and
go ahead and
00:08:40.710 --> 00:08:42.960
create me a frame reader that's
going to deliver that to me.
00:08:45.210 --> 00:08:48.100
So I get that reader and I just
do one simple thing with that.
00:08:48.100 --> 00:08:49.620
I subscribe to the frame
arrived event.
00:08:49.620 --> 00:08:52.360
This is what's going to happen
every time I get a new frame.
00:08:52.360 --> 00:08:53.760
And once I've subscribed,
00:08:53.760 --> 00:08:56.589
I go ahead and I start
the frame reader going here.
00:08:57.880 --> 00:09:00.500
If we take a look at what's
going on inside frame arrived
00:09:00.500 --> 00:09:03.390
and I go through I look my own
byte map that I'm gonna use to
00:09:03.390 --> 00:09:04.880
reason about this frame,
so I can update it for
00:09:04.880 --> 00:09:05.420
the next frame.
00:09:06.680 --> 00:09:09.200
And see here I go down to
the frame reference and
00:09:09.200 --> 00:09:11.400
now I start accessing its
properties and specifically,
00:09:11.400 --> 00:09:13.010
I access video media frame.
00:09:13.010 --> 00:09:16.210
And this is gonna give me
back the video frame object
00:09:16.210 --> 00:09:19.080
that represents this
particular color frame.
00:09:19.080 --> 00:09:22.020
And if I dig in here, you can
see not only is there a video
00:09:22.020 --> 00:09:25.380
media frame property,
there's also this buffer
00:09:25.380 --> 00:09:28.040
media frame property and
this is important.
00:09:28.040 --> 00:09:32.160
Previously media foundation when
it was dealing in just video and
00:09:32.160 --> 00:09:34.350
audio but primarily you're
pulling in photos and
00:09:34.350 --> 00:09:38.410
videos You were dealing in
rectangular pixel images, right?
00:09:38.410 --> 00:09:41.820
I have an x by y, I get an image
back and I can reason about it,
00:09:41.820 --> 00:09:43.990
I can reason about the pixels
that are in there.
00:09:43.990 --> 00:09:45.110
You might have
different formats.
00:09:45.110 --> 00:09:47.020
Maybe it's RBG in
the case now of infrared,
00:09:47.020 --> 00:09:49.030
it might be some sort
brightness value and depth,
00:09:49.030 --> 00:09:50.480
it could be some
value in meters.
00:09:50.480 --> 00:09:53.390
But it's still rectangular
structure of data.
00:09:53.390 --> 00:09:55.210
But think of something like
the way the body's coming.
00:09:55.210 --> 00:09:56.940
I have my joints and
they're just and
00:09:56.940 --> 00:09:58.720
arbitrary data structure
that's gonna come in and
00:09:58.720 --> 00:10:00.760
tell me where my joints
are in a given frame.
00:10:00.760 --> 00:10:02.790
It's still frame based it's
still coming in at a cadence
00:10:02.790 --> 00:10:05.190
from the source but
it's not a rectangular pixel,
00:10:05.190 --> 00:10:06.520
it's not a video frame.
00:10:06.520 --> 00:10:07.900
And so,
we provide another system,
00:10:07.900 --> 00:10:10.530
this is new, it's part of
the anniversary update as
00:10:10.530 --> 00:10:13.530
part of the frames API where
you can pull in buffer frames.
00:10:13.530 --> 00:10:15.080
And this is what's going to
let you pull in that kind of
00:10:15.080 --> 00:10:15.720
arbitrary data.
00:10:15.720 --> 00:10:18.250
And that's the system that
Kinect is going to use to pull
00:10:18.250 --> 00:10:18.920
in skeletal data.
00:10:18.920 --> 00:10:23.260
In this case though, we know
it's a video media frame and
00:10:23.260 --> 00:10:25.220
we're going to go here and
access it's software bitmap.
00:10:25.220 --> 00:10:28.720
And this is what now gives us
not just kind of you know here's
00:10:28.720 --> 00:10:30.290
a chunk of data
that you encode or
00:10:30.290 --> 00:10:32.360
here's some data that
you display on a screen.
00:10:32.360 --> 00:10:32.950
Here's a bitmap.
00:10:32.950 --> 00:10:34.550
It represents this one frame.
00:10:34.550 --> 00:10:38.890
And in this case we're gonna go
down access directory e-service,
00:10:38.890 --> 00:10:40.810
we're gonna go render it but
that's just for this.
00:10:40.810 --> 00:10:43.340
If I want to go do analysis, if
I want to pull the pixels apart
00:10:43.340 --> 00:10:45.890
and send it into my CD library,
this is what I would take and
00:10:45.890 --> 00:10:46.730
I would go do that with.
00:10:49.950 --> 00:10:51.640
So you've seen a lot of
the stuff that we used to do
00:10:51.640 --> 00:10:53.930
just purely with the connect
SDK, with an add on SDK.
00:10:53.930 --> 00:10:55.070
And you're seeing this
00:10:55.070 --> 00:10:57.380
start to get baked more
deeply into Windows.
00:10:57.380 --> 00:10:58.540
And baked in, in a general way.
00:10:58.540 --> 00:11:00.330
It's not just
a connect API anymore,
00:11:00.330 --> 00:11:01.720
it's an API that's intended for
00:11:01.720 --> 00:11:05.240
pulling in data from all sorts
of color, IR and depth sensors.
00:11:05.240 --> 00:11:08.040
You see that you can get
at that per frame data, and
00:11:08.040 --> 00:11:09.740
you see that it's not just
color, eye, and depth.
00:11:09.740 --> 00:11:11.370
You see that, hey,
with the Kinect,
00:11:11.370 --> 00:11:13.690
as long as you've got
an extra bit on top,
00:11:13.690 --> 00:11:15.800
which we're gonna kind
of ship soon after.
00:11:15.800 --> 00:11:16.960
We've got
the anniversary update.
00:11:16.960 --> 00:11:19.910
You can take those opaque custom
streams that come up and start
00:11:19.910 --> 00:11:22.440
to pull out things like skeleton
data, and any other data that
00:11:22.440 --> 00:11:24.430
that hardware vendor
wants to surface.
00:11:24.430 --> 00:11:26.550
For Kinect it's gonna be
body skeletons, but for
00:11:26.550 --> 00:11:29.890
any other vendor, it could
be all sorts of things And
00:11:29.890 --> 00:11:31.510
it's also about calibration,
right?
00:11:31.510 --> 00:11:34.030
If I have multiple sensors
that are in a sensor group,
00:11:34.030 --> 00:11:35.350
I might know how they
relate to each other.
00:11:35.350 --> 00:11:37.240
I might know things about
the camera intrinsics,
00:11:37.240 --> 00:11:38.740
about the lens model.
00:11:38.740 --> 00:11:40.050
And I can pull that
in to help me do
00:11:40.050 --> 00:11:41.490
really accurate computer vision.
00:11:41.490 --> 00:11:44.930
And so by pulling this all
together, we're hoping to kick
00:11:44.930 --> 00:11:47.220
off something that's
broader than Kinect.
00:11:47.220 --> 00:11:49.840
Kinect is pretty awesome, and
we want everyone to participate.
00:11:49.840 --> 00:11:51.400
Not just on the app side,
but for
00:11:51.400 --> 00:11:54.240
when you're building software,
but also on the hardware side.
00:11:54.240 --> 00:11:56.170
We want to create a rich
platform where your apps can be
00:11:56.170 --> 00:11:59.940
built once and run across
a wide range of devices.
00:11:59.940 --> 00:12:02.020
So we're looking forward to what
you guys are going to build,
00:12:02.020 --> 00:12:03.830
you can try this out right now.
00:12:03.830 --> 00:12:07.490
On the April preview go to
become a Windows insider.
00:12:07.490 --> 00:12:09.620
Download the preview,
download the preview SDK.
00:12:09.620 --> 00:12:13.090
What you can do as of April is
play around with color streams
00:12:13.090 --> 00:12:14.440
from your various sensors.
00:12:14.440 --> 00:12:15.440
Pretty soon after that,
00:12:15.440 --> 00:12:17.760
we're gonna have a preview
of a Kinect driver.
00:12:17.760 --> 00:12:19.470
Kinect driver is not
quite ready yet.
00:12:19.470 --> 00:12:21.120
We're showing a preview
version of that here.
00:12:21.120 --> 00:12:22.850
But once the Kinect
driver is ready,
00:12:22.850 --> 00:12:24.450
you'll be able to update
to that driver, and
00:12:24.450 --> 00:12:27.820
that's gonna start updating
these API's for Kinect as well.
00:12:27.820 --> 00:12:31.020
And then soon after when we
ship the anniversary update,
00:12:31.020 --> 00:12:33.360
soon after that, we're
gonna have that add on SDK.
00:12:33.360 --> 00:12:36.060
And that's gonna let you take
these custom streams that come
00:12:36.060 --> 00:12:38.790
through for things that aren't
color IRA depth things like
00:12:38.790 --> 00:12:41.620
the skeleton data and
go read that out.
00:12:41.620 --> 00:12:43.420
And actually interpret
that opaque blob and
00:12:43.420 --> 00:12:45.530
actually get back all
the same connect goodness
00:12:45.530 --> 00:12:46.750
that you're used to today.
00:12:46.750 --> 00:12:48.630
We'd love to see where you
guys can go with that.
00:12:48.630 --> 00:12:49.230
Thanks!