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>
|
and Ben Jansens <xor@orodu.net>
|
||||||
Copyright (C) 2002-2006 Derek Foreman and Ben Jansens
|
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
|
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
|
cd libburn-0.7.2
|
||||||
./configure --prefix=/usr
|
./configure --prefix=/usr
|
||||||
make
|
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
|
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.
|
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>
|
cdrskin. By Thomas Schmitt <scdbackup@gmx.net>
|
||||||
Integrated sub project of libburnia-project.org but also published via:
|
Integrated sub project of libburnia-project.org but also published via:
|
||||||
http://scdbackup.sourceforge.net/cdrskin_eng.html
|
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.
|
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
|
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
|
cd cdrskin-0.7.2
|
||||||
|
|
||||||
Within that directory execute:
|
Within that directory execute:
|
||||||
|
@ -193,7 +193,7 @@ Standalone ISO 9660 multi-session CD/DVD/BD tool
|
|||||||
<P>
|
<P>
|
||||||
<DL>
|
<DL>
|
||||||
<DT>Download as source code (see README):</DT>
|
<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).
|
(780 KB).
|
||||||
</DD>
|
</DD>
|
||||||
<DD>
|
<DD>
|
||||||
@ -262,6 +262,12 @@ Bug fixes towards cdrskin-0.7.0.pl00:
|
|||||||
-->
|
-->
|
||||||
</UL>
|
</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>
|
<HR>
|
||||||
|
|
||||||
<P>
|
<P>
|
||||||
@ -278,8 +284,10 @@ Bug fixes towards cdrskin-0.7.0.pl00:
|
|||||||
|
|
||||||
<DD>Bug fixes towards cdrskin-0.7.2.pl00:
|
<DD>Bug fixes towards cdrskin-0.7.2.pl00:
|
||||||
<UL>
|
<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>
|
</UL>
|
||||||
</DD>
|
</DD>
|
||||||
@ -309,7 +317,7 @@ admins with full system souvereignty.</DT>
|
|||||||
</DD>
|
</DD>
|
||||||
<DD>
|
<DD>
|
||||||
<A HREF="cdrskin-0.7.3.tar.gz">cdrskin-0.7.3.tar.gz</A>
|
<A HREF="cdrskin-0.7.3.tar.gz">cdrskin-0.7.3.tar.gz</A>
|
||||||
(780 KB).
|
(800 KB).
|
||||||
</DD>
|
</DD>
|
||||||
|
|
||||||
<!-- This is not offered any more since spring 2008
|
<!-- 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);
|
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 ? */
|
/* ts A61118 : is it necessary to tell the drive to get ready for use ? */
|
||||||
int sbc_start_unit(struct burn_drive *d)
|
int sbc_start_unit(struct burn_drive *d)
|
||||||
{
|
{
|
||||||
@ -98,6 +149,9 @@ int sbc_start_unit(struct burn_drive *d)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif /* ! Libburn_pioneer_dvr_216d_start_synC */
|
||||||
|
|
||||||
|
|
||||||
/* ts A90824 : Trying to reduce drive noise */
|
/* ts A90824 : Trying to reduce drive noise */
|
||||||
int sbc_stop_unit(struct burn_drive *d)
|
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;
|
struct buffer *out = d->buffer;
|
||||||
int sectors;
|
int sectors;
|
||||||
int i, open_ended = 0, ret= 0, is_flushed = 0;
|
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 */
|
/* ts A70213 : eventually expand size of track to max */
|
||||||
burn_track_apply_fillup(t, d->media_capacity_remaining, 0);
|
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);
|
ret = burn_disc_open_track_dvd_minus_r(o, s, tnum);
|
||||||
if (ret <= 0)
|
if (ret <= 0)
|
||||||
goto ex;
|
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) {
|
} else if (d->current_profile == 0x1b || d->current_profile == 0x2b) {
|
||||||
/* DVD+R , DVD+R/DL */
|
/* DVD+R , DVD+R/DL */
|
||||||
ret = burn_disc_open_track_dvd_plus_r(o, s, tnum);
|
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);
|
burn_disc_init_track_status(o, s, tnum, sectors);
|
||||||
for (i = 0; open_ended || i < sectors; i++) {
|
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 */
|
/* From time to time inquire drive buffer */
|
||||||
if ((i%256)==0)
|
if ((i%256)==0)
|
||||||
d->read_buffer_capacity(d);
|
d->read_buffer_capacity(d);
|
||||||
|
|
||||||
|
#endif /* ! Libburn_pioneer_dvr_216d_read_buf_caP */
|
||||||
|
|
||||||
/* transact a (CD sized) sector */
|
/* transact a (CD sized) sector */
|
||||||
if (!sector_data(o, t, 0))
|
if (!sector_data(o, t, 0))
|
||||||
{ ret = 0; goto ex; }
|
{ ret = 0; goto ex; }
|
||||||
|
Loading…
Reference in New Issue
Block a user