Configure player

Close

WWDC Index does not host video files

If you have access to video files, you can configure a URL pattern to be used in a video player.

URL pattern

preview

Use any of these variables in your URL pattern, the pattern is stored in your browsers' local storage.

$id
ID of session: wwdc2002-607
$eventId
ID of event: wwdc2002
$eventContentId
ID of session without event part: 607
$eventShortId
Shortened ID of event: wwdc02
$year
Year of session: 2002
$extension
Extension of original filename: mov
$filenameAlmostEvery
Filename from "(Almost) Every..." gist: ...

WWDC02 • Session 607

QuickTime & MPEG 4: A Technical Overview

QuickTime • 52:22

This session will focus on QuickTime's MPEG-4 implementation. Topics include audio, video, and systems technologies in QuickTime 6, interoperability, and future directions in the MPEG-4 space.

Speakers: Jesse Hammons, Roger Kumar, Eric Aldrich

Unlisted on Apple Developer site

Transcript

This transcript was generated using Whisper, it has known transcription errors. We are working on an improved version.

Good afternoon. Can everyone hear me? Can anyone hear me? Excellent. Welcome to the MPEG-4 Technical Overview. Not an interview. My name is Jesse Hammons of the QuickTime engineering team. Today we're going to have a little technical talk about how MPEG-4 and QuickTime work together. This is not going to be any kind of talk about licensing or any of those other things that I have no idea about.

That was all in a stupid movie on Wednesday. What we're going to talk about today... What we're going to talk about today is what exactly is MPEG-4? How does it fit into the MPEG standards? Why do you care about it? Why do we care about it? How did we integrate the MPEG-4 technology into QuickTime? And how do you get MPEG-4 into your application using QuickTime? First of all, this might be some review for some people if you know about MPEG-4 already, but a lot of people don't. And we want to get on the same page with respect to what exactly MPEG-4 is and how it fits in.

MPEG stands for Motion Picture Experts Group. It's a standards body, an international standards body that creates multimedia standards. There's three standardized so far in the last 10 years. MPEG-1, 2, and 4. And as you can see, their numbering scheme is a little different from the traditional software version numbering scheme, I guess because it's not software, it's a standard.

In progress are standards called MPEG-7 and MPEG-21. And all of these standards work together to produce just a multimedia system They cover systems protocols and ways to get video and audio data from point A to point B, and they also cover audio codecs and video codecs and algorithms.

dealing specifically with those signals. But they also, especially in the case of MPEG-7 and MPEG-21, they cover video logging and metadata. And for example, MPEG-7 doesn't contain any codec technology at all. The standards are meant to work together. The later standards don't supersede the previous standards. They're meant to be longstanding documents that enable the entire media industry to work together So I want to talk a little bit in detail about the three standards that have been standardized so far.

MPEG-1 is the most widespread. It's about 10 years old. And MP3 files, which are really popular right now, actually come from this standard. It's MP1 standard, layer 3 audio. MP1 is also used in video CDs and a lot of enterprise streaming and education streaming applications. MPEG-2 was standardized a little later and is widely used in broadcasting and DVDs, the MPEG-2 standard, digital cable if you have access to that uses MPEG-2.

MPEG-4, relative to those standards, is very recent. It was finalized in 1999 and 2000. It was the first MPEG standard to target internet streaming. It also directly addresses wireless multimedia and handheld devices like cell phones and PDAs. So it's more modern compared to the previous standards. And it's very big. It's the biggest MPEG standard to date, easily. It includes file format, video codecs, several different audio codecs, data transport for several, many different kinds of networks, including the internet, and many other things. You've probably seen this slide before if you've seen our other talks.

There's a lot of stuff on there. I thought you guys might find it, well, hopefully humorous. This is part of the MPEG standard. You could get it yourself for about 200 bucks if you want. It's full of a lot of text, not many pictures. And this is bad enough. It's about 500 pages. This is only part two. So this is the visual part of the standard.

There's six parts in all. It's thousands of pages long. It's a lot of work, but you guys are all programmers out there, right? So, you know, for a couple hundred bucks you can make yourself an MPEG-4 system. We've done some of that work for you already. We've got a subset of technologies in QuickTime. What we have in 6 is code to handle the MPEG-4 file format.

