Reading view

There are new articles available, click to refresh the page.

A brief history of QuickTime

We all know about the Desktop Publishing revolution that the first Macs and their PostScript LaserWriter printers brought in the late 1980s, but many have now forgotten the Desktop Video revolution that followed in the next decade. At its heart was support for multimedia in Apple’s QuickTime.

QuickTime isn’t a single piece of software, or even an API in Classic Mac OS, but a whole architecture to support almost any media format you could conceive of. It defines container and file formats for multiple media types, forming the basis for the MPEG-4 standard, extensible encoding and decoding of a wide variety of media using Codecs, and more.

QuickTime development was initially led by Apple’s Bruce Leak, who first demonstrated it at the Worldwide Developers Conference in May 1991 before its release as a separate set of components for System 6 and 7 in December that year. Initially it came with just three Codecs, supporting animated cartoons, regular video and 8-bit still images. Cinepak video and text tracks were added in QuickTime 1.5 the following year, when high-end Macs were capable of playing 320 x 240 video at 30 frames/s, which was groundbreaking at the time.

By the mid-1990s QuickTime was starting to flourish. Hardware support included Apple’s new PowerPC Macs in 1994, and MIDI devices, PCs running Windows, MIPS and SGI workstations. QuickTime VR (for Virtual Reality) allowed the user to navigate the virtual space within panoramic images. QuickTime media were being licensed and distributed on CD-ROMs, innovative games such as Myst depended on it, and the QuickTime project brought in revenue to Apple at a time that it was most needed.

That period also brought conflict. Apple had contracted San Francisco Canyon Company to port QuickTime to Windows, but Intel also hired them to develop a competing product, Video for Windows. Source code developed for Apple ended up in Intel’s product, resulting in a lawsuit in 1994, finally settled three years later.

QuickTime was enhanced through the late 1990s, with version 5 the first to support Mac OS X, and just over a year later, in 2002, that was replaced by version 6. The following year, QuickTime 6.2 only supported Mac OS X, with a slightly older version for Windows.

qtprefs2002

QuickTime was one of the more used parts of what was then named System Prefs, here seen setting the MIME types to be handled by the QuickTime Plug-in, in 2002.

qtplayer2002

For most Mac users, bundled QuickTime Player was the standard way to play most types of video, as seen here in 2002.

imovie2002

Apple built apps like iMovie on the strengths of QuickTime. First released in 1999, iMovie is seen here in 2002.

QuickTime version 7 was both the first and last to use the QuickTime Kit (QTKit) Framework in Cocoa.

qtplayercodecs2005

fcphd2004

Apple’s flagship movie editing suite Final Cut Pro started as KeyGrip by Macromedia, but was first released by Apple in 1999; this ‘HD’ was actually version 4.5 in 2004.

qtstreamingtiger2005

Streaming movies in those days (here 2005) had to cope with a range of relatively low transfer rates, down to 56 Kb/s over a fast dial-up connection with a modem.

qtplayerpro2007

Users had to pay a small fee to upgrade QuickTime Player to the Pro version, unlocking more features including extensive transcoding options, here in 2007.

qtbroadcaster2007

Mac OS X Server included a QuickTime Streaming Server, and a separate app, QuickTime Broadcaster (seen here in 2007), could be used to deliver real-time audio and video over a network.

QuickTime X for Mac OS X 10.6 Snow Leopard in 2009 marked the start of its slow decline, with the removal of support for some media formats, most noticeably MIDI. Internally, it had been converted to a Cocoa framework, AVFoundation, with modern 64-bit audio and video Codecs. This anticipated discontinuation of all support for 32-bit code in macOS Catalina. The impact on Codecs that were never ported to 64-bit is still felt today. While QuickTime is still alive in the AVFoundation framework, it’s very different now from its heyday in the opening years of this century.

qtplayer2011

By 2011, QuickTime Player was a shadow of its former self, and a far cry from its earlier Pro version.

qtprefspanther2015

Its pane in System Preferences, here in Panther of 2015, didn’t reflect the inner changes.

imovie2011

This is iMovie in 2011.

Further reading

Wikipedia, good on version details
AppleInsider, long and detailed account by Prince McLean in 2007
Computer History Museum, good background from Hansen Hsu, with a link to YouTube video from three of the creators of QuickTime.

What’s the time Mr. APFS? With a new version of Precize

It’s the middle of August, the time when, if you’re not an Apple engineer or third-party developer, you’re most likely to be on holiday. To help you enjoy that, today I’m going to engage you in a little game I call What’s the time, Mr. APFS?

To play along with me, all you need is a copy of the latest version of Precize, version 1.15, available from here: precize115
from Downloads above, from its Product Page, or via its auto-update mechanism.

Precize update

Thanks to some questions from applice, who should really be spending more time watching the Olympics than worrying about file systems, this new version of Precize comes with significant enhancements in its datestamp reporting. First, it now gives datestamps with decimal seconds, for those who want to be truly precise, and it adds two new time fields, for Attribute Modification, and Access, as shown in the screenshot below.

precize92

Once you’ve downloaded the Zip archive, unZip it where it is, and move the Precize app from its folder into one of your Applications folders (that ensures it doesn’t undergo app translocation). Keep the Zip archive it came in, as we’ll use that in the game, whose rules are simple: all you have to do is roughly guess the times in each of Precize’s datestamp fields, for different files and bundles.

What are the times?

