Brief history

CatDV was originally based on the QuickTime for Java (QTJava) API. This provided access to the very feature rich QuickTime 7 API with Java bindings so we could use QuickTime to play and transcode movies in process, but meant that if the native QuickTime library crashed for any reason (e.g. when it encountered a corrupt file) the entire application would crash.

Then, around 2009, Apple announced it was deprecating (and ultimately completely removed) QuickTime (because it was 32-bit only and wasn’t going to be updated to 64-bit, and because of the whole Carbon/Cocoa/ObjectiveC thing).

So, in order to keep CatDV running, we migrated away from 32-bit in process media handling depending completely on QuickTime, to 64-bit support using external processes (Kevan’s native helper process and the FFmpeg command line) and no dependency on QuickTime at all, in incremental stages:

· CatDV 9: first appearance of new “media framework” abstraction layer to pull out all the QTJava dependencies throughout CatDV into one place

· CatDV 10: 32-bit, still using QTJava but experimenting with Xuggle and DirectShow

· CatDV 11 : Shipped with two versions (32- and 64-bit Java), the former still using QTJava, the latter only using the new 32-bit native helper that integrated with both QuickTime and FFmpeg.

· CatDV 12: 64-bit Java, still using 32-bit native helper that supported both QuickTime and FFmpeg but now replicating most QuickTime functionality with FFmpeg and other SDKs

· CatDV 13: 64-bit only, including helper, removed all QuickTime support