We have a new video codec that handles MPEG-4 video. And we have a new AAC audio codec that we're going to talk about later. And we also support streaming of MPEG-4 video and audio over RTSP using RTP packets. And you might wonder, well, how did we decide on that subset of technology? There's a lot of great things in MPEG-4. How do we decide which ones to use? And we didn't just run through the standard last year and say, hey, the file format looks good. Although it does.

We're working with a lot of really big companies to pick a feature set that's useful for Developers and not useful for developers, but useful to users, which in turn use your applications. We're a founding member of the Internet Streaming Media Alliance. And that includes some really big companies: NVivio, Kasana, Cisco, IBM, Sun. Like I said, Apple's a founding member. 3GPP is also using MPEG-4 technology.

You might have heard of NTT DoCoMo, Ericsson, Nokia. Those are all big wireless companies. They're all going to be using MPEG-4 technology. The MPEG-4 Industry Forum is an MPEG group dedicated just to get the standard out into the industry. And JPEG 2000 is going to be using the MPEG-4 file format for their Motion JPEG 2000 standard, which is forthcoming.

So, once again, how do these companies interoperate? How do they exactly decide which parts of MPEG-4 to implement? And this is another kind of groundbreaking part of MPEG-4. The committee recognizes that the standard is too big to be rolled out in the industry all in one shot. It has to be adopted over a number of years.

So, they've integrated into the standard itself some mechanisms for choosing subsets of technology. And if you do any work with MPEG-4, you've heard the word "profile" and "level." If you haven't, I'm going to try and explain it here. A profile defines a subset of technology. It's the actual algorithms and intellectual property that you need to understand to implement a certain feature in the video codec or the audio codec.

But that's not enough information, especially if you're implementing MPEG-4 in hardware. The specification is written to a level of detail so that even hardware vendors can implement the standard. And especially for the hardware folks, they need to know exactly how much RAM and how much CPU power to put in their devices, especially if you're making some sort of cell phone or handheld device. So, there's a further specification called a level, which restricts the complexity of the profile. It tells you exactly how much data your device will have to handle to be interoperable with other devices that also handle that profile and level.

In the PC world, for most application developers, the level is going to restrict the bit rate of your MPEG-4 presentation. So, it still has some meaning even though you're not building some hardware devices. And we're going to talk about these profiles and levels more when we talk about the video and audio codecs.

First, we're going to have a demo of the MPEG-4 export dialog, which is definitely by far the biggest user-visible change in QuickTime 6 for implementing MPEG-4. Obviously, there are lots of other changes made. Here's what it looks like when you want to create an MPEG-4 file. This is Thomas Putten. Thank you, Jesse. My name is Thomas. I also work on the Kodak team. Today, I'm going to show you how to use the export to MPEG-4 dialog.

Here, I have a movie open, and I can just pick "Export." Now, let's go to Movie 2 QuickTime movie first. Now, when you pick options, here you see the standard compression dialog that I hope you guys are familiar with. Here there's a list of codecs, and note that there's an MPEG-4 video right here.

So you can pick this, and then you can encode this video with MPEG-4 video codec in it. Same thing as the audio. So you know that MPEG-4 audio is one of the codecs listed here. So I'm just gonna cancel this. Now, what's new in QuickTime 6 is Movie 2 MPEG-4.

Now note that when I picked this, the extension changed to .mp4, which actually writes it to an MP4 file format. I pick Options. Note that this is very different than the normal compression dialog that you're used to. Here we have five tabs. We have General, Video, Audio, Streaming, and also Compatibility.

In the General tab, it gives you a summary and also a quick way to say, "Okay, I just want a video or I just want an audio." Note that there is a bunch of text underneath here. What it is, it tells you what setting you have been selected within those other tabs. So you don't necessarily have to go back to the tabs to see what you have selected.

[Transcript missing]

Another new thing of the export dialog is because right now in QuickTime 6 you have two ways to generate an MPEG-4 video. You can do it through QuickTime to QuickTime Movie or you can do it through export to MPEG-4. Let's say if you already have a movie that you generate MPEG-4 video with movie to QuickTime Movie.

When you want to export it to .mp4 you may not want to re-encode the movie or audio. In the video we actually have an option pass-through. What it does is just copy the data over and put it in .mp4 and package it for you. You save the time of not having to re-encode your file. That's it for the demo. Can we go back to the slide please? Thomas.