APFS stores four datestamps for each file and directory in its volumes, and the four fields shown in this version of Precize correspond to those four datestamps. There is a fifth that the Finder can display, the date and time that an item was added to its current location. That’s not derived from the file’s attributes, but from directories, and isn’t shown in Precize.

The four datestamps are:

  • Created, taken from the create_time value, the time that this item was created, given as the clock time corresponding to an unsigned 64-bit integer giving the number of nanoseconds since January 1, 1970 at 00:00 UTC, disregarding leap seconds.
  • Modified, taken from the mod_time value, the time that this item was last modified, likewise.
  • Attr Mod, taken from the change_time value, the time that the item’s attributes were last modified, likewise. Those attributes include permissions, for example, and changes made to extended attributes should also update this value.
  • Accessed, taken from the access_time value, the time that this item was last accessed, likewise.

By default, APFS is relaxed over how it records the last of these. Some other filesystems are strict, and change the access_time value every time a file is read. Instead, APFS only updates this if its value is prior to (earlier than) the mod_time value. You can change this behaviour by setting an APFS volume’s APFS_FEATURE_STRICTATIME flag, for instance when mounting it by using a command like
mount -u -o strictatime

However, that’s not the default for APFS volumes. For example, inspect your Mac’s Data volume using the command
mount | grep '/System/Volumes/Data '
and you should see something like
/dev/disk6s1 on /System/Volumes/Data (apfs, local, journaled, nobrowse, root data)
without any mention of the strictatime flag. List all mounted volumes using
mount
and you’re unlikely to see any using strictatime.

File datestamps

Open the new version of Precise, so it’s poised waiting for you to drop a file onto its icon in the Dock. Then take a screenshot, and drop that file onto Precise’s icon. What do you expect the four datestamps to be?

This is an easy one for starters: the four times should be very close, and almost match the time given in the screenshot’s name. The first two should be Created and Modified, the latter perhaps a thousandth of a second behind, reflecting the time it takes from creation of the screenshot file to completing the save. Next comes Accessed, when macOS opened the file to perform its animation of the screenshot sliding away. Last of all should be Attr Mod, recording when all its attributes such as permissions were set in its destination folder.

Now copy that file to another volume. What do you expect those four datestamps to be there?

Created and Modified should remain the same, as those are preserved when the file is moved around in local file systems. But Attr Mod and Accessed should record the time that file arrived on the second volume, reflecting its new attributes and its access for the copy.

Now try a couple of harder questions. Drop the Zip archive that contained Precize onto the running app’s icon. What do you expect those four datestamps to be?

All four datestamps should record times close to when you downloaded that Zip file from here. Just as with the screenshot, Created leads, closely followed by Modified, with Accessed and Attr Mod trailing. Note that they’re all four very recent, subsequent to its download to your Mac.

Unzip that Precize Zip archive again and drop the Precize app within it onto the running app’s icon. What do you expect those four datestamps to be?

Now the Created and Modified values are taken from that app when it left my Mac here, but Attr Mod should be more recent, and Accessed is likely to be older unless you have accessed the app bundle since then.

What’s the time, Mr. APFS?

All the best games involve learning. I hope these have shown you how those four datestamps are set and changed. In summary:

  • Software like the Finder, when copying between local volumes, also copies most of a file’s attributes, including Created and Modified datestamps for consistency, even though it creates a new file in the destination. Attr Mod and Accessed are linked to the copy event, though.
  • Software like browsers, when copying from a remote server to a local volume, don’t preserve the file’s attributes, so all four datestamps correspond to the local arrival and creation of the download.
  • Archives such as Zip files preserve most of a file’s attributes, and reconstitute its Created and Modified values to those saved when the archive was created.

As a final exercise, using Precize, determine whether copying files by AirDrop between Macs behaves conservatively like copying between local volumes, or resets datestamps as downloading from the internet does. Why do you think that Apple designed it to work that way?

Have fun!

睡了半年来第一顿好觉

我好久都没睡好了,值得记录一下。

从半年前手术开始,接连着出差、二次手术、年前的忙、过年的烦、年后的忙,一直到前几天的连续熬夜和通宵工作,我真的很长一段时间里都没有这么深的睡眠了。

前几天为了最后出方案,熬了两个通宵,公司内部的野心和追求都令我感到很失望,复杂的情绪交融在一起,非常难过。但最后还是用我的方式,引导大家选择了我想要的那个。尽管看上去我在力推另一个方案,但是人呐,对于自己没有概念的事情,靠嘴说是没有用的,对于他们来说,打出高中低来,选中间的,是他们能理解的方式。更好的那个,谈不上多超前,仅仅只是不值得而已。算了,以后总会有机会。

昨晚九点半,终于把所有设计文件、模型和工艺文件、USDZ 文件分别发送到了各个下一环节手中。接下来,不用我熬夜,轮到我监督他们干活交东西了。算是阶段性的胜利吧。

心情一好,我就看了半部《无间道3》。

前段时间跟筱烨一起看《无限超越班》,心里的戏瘾就痒痒,但是现在没有机会上舞台了,就上 Netflix 找了无间道三部曲开始看。之前分两周陆续看完了前两部,昨晚难得松懈一下,一口气看了半部三。

为了帮我补熬夜的气血,筱烨给我买了两次西洋参。第一盒前几天喝完了,前天又到了一盒,昨晚睡前温热地喝了一杯。

大概是工作的疲惫 + 阶段胜利的松懈 + 看电影的愉悦 + 西洋参补的气,一起让我睡了一顿好觉吧?

❌