[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Re: Problems with dvd+rw-tools 6 and Pioneer drive



I have the same speed related problem with dvd+rw-tools 6.0 and ASUS
DRW-1608P.

It seems that the problem is in set_speed_B9 function in
growisofs_mmc.cpp.

So here is my output from dvd+rw-mediainfo:

INQUIRY:                [ASUS    ][DRW-1608P       ][1.17]
GET [CURRENT] CONFIGURATION:
 Mounted Media:         11h, DVD-R Sequential
 Media ID:               TTG02      
 Current Write Speed:   8.0x1385=11080KB/s
 Write Speed #0:        8.0x1385=11080KB/s
 Write Speed #1:        6.0x1385=8310KB/s
 Write Speed #2:        4.0x1385=5540KB/s
 Speed Descriptor#0:    00/2298495 R@1.0x1385=1385KB/s
W@8.0x1385=11080KB/s
 Speed Descriptor#1:    00/2298495 R@1.0x1385=1385KB/s
W@6.0x1385=8310KB/s
 Speed Descriptor#2:    00/2298495 R@1.0x1385=1385KB/s
W@4.0x1385=5540KB/s
READ DVD STRUCTURE[#10h]:
 Media Book Type:       25h, DVD-R book [revision 5]
 Legacy lead-out at:    2298496*2KB=4707319808
READ DVD STRUCTURE[#0h]:
 Media Book Type:       25h, DVD-R book [revision 5]
 Last border-out at:    0*2KB=0
READ DISC INFORMATION:
 Disc status:           blank
 Number of Sessions:    1
 State of Last Session: empty
 Number of Tracks:      1
READ TRACK INFORMATION[#1]:
 Track State:           invisible incremental
 Track Start Address:   0*2KB
 Next Writable Address: 0*2KB
 Free Blocks:           2297888*2KB
 Track Size:            2297888*2KB
READ CAPACITY:          0*2048=0

As you can see, the minimal speed is "Write Speed #2:
4.0x1385=5540KB/s" and it should be treated as 1x for this media.

Indeed after finishing this for loop in growisofs_mmc:

for (minv=0x7fffffff,i=0;i<j;i+=16)
{	v=wsdp[i+12]<<24|wsdp[i+13]<<16|wsdp[i+14]<<8|wsdp[i+15];
	if (v<minv) minv=v;
} // minv will be treated as 1x

minv equals to 5540, speed_factor = 8.0.

Later you have a set of if statements to determine divisor for
speed_factor. 5540 is definitely > then (3*ONEX), so speed_factor will
be divided by 4.0 and now we have (speed_factor == 4.0). But later you
have something like this:

if (!dvddash && minv>(2*ONEX))
	// 2.4x is like 1x for DVD+, but it turned out that there're
	// units, most notably "DVDRW IDE1004," burning DVD+ at
	// lower speed, so I have to watch out for it...
	speed_factor /= 2.4;
else if (minv>=(2*ONEX))
	speed_factor /= 2.0;

5540 is also >= then (2*ONEX) and speed_factor will be also divided by
2.0. So now (speed_factor == 1.0) and we get 4x speed instead of 8x
specified at command line.

The solution can be to replace

if (!dvddash && minv>(2*ONEX))

with

else if (!dvddash && minv>(2*ONEX))

Then the former 2 if statements will be checked only if all above
failed.

This solution worked for me, but I'm not sure if it addresses all issues
of speed_factor calculations. I didn't dig there too deep :)

As temporary workaround it is possible to set "speed" option of k3b to
"Ignore" for -speed option not to be passed to growisofs.




Reply to: