-
Notifications
You must be signed in to change notification settings - Fork 48
/
606.srt
4492 lines (3285 loc) · 97.4 KB
/
606.srt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:181083,LOCAL:00:00:00.000
00:00:00.506 --> 00:00:10.536 A:middle
[ Silence ]
00:00:11.036 --> 00:00:16.966 A:middle
>> Good afternoon.
00:00:16.966 --> 00:00:18.356 A:middle
[ Applause ]
00:00:18.356 --> 00:00:21.446 A:middle
Well my name is Sam Bushell
and I work on Media Frameworks.
00:00:21.896 --> 00:00:23.926 A:middle
And that's what we're
going to be talking
00:00:23.926 --> 00:00:24.686 A:middle
about in this session.
00:00:24.686 --> 00:00:28.886 A:middle
We're going to talk about
Media Frameworks, old and new.
00:00:28.886 --> 00:00:31.416 A:middle
We're going to talk
about QuickTime and QTKit
00:00:31.416 --> 00:00:34.906 A:middle
and we're going to talk about
AV Foundation and AV Kit.
00:00:35.846 --> 00:00:38.086 A:middle
In case you haven't heard,
00:00:38.086 --> 00:00:40.176 A:middle
AV Foundation is a new media
infrastructure we've been
00:00:40.176 --> 00:00:42.256 A:middle
working on at Apple
for the last few years.
00:00:42.976 --> 00:00:44.776 A:middle
It's common on iOS and OS X.
00:00:44.776 --> 00:00:50.526 A:middle
And it's focused on modern media
formats like H.264 and AAC.
00:00:50.526 --> 00:00:52.656 A:middle
But AV Foundation was
built by engineers
00:00:52.656 --> 00:00:53.946 A:middle
with deep media experience
00:00:53.946 --> 00:00:55.656 A:middle
from building QuickTime
over many years.
00:00:59.456 --> 00:01:01.846 A:middle
Let's give a bit of
history about QuickTime.
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:181083,LOCAL:00:00:00.000
00:00:59.456 --> 00:01:01.846 A:middle
Let's give a bit of
history about QuickTime.
00:01:03.106 --> 00:01:06.106 A:middle
QuickTime was a pioneering
framework
00:01:06.106 --> 00:01:08.536 A:middle
for dealing with digital media.
00:01:09.806 --> 00:01:12.446 A:middle
There were some early developer
seeds but it first shipped
00:01:12.446 --> 00:01:14.356 A:middle
to the public in December 1991.
00:01:14.876 --> 00:01:19.456 A:middle
And over the years since
1991, there have been a lot
00:01:19.456 --> 00:01:22.796 A:middle
of QuickTime updates delivering
an enormous collection
00:01:22.796 --> 00:01:23.456 A:middle
of features.
00:01:24.856 --> 00:01:28.316 A:middle
One of our biggest individual
feature releases was QuickTime 7
00:01:28.316 --> 00:01:30.366 A:middle
which is shipped as part
of Mac OS 10.4 Tiger.
00:01:31.166 --> 00:01:35.776 A:middle
This introduced big
deal features like H.264
00:01:35.776 --> 00:01:37.786 A:middle
and the QTKit Framework.
00:01:38.446 --> 00:01:41.446 A:middle
The QTKit Framework
introduced an objective C API
00:01:41.716 --> 00:01:43.096 A:middle
that wrapped the QuickTime C API
00:01:43.096 --> 00:01:46.206 A:middle
for easier integration
into Cocoa Apps.
00:01:48.686 --> 00:01:52.466 A:middle
Four years later, we introduced
Mac OS 10.6 Snow Leopard.
00:01:52.466 --> 00:01:54.976 A:middle
And in that four years,
00:01:55.326 --> 00:01:58.606 A:middle
we had built a new media
playback pipeline as part
00:01:58.606 --> 00:01:59.676 A:middle
of building the iPhone.
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:181083,LOCAL:00:00:00.000
00:02:00.386 --> 00:02:01.356 A:middle
We called this Core Media.
00:02:02.906 --> 00:02:06.186 A:middle
Now we weren't ready
to deliver a public API
00:02:06.286 --> 00:02:07.486 A:middle
for Core Media at the time.
00:02:07.516 --> 00:02:10.816 A:middle
But we delivered-- we
added a mode to QTKit
00:02:11.486 --> 00:02:13.406 A:middle
where you could use the
Core Media playback pipeline
00:02:13.406 --> 00:02:16.536 A:middle
to get optimized
playback of H.264 and AAC.
00:02:16.646 --> 00:02:17.946 A:middle
We called this QuickTime X.
00:02:18.566 --> 00:02:24.996 A:middle
And then in OS 10.7 Lion,
00:02:25.386 --> 00:02:27.956 A:middle
we introduced AV
Foundation as a public API.
00:02:28.796 --> 00:02:34.176 A:middle
In our framework hierarchy
AV Foundation sits lower
00:02:34.176 --> 00:02:36.986 A:middle
than the UI frameworks
of UIKit and AppKit.
00:02:37.766 --> 00:02:39.576 A:middle
This means that we can
deliver the same API
00:02:39.926 --> 00:02:41.676 A:middle
across iOS and OS X.
00:02:42.496 --> 00:02:48.736 A:middle
In the OS 10.8 Mountain Lion, we
enhanced the AV Foundation API
00:02:48.866 --> 00:02:51.546 A:middle
and we introduced the Video
Toolbox as a public API.
00:02:52.356 --> 00:02:55.636 A:middle
And this year in Mavericks,
00:02:55.776 --> 00:02:57.166 A:middle
(I'm still getting
used to saying that.)
00:02:58.246 --> 00:03:00.236 A:middle
We introduced-- we're
introducing AV Kit.
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:181083,LOCAL:00:00:00.000
00:02:58.246 --> 00:03:00.236 A:middle
We introduced-- we're
introducing AV Kit.
00:03:00.666 --> 00:03:03.316 A:middle
AV Kit is the framework
where we will put APIs
00:03:03.896 --> 00:03:06.176 A:middle
that let you integrate AV
Foundation with AppKit.
00:03:09.086 --> 00:03:11.396 A:middle
So, you can see in the last
few years we have built
00:03:11.396 --> 00:03:14.736 A:middle
in a new stack of
media frameworks.
00:03:15.786 --> 00:03:17.606 A:middle
We call this the AV
Foundation family
00:03:18.096 --> 00:03:19.496 A:middle
and this is the direction
we're headed.
00:03:19.496 --> 00:03:21.846 A:middle
This is our focus in
the media systems group.
00:03:22.726 --> 00:03:24.626 A:middle
We have not been adding
new APIs to QuickTime
00:03:24.626 --> 00:03:26.726 A:middle
or QTKit for-- for
some time now.
00:03:26.726 --> 00:03:29.546 A:middle
I said that with one small
asterisk to come back to later.
00:03:32.026 --> 00:03:36.376 A:middle
So, as of Mavericks, the
QuickTime C Framework
00:03:36.706 --> 00:03:39.416 A:middle
and the QTKit Framework
are deprecated.
00:03:39.926 --> 00:03:42.736 A:middle
What this means is that
we've marked these APIs
00:03:42.786 --> 00:03:44.496 A:middle
as deprecated in
the header files.
00:03:44.846 --> 00:03:48.946 A:middle
And that means while your code
will still compile you will get
00:03:48.946 --> 00:03:50.486 A:middle
deprecation warnings like these.
00:03:51.866 --> 00:03:53.836 A:middle
But your apps will still run.
00:03:54.796 --> 00:03:56.306 A:middle
Let's emphasize that.
00:03:56.306 --> 00:03:57.876 A:middle
Your apps will still run.
00:03:57.876 --> 00:04:02.506 A:middle
While were on the topic,
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:181083,LOCAL:00:00:00.000
00:03:57.876 --> 00:04:02.506 A:middle
While were on the topic,
00:04:03.726 --> 00:04:07.766 A:middle
the QuickTime Movie file format
is still the primary file format
00:04:07.926 --> 00:04:09.666 A:middle
for AV Foundation and
for QuickTime Player.
00:04:10.276 --> 00:04:11.166 A:middle
It's still supported.
00:04:11.166 --> 00:04:13.776 A:middle
What we are deprecating
is the QuickTime C API
00:04:15.016 --> 00:04:18.486 A:middle
and the QuickTime, I'm sorry,
the QTKit objective C API.
00:04:19.346 --> 00:04:20.896 A:middle
The file format is
still supported.
00:04:23.216 --> 00:04:29.206 A:middle
And also on topic the movie file
format's ISO cousin MPEG4 is
00:04:29.206 --> 00:04:31.246 A:middle
also still supported.
00:04:31.786 --> 00:04:38.316 A:middle
So AV Foundation is the future
of media applications on OS X.
00:04:38.496 --> 00:04:41.216 A:middle
Let's talk a little bit about
how we built AV Foundation.
00:04:42.006 --> 00:04:44.916 A:middle
As I said, AV Foundation
was built by engineers
00:04:44.916 --> 00:04:46.156 A:middle
with deep media experience
00:04:46.156 --> 00:04:47.666 A:middle
from building QuickTime
over many years.
00:04:48.226 --> 00:04:50.936 A:middle
We wanted to build a
new platform for media
00:04:51.026 --> 00:04:53.186 A:middle
that could do things that
QuickTime couldn't do
00:04:53.446 --> 00:04:57.456 A:middle
and go places that QuickTime
couldn't do-- couldn't go.
00:04:58.456 --> 00:05:02.356 A:middle
So we built it on the same
kinds of modern foundations
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:181083,LOCAL:00:00:00.000
00:04:58.456 --> 00:05:02.356 A:middle
So we built it on the same
kinds of modern foundations
00:05:02.356 --> 00:05:06.076 A:middle
that the rest of Apple has been
moving towards, core foundation
00:05:06.076 --> 00:05:08.816 A:middle
and foundation, GCD and
Blocks and so forth.
00:05:10.086 --> 00:05:12.636 A:middle
Now QuickTime was built
on a modern foundation.
00:05:12.706 --> 00:05:15.216 A:middle
It's just that it was a
modern foundation in 1991
00:05:15.216 --> 00:05:16.386 A:middle
when System 7 was new.
00:05:16.996 --> 00:05:20.546 A:middle
So a lot of the technologies
that it was sitting on top
00:05:20.546 --> 00:05:22.816 A:middle
of have or ones that we have
moved apart, moved away from.
00:05:26.716 --> 00:05:27.936 A:middle
Where QuickTime's APIs--
00:05:27.936 --> 00:05:34.226 A:middle
QuickTime is often said
to have a lot of APIs
00:05:34.226 --> 00:05:37.106 A:middle
but if you count these up
by numbers and if you look
00:05:37.106 --> 00:05:38.466 A:middle
into the header files, a lot
00:05:38.466 --> 00:05:40.676 A:middle
of these APIs are simply
exposing the implementation
00:05:40.676 --> 00:05:41.246 A:middle
of QuickTime.
00:05:41.876 --> 00:05:44.406 A:middle
And sometimes that's a
good fit for how you want
00:05:44.406 --> 00:05:47.536 A:middle
to extend QuickTime and use
QuickTime but sometimes its not.
00:05:48.266 --> 00:05:52.326 A:middle
With AV Foundation we have
taken care to design our APIs
00:05:52.916 --> 00:05:55.106 A:middle
to be a good fit for how
clients will use them.
00:05:55.646 --> 00:06:01.506 A:middle
And so QuickTime's APIs
are monolithic and in some
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:181083,LOCAL:00:00:00.000
00:05:55.646 --> 00:06:01.506 A:middle
And so QuickTime's APIs
are monolithic and in some
00:06:01.506 --> 00:06:04.466 A:middle
of these cases we have taken the
opportunity to re-factor them
00:06:04.646 --> 00:06:06.396 A:middle
in AV Foundation into
multiple objects.
00:06:06.716 --> 00:06:09.796 A:middle
In some cases these makes
the AV Foundation APIs much
00:06:09.796 --> 00:06:10.476 A:middle
more flexible.
00:06:14.206 --> 00:06:17.306 A:middle
Owing the QuickTime's
pre-OS X heritage,
00:06:18.126 --> 00:06:19.856 A:middle
many of its APIs
were only designed
00:06:19.856 --> 00:06:21.156 A:middle
to work on the main thread.
00:06:22.016 --> 00:06:23.806 A:middle
Now we did some retrofitting.
00:06:23.806 --> 00:06:26.826 A:middle
We did some refitting
and make many
00:06:26.826 --> 00:06:28.696 A:middle
of the APIs multi-thread
savvy in later years.
00:06:29.456 --> 00:06:32.816 A:middle
But that left the overall
rules if you had coming to it
00:06:32.816 --> 00:06:35.846 A:middle
as a first timer the overall
rules were somewhat awkward
00:06:35.846 --> 00:06:36.486 A:middle
and complicated.
00:06:37.436 --> 00:06:40.606 A:middle
AV Foundation is designed
to be deeply multithreaded.
00:06:41.076 --> 00:06:42.306 A:middle
There are two goals for this.
00:06:42.936 --> 00:06:44.536 A:middle
One is to take maximum advantage
00:06:44.706 --> 00:06:46.896 A:middle
of multi-core hardware
like we have today.
00:06:46.896 --> 00:06:49.686 A:middle
And the other is to improve
application responsiveness
00:06:50.196 --> 00:06:52.736 A:middle
by letting you take
slow, blocking operations
00:06:52.736 --> 00:06:54.156 A:middle
and move them off
the main thread.
00:06:54.676 --> 00:06:58.416 A:middle
AV Foundation is able
to take advantage
00:06:58.416 --> 00:07:01.776 A:middle
of hardware acceleration in
ways that QuickTime could not
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:181083,LOCAL:00:00:00.000
00:06:58.416 --> 00:07:01.776 A:middle
of hardware acceleration in
ways that QuickTime could not
00:07:02.436 --> 00:07:03.696 A:middle
such as video encoding.
00:07:04.076 --> 00:07:09.556 A:middle
And we made major design
decisions in AV Foundation
00:07:09.846 --> 00:07:11.206 A:middle
with the goal of
power efficiency.
00:07:11.876 --> 00:07:13.036 A:middle
Remember this is a framework
00:07:13.096 --> 00:07:15.496 A:middle
that was first delivered
on the iPhone.
00:07:15.616 --> 00:07:18.426 A:middle
It is a device that we tested
and run on a battery that fits
00:07:18.426 --> 00:07:20.596 A:middle
in your pocket and still
delivered long hours
00:07:20.596 --> 00:07:21.426 A:middle
of playback time.
00:07:22.866 --> 00:07:25.996 A:middle
Some of these power efficiency
design decisions could not have
00:07:25.996 --> 00:07:27.896 A:middle
been made compatible with
the QuickTime architecture.
00:07:31.676 --> 00:07:33.986 A:middle
And finally QuickTime's
integration,
00:07:34.506 --> 00:07:37.516 A:middle
deep tight integration
with legacy frameworks,
00:07:38.176 --> 00:07:39.226 A:middle
QuickDraw in particular,
00:07:39.606 --> 00:07:41.556 A:middle
means that it cannot
escape the 32-bit world.
00:07:42.246 --> 00:07:43.506 A:middle
Now you may know
that you are able
00:07:43.506 --> 00:07:46.136 A:middle
to use QTKit a 64-bit
application.
00:07:47.356 --> 00:07:50.196 A:middle
But for playback and editing
at least, what's happening
00:07:50.196 --> 00:07:52.596 A:middle
when you do that is that it's
running a 32-bit background
00:07:52.596 --> 00:07:53.656 A:middle
process to use QuickTime.
00:07:54.336 --> 00:07:55.566 A:middle
AV Foundation has designed--
00:07:55.566 --> 00:07:58.386 A:middle
been designed to be
64-bit native from day one.
00:07:59.616 --> 00:08:01.576 A:middle
So do you get the message here?
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:181083,LOCAL:00:00:00.000
00:07:59.616 --> 00:08:01.576 A:middle
So do you get the message here?
00:08:02.056 --> 00:08:04.586 A:middle
There are lots of great
reasons why AV Foundation is the
00:08:04.586 --> 00:08:05.646 A:middle
direction that we're headed
00:08:05.766 --> 00:08:07.056 A:middle
and why it should
also be the direction
00:08:07.056 --> 00:08:08.376 A:middle
that your apps are
headed as well.
00:08:08.956 --> 00:08:14.146 A:middle
And AV Foundation supports the
media types that matter, video,
00:08:14.146 --> 00:08:15.906 A:middle
audio, closed captions
and subtitles,
00:08:15.906 --> 00:08:17.706 A:middle
chapters, and time code.
00:08:18.686 --> 00:08:22.896 A:middle
Now as I mentioned QuickTime
has a history, a vast history
00:08:22.896 --> 00:08:24.736 A:middle
with many features
added over the years.
00:08:25.446 --> 00:08:28.766 A:middle
And some of these were
breakthrough features
00:08:28.766 --> 00:08:32.006 A:middle
when they were added
in the mid 1990s.
00:08:32.306 --> 00:08:34.436 A:middle
But the world has moved on.
00:08:36.106 --> 00:08:38.676 A:middle
If you look at this list you
would think to yourself many
00:08:38.676 --> 00:08:43.265 A:middle
of theses APIs-- many of these
features would be superseded
00:08:43.265 --> 00:08:46.676 A:middle
by basic things that we take
for granted today like HTML 5.
00:08:47.466 --> 00:08:51.636 A:middle
And HTTP live streaming has
proved to be much more scalable
00:08:51.636 --> 00:08:53.896 A:middle
for delivery than RTP
Streaming ever was.
00:08:54.406 --> 00:08:56.906 A:middle
That brings us to codecs.
00:08:59.016 --> 00:09:00.886 A:middle
So QuickTime has a vast history.
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:181083,LOCAL:00:00:00.000
00:08:59.016 --> 00:09:00.886 A:middle
So QuickTime has a vast history.
00:09:00.886 --> 00:09:03.596 A:middle
It has collected many, many
codecs over its long history,
00:09:03.916 --> 00:09:08.146 A:middle
and many of these are rather
old and have been superseded.
00:09:08.976 --> 00:09:10.526 A:middle
The categories of codecs
00:09:10.606 --> 00:09:15.106 A:middle
that are still relevant today
basically are in three groups.
00:09:15.336 --> 00:09:18.566 A:middle
Those that are used for
delivery like H.264 and AAC
00:09:18.626 --> 00:09:21.226 A:middle
and we use JPEG for
chapter images.
00:09:22.106 --> 00:09:24.186 A:middle
Codecs that are used
for production workflows
00:09:24.186 --> 00:09:26.756 A:middle
and editing, these are often
called Mezzanine codecs.
00:09:27.166 --> 00:09:32.586 A:middle
And Codecs that are used
as-- for import from captures
00:09:32.586 --> 00:09:34.486 A:middle
and device, standard
formats that we need
00:09:34.486 --> 00:09:35.546 A:middle
to be able to import from.
00:09:36.196 --> 00:09:38.716 A:middle
These three categories of
codecs are still supported
00:09:38.716 --> 00:09:39.556 A:middle
by AV Foundation.
00:09:40.176 --> 00:09:45.966 A:middle
And that leaves a number
that are left by the wayside.
00:09:47.086 --> 00:09:49.576 A:middle
And if you have really good
eyesight, you might be able
00:09:49.576 --> 00:09:50.786 A:middle
to look at this and
say well hang on some
00:09:50.786 --> 00:09:53.336 A:middle
of those aren't really what I
think it as video codecs anyhow.
00:09:53.816 --> 00:09:55.826 A:middle
And the way that QuickTime's
architecture was structured
00:09:56.726 --> 00:09:59.556 A:middle
still image formats and video
filters and effects also had
00:09:59.556 --> 00:10:01.296 A:middle
to be registered
as video decoders.
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:181083,LOCAL:00:00:00.000
00:09:59.556 --> 00:10:01.296 A:middle
to be registered
as video decoders.
00:10:01.916 --> 00:10:04.026 A:middle
Well nowadays, we have
the image IO Framework
00:10:04.026 --> 00:10:06.116 A:middle
which delivers still
image format support
00:10:06.116 --> 00:10:08.606 A:middle
and we have designed
different ways
00:10:08.606 --> 00:10:10.266 A:middle
of integrating video
filters and effects
00:10:10.526 --> 00:10:12.056 A:middle
into the playback pipeline.
00:10:14.826 --> 00:10:18.146 A:middle
But our media is
personally important to us.
00:10:19.196 --> 00:10:21.526 A:middle
Some of the media in these
formats is irreplaceable.
00:10:22.086 --> 00:10:25.726 A:middle
And just because the
formats are out of date,
00:10:25.726 --> 00:10:27.576 A:middle
it doesn't mean we want
to orphan the content.
00:10:29.526 --> 00:10:33.396 A:middle
So we've provided a
mechanisms starting in Mavericks
00:10:34.676 --> 00:10:39.046 A:middle
to help you-- to help
you migrate the content
00:10:39.296 --> 00:10:42.776 A:middle
in these legacy containers,
legacy formats
00:10:43.466 --> 00:10:45.416 A:middle
into AV Foundation-supported
formats.
00:10:45.956 --> 00:10:48.426 A:middle
It's called QTMovieModernizer.
00:10:48.996 --> 00:10:51.786 A:middle
It's automatically run
by QuickTime Player
00:10:51.786 --> 00:10:54.296 A:middle
when it discovers a legacy codec
in a movie file you're opening.
00:10:54.706 --> 00:10:56.576 A:middle
It works with third-party
QuickTime components.
00:10:57.076 --> 00:11:01.306 A:middle
And it's provided as
a new API in Mavericks
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:181083,LOCAL:00:00:00.000
00:10:57.076 --> 00:11:01.306 A:middle
And it's provided as
a new API in Mavericks
00:11:01.616 --> 00:11:02.966 A:middle
so you can do the
same in your apps.
00:11:04.156 --> 00:11:06.606 A:middle
The way it works is it
produces a new copy of the movie
00:11:06.766 --> 00:11:08.346 A:middle
in an AV Foundation
supported format.
00:11:08.706 --> 00:11:11.146 A:middle
Normally this will
be H.264 in AAC.
00:11:11.216 --> 00:11:12.976 A:middle
But there are some cases
for production workflows
00:11:12.976 --> 00:11:15.256 A:middle
where you'd want to use
Apple ProRes and PCM instead.
00:11:15.986 --> 00:11:17.496 A:middle
If the content has
an alpha channel,
00:11:17.716 --> 00:11:22.366 A:middle
then the alpha channel can be
preserved in Apple ProRes 4444.
00:11:22.366 --> 00:11:25.286 A:middle
Now, it's delivered
as part of QTKit.
00:11:25.286 --> 00:11:27.006 A:middle
And this is something
we don't do very often.
00:11:27.006 --> 00:11:30.216 A:middle
We're adding a new API to
a deprecated framework.
00:11:31.556 --> 00:11:34.496 A:middle
But this is intentional because
there's a very specific message
00:11:34.496 --> 00:11:35.226 A:middle
we want to send here.
00:11:36.376 --> 00:11:40.006 A:middle
QTMovieModernizer will be
available to you exactly as long
00:11:40.386 --> 00:11:42.916 A:middle
as QTKit and those legacy
codecs are still available.
00:11:43.946 --> 00:11:47.226 A:middle
So now is a good time to
gather up your legacy media
00:11:47.226 --> 00:11:54.356 A:middle
and bring it across the bridge.
00:11:54.356 --> 00:11:54.546 A:middle
[ Pause ]
00:11:54.546 --> 00:11:58.646 A:middle
So that's our story here
about QuickTime and QTKit.
00:11:59.976 --> 00:12:01.896 A:middle
QuickTime and QTKit
are deprecated
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:181083,LOCAL:00:00:00.000
00:11:59.976 --> 00:12:01.896 A:middle
QuickTime and QTKit
are deprecated
00:12:01.896 --> 00:12:05.876 A:middle
and we have been building a new
media framework brick-by-brick,
00:12:05.876 --> 00:12:08.326 A:middle
foundation by foundation
as it were called the AV--
00:12:09.136 --> 00:12:11.126 A:middle
the AV Foundation family.
00:12:11.736 --> 00:12:16.116 A:middle
In the rest of this talk,
we're going to talk about how
00:12:16.116 --> 00:12:18.696 A:middle
to migrate existing applications
00:12:19.156 --> 00:12:21.296 A:middle
to the AV Foundation
framework family.
00:12:21.416 --> 00:12:26.556 A:middle
And first I'll introduce
Stefan Hafeneger up to talk
00:12:26.556 --> 00:12:31.176 A:middle
about AV kit and introduce
it to you for the first time.
00:12:31.191 --> 00:12:33.191 A:middle
[ Applause ]
00:12:33.206 --> 00:12:36.486 A:middle
>> Thanks Sam.
00:12:36.486 --> 00:12:41.036 A:middle
So I see most of you sitting in
the audience here have some kind
00:12:41.036 --> 00:12:42.436 A:middle
of media playback in
your applications.
00:12:43.536 --> 00:12:44.426 A:middle
Let's see.
00:12:44.426 --> 00:12:46.566 A:middle
How many of you still
use QT Movie View?
00:12:47.516 --> 00:12:50.576 A:middle
Hands up. OK, so there's a few.
00:12:51.196 --> 00:12:53.096 A:middle
And how many of you
already use AV Foundation?