Bug 34725 - burncd cannot write audio file as the 1st track in a session
Summary: burncd cannot write audio file as the 1st track in a session
Status: Closed FIXED
Alias: None
Product: Base System
Classification: Unclassified
Component: bin (show other bugs)
Version: Unspecified
Hardware: Any Any
: Normal Affects Only Me
Assignee: Søren Schmidt
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2002-02-08 03:50 UTC by Edmond Shum
Modified: 2003-05-04 11:00 UTC (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Edmond Shum 2002-02-08 03:50:04 UTC
burncd cannot write audio track when it is the 1st in the session. It 
must follow a data file. :

burncd -m -f /dev/acd0c audio test.wav test2.wav ...... [fixate]
will fail with the console messages:
acd0: WRITE_BIG - ILLEGAL REQUEST asc=64 ascq=00 error=00

However, if it is preceded by a data file, it works fine:
burncd [-m] -f /dev/acd0c data /tmp/zero audio test.wav test2.wav ...... [fixate]
( success ) 

The cdrw I am using: acd0: CD-RW <Hewlett-Packard CD-Writer Plus 9100b> at ata1-master using PIO4

How-To-Repeat: Command with:
burncd [-m] -f /dev/acd0c audio [audio file]
will definitely fail
Comment 1 dwmalone freebsd_committer freebsd_triage 2002-02-08 10:14:04 UTC
Responsible Changed
From-To: freebsd-bugs->sos

Over to the burncd author.
Comment 2 Søren Schmidt freebsd_committer freebsd_triage 2002-05-01 13:19:09 UTC
State Changed
From-To: open->feedback

Could you plase try this patch, its valid for both -current 
and -stable: 
cvs diff: Diffing . 
Index: burncd.c 
=================================================================== 
RCS file: /home/ncvs/src/usr.sbin/burncd/burncd.c,v 
retrieving revision 1.25 
diff -u -r1.25 burncd.c 
--- burncd.c    22 Apr 2002 13:44:42 -0000      1.25 
+++ burncd.c    29 Apr 2002 20:12:17 -0000 
@@ -367,13 +367,14 @@ 
format = CDR_SESS_CDROM_XA; 

if (i == 0) { 
-                       addr += tracks[i].pregap; 
tracks[i].addr = addr; 
- 
+                       cue_ent(&cue[j++], bt2ctl[tracks[i].block_type],  
+                               0x01, i+1, 0x0, bt2df[tracks[i].block_type], 
+                               0x00, addr); 
+                       addr += tracks[i].pregap; 
cue_ent(&cue[j++], bt2ctl[tracks[i].block_type],  
0x01, i+1, 0x1, bt2df[tracks[i].block_type], 
0x00, addr); 
- 
} 
else { 
if (tracks[i].pregap) { 
@@ -471,9 +472,6 @@ 

if (ioctl(fd, CDRIOCSETBLOCKSIZE, &track_info->block_size) < 0) 
err(EX_IOERR, "ioctl(CDRIOCSETBLOCKSIZE)"); 
- 
-       if (track_info->addr >= 0) 
-               lseek(fd, track_info->addr * track_info->block_size, SEEK_SET); 

if (verbose) 
fprintf(stderr, "addr = %d size = %d blocks = %dn",
Comment 3 Edmond Shum 2002-05-03 03:54:23 UTC
Sorry to tell you that it doesn't work. Not only can it not write the audio as 
the first track, it cannot write after a data track:

>vega# /home/leo/burncd.sos/burncd -v -m -t -f /dev/acd0c data /tmp/null audio IsLove.wav 
>adding type 0x08 file /tmp/null size 600 KB 300 blocks
>adding type 0x00 file IsLove.wav size 39104 KB 17026 blocks (0 padded)  
>next writeable LBA 0 
>addr = 0 size = 614400 blocks = 300 
>writing from file /tmp/null size 600 KB 
>written this track 600 KB (100%) total 600 KB
>next writeable LBA 302
>addr = 302 size = 40042880 blocks = 17026   
>writing from file IsLove.wav size 39104 KB 
> 
>only wrote -1 of 37632 bytes err=5                                   


Before patching:
>vega# burncd -v -m -t -f /dev/acd0c data /tmp/null audio IsLove.wav
>adding type 0x08 file /tmp/null size 600 KB 300 blocks
>?adding type 0x00 file IsLove.wav size 39104 KB 17026 blocks (0 padded) 
>next writeable LBA 0
>addr = 0 size = 614400 blocks = 300       
>writing from file /tmp/null size 600 KB
>written this track 600 KB (100%) total 600 KB
>next writeable LBA 302
>addr = 302 size = 40042880 blocks = 17026
>writing from file IsLove.wav size 39104 KB
>written this track 39106 KB (100%) total 39706 KB 

Edmond Shum
Comment 4 Søren Schmidt freebsd_committer freebsd_triage 2003-05-04 10:59:13 UTC
State Changed
From-To: feedback->closed

Belived to e fixed in -current (5.1).