So that's what the export dialog is going to look like for your users in terms of creating MP4 files. This is, in terms of how we've integrated MP4 into QuickTime, we've got a file format importer that will import MP4 files, and a file format exporter, of which the dialog we just showed you, that will create MP4 files. We've got packetizers and reassemblers so that we can stream MPEG-4 video and audio. And we've got the MPEG-4 video and audio codecs so that you can encode those video and audio tracks. And of course you're going to be able to playback MPEG-4 video and audio.

Thomas mentioned the pass-through. We're actually going to demo that pass-through later on in the talk. That's a little bit of a confusing feature, but it's kind of important. This is, again, in terms of the interop with other companies and things like that, you'll be able to pass MPEG-4 data through the QuickTime system, even if QuickTime can't create that data. And if you get more into the MPEG-4 scene, that's an important feature.

So how do you bring up that dialogue? Here's how you get it into your application. In fact, if you have a QuickTime application, you're probably already going to get this with 6. You just call the ConvertMovieToFile API. That will bring up the general export dialogue, and you pass in the showUserSettlings dialogue.

The user will be able to choose movie to MPEG-4 once you get your hands on QuickTime 6. Now this is the preferred way to get the MPEG-4 functionality into your application. It's the most general, it's the easiest to use. When future versions of QuickTime ship, you'll get all the new exporters that come with those future versions.

You'll pick up any other exporters that happen to be on the system. But in case your application might want to have some sort of special purpose MPEG-4 feature, you can go ahead and invoke the exporter directly. This is familiar if you have that functionality already. All you have to do is open up the MP4 exporter component.

I'm doing that using Open Default component here. You'll probably want to check your error codes in your own code. If you desire, you can bring up that large MPEG-4 export dialog with the movie export do user dialog call. Here I'm passing in nil for the track so that all tracks will contribute to the export.

You can choose to export just a portion of the movie, but here I'm doing the whole movie. I'm doing it from a certain start time to the end of the movie using getMovieDuration. And then finally, you call the movieExportToDataRef or movieExportToFile APIs to actually invoke the export operation and write that data to a file.

Another thing we wanted to talk about is MPEG-4 is based on QuickTime. We hope you've heard that. It's true, and we want to describe exactly what that means. The file format is based on the QuickTime file format. I have to thank Steve for talking about the QuickTime file format in the last talk, if you were there.

I don't have to talk about it now. But just to review, it's an Atom-based file format, so MP4 files have tracks and media and data references and all that great stuff. It's really a fundamental feature of QuickTime, and it's great that it's a fundamental feature of MP4 files as well.

Having said that, there are some slight differences between MP4 files and QuickTime movie files. The MPEG committee had to figure out a way to encapsulate that MP4 systems layer inside of a QuickTime movie, and the result of that is an MP4 file. So if you have any low-level parsing routines in your applications, you have to deal with those differences that are mostly restricted to the image description and sound sample descriptions.

The easiest way to deal with that is to just go to the MP4 file and look at the file. You can just make the QuickTime calls, because we'll do all the work for you. If you call new movie from file or new movie from data ref, the importer will be invoked and will massage any differences that there are in that MP4 file, and you'll get a multi-track movie that you're used to dealing with in your application.

If you want to go the other way, you want to create a MP4 file from a QuickTime movie, you just invoke the MP4 exporter as I showed the two ways to do that in the previous slides. In terms of streaming, the streaming hint track format is the same as the QuickTime Movie streaming hint track.

The streaming is implemented in QuickTime using RTP and RTSP. We've got the packetizers and reassemblers for the audio and video. The video is using RFC 3016 because there's different standards for exactly how to packetize the video. We've chosen that one because it's part of the ISMA 1.0 standard.

It's the most widely used one out there right now. The audio standard is in draft at this point, but also this comes from ISMA 1.0. And the QuickTime streaming server is already shipped with MP4 functionality. If you get your hands on QuickTime streaming server 4, you can stream hinted MP4 files.

So here's a dialogue you probably don't like seeing. It's not that great. It says, "Couldn't open the file sample.move because there is an error in the program." Well, that's not true. Actually, I just opened up that sample.move file and made it an invalid file, so there's a lot of things wrong with this dialogue. We've got some new functionality with respect to this, especially with MP4 files. Already we're encountering problems in terms of invalid MP4 files out on the web, and we want to have a better user experience for this.

