Errata

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
Printed
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/

Anonymous   
Printed
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.

Anonymous   
Printed
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.

Anonymous   
Printed
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.

Anonymous