QuickTime for Java: A Developer's Notebook

Errata for QuickTime for Java: A Developer's Notebook

Submit your own errata for this product.

The errata list is a list of errors and their corrections that were found after the product was released. If the error was corrected in a later version or reprint the date of the correction will be displayed in the column titled "Date Corrected".

The following errata were submitted by our customers and approved as valid errors by the author or editor.

Color Key: Serious Technical Mistake Minor Technical Mistake Language or formatting error Typo Question Note Update

Version Location Description Submitted By Date Submitted Date Corrected
Page xiv
bottom of the page; just before the heading "About the Examples"

the text states: "...download sample code, which is located at http://www.oreillly.com/catalog/9780596008222/" whereas, the examples are located at: http://examples.oreilly.com/9780596008222/

Page xvi
Midway on the page

java -cp jars/qtj-notebook.jar com.oreilly.qtjnotebook.ch02.SimpleQTPlayer SimpleQTPlayer does not exist in current sample code--BasicQTPlayer does exist however.

Page 36
BasicQTURLController.Java source

I confirmed with the author that the BasicQTURLController.Java program fails in Windows but does work properly in OS X. A bug report has been submitted to Apple.

Page 199
8th line

The code in the book works as shown, but needs a fix when non-zero timecodes are used. Here we go: This code works when the timecode is 00:00:00;00 -- i.e., when you construct the TimeCodeTime object as shown in the example -- but if you use other timecode values, you get incorrect values on Windows. This is because later on, when inserting the sample into the timecode track, you must use big-endian values for any data you put in a QuickTime data structure, for reasons described later (on pp. 207-8). This example doesn't do that, so when using non-zero timecodes, it works on Mac but not Windows. To expose the problem, change: TimeCodeTime tcTime = new TimeCodeTime (0, 0, 0, 0); to TimeCodeTime tcTime = new TimeCodeTime (1, 2, 3, 4); To then fix the problem, you need to apply an endian-fix to the frame number returned from timeCoder.toFrameNumber, before you add the frame number as a sample to the timecode track. An easy place to fix that is to change: frameNums[0] = frameNumber; to frameNums[0] = EndianOrder.flipNativeToBigEndian32 (frameNumber); This will create a timecode track that begins at 01:02:03;04, on both Mac and Windows.