So now Thomas is going to demo what kinds of things are encountered when you get invalid or... that QuickTime doesn't handle. man: Thank you, Jesse. Because of the large number of MP4 files that users may get their hands on, it would be very nice to tell the user exactly what's wrong with your file and why you cannot open them.

Here I have a video.mp4 file. When I open it, it gives me an error. It says you cannot open-- "Video.mp4 contains MP4 technologies which QuickTime currently does not support." Now, this tells the user that it's something that QuickTime has not implemented. It's not some general error, so the user probably feels, "Okay, I'll leave it at that." But if the user wants to know more detail, the user can click on this This is a simple example here, and it gives you a more detailed reason why this file cannot be played because using some technology we have not implemented called MPEG quantization. It also lists out all the errors or warnings that we encountered during the parsing of the file. So it's going to all list it under here, the users who decided to know about it.

It also choose with audio. If I double click on this audio, it says you cannot open this because it contains unsupported MPEG-4 audio data. Click on it. It says it's using something called AAC Main, which we have not implemented yet. So that's it for the demo, and can we go back to the slide, please? I like that too.

So here's how you get it. Lucky for you, you don't have to do any work. Once again, if your application calls new movie from file or new movie from data ref, which it probably does, This dialogue will come up should there be any problems in the MP4 file or any other file. It works for movies too.

But we recognize that you might not always want this dialogue popping up. You might be opening up a large number of files or something like that. On OS X you might be writing some command line applications, in which case dialogues are not a good thing. So we've got a new flag here. New movie, don't interact with user.

And that will inhibit this warning dialogue. It will also inhibit the dialogue that comes up if a codec or a component isn't found on the local machine. That's called the missing software dialogue. You can OR that in with our existing flag, new movie, don't ask unresolved data refs. And using those two flags, you'll be able to write code that won't bring up any asynchronous dialogues. And with that, I'm going to hand the talk off to Roger Kumar, who's going to talk in more detail about the MPEG-4 video codec.

Hi, I'm Rog. I work on the video team for QuickTime. And I'd like to talk a little bit about the MPEG-4 video codec. So, like the rest of MPEG-4, the video codec is very huge. And it contains a lot of technology, probably more technology than any one company could implement at one time. And the standards bodies realize this. So what they've done is they've decided to break the video codec into smaller pieces. And it's an easy way to think of it is they've broken it into profiles, and each profile contains technology that's relevant to some particular market.

So, one of the important things about having MPEG-4 in QuickTime is that we want to be able to interoperate with these companies. And when we decided, when we were working on deciding what profiles to support, we worked closely with companies in the internet streaming space and the wireless handheld space, and we decided, well, we could all interoperate with each other if we supported the MPEG-4 simple profile.

So the MPEG-4 video simple profile is an extremely flexible video codec. It's useful at extremely low data rates, down to 50 kilobits per second, or extremely high data rates, up to 4 megabits per second. And at these low data rates, it's useful for things like internet streaming, and it's useful for delivery of video data to wireless handheld devices. But it's also good for a lot of other things. For example, at medium data rates, it's good for stored content on your local drive. You could compress iMovies and give them to your friends in MPEG-4 video format.

It's good for any application that needs to display video. So the application developers who might be writing games or kiosk software, MPEG-4 video is something that you might want to know about. And we're starting to see things like set-top boxes. Come into the market that are supporting MPEG-4 video. And therefore, we can see that there's definitely companies that are using MPEG-4 video at high data rates. So it's extremely flexible and extremely usable.

So in MPEG-4, with MPEG-4 and QuickTime, we're able to decode most of the ISMA and the 3GPP streams because we support the MPEG-4 video simple profile. So why is that important? Well, we could decode streams from encoder products from companies like Cisco and from NVivio using QuickTime. And if for some reason we're presented with a video stream that we can't open, then we present a nice dialog that says, "Well, there's these following problems with this file." Also, using MPEG-4 video in QuickTime 6, we could encode streams that comply to ISMA or 3GPP standards. This is important because we could use QuickTime to create video content that you could deliver to another software MPEG-4 client like QuickTime Player. Or you could use QuickTime to create video content that you could deliver to a hardware device like a Docomo cell phone.

So, you hear these words like ISMA and 3GPP streams, so let's talk a little bit about what those really are. So, the very basic ISMA Profile Zero has been defined to support low complexity devices, and it uses the MPEG-4 video simple profile to deal with video. Typically, these are used at quarter-sif or q-sif frame sizes at 15 frames per second and at 64 kilobits.

