Mailing Lists: Apple Mailing Lists
Image of Mac OS face in stamp
Re: Dual Session Audio and Data
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Dual Session Audio and Data



On Sep 9, 2003, at 2:33 PM, email@hidden wrote:

I am trying to create a two session CD with Audio tracks on the first
session and a data track containing multiple files and folders in the
second session. The data format needs to be ISO 9660 .

Using the sample code from Apple, I've been able to do each session by
itself, but I need help handling a multiple session burn.

When I set the "appendable" checkbox in the burn UI for the Audio, it
hangs after completing the first session burn and bringing up the data
session UI. Whenever I insert the partially written disc, it hangs the
CD reader.

That's unusual behavior, and might be worth submitting a bug about. However I think there's a better answer (see below).

I think the basic problem is that you're sort of treading on shaky standards ground ... if you burn an audio CD and leave it appendable, and then eject and reinsert, you're sticking an incomplete/unclosed audio CD into the drive.

That's really a quasi-legal disc format. Usually multisession data CDs are the only unclosed CDs which are found in the wild; there is no requirement for a CD player or reader to handle an unclosed audio CD. I wouldn't go so far as to say it's illegal, but it kind of falls into the realm of "outside of the specifications" which implies undefined behavior.

The better answer is to simply let DiscRecording burn both sessions at once. You can do this by changing the layout that you specify to -[DRBurn writeLayout:] or DRBurnWriteLayout. Here's where I refer you to the header docs (in DRBurn.h or DRCoreBurn.h) or the reference documentation descriptions of -[DRBurn writeLayout:] and DRBurnWriteLayout for more information on what you can pass in. :-)

To write two sessions in a single burn, your layout would look something like this:

array( // array of sessions
array ( // first session
track 1,
track 2,
track 3,
etc
},
array ( // second session
track 1
)
)

In other words, to write multiple sessions in a single burn, use an array of arrays of tracks.

Before you get too much further, there are problems right now with the ISO/Joliet generation code... it generates incorrect offsets for ISO/Joliet after the first track. This is a known bug which is being tracked, but hasn't yet been resolved.


On another issue, I'd like to eliminate the UI, but haven't been
successful in obtaining or applying a device object to the burn without
the DiscRecordingUI dialogs.

You can obtain the device list with [DRDevice devices] or DRDeviceCopyDeviceArray. That returns a CF/NSArray of the devices. Do whatever you want to pick one, and then call +[DRBurn burnForDevice:device] or DRBurnCreate(device) to create a burn object.

If you're not putting up the UI, you'll need to configure options for the burn object yourself. The options are set via -[DRBurn setProperties:] or DRBurnSetProperties. See DRBurn.h and DRCoreBurn.h for a list of properties and their values and defaults.

drew

--
Drew Thaler
Recording Artist
CD/DVD Burning Issues
Apple Computer, Inc.
_______________________________________________
discrecording mailing list | email@hidden
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/discrecording
Do not post admin requests to the list. They will be ignored.



Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Contact Apple | Terms of Use | Privacy Policy

Copyright © 2011 Apple Inc. All rights reserved.