From d9239aeafc3d44968fc7983c1f3ce41104e5e776 Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Mon, 4 Jan 2010 13:49:05 +0000 Subject: [PATCH] Avoiding stream recording on BD if not 64 kB buffer --- cdrskin/cdrskin_timestamp.h | 2 +- libburn/libdax_msgs.h | 1 + libburn/write.c | 16 ++++++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/cdrskin/cdrskin_timestamp.h b/cdrskin/cdrskin_timestamp.h index 327c6fb..d575d5b 100644 --- a/cdrskin/cdrskin_timestamp.h +++ b/cdrskin/cdrskin_timestamp.h @@ -1 +1 @@ -#define Cdrskin_timestamP "2010.01.01.124415" +#define Cdrskin_timestamP "2010.01.04.134949" diff --git a/libburn/libdax_msgs.h b/libburn/libdax_msgs.h index 12af5a0..37006da 100644 --- a/libburn/libdax_msgs.h +++ b/libburn/libdax_msgs.h @@ -553,6 +553,7 @@ Range "scdbackup" : 0x00020000 to 0x0002ffff 0x00020173 (FAILURE,HIGH) = Drive tells NWA smaller than last written address 0x00020174 (SORRY,HIGH) = Fifo alignment does not allow desired read size 0x00020175 (FATAL,HIGH) = Supporting library is too old + 0x00020176 (NOTE,HIGH) = Stream recording disabled because of small OS buffer libdax_audioxtr: diff --git a/libburn/write.c b/libburn/write.c index a2b9936..43f6f00 100644 --- a/libburn/write.c +++ b/libburn/write.c @@ -1923,6 +1923,10 @@ int burn_dvd_write_sync(struct burn_write_opts *o, } /* ??? padding needed ??? cowardly doing it for now */ o->obs_pad = 1; /* fill-up track's last 32k buffer */ + if (d->do_stream_recording) { + if (d->current_profile == 0x41) /* BD-R */ + o->obs = Libburn_bd_re_streamed_obS; + } } #ifdef Libburn_dvd_obs_default_64K @@ -1949,6 +1953,18 @@ int burn_dvd_write_sync(struct burn_write_opts *o, o->obs = 32 * 1024; /* This size is required to work */ } + if (d->do_stream_recording && + (d->current_profile == 0x43 || d->current_profile == 0x41) && + o->obs < Libburn_bd_re_streamed_obS) { + /* LG GGW-H20 writes junk with stream recording and obs=32k */ + sprintf(msg, + "Stream recording disabled because of small OS buffer"); + libdax_msgs_submit(libdax_messenger, d->global_index, + 0x00020176, LIBDAX_MSGS_SEV_NOTE, + LIBDAX_MSGS_PRIO_HIGH, msg, 0, 0); + d->do_stream_recording = 0; + } + sprintf(msg, "dvd/bd Profile= %2.2Xh , obs= %d , obs_pad= %d", d->current_profile, o->obs, o->obs_pad); libdax_msgs_submit(libdax_messenger, d->global_index, 0x00000002,