For higher bandwidth type situations, the ISMA has defined Profile 1, which uses either the simple video profile or the advanced simple profile. The advanced simple profile is very similar to the simple profile, it just adds a few technologies, so it increases the computational complexity slightly. And typically we use these at SIF frame sizes at 30 frames per second and up to 1.5 megabits. Lastly, the 3G P-streams are very similar to the ISMA Profile Zero streams. The only differences are that they limit a few of the features to enable delivery to wireless handhelds.

So who can use MPEG-4 video? ISMA P0 streams can play back on 233 MHz G3 processors or their Pentium equivalents. And for a reference point, a 500 MHz Titanium PowerBook G4 can decode a 640 x 480 MPEG-4 video stream at 24 frames per second. For encoding, since encoding is such a computationally expensive task, we recommend that you use a PowerMac G4. And as a reference point, a 500 MHz Titanium PowerBook can encode 320 x 240 frame size video at 24 frames per second in real time. These numbers are using a DV source and compressing through QuickTime Player.

So there's several optimizations related to MPEG-4 video that application developers need to know about. First of all, like I mentioned, it's optimized for AlteVec, and that's both the encoder and the decoder. And developers can invoke the encoder in a few different ways. They can invoke it with some fast options if speed is a critical issue. But if you give the encoder a little bit more time to compress, it will give you a little higher quality. So there's a speed to quality trade-off that you could give to the encoder.

We've also optimized the encoding path from digital video. So what does that exactly mean? Well, if you have a DV source, and typically that's a 720x480 original source, and you're compressing to MPEG-4, and typically you want to compress to a smaller frame size, so you'll compress to something like 320x240. The way that QuickTime 5 handles this is that it decompresses the DV into a big frame buffer, then it scales it down and hands it off to MPEG-4 video.

Well, with QuickTime 6, you get some new functionality. It recognizes that our destination is going to be small. So it calls the DV codec to actually decompress the DV into a half-size buffer. So it decompresses into 360x240, which is only a quarter of the pixels of the original.

And then it scales it down and hands it off to MPEG-4. So there's some speed optimization. There's some optimization there. Additionally, it also hands data to the MPEG-4

[Transcript missing]

So RGB is a very widely supported pixel format type in QuickTime. There's a few different RGB formats and application developers seem to use it a lot.

However, the reason for this If you have a source that's DV and you have a destination that's going to be compressed in MPEG-4, since both these codecs use YUV internally, it doesn't make a lot of sense to decompress to an RGB buffer and then convert it to YUV again when you compress it to MPEG-4. There's a few unnecessary color conversions that take place that slow things down, and you also lose some color fidelity.

What we recommend is that you use a YUV pixel format. And actually we want you to use the industry standard Y' CR, CB when you deal with intermediate buffers. And when you hand data to or from the MPEG-4 video codec. So this pixel format is supported by a number of different codecs in QuickTime. DV, MPEG-2, MPEG-4, and JPEG support this type of pixel format.

And if you use the standard export calls, you already get this nice pixel format handling for you in QuickTime for free. So you don't have to worry about this. But if you are manually handling frames to the codec, you want to remember to use this type of format.

Let's talk a little bit about gamma correction. MPEG-4 video tags gamma data in the video track. So we use this data in our implementation to perform gamma correction per platform. This is extremely desirable to a lot of people because if you create content on a Mac and then you distribute it to a PC, sometimes it looks too dark.

And if you have a codec that doesn't do gamma correction for you, this is a bad user experience for your customers. So here I've taken an image that's already pretty dark, and I'm using a codec that doesn't tag gamma data, so it can't do gamma correction. And I've moved it over to a PC, and it looks even darker. So that's not the experience I want.

So, if I had used MPEG-4 instead, I would get an experience like this. On the Mac and the PC, the two different videos look essentially the same. So, going back, you see one is a little too dark. And with MPEG-4, they're essentially the same brightness level. So this is another advantage that MPEG-4 gives to video processing in QuickTime. And to demo... will demo some of the features of MPEG-4 video. Thank you, Raj.

Here I have, I'm going to show you how your QuickTime application can take advantage of all this stuff that we have talked about, mainly MPEG-4. Here I have a Final Cut Pro. It's a Vita version. We have not changed any single line of code, except we are using QuickTime 6. I have a DV source open, just like you expect. Final Cut Pro can edit DV. But now, Final Cut Pro, because it's using QuickTime, it can also deal with MPEG-4 file. So I can do import.

