libburn-0.7.2.pl01 : Workarounds for Pioneer DVR-216D rev 1.09
This commit is contained in:
parent
b641b5c570
commit
2a388cb443
14
README
14
README
@ -11,7 +11,7 @@ Still containing parts of Libburn. By Derek Foreman <derek@signalmarketing.com>
|
||||
and Ben Jansens <xor@orodu.net>
|
||||
Copyright (C) 2002-2006 Derek Foreman and Ben Jansens
|
||||
|
||||
http://files.libburnia-project.org/releases/libburn-0.7.2.pl00.tar.gz
|
||||
http://files.libburnia-project.org/releases/libburn-0.7.2.pl01.tar.gz
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
@ -19,9 +19,9 @@ Copyright (C) 2002-2006 Derek Foreman and Ben Jansens
|
||||
|
||||
From tarball
|
||||
|
||||
Obtain libburn-0.7.2.pl00.tar.gz, take it to a directory of your choice and do:
|
||||
Obtain libburn-0.7.2.pl01.tar.gz, take it to a directory of your choice and do:
|
||||
|
||||
tar xzf libburn-0.7.2.pl00.tar.gz
|
||||
tar xzf libburn-0.7.2.pl01.tar.gz
|
||||
cd libburn-0.7.2
|
||||
./configure --prefix=/usr
|
||||
make
|
||||
@ -443,6 +443,14 @@ Project history as far as known to me:
|
||||
It can retrieve media product info and can process track input which was
|
||||
prepared for CD-ROM XA Mode 2 Form 1. cdrskin now performs option -minfo.
|
||||
|
||||
- 28 Oct 2009 libisoburn-0.4.4 fixes a bug with cdrecord emulation and
|
||||
introduces new information options about media type and ISO image id strings.
|
||||
On Linux it helps with mounting two sessions of the same media
|
||||
simultaneously.
|
||||
|
||||
- 12 Nov 2009 libburn-0.7.2.pl01 works around problems with Pioneer DVR-216D.
|
||||
DVD-R runs made the drive stuck. Ejecting the tray did not work properly.
|
||||
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
cdrskin. By Thomas Schmitt <scdbackup@gmx.net>
|
||||
Integrated sub project of libburnia-project.org but also published via:
|
||||
http://scdbackup.sourceforge.net/cdrskin_eng.html
|
||||
http://scdbackup.sourceforge.net/cdrskin-0.7.2.pl00.tar.gz
|
||||
http://scdbackup.sourceforge.net/cdrskin-0.7.2.pl01.tar.gz
|
||||
|
||||
Copyright (C) 2006-2009 Thomas Schmitt, provided under GPL version 2.
|
||||
------------------------------------------------------------------------------
|
||||
@ -24,9 +24,9 @@ By using this software you agree to the disclaimer at the end of this text
|
||||
|
||||
Compilation, First Glimpse, Installation
|
||||
|
||||
Obtain cdrskin-0.7.2.pl00.tar.gz, take it to a directory of your choice and do:
|
||||
Obtain cdrskin-0.7.2.pl01.tar.gz, take it to a directory of your choice and do:
|
||||
|
||||
tar xzf cdrskin-0.7.2.pl00.tar.gz
|
||||
tar xzf cdrskin-0.7.2.pl01.tar.gz
|
||||
cd cdrskin-0.7.2
|
||||
|
||||
Within that directory execute:
|
||||
|
@ -193,7 +193,7 @@ Standalone ISO 9660 multi-session CD/DVD/BD tool
|
||||
<P>
|
||||
<DL>
|
||||
<DT>Download as source code (see README):</DT>
|
||||
<DD><A HREF="cdrskin-0.7.2.pl00.tar.gz">cdrskin-0.7.2.pl00.tar.gz</A>
|
||||
<DD><A HREF="cdrskin-0.7.2.pl01.tar.gz">cdrskin-0.7.2.pl01.tar.gz</A>
|
||||
(780 KB).
|
||||
</DD>
|
||||
<DD>
|
||||
@ -262,6 +262,12 @@ Bug fixes towards cdrskin-0.7.0.pl00:
|
||||
-->
|
||||
</UL>
|
||||
|
||||
Bug fixes towards cdrskin-0.7.2.pl00:
|
||||
<UL>
|
||||
<LI>Workaround for Pioneer DVR-216D which got stuck on DVD-R burns.</LI>
|
||||
<LI>Workaround for Pioneer DVR-216D which did not always eject the tray.</LI>
|
||||
</UL>
|
||||
|
||||
<HR>
|
||||
|
||||
<P>
|
||||
@ -278,8 +284,10 @@ Bug fixes towards cdrskin-0.7.0.pl00:
|
||||
|
||||
<DD>Bug fixes towards cdrskin-0.7.2.pl00:
|
||||
<UL>
|
||||
<LI>none yet</LI>
|
||||
<LI>Workaround for Pioneer DVR-216D which got stuck on DVD-R burns.</LI>
|
||||
<LI>Workaround for Pioneer DVR-216D which did not always eject the tray.</LI>
|
||||
<!--
|
||||
<LI>none yet</LI>
|
||||
-->
|
||||
</UL>
|
||||
</DD>
|
||||
@ -309,7 +317,7 @@ admins with full system souvereignty.</DT>
|
||||
</DD>
|
||||
<DD>
|
||||
<A HREF="cdrskin-0.7.3.tar.gz">cdrskin-0.7.3.tar.gz</A>
|
||||
(780 KB).
|
||||
(800 KB).
|
||||
</DD>
|
||||
|
||||
<!-- This is not offered any more since spring 2008
|
||||
|
@ -1 +1 @@
|
||||
#define Cdrskin_timestamP "2009.10.12.080001"
|
||||
#define Cdrskin_timestamP "2009.11.12.230001"
|
||||
|
@ -76,6 +76,57 @@ void sbc_eject(struct burn_drive *d)
|
||||
spc_wait_unit_attention(d, 1800, "STOP UNIT (+ EJECT)", 0);
|
||||
}
|
||||
|
||||
|
||||
/* ts A91112 : 0.7.2.pl01 */
|
||||
#define Libburn_pioneer_dvr_216d_start_synC 1
|
||||
|
||||
#ifdef Libburn_pioneer_dvr_216d_start_synC
|
||||
|
||||
/* ts A91112 : Now with flag */
|
||||
/* @param flag bit0= asynchronous waiting
|
||||
*/
|
||||
int sbc_start_unit_flag(struct burn_drive *d, int flag)
|
||||
{
|
||||
struct command c;
|
||||
int ret;
|
||||
|
||||
if (mmc_function_spy(d, "start_unit") <= 0)
|
||||
return 0;
|
||||
|
||||
scsi_init_command(&c, SBC_START_UNIT, sizeof(SBC_START_UNIT));
|
||||
c.retry = 1;
|
||||
c.opcode[1] |= (flag & 1); /* ts A70918 : Immed */
|
||||
c.dir = NO_TRANSFER;
|
||||
d->issue_command(d, &c);
|
||||
if (c.error)
|
||||
return 0;
|
||||
if (!(flag & 1))
|
||||
return 1;
|
||||
/* ts A70918 : asynchronous */
|
||||
ret = spc_wait_unit_attention(d, 1800, "START UNIT", 0);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
int sbc_start_unit(struct burn_drive *d)
|
||||
{
|
||||
int ret;
|
||||
|
||||
d->is_stopped = 0; /* no endless starting attempts */
|
||||
|
||||
/* Asynchronous, not to block controller by waiting */
|
||||
ret = sbc_start_unit_flag(d, 1);
|
||||
if (ret <= 0)
|
||||
return ret;
|
||||
/* Synchronous to catch Pioneer DVD-216D which is ready too early.
|
||||
A pending START UNIT can prevent ejecting of the tray.
|
||||
*/
|
||||
ret = sbc_start_unit_flag(d, 0);
|
||||
return ret;
|
||||
}
|
||||
|
||||
#else /* Libburn_pioneer_dvr_216d_start_synC */
|
||||
|
||||
/* ts A61118 : is it necessary to tell the drive to get ready for use ? */
|
||||
int sbc_start_unit(struct burn_drive *d)
|
||||
{
|
||||
@ -98,6 +149,9 @@ int sbc_start_unit(struct burn_drive *d)
|
||||
return ret;
|
||||
}
|
||||
|
||||
#endif /* ! Libburn_pioneer_dvr_216d_start_synC */
|
||||
|
||||
|
||||
/* ts A90824 : Trying to reduce drive noise */
|
||||
int sbc_stop_unit(struct burn_drive *d)
|
||||
{
|
||||
|
@ -1240,6 +1240,7 @@ int burn_dvd_write_track(struct burn_write_opts *o,
|
||||
struct buffer *out = d->buffer;
|
||||
int sectors;
|
||||
int i, open_ended = 0, ret= 0, is_flushed = 0;
|
||||
int first_buf_cap = 0, further_cap = 0, buf_cap_step = 256;
|
||||
|
||||
/* ts A70213 : eventually expand size of track to max */
|
||||
burn_track_apply_fillup(t, d->media_capacity_remaining, 0);
|
||||
@ -1250,6 +1251,18 @@ int burn_dvd_write_track(struct burn_write_opts *o,
|
||||
ret = burn_disc_open_track_dvd_minus_r(o, s, tnum);
|
||||
if (ret <= 0)
|
||||
goto ex;
|
||||
|
||||
/* ts A91112 : 0.7.2.pl01 */
|
||||
#define Libburn_pioneer_dvr_216d_read_buf_caP 1
|
||||
|
||||
#ifdef Libburn_pioneer_dvr_216d_read_buf_caP
|
||||
/* Pioneer DVR-216D rev 1.09 hates multiple buffer inquiries
|
||||
before the drive buffer is full.
|
||||
*/
|
||||
first_buf_cap = 0;
|
||||
further_cap = -1;
|
||||
#endif
|
||||
|
||||
} else if (d->current_profile == 0x1b || d->current_profile == 0x2b) {
|
||||
/* DVD+R , DVD+R/DL */
|
||||
ret = burn_disc_open_track_dvd_plus_r(o, s, tnum);
|
||||
@ -1284,10 +1297,29 @@ int burn_dvd_write_track(struct burn_write_opts *o,
|
||||
burn_disc_init_track_status(o, s, tnum, sectors);
|
||||
for (i = 0; open_ended || i < sectors; i++) {
|
||||
|
||||
#ifdef Libburn_pioneer_dvr_216d_read_buf_caP
|
||||
|
||||
/* From time to time inquire drive buffer */
|
||||
/* Eventually avoid to do this more than once
|
||||
before the drive buffer is full. See above DVD-R[W].
|
||||
*/
|
||||
if (i == first_buf_cap ||
|
||||
((i % buf_cap_step) == 0 &&
|
||||
(i >= further_cap || further_cap < 0))) {
|
||||
d->read_buffer_capacity(d);
|
||||
if (further_cap < 0)
|
||||
further_cap =
|
||||
d->progress.buffer_capacity / 2048 + 128;
|
||||
}
|
||||
|
||||
#else /* Libburn_pioneer_dvr_216d_read_buf_caP */
|
||||
|
||||
/* From time to time inquire drive buffer */
|
||||
if ((i%256)==0)
|
||||
d->read_buffer_capacity(d);
|
||||
|
||||
#endif /* ! Libburn_pioneer_dvr_216d_read_buf_caP */
|
||||
|
||||
/* transact a (CD sized) sector */
|
||||
if (!sector_data(o, t, 0))
|
||||
{ ret = 0; goto ex; }
|
||||
|
Loading…
Reference in New Issue
Block a user