TweetFollow Us on Twitter

March 94 - SOMEWHERE IN QUICKTIME

SOMEWHERE IN QUICKTIME

CROSS-PLATFORM COMPATIBILITY AND MULTIPLE-MOVIE FILES

JOHN WANG

[IMAGE QT_column_final_rev1.GIF]

The success of QuickTime since its introduction in December of 1991 has been extraordinary; not only are there now countless applications and multimedia products for QuickTime on the Macintosh platform, but QuickTime has been successful for cross-platform developers as well. QuickTime for Windows, shipping since November of 1992, is becoming an important tool for Windows multimedia developers. Because movies can be created with QuickTime on the Macintosh and then used unaltered with QuickTime for Windows, developers are able to create a movie once and use it on both systems. This capability has been available since the 1.0 release of QuickTime.

To satisfy your curiosity and help you out with your own QuickTime products, this column discusses how to create movie files that are cross-platform compatible and then gives techniques for storing and accessing multiple movies in a single file (which currently poses a problem in the cross-platform environment).

CREATING CROSS PLATFORM-COMPATIBLE MOVIE FILES
The structure you choose for your QuickTime movie files will depend in part on the platform your movies will run on. This is because the Macintosh file system is different from other file systems in that there can be up to two forks in every file: a data fork and a resource fork. The data fork is the standard file for I/O that most file systems support. The resource fork, however, is unique to the Macintosh. It's a "database" of resources that can be randomly accessed via the Resource Manager.

There are two components to a movie file: themovie resource atom  -- a small data structure describing the movie, its tracks, and the tracks' media -- and themovie data atom, containing the movie's data such as video and sound. A typical movie file on the Macintosh consists of a movie resource atom in the resource fork and a movie data atom in the data fork. Storing the movie resource atom in the resource fork with resource type 'moov' allows easy random access to the data it contains. The movie data atom is stored in the data fork as sequential data, which optimizes playback performance.

Because file systems on other platforms don't support a resource fork, a movie that is to be used on other platforms must have its movie resource atom stored in the data fork of the movie file. This type of file is called asingle-fork file because the movie resource atom and the movie data atom are both stored in the data fork of the movie file, and the resource fork is not used.

Movies that will be played on both Macintosh and non-Macintosh platforms can use a file in which the movie resource atom is redundantly stored in both the resource fork and the data fork of the file. The movie data atom is, as always, stored only in the data fork. For lack of a better term, this type of file is also often called a single-fork file since the resource fork of the movie file can be ignored.

The simplest way to create a single-fork movie file for cross-platform compatibility is to use the Movie Converter application from the QuickTime Starter Kit (available from Apple-authorized dealers). The Save As dialog in this application has a checkbox that allows a movie to be stored in thesingle-fork format. However, the QuickTime API can easily be used to add this capability to any application. You simply call either FlattenMovie or FlattenMovieData with the flattenAddMovieToDataFork flag set. When called with this flag set, FlattenMovie places the movie resource atom in both forks, while FlattenMovieData puts it only in the data fork, leaving the resource fork untouched.

Movie files that are created with FlattenMovie orFlattenMovieData with the flattenAddMovieToDataForkflag set are compatible with both QuickTime and QuickTime for Windows because QuickTime is able to retrieve the movie resource atom and the movie data from the data fork alone on either platform.

MULTIPLE-MOVIE FILES FOR THE MACINTOSH
We'll return to cross-platform issues in a moment, but first let's take a look at the simple case of multiple-movie files: those that will be used only on the Macintosh platform. You can create such files in one of two ways, depending on whether you want the resulting file to be self-contained (that is, to contain all of the movie information in one file). Both of these methods have their benefits and drawbacks. The one that will work best for you depends on your implementation and performance testing.

To create a self-contained multiple-movie file for the Macintosh, you can use the FlattenMovie call (without the flattenAddMovieToDataFork flag set) to append an entire movie to an existing movie file. This adds the movie resource atom to the resource fork and the movie data atom to the data fork of the file.

The second method creates a multiple-movie file that's not self-contained, but instead consists entirely of movie resource atoms that reference other movie files containing the movie data atoms. This technique can be useful if, for example, you're writing an interactive CD application that uses multiple movies and you want to store all the movie resource atoms in a single file that's relatively small. This file can be copied locally to a hard disk for faster access. The drawback of this approach is that you have to handle multiple files rather than have everything in one file. The excerpt below from the sample code provided on the CD demonstrates -- without error checking, for better readability -- how easy it is to add an existing movie's resource atom to a movie file.

// Open source movie file to add.
OpenMovieFile(&reply.sfFile, &sourceRefNum, fsRdWrPerm);
NewMovieFromFile(&theMovie, sourceRefNum, &resId,
    movieName, 0, (Boolean *) 0);
CloseMovieFile(sourceRefNum);

// Write out to the collection file.
currentResFile = CurResFile();
UseResFile(collectionRefNum);
myResId = 0;
AddMovieResource(theMovie, collectionRefNum, &myResId,
    movieName);
UseResFile(currentResFile);

// Clean up.
DisposeMovie(theMovie);

AddMovieResource does more than just add the movie resource atom: it updates the data references so that the new movie will refer to the correct movie data file.

Accessing multiple-movie files for Macintosh-only use is easy. You just use the Resource Manager to access the movie resource atoms in the resource fork of the file. The following excerpt from the sample code on the CD uses the Resource Manager to access the various movies. (The code on the CD adds the resource names of all the movies to a menu; your code can of course do whatever it wants with the movies.)

currentResFile = CurResFile();
UseResFile(theRefNum);
movieCount = Count1Resources('moov');
for (i=1; i<=movieCount; i++) {
	movieResource = Get1IndResource('moov', i);
	// Do whatever you want with this movie.
	. . .
	ReleaseResource(movieResource);
}
UseResFile(currentResFile);

CROSS-PLATFORM MULTIPLE-MOVIE FILES
To create a multiple-movie file that's cross-platform compatible, you just repeatedly call FlattenMovie orFlattenMovieData with the flattenAddMovieToDataForkflag set, as described earlier under "Creating Cross Platform-Compatible Movie Files." Accessing such a file, however, is complicated. Since it's a single-fork file, you can't access the movie resource atoms randomly as with the Resource Manager. There's also a problem with accessing the atoms directly; to understand this problem, you need to know how a single-fork movie file is structured.

The movie data atom appears before the movie resource atom in a single-fork file. The first four bytes of the movie data atom contain the size of the atom. (Figure 4-2 inInside Macintosh: QuickTime , page 4-5, illustrates this structure.) This permits QuickTime to skip over the movie data atom to find the movie resource atom. If you place several movies in the same file, the movie data atoms are interleaved with the movie resource atoms.

Here's the problem: A bug in QuickTime through its current version (1.6.1) causes the size field in the movie data atoms to be filled in incorrectly. The illustration below shows how QuickTime currently creates a single-fork movie file in which FlattenMovieData has been called multiple times. The atom size in the first movie data atom takes you to the last movie resource atom rather than the first movie resource atom. Therefore, you can locate only the last movie in the file.

[IMAGE QT_column_final_rev2.GIF]

This bug will be fixed in the next version of QuickTime. The solution for now is to use the wrapper function called BetterFlattenMovieData, included on this issue's CD. This function, when called multiple times, creates a single-fork file in which the size and type fields of all atoms contain the correct information.

To locate the movies in a file with correct size and type fields, you traverse the data fork and read in those fields of each atom to determine its size and whether it's a movie resource atom. When you know the size of the atom, it's easy to skip over it and access the next atom. Of course, the last atom is reached when the end of the file is reached. The following code from the CD demonstrates how you would do this.

// Locate the file offset of the movie resource
// atom stored at the specified index.
if (FSpOpenDF(theFile, fsRdPerm, &myRefNum)	== noErr) {
	currentLoc = 0;
	doneCounter = index;
	*fileOffset = 0;
	while ((doneCounter > 0)) {
		if (err = SetFPos(myRefNum, fsFromStart, currentLoc))
			return(err);
		readLength = 8;
		if (err = FSRead(myRefNum, &readLength, header))
			return(err);
	if (header[1] == 'moov')
		doneCounter--;
	*fileOffset = currentLoc;
	currentLoc += header[0];
	}
	FSClose(myRefNum);
} else
	return (err);
return (noErr);

MOVING ON
I'm happy to see that QuickTime is being used in new and exciting ways. By taking full advantage of the cross-platform and multiple-movie capabilities of QuickTime, you can bring your products to new heights. The sample code on the CD will start you on your way. Enjoy!

JOHN WANG (AppleLink WANG.JY) is often seen sneaking around the Apple campus with a heavy duffle bag that one would think to be dozens of 8*24 GC cards that John is trying to get out of harm's way. But, in truth, John is protecting unknowing strangers from his two attack dogs, shown above. *

