// create media for new track
VideoMedia videoMedia = new VideoMedia(videoTrack, timeScale);
// get a GraphicsImporter
GraphicsImporter gi = new GraphicsImporter(
StdQTConstants.kQTFileTypePicture);
// create an offscreen QDGraphics / GWorld the size of the picts
// importer will draw into this and pass to CSequence
QDGraphics gw = new QDGraphics(new QDRect(0, 0, WIDTH, HEIGHT));
// set importer's GWorld
gi.setGWorld(gw, null);
QDRect gRect = new QDRect(0, 0, WIDTH, HEIGHT);
// add images to media
videoMedia.beginEdits();
int frames = pics.length;
int rawImageSize = QTImage.getMaxCompressionSize(gw, gRect,
gw.getPixMap().getPixelSize(), StdQTConstants.codecLosslessQuality,
CODEC_TYPE, CodecComponent.bestFidelityCodec);
QTHandle imageHandle = new QTHandle(rawImageSize, true);
imageHandle.lock();
RawEncodedImage compressed = RawEncodedImage.fromQTHandle(imageHandle);
CSequence seq = new CSequence(gw, gRect, gw.getPixMap().getPixelSize(),
CODEC_TYPE, CodecComponent.bestFidelityCodec,
StdQTConstants.codecLosslessQuality,
StdQTConstants.codecLosslessQuality,
KEY_FRAME_RATE, null, StdQTConstants.codecFlagUpdatePrevious);
ImageDescription imgDesc = seq.getDescription();
// attempt to loop through all frames, scaling to fit the first frame
for (int x = 0; x < frames; x++)
{
QDRect srcRect = new QDRect(0, 0, pics[x].getPictFrame().getWidthF(),
pics[x].getPictFrame().getHeightF());
// add 512 byte header so the grapics importer will think that it's
// dealing with a pict file
byte[] newPictBytes = new byte[pics[x].getSize() + 512];
pics[x].copyToArray(0, newPictBytes, 512, newPictBytes.length - 512);
pics[x] = new Pict(newPictBytes);
// export the pict
DataRef ref = new DataRef(pics[x],
StdQTConstants.kDataRefQTFileTypeTag, "PICT");
gi.setDataReference(ref);
// create matrix to represent scaling of each pict
Matrix drawMatrix = new Matrix();
drawMatrix.rect(srcRect, gRect);
gi.setMatrix(drawMatrix);
gi.draw();
// compress frame
CompressedFrameInfo cfInfo = seq.compressFrame(gw, gRect,
StdQTConstants.codecFlagUpdatePrevious, compressed);