The This is a clip that, um, for this year's Stupid Movie. So, I can just drag it there. Hmm, I think I've seen this guy somewhere. So as you can see, you can play the file normally. And you can do the editing just like a normal Final Cut Pro movie. I'm just going to do a cross dissolve. Then I'm gonna render it. So now I have a file that I can-- I want to save it somewhere. Because Final Cut Pro uses QuickTime, it also can export MP4 file.

Bring up the option dialogs again. Help you with the settings. Just click OK. I just click Save, and I can replace the file. So the main point here is, if you use QuickTime and you're using the procedure call that Jesse mentioned earlier, you get all this for free. You can import MP4 file, you can export MP4 file, and you get to reach a wider variety of audience that you may not be able to reach earlier. So now let's play back the file.

Another nice thing about using MP4 is, as Roger had mentioned, this file is going to look the same on this platform right now or on someone's machine on Windows, for example. will play this file, show that it did the-- to solve everything correctly. So this is--that's it. And here you go. No, the MPEG-4 is re-encoded because we have done editing to it. So can we go back to the slide, please? Thanks, Thomas.

So Thomas just demonstrated something that's actually extremely cool. Final Cut, when it was written, knew nothing about MPEG-4. So we installed QuickTime 6 on this machine and all of a sudden Final Cut is an MPEG-4 application. And what does this mean for you? Well, as application developers with QuickTime 6, your applications are now MPEG-4 applications. So this is kind of a big deal.

If you use the standard QuickTime export calls, you get a lot of free things with QuickTime 6, including built-in MPEG-4 support. And the other thing to notice is that MPEG-4 video in QuickTime is implemented just like in other codecs. So it behaves just like the codecs you're used to dealing with now.

So to sum up, a few points about the video codec. We've implemented the MPEG-4 video simple profile and most, but not all, of the advanced simple profile. And this is important so that we can interoperate with other companies, especially those companies that are in the ISMA or the 3GPP consortium.

And lastly, it's one of the latest codecs that we've added into QuickTime. And so if you're doing any amount of video processing, you get a lot of optimizations if you choose to use MPEG-4 video. So I'd like to hand the talk over to Eric, who's going to talk a little bit about MPEG-4 audio.

Thank you Roger. I'm Eric Aldrich, Core Audio Engineering, and I'm here to talk a little bit about AAC and QuickTime 6. As Jesse has mentioned, the MPEG-4 audio spec is huge. There are 31 separate codecs and variants thereof within MPEG-4. And some of the examples, and we have AAC for general audio. You have Kelp for speech, you have TwinVQ, HVXC, and several others. And in QuickTime 6, we decided we're going to implement AAC because we feel it is the best audio codec out there for general audio, bar nothing.

AAC is an example of a perceptual audio codec. It's very similar to MP3 in that regard. Perceptual audio codec, for those of you who don't know what that means, is basically we just encode the data that the listener can hear. We throw out everything that you can't perceive when it's being played back. And so that shrinks the file down considerably.

AAC is a variable bitrate codec. So despite what you will see later, or it might be implied, it is constantly a variable bitrate. There is no CBR in AAC. And AAC is the first real general audio codec that provides indistinguishable audio quality. And what that means is you can take an encoded file, play it back, listen to the source, play it back, and you will not be able to tell the difference. Now, some people have claimed this, but they have yet to actually succeed.

Now, for instance, from a CD source, AAC low-complexity, and you're going to try to do this with MP3, requires 96 kilobits per second to achieve this, which is 192 kbps. I know some of you are thinking, well, MP3 claims CD quality at 128. Well, CD quality is not indistinguishable quality. And no one's talking about this until now, because no one's been able to do it until now. And for instance, if you're going to try to do this with MP3, you'll need at least 128 kilobits per second per channel to achieve this, and that's being generous.

The AAC encoder within QuickTime is, again, we're going to provide AAC low complexity. Now I know some of you are aware there's a main profile available, but we decided to do low complexity because that's what everyone's using. Main profile is not implemented in very many places, and this is what you're going to see out there 95% of the time. And it is up to snuff.

We're not really compromising here because the benefits of the main profile are minimal, and it sometimes, in some cases, can double the processing time. In our encoder, QuickTime will, of course, upsample whatever you feed it to whatever. But as you will see later, you want to keep this in mind that it really only accepts 44.1 or 48 kHz. And right now we take mono or stereo.

Now AAC is from the ground up also designed to be multi-channel compatible. It can do 5.1, 7.1, 22.11, you know, whatever you want to do. However, at this point, we have not implemented this. But just wait, give us some time. Output, mono, we're going to go from 8 to 256 kilobits per second, stereo is 16 to 320.

And another important thing is the sample rates are automatically scaled to the bit rates. You can't control directly the output sample rate in this encoder. If you have, for instance, if you put out 128 kilobits per second stereo, you will get whatever you input, be it 44.1 or 48. But if you put it down to 64 kilobits per second, you only get 32 kilohertz sample rate out. And that's important to keep in mind.

Our decoder, again, we're implementing AAC low complexity. We're aware of main profile, but we can't decode it. We can decode anywhere, streams between 8 and 320 Gbps, 8 to 48 kHz, we don't cover the higher end, mono or stereo, and we handle ISMA profiles 0 or 1. And for audio, thank goodness, they're exactly the same, which is pretty much what we have there.

As some of you may have heard in the audio codec talk, this is the first implementation of our new audio codec architecture. Basically, the new audio codec architecture allows for a traditional push-pull model for audio codecs. So if you shovel bits in, you get bits out. No longer waiting on the QuickTime model.

In QuickTime, we allow multiple codecs to be chosen basically from one umbrella component. For those of you familiar with sound decompressors and sound compressors, we still have those, but now each of them can handle multiple codecs. So you can handle kelp, you can handle HVXC, TwinVQ, whatever else, all through one component.

S-Com or S-DAC. And again, this is only implemented for QuickTime 6. So, what we're calling the new components, the audio encoders, is just, you know, we have ADECs and AANCs. And again, the model is that the SDEC can just, can talk to multiple, you know, AANCs or ADECs, excuse me, and the ESCOM can talk to multiple AANCs.

Right now we have AAC, and those are on your Jaguar CDs. Some of you may know that we have shipped Kelp in the past, and we're working on it, pending all the licensing agreements. How good is AAC? Dolby Labs has done a few evaluations, and they've basically done the standard hidden reference double-blind test, where you're played a source, then either the source or the encoded file, then the other file, and then they ask you to rate the files from a scale of 1 to 5, 5 being indistinguishable from the source, 1 being unlistenable, basically.

And they used trained audio professionals who were briefed on how to pick out encoder or audio artifacts within encoded files. And they determined that AAC is pretty darn good, and it's a heck of a lot better than MP3. Now, the results, we have AAC in red, and the MP3 in green, and you want to be as close to zero as possible, because that zero would mean you couldn't tell the difference.

And we were saying it's indistinguishable. And we were saying it's indistinguishable at 96 kilobits per second, or, blah, per second per channel. And this is a graph of 64 kilobits per second per channel. This is a more consumer-grade encoder. And you can see AAC is, in general, pretty well, does pretty well. Castanets, for instance, pretty much can't tell the difference. Harpsichord, pretty darn close. And for those of us of Scottish descent, bagpipes didn't do too well. But still better, much better than MP3. MP3.

These aren't the only results out there. If you'd like, you can go out on the web, you can take a look for this, and they will basically conclude the same thing. There's plenty of surveys out there. I encourage you to just investigate this. I think you will find that AAC is the way to go. Okay, now I'm going to give you a little bit of a demo. So, demo two please.

We have here a one-minute AIF ripped directly from CD, and I'll just play it a little bit for you. Can we have the sound up a little, please? Thank you. Okay, and we're going to, I'm going to show you how to export this. So go to Export, and we will first export to a QuickTime movie.

We'll look at options, and then we'll take our settings. Notice we're just doing MPEG-4 audio, you know, 44.1, the settings. This brings up the standard QuickTime audio dialog, but there's an important note to make here, and that's the rate. Normally you think of this as the output rate. This isn't. It's the input rate. And we can choose 44.1 or 48.

This is especially important when I have material that, you know, whatever sample rate it is, I want to get, choose an input rate that's as close as possible, or an even multiple of my sample, of my source. And so if I had a 2205 sampling rate on my source file, I'd want to choose 44.1. If I had a 16, I'd want to choose 48. Yes, QuickTime will upsample to whatever you tell it to do, but we want to reduce artifacts. as much as possible. Then we have our options.