For information on movie resource formats, see Chapter 4 of Inside Macintosh: QuickTime.  *

Thanks to Peter Hoddie, Don Moccia, and Brigham Stevens for reviewing this column. *

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

Adobe Animate CC 2017 16.2.0 - Advanced...
Animate CC 2017 is available as part of Adobe Creative Cloud for as little as $19.99/month (or $9.99/month if you're a previous Flash Professional customer). Animate CC 2017 (was Flash CC) lets you... Read more
Tunnelblick 3.7.0 - GUI for OpenVPN.
Tunnelblick is a free, open source graphic user interface for OpenVPN on OS X. It provides easy control of OpenVPN client and/or server connections. It comes as a ready-to-use application with all... Read more
DEVONthink Pro 2.9.11 - Knowledge base,...
DEVONthink Pro is your essential assistant for today's world, where almost everything is digital. From shopping receipts to important research papers, your life often fills your hard drive in the... Read more
DiskCatalogMaker 6.8.1 - Catalog your di...
DiskCatalogMaker is a simple disk management tool which catalogs disks. Simple, light-weight, and fast Finder-like intuitive look and feel Super-fast search algorithm Can compress catalog data for... Read more
OmniGraffle 7.3 - Create diagrams, flow...
OmniGraffle helps you draw beautiful diagrams, family trees, flow charts, org charts, layouts, and (mathematically speaking) any other directed or non-directed graphs. We've had people use Graffle to... Read more
OmniGraffle Pro 7.3 - Create diagrams, f...
OmniGraffle Pro helps you draw beautiful diagrams, family trees, flow charts, org charts, layouts, and (mathematically speaking) any other directed or non-directed graphs. We've had people use... Read more
A Better Finder Rename 10.15 - File, pho...
A Better Finder Rename is the most complete renaming solution available on the market today. That's why, since 1996, tens of thousands of hobbyists, professionals and businesses depend on A Better... Read more
Adobe Dreamweaver CC 2017 17.0.2.9391 -...
Dreamweaver CC 2017 is available as part of Adobe Creative Cloud for as little as $19.99/month (or $9.99/month if you're a previous Dreamweaver customer). Adobe Dreamweaver CC 2017 allows you to... Read more
BBEdit 11.6.5 - Powerful text and HTML e...
BBEdit is the leading professional HTML and text editor for the Mac. Specifically crafted in response to the needs of Web authors and software developers, this award-winning product provides a... Read more
BBEdit 11.6.5 - Powerful text and HTML e...
BBEdit is the leading professional HTML and text editor for the Mac. Specifically crafted in response to the needs of Web authors and software developers, this award-winning product provides a... Read more

Meganoid(2017) (Games)
Meganoid(2017) 1.0 Device: iOS Universal Category: Games Price: $3.99, Version: 1.0 (iTunes) Description: LAUNCH DISCOUNT 20% UNTIL APRIL 2nd! Support, tip and tricks: http://www.orangepixel.net/forum/ Subscribe to our newsletter... | Read more »
Telltale's Guardians of the Galaxy...
Telltale will be releasing their rendition of Guardians of the Galaxy later this month. The first episode, Tangled Up in Blue, features familiar faces including Star-Lord, Groot, Rocket, Gamora, and Drax. If the first episode's title is any... | Read more »
Royal Dungeon (Games)
Royal Dungeon 1.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0 (iTunes) Description: The king and his queen are trapped in their castle which suddenly turned out as a very dangerous place. The goal is to escape... | Read more »
Tom Clancy's ShadowBreak is a real-...
Ubisoft is treating Tom Clancy fans to the series' very first mobile-exclusive game in ShadowBreak, a real-time, multiplayer shooter in which players snipe at enemies in fast-paced tactics-driven combat. [Read more] | Read more »
Power Rangers: Legacy Wars beginner...
Rita Repulsa is back, but this time she's invading your mobile phone in Power Rangers: Legacy Wars. What looks to be a straightforward beat 'em up is actually a tough-as-nails multiplayer strategy game that requires some deft tactical maneuvering.... | Read more »
Hearthstone celebrates the upcoming Jour...
Hearthstone gets a new expansion, Journey to Un'Goro, in a little over a week, and they'll be welcoming the Year of the Mammoth, the next season, at the same time. There's a lot to be excited about, so Blizzard is celebrating in kind. Players will... | Read more »
4 smart and stylish puzzle games like Ty...
TypeShift launched a little over a week ago, offering some puzzling new challenges for word nerds equipped with an iOS device. Created by Zach Gage, the mind behind Spelltower, TypeShift boasts, like its predecessor, a sleak design and some very... | Read more »
The best deals on the App Store this wee...
Deals, deals, deals. We're all about a good bargain here on 148Apps, and luckily this was another fine week in App Store discounts. There's a big board game sale happening right now, and a few fine indies are still discounted through the weekend.... | Read more »
The best new games we played this week
It's been quite the week, but now that all of that business is out of the way, it's time to hunker down with some of the excellent games that were released over the past few days. There's a fair few to help you relax in your down time or if you're... | Read more »
Orphan Black: The Game (Games)
Orphan Black: The Game 1.0 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0 (iTunes) Description: Dive into a dark and twisted puzzle-adventure that retells the pivotal events of Orphan Black. | Read more »

Price Scanner via MacPrices.net

Is Apple Planning An iPhone Based Modular Doc...
Today’s more powerful and larger-screened smartphones and phablets are becoming the default anchor computing device for more and more users computing devices, but even a five or six inch panel is not... Read more
Razer Launches New Razer Blade Pro World’s Fi...
Razer, the gaming and high performance hardware specialists, have announced the new Razer Blade Pro laptop — the first laptop to be qualified for THX Mobile Certification, an accreditation reserved... Read more
Gro CRM’s Apple Small Business Mac And iOS CR...
Gro Software, developers of the Mac CRM software for small business and enterprise, are included in FinancesOnline 2017 CRM Rising Stars and Great User Experience lists by business software review... Read more
Deal alert! 15-inch and 13-inch MacBook Pros...
B&H Photo has the new 2016 15″ and 13″ Apple MacBook Pros in stock today and on sale for up to $200 off MSRP. Shipping is free, and B&H charges NY sales tax only: - 15″ 2.7GHz Touch Bar... Read more
Save up to $420 on a new MacBook Pro with App...
Apple is offering Certified Refurbished 2016 15″ and 13″ MacBook Pros, including some Touch Bar models, for up to $420 off original MSRP. An Apple one-year warranty is included with each model, and... Read more
12-inch 1.2GHz Retina MacBooks on sale for $1...
B&H has 12″ 1.2GHz Retina MacBooks on sale for up to $200 off MSRP. Shipping is free, and B&H charges NY sales tax only: - 12″ 1.2GHz Space Gray Retina MacBook: $1449 $150 off MSRP - 12″ 1.... Read more
Is A New 10.5-inch iPad Still Coming In April...
There was no sign or mention of a long-rumored and much anticipated 10.5-inch iPad Pro in Apple’s product announcements last week. The exciting iPad news was release of an upgraded iPad Air with a... Read more
T-Mobile’s Premium Device Protection Now Incl...
Good news for T-Mobile customers who love their iPhones and iPads. The “Un-carrier” has become the first national wireless company to give customers AppleCare Services at zero additional cost as part... Read more
FileWave Ensures Support for Latest Apple OS...
FileWave multi-platform device management providers announced support for Apple’s release yesterday of iOS 10.3, macOS Sierra 10.12.4, and tvOS 11.2. FileWave has a history of providing zero-day... Read more
Use Apple’s Education discount to save up to...
Purchase a new Mac or iPad using Apple’s Education Store and take up to $300 off MSRP. All teachers, students, and staff of any educational institution qualify for the discount. Shipping is free: -... Read more

Jobs Board

Fulltime aan de slag als shopmanager in een h...
Ben jij helemaal gek van Apple -producten en vind je het helemaal super om fulltime shopmanager te zijn in een jonge en hippe elektronicazaak? Wil jij werken in Read more
Fulltime aan de slag als shopmanager in een h...
Ben jij helemaal gek van Apple -producten en vind je het helemaal super om fulltime shopmanager te zijn in een jonge en hippe elektronicazaak? Wil jij werken in Read more
Desktop Analyst - *Apple* Products - Montef...
…technology to improve patient care. JOB RESPONSIBILITIES: Provide day-to-day support for Apple Hardware and Software in the environment based on the team's support Read more
*Apple* Mobile Master - Best Buy (United Sta...
**493168BR** **Job Title:** Apple Mobile Master **Location Number:** 000827-Denton-Store **Job Description:** **What does a Best Buy Apple Mobile Master do?** At Read more
Fulltime aan de slag als shopmanager in een h...
Ben jij helemaal gek van Apple -producten en vind je het helemaal super om fulltime shopmanager te zijn in een jonge en hippe elektronicazaak? Wil jij werken in Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.