[Transcript missing]

And we'll just save this. And we're going to replace the one we have there. And this is one minute of audio, and you can see how fast this is encoding. This is a very fast encoder. We're done. And that was about at 8:1. So it is a nice, fast encoder as well. And let's just open that out. Okay, that was the move. All right. Now, we're going to export this. We're going to export this as an MPEG-4 file.

We'll hit our options. And as Thomas showed you earlier, here's our MPEG-4 export dialog. And we're going to do audio, we're going to do pass-through. Because we've already encoded the data, the audio data in a movie or an MPEG-4 file is exactly the same. It's an important thing to note. So we don't really want to re-encode the file at all. We just want to export it to MPEG-4 for different uses.

And so there's no need to even go through this, but here's our, again, audio track is passed through. So we click OK.

[Transcript missing]

Just realized I didn't start the other one. That's our move. Here's our AIF. A little bit off, but hey. Okay. That's enough for now. Slides, please.

Okay, and a quick AAC recap. Again, we believe AAC is a high-quality audio codec. This is what we're going to be doing for quite some time. We feel this is the future. It's available in QuickTime 6, it is on your Jaguar CD, and it can be used in both movies and MP4 files. Thank you, and here's Jesse Hammons to summarize things.

Thanks, Eric. So we heard a little bit about the audio codec. Got some details on the video codec. I just want to go over General Notes about MPEG-4: MP4 gives you a wider audience than you ever had with QuickTime before. These MP4 files are going to be playable by all the organizations I talked about before: the Internet Streaming Media Alliance, 3GPP. We've actually done interop with those companies. We give them their files, they give us our files. We make sure that they open and play back with adequate quality so you don't have to deal with those issues.

I had a developer come up to me with a concern. He said, "I'm concerned that QuickTime is going to settle for a lowest common denominator here." No chance. Okay, we're not getting rid of any of the QuickTime features that you like. We're adding additional functionality that gets you a wider audience. We're ensuring in this interop that with the gamma correction and all these other things that these files play back in a high quality way.

We've got a new video codec for you, new audio codec. Both of these codecs have driven enhanced features in QuickTime, enhanced audio processing, enhanced video processing. But perhaps the coolest thing you should take away from this talk is right here in my hands, three CDs. It's called the Jaguar Developer Preview. We made this just for you.

QuickTime and MPEG-4 has been in the headlines for the past year. And we made this preview for your developers so you guys can stop taking our word for it and check it out for yourselves. We've been getting compliments from the MPEG committee and we want to get feedback and comments from you as well. So install that. You get the latest QuickTime.

and the SDK, you can make applications right now on those CDs. MPEG-4 import and export with a pass-through as we demoed to you. So you can take MP4 files from other MP4 implementations and see how they work with QuickTime. We've got the new video and audio codecs on the CD. You can go pro with the player with your 5-0 key or write your own exporter. I showed you how to do it. It's only four lines of code.

And the Jaguar server seed, if you install that, you're going to get QuickTime streaming server 4. That's got the MP4 file export -- or that streams MP4 files, as I mentioned. And the QuickTime broadcaster, a lot of good feedback on that. The ability to stream MP4 over the Internet. I think we want you to check that out and give us some feedback.

Like I said, MPEG-4, it's only getting bigger. It's a rapidly emerging standard. A lot of companies are getting involved in it. QuickTime's latest audio and video codec. And QuickTime applications are now MPEG-4 applications. So again, we showed you that with Final Cut. All your applications running on Jaguar, if you get them running on that Jaguar CD, will be able to import and export MPEG-4 files. We think that's pretty cool. I mean, that's going to be a good feature for your users and allow their media presentations to have a wider distribution.

So finally, if you have questions about this talk or anything about QuickTime, go ahead and check out the QuickTime Developer Rations website. If you want to become a QuickTime Developer seed, we have some contact information there. Jeff Lowe is our QuickTime evangelist. Grab his email address. We're going to put up some URLs here in case you have information specifically about the QuickTime SDK or that new audio architecture SDK.

And if you have any questions about the Internet Streaming Media Alliance, that's the website to go to: www.isma.tv. And that will also point you to the MPEG website in case you want to get that really detailed information about MPEG. If you have any questions, we're going to be out and back. We don't have time for Q&A, but thank you very much.