From owner-freebsd-multimedia@FreeBSD.ORG Sun Jul 18 02:48:48 2004 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 3500F16A4CE for ; Sun, 18 Jul 2004 02:48:48 +0000 (GMT) Received: from mynah.mail.pas.earthlink.net (mynah.mail.pas.earthlink.net [207.217.120.228]) by mx1.FreeBSD.org (Postfix) with ESMTP id 1A68F43D31 for ; Sun, 18 Jul 2004 02:48:48 +0000 (GMT) (envelope-from welchsm@earthlink.net) Received: from [66.173.16.87] (helo=NitroPhys.welchsmnet.net) by mynah.mail.pas.earthlink.net with asmtp (TLSv1:AES256-SHA:256) (Exim 4.34) id 1Bm1jK-0000XM-0T; Sat, 17 Jul 2004 19:48:48 -0700 Received: from NitroPhys.welchsmnet.net (localhost [127.0.0.1]) i6I2m62F003923; Sat, 17 Jul 2004 21:48:07 -0500 (CDT) (envelope-from welchsm@localhost.welchsmnet.net) Received: (from welchsm@localhost)i6I2m68t003922; Sat, 17 Jul 2004 21:48:06 -0500 (CDT) (envelope-from welchsm) Date: Sat, 17 Jul 2004 21:48:06 -0500 From: Sean Welch To: Julian Elischer Message-ID: <20040718024806.GA3854@NitroPhys.welchsmnet.net> References: <20030714064137.GT35337@funkthat.com> <20040717230717.GA3193@NitroPhys.welchsmnet.net> <40F9B489.2030504@elischer.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <40F9B489.2030504@elischer.org> User-Agent: Mutt/1.5.6i X-ELNK-Trace: 15d86f98c8ef8acad780f4a490ca69564776905774d2ac4b6bcbaf667489f2cab109896ff1a6347d350badd9bab72f9c350badd9bab72f9c350badd9bab72f9c X-Originating-IP: 66.173.16.87 cc: freebsd-multimedia@freebsd.org Subject: Re: BSD video capture (again!) X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: Sean_Welch@alum.wofford.org List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 18 Jul 2004 02:48:48 -0000 Hey -- sounds good to me! I'm looking forward to the day I can video conference from my laptop without resorting to another OS. I agree -- it would be very nice to have compatibility with all those programs that can take advantage of the v4l interface under Linux. Perhaps a clean framework that can be accessed directly for a purely *bsd solution but also a compatibility layer for aps developed for Linux? Whatever the situation I'd like to be involved. Something interesting came to my attention today when I was searching for any updated status on this stuff. I had originally started a thread asking if a compatibility layer could be introduced over the top of the firewire dv capture mechanism more easily than creating one for usb capture devices from scratch. Have a look at this: http://www.rmatsumoto.org/camera/dc1394-ohphone.html I was intrigued to see this. libavc1394 appears to be based upon libraw1394 which is dependent on the linux architecture. Since gnomemeeting already supports this, how hard would it be to write our own "libraw1394" that libavc1394 could depend on? (Note: I haven't really looked at it in depth -- this is just my impression) At first glance it would appear that the necessary functionality is already available from fwcontrol (namely a raw dv stream)... Sean On Sat, Jul 17, 2004 at 04:21:45PM -0700, Julian Elischer wrote: > Sean Welch wrote: > > >It has been a while and I was wondering if there had been any > >progress on a video framework? I checked this page: > > > >http://people.freebsd.org/~jmg/videobsd.html > > > >but didn't see anything new and the page claims it hasn't been > >modified since December. > > > >Is there anything I could help test? > > > > I am trying to get threading to a clean state so it can survive without > me ;-) > and after that I want to get into video.. > probably the wise thing is to implement somethignt hat has compatibility > with v4lv2 > (video for linux version 2) though I believe that one could do a LOT > better than that > as a video framework. This is because there are a LOT of drivers for > Linux > using the v4l-2 API. > > > > > >Sean > > > >_______________________________________________ > >freebsd-multimedia@freebsd.org mailing list > >http://lists.freebsd.org/mailman/listinfo/freebsd-multimedia > >To unsubscribe, send any mail to > >"freebsd-multimedia-unsubscribe@freebsd.org" > > > > > > From owner-freebsd-multimedia@FreeBSD.ORG Sun Jul 18 11:04:04 2004 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 3371E16A4CF for ; Sun, 18 Jul 2004 11:04:04 +0000 (GMT) Received: from wrzx35.rz.uni-wuerzburg.de (wrzx35.rz.uni-wuerzburg.de [132.187.3.35]) by mx1.FreeBSD.org (Postfix) with ESMTP id 9E3B243D2F for ; Sun, 18 Jul 2004 11:04:03 +0000 (GMT) (envelope-from q@uni.de) Received: from wrzx30.rz.uni-wuerzburg.de (wrzx30.rz.uni-wuerzburg.de [132.187.1.30]) by wrzx35.rz.uni-wuerzburg.de (Postfix) with ESMTP id 3B283D891F; Sun, 18 Jul 2004 13:04:02 +0200 (CEST) Received: from virusscan (localhost [127.0.0.1]) by wrzx30.rz.uni-wuerzburg.de (Postfix) with ESMTP id 21E1280DB8; Sun, 18 Jul 2004 13:04:02 +0200 (CEST) Received: from wrzx28.rz.uni-wuerzburg.de (wrzx28.rz.uni-wuerzburg.de [132.187.3.28]) by wrzx30.rz.uni-wuerzburg.de (Postfix) with ESMTP id 088BC80C9C; Sun, 18 Jul 2004 13:04:02 +0200 (CEST) Received: from coyote.q.local (wwsx14.win-screen.uni-wuerzburg.de [132.187.253.14]) by wrzx28.rz.uni-wuerzburg.de (Postfix) with ESMTP id E843CD37DE; Sun, 18 Jul 2004 13:04:01 +0200 (CEST) Received: from roadrunner.q.local (roadrunner [192.168.0.147]) by coyote.q.local (8.12.10/8.12.10) with ESMTP id i6IB41w2058083; Sun, 18 Jul 2004 13:04:01 +0200 (CEST) (envelope-from q@roadrunner.q.local) Date: Sun, 18 Jul 2004 13:03:59 +0200 From: Ulrich Spoerlein To: Dmitriy Startsev Message-ID: <20040718110359.GA512@galgenberg.net> Mail-Followup-To: Dmitriy Startsev , freebsd-multimedia@freebsd.org References: <000901c46b68$933bff10$224514ac@METALLER> <40F83815.7030803@tellme3times.com> <000501c46b82$9d28e500$024814ac@METALLER> <40F887D0.6070700@tellme3times.com> <000401c46bd7$2c1f83a0$024814ac@METALLER> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="LZvS9be/3tNcYl/X" Content-Disposition: inline In-Reply-To: <000401c46bd7$2c1f83a0$024814ac@METALLER> User-Agent: Mutt/1.5.6i X-Virus-Scanned: by amavisd-new (Rechenzentrum Universitaet Wuerzburg) cc: freebsd-multimedia@freebsd.org Subject: Re: OSS alternative X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 18 Jul 2004 11:04:04 -0000 --LZvS9be/3tNcYl/X Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Sat, 17.07.2004 at 12:22:11 +0400, Dmitriy Startsev wrote: > And please read my posts carefully. As I said, I don't have any problems > with FreeBSD's audio driver. It is 4Front OSS that doesn't work properly. Since you paid for it, you have the right to complain an make 4Front fix the bugs, so the product works for you. multimedia@ is not the place to discuss this. Please take this up with 4Front. Ulrich Spoerlein --=20 PGP Key ID: F0DB9F44 Get it while it's hot! PGP Fingerprint: F1CE D062 0CA9 ADE3 349B 2FE8 980A C6B5 F0DB 9F44 "They that can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety." -- Benjamin Franklin --LZvS9be/3tNcYl/X Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (FreeBSD) iD8DBQFA+lkfmArGtfDbn0QRAtxvAKCJte+TNtvF9vAC/sAAWVD3lFapWgCdGF8r WrSlPyjBZ3CtQQF2HNlmSD4= =93rd -----END PGP SIGNATURE----- --LZvS9be/3tNcYl/X-- From owner-freebsd-multimedia@FreeBSD.ORG Sun Jul 18 11:15:00 2004 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 016B516A4CE for ; Sun, 18 Jul 2004 11:15:00 +0000 (GMT) Received: from wrzx35.rz.uni-wuerzburg.de (wrzx35.rz.uni-wuerzburg.de [132.187.3.35]) by mx1.FreeBSD.org (Postfix) with ESMTP id 6D71E43D45 for ; Sun, 18 Jul 2004 11:14:59 +0000 (GMT) (envelope-from q@uni.de) Received: from wrzx34.rz.uni-wuerzburg.de (wrzx34.rz.uni-wuerzburg.de [132.187.3.34]) by wrzx35.rz.uni-wuerzburg.de (Postfix) with ESMTP id 876D6DC5B0; Sun, 18 Jul 2004 13:14:58 +0200 (CEST) Received: from virusscan (localhost [127.0.0.1]) by wrzx34.rz.uni-wuerzburg.de (Postfix) with ESMTP id 666C09CFC9; Sun, 18 Jul 2004 13:14:58 +0200 (CEST) Received: from wrzx28.rz.uni-wuerzburg.de (wrzx28.rz.uni-wuerzburg.de [132.187.3.28]) by wrzx34.rz.uni-wuerzburg.de (Postfix) with ESMTP id 2825A9CF31; Sun, 18 Jul 2004 13:14:58 +0200 (CEST) Received: from coyote.q.local (wwsx14.win-screen.uni-wuerzburg.de [132.187.253.14]) by wrzx28.rz.uni-wuerzburg.de (Postfix) with ESMTP id 0B435D3AE7; Sun, 18 Jul 2004 13:14:58 +0200 (CEST) Received: from roadrunner.q.local (roadrunner [192.168.0.147]) by coyote.q.local (8.12.10/8.12.10) with ESMTP id i6IBEvw2058111; Sun, 18 Jul 2004 13:14:57 +0200 (CEST) (envelope-from q@roadrunner.q.local) Date: Sun, 18 Jul 2004 13:14:56 +0200 From: Ulrich Spoerlein To: Sean Welch Message-ID: <20040718111456.GB512@galgenberg.net> Mail-Followup-To: Sean Welch , Julian Elischer , freebsd-multimedia@freebsd.org References: <20030714064137.GT35337@funkthat.com> <20040717230717.GA3193@NitroPhys.welchsmnet.net> <40F9B489.2030504@elischer.org> <20040718024806.GA3854@NitroPhys.welchsmnet.net> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="gatW/ieO32f1wygP" Content-Disposition: inline In-Reply-To: <20040718024806.GA3854@NitroPhys.welchsmnet.net> User-Agent: Mutt/1.5.6i X-Virus-Scanned: by amavisd-new (Rechenzentrum Universitaet Wuerzburg) cc: freebsd-multimedia@freebsd.org cc: Julian Elischer Subject: Re: BSD video capture (again!) X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 18 Jul 2004 11:15:00 -0000 --gatW/ieO32f1wygP Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Sat, 17.07.2004 at 21:48:06 -0500, Sean Welch wrote: > [Video for *BSD] Do you guys know about KGI [1], would this be helpful for the video display part? Perhaps there can be some synergy effects... [1] http://people.freebsd.org/~nsouch/kgi4BSD/ Ulrich Spoerlein --=20 PGP Key ID: F0DB9F44 Get it while it's hot! PGP Fingerprint: F1CE D062 0CA9 ADE3 349B 2FE8 980A C6B5 F0DB 9F44 "They that can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety." -- Benjamin Franklin --gatW/ieO32f1wygP Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (FreeBSD) iD8DBQFA+luwmArGtfDbn0QRAk3/AKDaZf4SRyyKbFYKyDGXMEBFCHD6lQCeNbjq K0Xiy6igyUOmoFxpXLjcB3o= =Qkzo -----END PGP SIGNATURE----- --gatW/ieO32f1wygP-- From owner-freebsd-multimedia@FreeBSD.ORG Sun Jul 18 19:18:39 2004 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 1B2A716A4CE for ; Sun, 18 Jul 2004 19:18:39 +0000 (GMT) Received: from lakermmtao10.cox.net (lakermmtao10.cox.net [68.230.240.29]) by mx1.FreeBSD.org (Postfix) with ESMTP id A2D5B43D49 for ; Sun, 18 Jul 2004 19:18:38 +0000 (GMT) (envelope-from conrads@cox.net) Received: from dolphin.local.net ([68.11.71.51]) by lakermmtao10.cox.net (InterMail vM.6.01.03.02 201-2131-111-104-20040324) with ESMTP id <20040718191836.JYIE1052.lakermmtao10.cox.net@dolphin.local.net> for ; Sun, 18 Jul 2004 15:18:36 -0400 Received: from dolphin.local.net (localhost.local.net [127.0.0.1]) by dolphin.local.net (8.12.11/8.12.11) with ESMTP id i6IJIbBY041830 for ; Sun, 18 Jul 2004 14:18:37 -0500 (CDT) (envelope-from conrads@dolphin.local.net) Received: (from conrads@localhost) by dolphin.local.net (8.12.11/8.12.11/Submit) id i6IJIbcL041829 for freebsd-multimedia@freebsd.org; Sun, 18 Jul 2004 14:18:37 -0500 (CDT) (envelope-from conrads) Message-ID: X-Mailer: XFMail 1.5.5 on FreeBSD X-Priority: 3 (Normal) Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 8bit MIME-Version: 1.0 Date: Sun, 18 Jul 2004 14:18:37 -0500 (CDT) Organization: A Rag-Tag Band of Drug-Crazed Hippies From: "Conrad J. Sabatier" To: freebsd-multimedia@freebsd.org Subject: Recent sound commits X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: conrads@cox.net List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 18 Jul 2004 19:18:39 -0000 Am I correct in thinking that the recent sound commits now provide the long-awaited "newmidi"? Just a quick perusal appears to support such a belief. I only ask because I've been unable to successfully complete a buildworld/buildkernel the last few days, so haven't had a chance to check this new stuff out firsthand. Has anyone successfully compiled a world/kernel recently, since these new sound commits? If so, how are they working out for you? -- Conrad J. Sabatier -- "In Unix veritas" From owner-freebsd-multimedia@FreeBSD.ORG Mon Jul 19 09:42:35 2004 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id B8E5516A4CE for ; Mon, 19 Jul 2004 09:42:35 +0000 (GMT) Received: from ns.stare.cz (ns.stare.cz [81.95.102.106]) by mx1.FreeBSD.org (Postfix) with ESMTP id 5A3AB43D1D for ; Mon, 19 Jul 2004 09:42:35 +0000 (GMT) (envelope-from hans@stare.cz) Received: by ns.stare.cz (Postfix, from userid 1001) id 0DF61B85F; Mon, 19 Jul 2004 11:46:51 +0200 (CEST) Date: Mon, 19 Jul 2004 11:46:51 +0200 From: Jan Stary To: freebsd-multimedia@freebsd.org Message-ID: <20040719094651.GA36852@ns.stare.cz> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4.2.1i Subject: TEAC W552G CD Burner X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Jul 2004 09:42:35 -0000 Hi, does anyone have experience with this CD burner, please? How well is it supported? Thanks Jan From owner-freebsd-multimedia@FreeBSD.ORG Mon Jul 19 17:53:33 2004 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 73D1516A4CF for ; Mon, 19 Jul 2004 17:53:33 +0000 (GMT) Received: from mail.ncircle.com (mail.ncircle.com [64.84.9.150]) by mx1.FreeBSD.org (Postfix) with ESMTP id 095C443D3F for ; Mon, 19 Jul 2004 17:53:33 +0000 (GMT) (envelope-from brian@ncircle.com) Received: from mail.ncircle.com (localhost.ncircle.com [127.0.0.1]) by mail.ncircle.com (8.12.10/8.12.8) with ESMTP id i6JHrF14041644; Mon, 19 Jul 2004 10:53:15 -0700 (PDT) (envelope-from brian@ncircle.com) Received: from localhost (bbuchanan@localhost)i6JHrFeh041641; Mon, 19 Jul 2004 10:53:15 -0700 (PDT) X-Authentication-Warning: mail.ncircle.com: bbuchanan owned process doing -bs Date: Mon, 19 Jul 2004 10:53:15 -0700 (PDT) From: Brian Buchanan X-X-Sender: bbuchanan@mail.ncircle.com To: Dennis Kanevsky In-Reply-To: Message-ID: <20040719105133.U39160@mail.ncircle.com> References: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Scanned-By: MIMEDefang 2.38 cc: freebsd-multimedia@freebsd.org Subject: Re: Does anybody know X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Jul 2004 17:53:33 -0000 On Wed, 14 Jul 2004, Dennis Kanevsky wrote: > Dear Sirs, > > Does anybody know 4-ports capture cards, working under Lunux/BSD system? > I can`t find any.. Only for Windows system... May be video-securyty > system build in the world only on Windows??? Dennis, Check out: http://www.smarthome.com/7789.html I have one of these. It works with the bktr driver on FreeBSD. Hope that helps. - Brian -- Brian Buchanan Principal Engineer nCircle Network Security http://www.ncircle.com/ From owner-freebsd-multimedia@FreeBSD.ORG Mon Jul 19 18:49:08 2004 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 1021C16A4CE for ; Mon, 19 Jul 2004 18:49:07 +0000 (GMT) Received: from hak.cnd.mcgill.ca (hak.cnd.mcgill.ca [132.216.11.133]) by mx1.FreeBSD.org (Postfix) with ESMTP id 68E0C43D49 for ; Mon, 19 Jul 2004 18:49:07 +0000 (GMT) (envelope-from mat@hak.cnd.mcgill.ca) Received: from hak.cnd.mcgill.ca (localhost [127.0.0.1]) by hak.cnd.mcgill.ca (8.12.9/8.12.8) with ESMTP id i6JIr3KJ032157; Mon, 19 Jul 2004 14:53:03 -0400 (EDT) (envelope-from mat@hak.cnd.mcgill.ca) Received: (from mat@localhost) by hak.cnd.mcgill.ca (8.12.9/8.12.8/Submit) id i6JIr3AF032156; Mon, 19 Jul 2004 14:53:03 -0400 (EDT) Date: Mon, 19 Jul 2004 14:53:03 -0400 From: Mathew Kanner To: Alexander Leidinger Message-ID: <20040719185303.GH28471@cnd.mcgill.ca> References: <20040629075337.81BEF16A4CF@hub.freebsd.org> <20040702173658.16f4ac5a@Magellan.Leidinger.net> <20040702164245.GF28342@cnd.mcgill.ca> <200407171325.44603.michaelnottebrock@gmx.net> <20040717163831.66a6f640@Magellan.Leidinger.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20040717163831.66a6f640@Magellan.Leidinger.net> User-Agent: Mutt/1.4.1i Organization: I speak for myself, operating in Montreal, CANADA X-Spam-Status: No, hits=0.0 required=5.0 tests=none autolearn=no version=2.62 X-Spam-Checker-Version: SpamAssassin 2.62 (2004-01-11) on hak.cnd.mcgill.ca cc: freebsd-multimedia@freebsd.org cc: Mathew Kanner Subject: Re: unimplemented sound ioctl X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Jul 2004 18:49:08 -0000 On Jul 17, Alexander Leidinger wrote: > On Sat, 17 Jul 2004 13:25:37 +0200 > Michael Nottebrock wrote: > > > > > ??????If someone has a commit-bit please do it. ?I won't be able to > > > > commit anything for a at least a couple of weeks. > > > > > > Done. > > > > Mat, Alexander: > > > > Perhaps you could make a similar arrangement for committing > > http://www.freebsd.org/cgi/query-pr.cgi?pr=59233 ? > > I don't have a -stable box with a soundcard (and I don't know how to > test it), but I can MFC it. I would like to MFC the SNDCTL_DSP_SETDUPLEX > bits too. Someone just needs to hand out an approval... My intenet is going to take at least a couple of more weeks to connect at home. In regards to PR59233, I would be happy if someone commited it in my absense (if this is bugging Micheal). In regards to SNDCTL_DSP_SETDUPLEX, I would be happy if Alexander commits it (assuming it compiles :) ) --Mat -- The state has no business in the bedrooms of the nation. - Pierre Elliott Trudeau From owner-freebsd-multimedia@FreeBSD.ORG Mon Jul 19 19:29:33 2004 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 1BE8E16A4CE; Mon, 19 Jul 2004 19:29:33 +0000 (GMT) Received: from lakermmtao03.cox.net (lakermmtao03.cox.net [68.230.240.36]) by mx1.FreeBSD.org (Postfix) with ESMTP id 9629343D53; Mon, 19 Jul 2004 19:29:32 +0000 (GMT) (envelope-from conrads@cox.net) Received: from dolphin.local.net ([68.11.71.51]) by lakermmtao03.cox.net (InterMail vM.6.01.03.02.01 201-2131-111-104-103-20040709) with ESMTP <20040719192928.BQMQ12850.lakermmtao03.cox.net@dolphin.local.net>; Mon, 19 Jul 2004 15:29:28 -0400 Received: from dolphin.local.net (localhost.local.net [127.0.0.1]) by dolphin.local.net (8.12.11/8.12.11) with ESMTP id i6JJTUge093822; Mon, 19 Jul 2004 14:29:30 -0500 (CDT) (envelope-from conrads@dolphin.local.net) Received: (from conrads@localhost) by dolphin.local.net (8.12.11/8.12.11/Submit) id i6JJTUb2093785; Mon, 19 Jul 2004 14:29:30 -0500 (CDT) (envelope-from conrads) Message-ID: X-Mailer: XFMail 1.5.5 on FreeBSD X-Priority: 3 (Normal) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="_=XFMail.1.5.5.FreeBSD:20040719142929:32170=_" Date: Mon, 19 Jul 2004 14:29:29 -0500 (CDT) Organization: A Rag-Tag Band of Drug-Crazed Hippies From: "Conrad J. Sabatier" To: freebsd-current@freebsd.org cc: freebsd-multimedia@freebsd.org Subject: [amd64] Sound breakage with snd_ich driver X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: conrads@cox.net List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Jul 2004 19:29:33 -0000 This message is in MIME format --_=XFMail.1.5.5.FreeBSD:20040719142929:32170=_ Content-Type: text/plain; charset=us-ascii This problem has persisted for the last several weeks now, close to a month or so, I would say. Playing MP3s using madplay, everything works fine for a while, then suddenly I get an "output: write: Invalid argument" error each time madplay starts up. Any further attempts to use sound via any method or app likewise fail. Sound remains broken until a reboot. Upgraded the system again yesterday, to the new "sound" drivers, same results. I've attached truss output from one of these failed madplay runs. -- Conrad J. Sabatier -- "In Unix veritas" --_=XFMail.1.5.5.FreeBSD:20040719142929:32170=_ Content-Disposition: attachment; filename="madplay.truss" Content-Transfer-Encoding: none Content-Description: madplay.truss Content-Type: text/plain; charset=us-ascii; name=madplay.truss; SizeOnDisk=30309 29458: mmap(0x0,7280,(0x3)PROT_READ|PROT_WRITE,(0x1000)MAP_ANON,4294967295,0x0) = 8595361792 (0x20052d000) 29458: munmap(0x20052d000,0x1c70) = 0 (0x0) 29458: __sysctl(0x7fffffffe460,0x2,0x2006347d0,0x7fffffffe458,0x0,0x0) = 0 (0x0) 29458: mmap(0x0,32768,(0x3)PROT_READ|PROT_WRITE,(0x1002)MAP_ANON|MAP_PRIVATE,429 4967295,0x0) = 8595361792 (0x20052d000) 29458: issetugid() = 0 (0x0) 29458: open("/etc/libmap.conf",0x0,0666) = 4 (0x4) 29458: fstat(4,0x7fffffffdcf0) = 0 (0x0) 29458: munmap(0x200531000,0x4000) = 0 (0x0) 29458: mmap(0x0,53248,(0x3)PROT_READ|PROT_WRITE,(0x1002)MAP_ANON|MAP_PRIVATE,429 4967295,0x0) = 8595378176 (0x200531000) 29458: read(0x4,0x200532000,0x4000) = 41 (0x29) 29458: read(0x4,0x200532000,0x4000) = 0 (0x0) 29458: close(4) = 0 (0x0) 29458: access("/usr/local/lib/libesd.so.2",0) = 0 (0x0) 29458: open("/usr/local/lib/libesd.so.2",0x0,0100024673770) = 4 (0x4) 29458: fstat(4,0x7fffffffe590) = 0 (0x0) 29458: read(0x4,0x2006336a0,0x1000) = 4096 (0x1000) 29458: mmap(0x0,1085440,(0x5)PROT_READ|PROT_EXEC,(0x20002)MAP_NOCORE|MAP_PRIVATE ,4,0x0) = 8596455424 (0x200638000) 29458: mprotect(0x20063e000,4096,(0x7)PROT_READ|PROT_WRITE|PROT_EXEC) = 0 (0x0) 29458: mprotect(0x20063e000,4096,(0x5)PROT_READ|PROT_EXEC) = 0 (0x0) 29458: mmap(0x20073f000,8192,(0x3)PROT_READ|PROT_WRITE,(0x12)MAP_FIXED|MAP_PRIVA TE,4,0x7000) = 8597532672 (0x20073f000) 29458: close(4) = 0 (0x0) 29458: access("/usr/local/lib/libintl.so.6",0) = 0 (0x0) 29458: open("/usr/local/lib/libintl.so.6",0x0,037777777774) = 4 (0x4) 29458: fstat(4,0x7fffffffe590) = 0 (0x0) 29458: read(0x4,0x2006336a0,0x1000) = 4096 (0x1000) 29458: mmap(0x0,1085440,(0x5)PROT_READ|PROT_EXEC,(0x20002)MAP_NOCORE|MAP_PRIVATE ,4,0x0) = 8597540864 (0x200741000) 29458: mprotect(0x200748000,4096,(0x7)PROT_READ|PROT_WRITE|PROT_EXEC) = 0 (0x0) 29458: mprotect(0x200748000,4096,(0x5)PROT_READ|PROT_EXEC) = 0 (0x0) 29458: mmap(0x200848000,8192,(0x3)PROT_READ|PROT_WRITE,(0x12)MAP_FIXED|MAP_PRIVA TE,4,0x7000) = 8598618112 (0x200848000) 29458: close(4) = 0 (0x0) 29458: access("/usr/local/lib/libmad.so.2",0) = 0 (0x0) 29458: open("/usr/local/lib/libmad.so.2",0x0,037777777774) = 4 (0x4) 29458: fstat(4,0x7fffffffe590) = 0 (0x0) 29458: read(0x4,0x2006336a0,0x1000) = 4096 (0x1000) 29458: mmap(0x0,1175552,(0x5)PROT_READ|PROT_EXEC,(0x20002)MAP_NOCORE|MAP_PRIVATE ,4,0x0) = 8598626304 (0x20084a000) 29458: mprotect(0x200866000,4096,(0x7)PROT_READ|PROT_WRITE|PROT_EXEC) = 0 (0x0) 29458: mprotect(0x200866000,4096,(0x5)PROT_READ|PROT_EXEC) = 0 (0x0) 29458: mmap(0x200967000,8192,(0x3)PROT_READ|PROT_WRITE,(0x12)MAP_FIXED|MAP_PRIVA TE,4,0x1d000) = 8599793664 (0x200967000) 29458: close(4) = 0 (0x0) 29458: access("/usr/local/lib/libid3tag.so.2",0) = 0 (0x0) 29458: open("/usr/local/lib/libid3tag.so.2",0x0,04) = 4 (0x4) 29458: fstat(4,0x7fffffffe590) = 0 (0x0) 29458: read(0x4,0x2006336a0,0x1000) = 4096 (0x1000) 29458: mmap(0x0,1142784,(0x5)PROT_READ|PROT_EXEC,(0x20002)MAP_NOCORE|MAP_PRIVATE ,4,0x0) = 8599801856 (0x200969000) 29458: mprotect(0x20097b000,4096,(0x7)PROT_READ|PROT_WRITE|PROT_EXEC) = 0 (0x0) 29458: mprotect(0x20097b000,4096,(0x5)PROT_READ|PROT_EXEC) = 0 (0x0) 29458: mmap(0x200a7c000,16384,(0x3)PROT_READ|PROT_WRITE,(0x12)MAP_FIXED|MAP_PRIV ATE,4,0x13000) = 8600928256 (0x200a7c000) 29458: close(4) = 0 (0x0) 29458: access("/usr/local/lib/libm.so.2",0) ERR#2 'No such file or directory' 29458: open("/var/run/ld-elf.so.hints",0x0,00) = 4 (0x4) 29458: read(0x4,0x7fffffffe580,0x80) = 128 (0x80) 29458: lseek(4,0x80,0x4) = 128 (0x80) 29458: read(0x4,0x200539000,0x6a) = 106 (0x6a) 29458: close(4) = 0 (0x0) 29458: access("/lib/libm.so.2",0) = 0 (0x0) 29458: open("/lib/libm.so.2",0x0,011) = 4 (0x4) 29458: fstat(4,0x7fffffffe590) = 0 (0x0) 29458: read(0x4,0x2006336a0,0x1000) = 4096 (0x1000) 29458: mmap(0x0,1179648,(0x5)PROT_READ|PROT_EXEC,(0x20002)MAP_NOCORE|MAP_PRIVATE ,4,0x0) = 8600944640 (0x200a80000) 29458: mprotect(0x200a99000,4096,(0x7)PROT_READ|PROT_WRITE|PROT_EXEC) = 0 (0x0) 29458: mprotect(0x200a99000,4096,(0x5)PROT_READ|PROT_EXEC) = 0 (0x0) 29458: mmap(0x200b99000,28672,(0x3)PROT_READ|PROT_WRITE,(0x12)MAP_FIXED|MAP_PRIV ATE,4,0x19000) = 8602095616 (0x200b99000) 29458: close(4) = 0 (0x0) 29458: access("/usr/local/lib/libc.so.5",0) ERR#2 'No such file or directory' 29458: access("/lib/libc.so.5",0) = 0 (0x0) 29458: open("/lib/libc.so.5",0x0,012) = 4 (0x4) 29458: fstat(4,0x7fffffffe590) = 0 (0x0) 29458: read(0x4,0x2006336a0,0x1000) = 4096 (0x1000) 29458: mmap(0x0,2056192,(0x5)PROT_READ|PROT_EXEC,(0x20002)MAP_NOCORE|MAP_PRIVATE ,4,0x0) = 8602124288 (0x200ba0000) 29458: mprotect(0x200c5d000,4096,(0x7)PROT_READ|PROT_WRITE|PROT_EXEC) = 0 (0x0) 29458: mprotect(0x200c5d000,4096,(0x5)PROT_READ|PROT_EXEC) = 0 (0x0) 29458: mmap(0x200d5e000,139264,(0x3)PROT_READ|PROT_WRITE,(0x12)MAP_FIXED|MAP_PRI VATE,4,0xbe000) = 8603951104 (0x200d5e000) 29458: mmap(0x200d80000,90112,(0x3)PROT_READ|PROT_WRITE,(0x1012)MAP_ANON|MAP_FIX ED|MAP_PRIVATE,4294967295,0x0) = 8604090368 (0x200d80000) 29458: close(4) = 0 (0x0) 29458: access("/usr/local/lib/libaudiofile.so.0",0) = 0 (0x0) 29458: open("/usr/local/lib/libaudiofile.so.0",0x0,037777777767) = 4 (0x4) 29458: fstat(4,0x7fffffffe590) = 0 (0x0) 29458: read(0x4,0x2006336a0,0x1000) = 4096 (0x1000) 29458: mmap(0x0,1216512,(0x5)PROT_READ|PROT_EXEC,(0x20002)MAP_NOCORE|MAP_PRIVATE ,4,0x0) = 8604180480 (0x200d96000) 29458: mprotect(0x200db6000,4096,(0x7)PROT_READ|PROT_WRITE|PROT_EXEC) = 0 (0x0) 29458: mprotect(0x200db6000,4096,(0x5)PROT_READ|PROT_EXEC) = 0 (0x0) 29458: mmap(0x200eb6000,36864,(0x3)PROT_READ|PROT_WRITE,(0x12)MAP_FIXED|MAP_PRIV ATE,4,0x20000) = 8605360128 (0x200eb6000) 29458: close(4) = 0 (0x0) 29458: access("/usr/local/lib/libm.so.2",0) ERR#2 'No such file or directory' 29458: access("/lib/libm.so.2",0) = 0 (0x0) 29458: access("/usr/local/lib/libiconv.so.3",0) = 0 (0x0) 29458: open("/usr/local/lib/libiconv.so.3",0x0,037777777770) = 4 (0x4) 29458: fstat(4,0x7fffffffe590) = 0 (0x0) 29458: read(0x4,0x2006336a0,0x1000) = 4096 (0x1000) 29458: mmap(0x0,2031616,(0x5)PROT_READ|PROT_EXEC,(0x20002)MAP_NOCORE|MAP_PRIVATE ,4,0x0) = 8605396992 (0x200ebf000) 29458: mprotect(0x200fa9000,4096,(0x7)PROT_READ|PROT_WRITE|PROT_EXEC) = 0 (0x0) 29458: mprotect(0x200fa9000,4096,(0x5)PROT_READ|PROT_EXEC) = 0 (0x0) 29458: mmap(0x2010aa000,20480,(0x3)PROT_READ|PROT_WRITE,(0x12)MAP_FIXED|MAP_PRIV ATE,4,0xeb000) = 8607408128 (0x2010aa000) 29458: close(4) = 0 (0x0) 29458: access("/usr/local/lib/libz.so.2",0) ERR#2 'No such file or directory' 29458: access("/lib/libz.so.2",0) = 0 (0x0) 29458: open("/lib/libz.so.2",0x0,011) = 4 (0x4) 29458: fstat(4,0x7fffffffe590) = 0 (0x0) 29458: read(0x4,0x2006336a0,0x1000) = 4096 (0x1000) 29458: mmap(0x0,1126400,(0x5)PROT_READ|PROT_EXEC,(0x20002)MAP_NOCORE|MAP_PRIVATE ,4,0x0) = 8607428608 (0x2010af000) 29458: mprotect(0x2010bf000,4096,(0x7)PROT_READ|PROT_WRITE|PROT_EXEC) = 0 (0x0) 29458: mprotect(0x2010bf000,4096,(0x5)PROT_READ|PROT_EXEC) = 0 (0x0) 29458: mmap(0x2011c0000,8192,(0x3)PROT_READ|PROT_WRITE,(0x12)MAP_FIXED|MAP_PRIVA TE,4,0x11000) = 8608546816 (0x2011c0000) 29458: close(4) = 0 (0x0) 29458: access("/lib/libm.so.2",0) = 0 (0x0) 29458: mmap(0x0,2112,(0x3)PROT_READ|PROT_WRITE,(0x1000)MAP_ANON,4294967295,0x0) = 8595431424 (0x20053e000) 29458: munmap(0x20053e000,0x840) = 0 (0x0) 29458: mmap(0x0,2544,(0x3)PROT_READ|PROT_WRITE,(0x1000)MAP_ANON,4294967295,0x0) = 8595431424 (0x20053e000) 29458: munmap(0x20053e000,0x9f0) = 0 (0x0) 29458: mmap(0x0,2016,(0x3)PROT_READ|PROT_WRITE,(0x1000)MAP_ANON,4294967295,0x0) = 8595431424 (0x20053e000) 29458: munmap(0x20053e000,0x7e0) = 0 (0x0) 29458: mmap(0x0,1472,(0x3)PROT_READ|PROT_WRITE,(0x1000)MAP_ANON,4294967295,0x0) = 8595431424 (0x20053e000) 29458: munmap(0x20053e000,0x5c0) = 0 (0x0) 29458: mmap(0x0,3152,(0x3)PROT_READ|PROT_WRITE,(0x1000)MAP_ANON,4294967295,0x0) = 8595431424 (0x20053e000) 29458: munmap(0x20053e000,0xc50) = 0 (0x0) 29458: mmap(0x0,4096,(0x3)PROT_READ|PROT_WRITE,(0x1000)MAP_ANON,4294967295,0x0) = 8595431424 (0x20053e000) 29458: munmap(0x20053e000,0x1000) = 0 (0x0) 29458: mmap(0x0,43808,(0x3)PROT_READ|PROT_WRITE,(0x1000)MAP_ANON,4294967295,0x0) = 8595431424 (0x20053e000) 29458: munmap(0x20053e000,0xab20) = 0 (0x0) 29458: mmap(0x0,5760,(0x3)PROT_READ|PROT_WRITE,(0x1000)MAP_ANON,4294967295,0x0) = 8595431424 (0x20053e000) 29458: munmap(0x20053e000,0x1680) = 0 (0x0) 29458: mmap(0x0,1056,(0x3)PROT_READ|PROT_WRITE,(0x1000)MAP_ANON,4294967295,0x0) = 8595431424 (0x20053e000) 29458: munmap(0x20053e000,0x420) = 0 (0x0) 29458: mmap(0x0,1920,(0x3)PROT_READ|PROT_WRITE,(0x1000)MAP_ANON,4294967295,0x0) = 8595431424 (0x20053e000) 29458: munmap(0x20053e000,0x780) = 0 (0x0) 29458: sigprocmask(0x1,0x2006335a0,0x7fffffffe610) = 0 (0x0) 29458: sigprocmask(0x3,0x2006335b0,0x0) = 0 (0x0) 29458: open("/usr/share/locale/en_US.ISO8859-1/LC_COLLATE",0x0,0666) = 4 (0x4) 29458: fstat(4,0x7fffffffdea0) = 0 (0x0) 29458: readlink("/etc/malloc.conf","aj",63) = 2 (0x2) 29458: issetugid() = 0 (0x0) 29458: mmap(0x0,4096,(0x3)PROT_READ|PROT_WRITE,(0x1002)MAP_ANON|MAP_PRIVATE,4294 967295,0x0) = 8595431424 (0x20053e000) 29458: break(0x514000) = 0 (0x0) 29458: break(0x518000) = 0 (0x0) 29458: read(0x4,0x514000,0x4000) = 4642 (0x1222) 29458: break(0x519000) = 0 (0x0) 29458: break(0x51a000) = 0 (0x0) 29458: break(0x51b000) = 0 (0x0) 29458: close(4) = 0 (0x0) 29458: open("/usr/share/locale/en_US.ISO8859-1/LC_CTYPE",0x0,0666) = 4 (0x4) 29458: fstat(4,0x7fffffffdf50) = 0 (0x0) 29458: fstat(4,0x7fffffffdd90) = 0 (0x0) 29458: break(0x51f000) = 0 (0x0) 29458: lseek(4,0x0,0x5954435f434c2f31) = 0 (0x0) 29458: lseek(4,0x0,0x5954435f434c2f31) = 0 (0x0) 29458: read(0x4,0x51b000,0x4000) = 4264 (0x10a8) 29458: close(4) = 0 (0x0) 29458: open("/usr/share/locale/en_US.ISO8859-1/LC_MONETARY",0x0,0377777777775770 0) = 4 (0x4) 29458: fstat(4,0x7fffffffdf40) = 0 (0x0) 29458: read(0x4,0x5130d0,0x22) = 34 (0x22) 29458: close(4) = 0 (0x0) 29458: open("/usr/share/locale/en_US.ISO8859-1/LC_NUMERIC",0x0,03777777777757700 ) = 4 (0x4) 29458: fstat(4,0x7fffffffdf40) = 0 (0x0) 29458: read(0x4,0x51a090,0x8) = 8 (0x8) 29458: close(4) = 0 (0x0) 29458: open("/usr/share/locale/en_US.ISO8859-1/LC_TIME",0x0,03777777777757700) = 4 (0x4) 29458: fstat(4,0x7fffffffdf40) = 0 (0x0) 29458: read(0x4,0x516010,0x179) = 377 (0x179) 29458: close(4) = 0 (0x0) 29458: open("/usr/share/locale/en_US.ISO8859-1/LC_MESSAGES",0x0,0377777777775770 0) = 4 (0x4) 29458: fstat(4,0x7fffffffdf40) = 0 (0x0) 29458: read(0x4,0x513110,0x12) = 18 (0x12) 29458: close(4) = 0 (0x0) 29458: ioctl(0,TIOCGETA,0x7fffffffe450) = 0 (0x0) 29458: getuid() = 1000 (0x3e8) 29458: geteuid() = 1000 (0x3e8) 29458: getgid() = 1000 (0x3e8) 29458: getegid() = 1000 (0x3e8) 29458: open("/usr/local/share/locale/locale.alias",0x0,0666) = 4 (0x4) 29458: fstat(4,0x7fffffffdf30) = 0 (0x0) 29458: read(0x4,0x51b000,0x4000) = 2687 (0xa7f) 29458: break(0x520000) = 0 (0x0) 29458: read(0x4,0x51b000,0x4000) = 0 (0x0) 29458: close(4) = 0 (0x0) 29458: open("/usr/local/share/locale/en_US.ISO8859-1/LC_MESSAGES/madplay.mo",0x0 ,01) ERR#2 'No such file or directory' 29458: open("/usr/local/share/locale/en_US.iso88591/LC_MESSAGES/madplay.mo",0x0, 01777777777777777777777) ERR#2 'No such file or directory' 29458: open("/usr/local/share/locale/en_US/LC_MESSAGES/madplay.mo",0x0,017777777 77777777777777) ERR#2 'No such file or directory' 29458: open("/usr/local/share/locale/en.ISO8859-1/LC_MESSAGES/madplay.mo",0x0,01 777777777777777777777) ERR#2 'No such file or directory' 29458: open("/usr/local/share/locale/en.iso88591/LC_MESSAGES/madplay.mo",0x0,017 77777777777777777777) ERR#2 'No such file or directory' 29458: open("/usr/local/share/locale/en/LC_MESSAGES/madplay.mo",0x0,017777777777 77777777777) = 4 (0x4) 29458: fstat(4,0x7fffffffe1e0) = 0 (0x0) 29458: mmap(0x0,437,(0x1)PROT_READ,(0x2)MAP_PRIVATE,4,0x0) = 8595435520 (0x20053 f000) 29458: close(4) = 0 (0x0) 29458: open("/usr/local/libdata/charset.alias",0x0,0666) = 4 (0x4) 29458: fstat(4,0x7fffffffdf00) = 0 (0x0) 29458: break(0x524000) = 0 (0x0) 29458: read(0x4,0x520000,0x4000) = 641 (0x281) 29458: read(0x4,0x520000,0x4000) = 0 (0x0) 29458: close(4) = 0 (0x0) 29458: write(2,0x7fffffffdb40,78) = 78 (0x4e) 29458: open("/dev/tty",0x0,03777777777763550) = 4 (0x4) 29458: ioctl(4,TIOCGETA,0x512400) = 0 (0x0) 29458: sigaction(SIGTSTP,0x0,{ SIG_DFL 0x0|ONSTACK|RESTART|RESETHAND|NOCLDSTOP|N ODEFER|NOCLDWAIT|SIGINFO ss_t }) = 0 (0x0) 29458: sigaction(SIGINT,0x0,{ SIG_DFL 0x0|ONSTACK|RESTART|RESETHAND|NOCLDSTOP|NO DEFER|NOCLDWAIT|SIGINFO ss_t }) = 0 (0x0) 29458: sigaction(SIGTSTP,{ 0x407fb4 0x0|ONSTACK|RESTART|RESETHAND|NOCLDSTOP|NODE FER|NOCLDWAIT|SIGINFO ss_t },0x0) = 0 (0x0) 29458: sigaction(SIGINT,{ 0x407fb4 0x0|ONSTACK|RESTART|RESETHAND|NOCLDSTOP|NODEF ER|NOCLDWAIT|SIGINFO ss_t },0x0) = 0 (0x0) 29458: ioctl(4,TIOCSETAF,0x7fffffffe3e0) = 0 (0x0) 29458: open("/dev/sound/dsp",0x1,00) ERR#2 'No such file or directory' 29458: open("/dev/dsp",0x1,01777777777777777777777) = 5 (0x5) 29458: open("Ultramarine - A User's Guide - 01 All of A Sudden.mp3",0x0,00) = 6 (0x6) 29458: dup(0x6) = 7 (0x7) 29458: getdtablesize() = 7322 (0x1c9a) 29458: fcntl(7,F_GETFL,0x0) = 0 (0x0) 29458: lseek(7,0x0,0x666f206c6c412031) = 0 (0x0) 29458: fstat(7,0x7fffffffe110) = 0 (0x0) 29458: lseek(7,0x0,0x666f206c6c412031) = 0 (0x0) 29458: lseek(7,0x0,0x666f206c6c412031) = 0 (0x0) 29458: fstat(7,0x7fffffffe200) = 0 (0x0) 29458: lseek(7,0xbefa00,0x666f206c6c412031) = 12515840 (0xbefa00) 29458: read(0x7,0x516400,0x200) = 419 (0x1a3) 29458: lseek(7,0x0,0x666f206c6c412031) = 0 (0x0) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: break(0x53c000) = 0 (0x0) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: read(0x7,0x516400,0x200) = 512 (0x200) 29458: break(0x551000) = 0 (0x0) 29458: break(0x54c000) = 0 (0x0) 29458: break(0x561000) = 0 (0x0) 29458: fstat(7,0x7fffffffe200) = 0 (0x0) 29458: lseek(7,0xbefa00,0x666f206c6c412031) = 12515840 (0xbefa00) 29458: read(0x7,0x516400,0x200) = 419 (0x1a3) 29458: lseek(7,0x0,0x666f206c6c412031) = 0 (0x0) 29458: write(2,0x7fffffffd9a0,28) = 28 (0x1c) 29458: write(2,0x7fffffffd9a0,13) = 13 (0xd) 29458: write(2,0x7fffffffd9a0,13) = 13 (0xd) 29458: write(2,0x7fffffffd9a0,13) = 13 (0xd) 29458: write(2,0x7fffffffd9a0,13) = 13 (0xd) 29458: write(2,0x7fffffffd9a0,13) = 13 (0xd) 29458: write(2,0x7fffffffd9a0,13) = 13 (0xd) 29458: write(2,0x7fffffffd9a0,13) = 13 (0xd) 29458: write(2,0x7fffffffd9a0,13) = 13 (0xd) 29458: write(2,0x7fffffffd9a0,13) = 13 (0xd) 29458: write(2,0x7fffffffd9a0,13) = 13 (0xd) 29458: write(2,0x7fffffffd9a0,13) = 13 (0xd) 29458: write(2,0x7fffffffd9a0,13) = 13 (0xd) 29458: write(2,0x7fffffffd9a0,13) = 13 (0xd) 29458: write(2,0x7fffffffd9a0,13) = 13 (0xd) 29458: write(2,0x7fffffffd9a0,24) = 24 (0x18) 29458: write(2,0x7fffffffd9a0,13) = 13 (0xd) 29458: write(2,0x7fffffffd9a0,13) = 13 (0xd) 29458: write(2,0x7fffffffd9a0,13) = 13 (0xd) 29458: write(2,0x7fffffffd9a0,13) = 13 (0xd) 29458: write(2,0x7fffffffd9a0,13) = 13 (0xd) 29458: write(2,0x7fffffffd9a0,13) = 13 (0xd) 29458: write(2,0x7fffffffd9a0,13) = 13 (0xd) 29458: write(2,0x7fffffffd9a0,13) = 13 (0xd) 29458: write(2,0x7fffffffd9a0,13) = 13 (0xd) 29458: write(2,0x7fffffffd9a0,13) = 13 (0xd) 29458: write(2,0x7fffffffd9a0,13) = 13 (0xd) 29458: write(2,0x7fffffffd9a0,13) = 13 (0xd) 29458: write(2,0x7fffffffd9a0,13) = 13 (0xd) 29458: write(2,0x7fffffffd9a0,13) = 13 (0xd) 29458: write(2,0x7fffffffd9a0,13) = 13 (0xd) 29458: write(2,0x7fffffffd9a0,13) = 13 (0xd) 29458: write(2,0x7fffffffd9a0,13) = 13 (0xd) 29458: write(2,0x7fffffffd9a0,13) = 13 (0xd) 29458: write(2,0x7fffffffd9a0,27) = 27 (0x1b) 29458: write(2,0x7fffffffd9a0,17) = 17 (0x11) 29458: write(2,0x7fffffffd9a0,17) = 17 (0x11) 29458: write(2,0x7fffffffd9a0,24) = 24 (0x18) 29458: write(2,0x7fffffffd9a0,40) = 40 (0x28) 29458: close(7) = 0 (0x0) 29458: break(0x530000) = 0 (0x0) 29458: fstat(6,0x7fffffffe2d0) = 0 (0x0) 29458: mmap(0x0,12516259,(0x1)PROT_READ,(0x1)MAP_SHARED,6,0x0) = 8608555008 (0x2 011c2000) 29458: madvise(0x2011c2000,0xbefba3,0x2) = 0 (0x0) 29458: read(0x4,0x7fffffffe11f,0x1) = 0 (0x0) 29458: ioctl(5,SNDCTL_DSP_SYNC,0x0) = 0 (0x0) 29458: ioctl(5,SNDCTL_DSP_SETFMT,0x7fffffffe164) ERR#19 'Operation not supported by device' 29458: ioctl(5,SNDCTL_DSP_SETFMT,0x7fffffffe164) = 0 (0x0) 29458: ioctl(5,SOUND_PCM_WRITE_CHANNELS,0x7fffffffe1a4) = 0 (0x0) 29458: ioctl(5,SNDCTL_DSP_SPEED,0x7fffffffe1a8) = 0 (0x0) 29458: write(5,0x7fffffff0970,4608) = 4608 (0x1200) 29458: read(0x4,0x7fffffffe11f,0x1) = 0 (0x0) 29458: write(5,0x7fffffff0970,4608) = 4608 (0x1200) 29458: read(0x4,0x7fffffffe11f,0x1) = 0 (0x0) 29458: write(5,0x7fffffff0970,4608) = 4608 (0x1200) 29458: read(0x4,0x7fffffffe11f,0x1) = 0 (0x0) 29458: write(5,0x7fffffff0970,4608) = 4608 (0x1200) 29458: read(0x4,0x7fffffffe11f,0x1) = 0 (0x0) 29458: write(5,0x7fffffff0970,4608) = 4608 (0x1200) 29458: read(0x4,0x7fffffffe11f,0x1) = 0 (0x0) 29458: write(5,0x7fffffff0970,4608) = 4608 (0x1200) 29458: read(0x4,0x7fffffffe11f,0x1) = 0 (0x0) 29458: write(5,0x7fffffff0970,4608) = 4608 (0x1200) 29458: read(0x4,0x7fffffffe11f,0x1) = 0 (0x0) 29458: write(5,0x7fffffff0970,4608) = 4608 (0x1200) 29458: read(0x4,0x7fffffffe11f,0x1) = 0 (0x0) 29458: write(5,0x7fffffff0970,4608) = 4608 (0x1200) 29458: read(0x4,0x7fffffffe11f,0x1) = 0 (0x0) 29458: write(5,0x7fffffff0970,4608) = 4608 (0x1200) 29458: read(0x4,0x7fffffffe11f,0x1) = 0 (0x0) 29458: write(5,0x7fffffff0970,4608) = 4608 (0x1200) 29458: read(0x4,0x7fffffffe11f,0x1) = 0 (0x0) 29458: write(5,0x7fffffff0970,4608) = 4608 (0x1200) 29458: read(0x4,0x7fffffffe11f,0x1) = 0 (0x0) 29458: write(5,0x7fffffff0970,4608) = 4608 (0x1200) 29458: read(0x4,0x7fffffffe11f,0x1) = 0 (0x0) 29458: write(5,0x7fffffff0970,4608) = 4608 (0x1200) 29458: read(0x4,0x7fffffffe11f,0x1) = 0 (0x0) 29458: write(5,0x7fffffff0970,4608) = 4608 (0x1200) 29458: read(0x4,0x7fffffffe11f,0x1) = 0 (0x0) 29458: write(5,0x7fffffff0970,4608) = 4608 (0x1200) 29458: read(0x4,0x7fffffffe11f,0x1) = 0 (0x0) 29458: write(5,0x7fffffff0970,4608) = 4608 (0x1200) 29458: read(0x4,0x7fffffffe11f,0x1) = 0 (0x0) 29458: write(5,0x7fffffff0970,4608) = 4608 (0x1200) 29458: read(0x4,0x7fffffffe11f,0x1) = 0 (0x0) 29458: write(5,0x7fffffff0970,4608) = 4608 (0x1200) 29458: read(0x4,0x7fffffffe11f,0x1) = 0 (0x0) 29458: write(5,0x7fffffff0970,4608) = 4608 (0x1200) 29458: read(0x4,0x7fffffffe11f,0x1) = 0 (0x0) 29458: write(5,0x7fffffff0970,4608) = 4608 (0x1200) 29458: read(0x4,0x7fffffffe11f,0x1) = 0 (0x0) 29458: write(5,0x7fffffff0970,4608) = 4608 (0x1200) 29458: read(0x4,0x7fffffffe11f,0x1) = 0 (0x0) 29458: write(5,0x7fffffff0970,4608) = 4608 (0x1200) 29458: read(0x4,0x7fffffffe11f,0x1) = 0 (0x0) 29458: write(5,0x7fffffff0970,4608) = 4608 (0x1200) 29458: read(0x4,0x7fffffffe11f,0x1) = 0 (0x0) 29458: write(5,0x7fffffff0970,4608) = 4608 (0x1200) 29458: read(0x4,0x7fffffffe11f,0x1) = 0 (0x0) 29458: write(5,0x7fffffff0970,4608) = 4608 (0x1200) 29458: read(0x4,0x7fffffffe11f,0x1) = 0 (0x0) 29458: write(5,0x7fffffff0970,4608) = 4608 (0x1200) 29458: read(0x4,0x7fffffffe11f,0x1) = 0 (0x0) 29458: write(5,0x7fffffff0970,4608) = 4608 (0x1200) 29458: read(0x4,0x7fffffffe11f,0x1) = 0 (0x0) 29458: write(5,0x7fffffff0970,4608) = 4608 (0x1200) 29458: read(0x4,0x7fffffffe11f,0x1) = 0 (0x0) 29458: write(5,0x7fffffff0970,4608) = 4608 (0x1200) 29458: read(0x4,0x7fffffffe11f,0x1) = 0 (0x0) 29458: write(5,0x7fffffff0970,4608) = 4608 (0x1200) 29458: read(0x4,0x7fffffffe11f,0x1) = 0 (0x0) 29458: write(5,0x7fffffff0970,4608) = 4608 (0x1200) 29458: read(0x4,0x7fffffffe11f,0x1) = 0 (0x0) 29458: write(5,0x7fffffff0970,4608) = 0 (0x0) 29458: write(5,0x7fffffff0970,4608) ERR#22 'Invalid argument' 29458: write(2,0x7fffffffd770,8) = 8 (0x8) 29458: writev(0x2,0x7fffffffd820,0x4) = 24 (0x18) 29458: munmap(0x2011c2000,0xbefba3) = 0 (0x0) 29458: close(6) = 0 (0x0) 29458: close(5) = 0 (0x0) 29458: ioctl(4,TIOCGETA,0x7fffffffe3d0) = 0 (0x0) 29458: ioctl(4,TIOCSETAW,0x512400) = 0 (0x0) 29458: sigaction(SIGINT,0x0,{ 0x407fb4 0x0|ONSTACK|RESTART|RESETHAND|NOCLDSTOP|N ODEFER|NOCLDWAIT|SIGINFO ss_t }) = 0 (0x0) 29458: sigaction(SIGINT,{ SIG_DFL 0x0|ONSTACK|RESTART|RESETHAND|NOCLDSTOP|NODEFE R|NOCLDWAIT|SIGINFO ss_t },0x0) = 0 (0x0) 29458: sigaction(SIGTSTP,0x0,{ 0x407fb4 0x0|ONSTACK|RESTART|RESETHAND|NOCLDSTOP| NODEFER|NOCLDWAIT|SIGINFO ss_t }) = 0 (0x0) 29458: sigaction(SIGTSTP,{ SIG_DFL 0x0|ONSTACK|RESTART|RESETHAND|NOCLDSTOP|NODEF ER|NOCLDWAIT|SIGINFO ss_t },0x0) = 0 (0x0) 29458: close(4) = 0 (0x0) 29458: exit(0x4) process exit, rval = 1024 --_=XFMail.1.5.5.FreeBSD:20040719142929:32170=_-- End of MIME message From owner-freebsd-multimedia@FreeBSD.ORG Mon Jul 19 23:22:11 2004 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 96BA816A4CF for ; Mon, 19 Jul 2004 23:22:11 +0000 (GMT) Received: from mproxy.gmail.com (rproxy.gmail.com [64.233.170.200]) by mx1.FreeBSD.org (Postfix) with SMTP id 3D47243D48 for ; Mon, 19 Jul 2004 23:22:11 +0000 (GMT) (envelope-from normal1@gmail.com) Received: by mproxy.gmail.com with SMTP id 73so624372rne for ; Mon, 19 Jul 2004 16:22:10 -0700 (PDT) Received: by 10.38.90.14 with SMTP id n14mr46419rnb; Mon, 19 Jul 2004 16:22:10 -0700 (PDT) Message-ID: <7df4e19b04071916224912e6eb@mail.gmail.com> Date: Mon, 19 Jul 2004 16:22:10 -0700 From: gabriel dandrades To: freebsd-multimedia@freebsd.org Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Subject: TV Out X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Jul 2004 23:22:11 -0000 Does anyone have any experience with TV out on freebsd. I've basically tried everything I could possibly think of to get the audio working. When I try to use an appllication like FXT the video comes up just fine but no audio, should the application complain about something being wrong with audio. I've posted this question before hoping someone has experience with it if not I'm gonna have to trash the card and thats a pretty good card :\ I've already done the physical side of troubleshooting as far as using speakers and headphones and verifying that there isnt sound coming out of the audio in or audio out of the TV tuner so I'm almost 80% sure its software or configuration related. Any Ideas? If not, anyone wanna bid on a TV Tuner? :P -- -gabriel From owner-freebsd-multimedia@FreeBSD.ORG Tue Jul 20 08:24:02 2004 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 7304A16A4CE; Tue, 20 Jul 2004 08:24:02 +0000 (GMT) Received: from gw.catspoiler.org (217-ip-163.nccn.net [209.79.217.163]) by mx1.FreeBSD.org (Postfix) with ESMTP id 407FE43D41; Tue, 20 Jul 2004 08:24:02 +0000 (GMT) (envelope-from truckman@FreeBSD.org) Received: from FreeBSD.org (mousie.catspoiler.org [192.168.101.2]) by gw.catspoiler.org (8.12.11/8.12.11) with ESMTP id i6K8Nrrc041129; Tue, 20 Jul 2004 01:23:56 -0700 (PDT) (envelope-from truckman@FreeBSD.org) Message-Id: <200407200823.i6K8Nrrc041129@gw.catspoiler.org> Date: Tue, 20 Jul 2004 01:23:52 -0700 (PDT) From: Don Lewis To: conrads@cox.net In-Reply-To: MIME-Version: 1.0 Content-Type: TEXT/plain; charset=us-ascii cc: freebsd-multimedia@FreeBSD.org cc: freebsd-current@FreeBSD.org Subject: Re: [amd64] Sound breakage with snd_ich driver X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jul 2004 08:24:02 -0000 On 19 Jul, Conrad J. Sabatier wrote: > This problem has persisted for the last several weeks now, close to a > month or so, I would say. > > Playing MP3s using madplay, everything works fine for a while, then > suddenly I get an "output: write: Invalid argument" error each time > madplay starts up. Any further attempts to use sound via any method or > app likewise fail. Sound remains broken until a reboot. > > Upgraded the system again yesterday, to the new "sound" drivers, same > results. > > I've attached truss output from one of these failed madplay runs. I suspect that the sound driver is getting interrupt timeouts and is marking the channel dead. Do you see the following message in /var/log/messages? play interrupt timeout, channel dead If so, I've seen other reports of this. I think the chn_write() code needs some careful analysis ... From owner-freebsd-multimedia@FreeBSD.ORG Tue Jul 20 11:55:21 2004 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id C352216A4CE; Tue, 20 Jul 2004 11:55:21 +0000 (GMT) Received: from lakermmtao09.cox.net (lakermmtao09.cox.net [68.230.240.30]) by mx1.FreeBSD.org (Postfix) with ESMTP id DF47143D2D; Tue, 20 Jul 2004 11:55:18 +0000 (GMT) (envelope-from conrads@cox.net) Received: from dolphin.local.net ([68.11.71.51]) by lakermmtao09.cox.net (InterMail vM.6.01.03.02.01 201-2131-111-104-103-20040709) with ESMTP <20040720115505.KODV17142.lakermmtao09.cox.net@dolphin.local.net>; Tue, 20 Jul 2004 07:55:05 -0400 Received: from dolphin.local.net (localhost.local.net [127.0.0.1]) by dolphin.local.net (8.12.11/8.12.11) with ESMTP id i6KBt2TI001779; Tue, 20 Jul 2004 06:55:02 -0500 (CDT) (envelope-from conrads@dolphin.local.net) Received: (from conrads@localhost) by dolphin.local.net (8.12.11/8.12.11/Submit) id i6KBt2kU001778; Tue, 20 Jul 2004 06:55:02 -0500 (CDT) (envelope-from conrads) Message-ID: X-Mailer: XFMail 1.5.5 on FreeBSD X-Priority: 3 (Normal) Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 8bit MIME-Version: 1.0 In-Reply-To: <200407200823.i6K8Nrrc041129@gw.catspoiler.org> Date: Tue, 20 Jul 2004 06:55:02 -0500 (CDT) Organization: A Rag-Tag Band of Drug-Crazed Hippies From: "Conrad J. Sabatier" To: Don Lewis cc: freebsd-multimedia@freebsd.org cc: freebsd-current@freebsd.org Subject: Re: [amd64] Sound breakage with snd_ich driver X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: conrads@cox.net List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jul 2004 11:55:21 -0000 On 20-Jul-2004 Don Lewis wrote: > On 19 Jul, Conrad J. Sabatier wrote: >> This problem has persisted for the last several weeks now, close to >> a month or so, I would say. >> >> Playing MP3s using madplay, everything works fine for a while, then >> suddenly I get an "output: write: Invalid argument" error each time >> madplay starts up. Any further attempts to use sound via any method >> or app likewise fail. Sound remains broken until a reboot. >> >> Upgraded the system again yesterday, to the new "sound" drivers, >> same results. >> >> I've attached truss output from one of these failed madplay runs. > > I suspect that the sound driver is getting interrupt timeouts and is > marking the channel dead. Do you see the following message in > /var/log/messages? > play interrupt timeout, channel dead > If so, I've seen other reports of this. Yes, that's exactly right. > I think the chn_write() code needs some careful analysis ... That, as well as whatever is still causing these: ad0: TIMEOUT - WRITE_DMA retrying (2 retries left) LBA=123971136 -- Conrad J. Sabatier -- "In Unix veritas" From owner-freebsd-multimedia@FreeBSD.ORG Tue Jul 20 12:22:57 2004 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 2033816A4CE; Tue, 20 Jul 2004 12:22:57 +0000 (GMT) Received: from smtp-out3.blueyonder.co.uk (smtp-out3.blueyonder.co.uk [195.188.213.6]) by mx1.FreeBSD.org (Postfix) with ESMTP id 952B643D2F; Tue, 20 Jul 2004 12:22:56 +0000 (GMT) (envelope-from steve@pepcross.dyndns.org) Received: from pepcross.dyndns.org ([82.33.90.59]) by smtp-out3.blueyonder.co.uk with Microsoft SMTPSVC(5.0.2195.6713); Tue, 20 Jul 2004 13:23:13 +0100 Received: (from steve@localhost) by pepcross.dyndns.org (8.12.10/8.12.10/Submit) id i6KCN4aD005360; Tue, 20 Jul 2004 13:23:04 +0100 (BST) (envelope-from steve) Date: Tue, 20 Jul 2004 13:23:04 +0100 From: Steve Roome To: "Conrad J. Sabatier" Message-ID: <20040720122304.GA5158@dylan.home> Mail-Followup-To: Steve Roome , "Conrad J. Sabatier" , freebsd-multimedia@freebsd.org, freebsd-current@freebsd.org References: <200407200823.i6K8Nrrc041129@gw.catspoiler.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.4.1i X-OriginalArrivalTime: 20 Jul 2004 12:23:13.0190 (UTC) FILETIME=[53968C60:01C46E54] cc: freebsd-multimedia@freebsd.org cc: freebsd-current@freebsd.org Subject: Re: [amd64] Sound breakage with snd_ich driver X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jul 2004 12:22:57 -0000 On Tue, Jul 20, 2004 at 06:55:02AM -0500, Conrad J. Sabatier wrote: > That, as well as whatever is still causing these: > > ad0: TIMEOUT - WRITE_DMA retrying (2 retries left) LBA=123971136 Is it a SIL3112 SATA controller ? IIRC someone (not mentioning any names) was claiming it was broken silicon - although to be fair it doesn't "break" the same way under windows xp. Getting it fixed would be nice though. Steve From owner-freebsd-multimedia@FreeBSD.ORG Tue Jul 20 12:41:44 2004 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id AFF1216A4CE; Tue, 20 Jul 2004 12:41:44 +0000 (GMT) Received: from kyoto.netlab.nec.de (kyoto.netlab.nec.de [195.37.70.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id 9732443D4C; Tue, 20 Jul 2004 12:41:43 +0000 (GMT) (envelope-from lars.eggert@netlab.nec.de) Received: from [10.1.1.112] (marseille.netlab.nec.de [195.37.70.15]) by kyoto.netlab.nec.de (Postfix) with ESMTP id 87C8B1BAC4D; Tue, 20 Jul 2004 14:41:38 +0200 (CEST) Message-ID: <40FD12FE.4030908@netlab.nec.de> Date: Tue, 20 Jul 2004 14:41:34 +0200 From: Lars Eggert Organization: NEC Network Laboratories User-Agent: Mozilla Thunderbird 0.7.1 (Macintosh/20040626) X-Accept-Language: en-us, en MIME-Version: 1.0 To: freebsd-multimedia@freebsd.org, nork@freebsd.org Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg=sha1; boundary="------------ms080500010802010802040903" Subject: Darwin Streaming Server on -current? X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jul 2004 12:41:44 -0000 This is a cryptographically signed message in MIME format. --------------ms080500010802010802040903 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Hi, is anyone successfully using the Darwin Streaming Server port on -current? I've been fiddling with ours for a few weeks, but it keeps crashing with signals 10 and 11 when being streamed to. (I know that these signals can indicate hardware issues; that seems unlikely as this is the only executable thatshows these issues.) Any clues? Thanks, Lars PS: The core dump isn't really useful (lots of ??), but it showed some threading-related functions, so on a hunch I compiled against libc_r and things look better... -- Lars Eggert NEC Network Laboratories --------------ms080500010802010802040903 Content-Type: application/x-pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIJpzCC Ay4wggKXoAMCAQICAwyFWjANBgkqhkiG9w0BAQQFADBiMQswCQYDVQQGEwJaQTElMCMGA1UE ChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkgTHRkLjEsMCoGA1UEAxMjVGhhd3RlIFBlcnNv bmFsIEZyZWVtYWlsIElzc3VpbmcgQ0EwHhcNMDQwNjE3MDcyMjAzWhcNMDUwNjE3MDcyMjAz WjCBhDEPMA0GA1UEBBMGRWdnZXJ0MQ0wCwYDVQQqEwRMYXJzMRQwEgYDVQQDEwtMYXJzIEVn Z2VydDEoMCYGCSqGSIb3DQEJARYZbGFycy5lZ2dlcnRAbmV0bGFiLm5lYy5kZTEiMCAGCSqG SIb3DQEJARYTbGFycy5lZ2dlcnRAZ214Lm5ldDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC AQoCggEBAOowMZjwQREXIdWxQacJDyqczykKpfIVmid2m8xBuUO53uWgnK3F8R20u/7PVugU zjNNqaivnU6qHtr/jdAn1UnyXzA/4Re+AqsKNiw8hZkVonkJ+G4O0TFzMNeWUdrjX1FaSAsL uAPA6661cN4YDzrOYC3O3zgGtVvJAra0+iw9eD2qWsnH0AVLFtq7H5ZFhz5zeOeCrrayqEhf S6tnTSjBzaH8SOdeemPTxdLRbMptLSy7lEFo8f1xisltw2eRT0txoUCqq0mjFEp8LgJ+s6p1 4M4cG3CDkKd5kNjdTWaokAo4qmpfF9IyA7uheaAHAz8UOH5GsH+Vkjbz5yFO1SsCAwEAAaNL MEkwOQYDVR0RBDIwMIEZbGFycy5lZ2dlcnRAbmV0bGFiLm5lYy5kZYETbGFycy5lZ2dlcnRA Z214Lm5ldDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBBAUAA4GBAE9rOnUtJERYLNbDztLI sH4AolAWkvNKoj7Ikst1M1X3myXqxYAHa9bsoPJy15qEV2B4ftOmJLrZL9kb8RZnzGBii8a/ XQ5wqaHZAJYcxQ6lp6UDTabhQN7J1trAOKgs+PFlF3lm6NOkXygiQH5PPO5kIHRjNvXpNGYe C7S3K8YsMIIDLjCCApegAwIBAgIDDIVaMA0GCSqGSIb3DQEBBAUAMGIxCzAJBgNVBAYTAlpB MSUwIwYDVQQKExxUaGF3dGUgQ29uc3VsdGluZyAoUHR5KSBMdGQuMSwwKgYDVQQDEyNUaGF3 dGUgUGVyc29uYWwgRnJlZW1haWwgSXNzdWluZyBDQTAeFw0wNDA2MTcwNzIyMDNaFw0wNTA2 MTcwNzIyMDNaMIGEMQ8wDQYDVQQEEwZFZ2dlcnQxDTALBgNVBCoTBExhcnMxFDASBgNVBAMT C0xhcnMgRWdnZXJ0MSgwJgYJKoZIhvcNAQkBFhlsYXJzLmVnZ2VydEBuZXRsYWIubmVjLmRl MSIwIAYJKoZIhvcNAQkBFhNsYXJzLmVnZ2VydEBnbXgubmV0MIIBIjANBgkqhkiG9w0BAQEF AAOCAQ8AMIIBCgKCAQEA6jAxmPBBERch1bFBpwkPKpzPKQql8hWaJ3abzEG5Q7ne5aCcrcXx HbS7/s9W6BTOM02pqK+dTqoe2v+N0CfVSfJfMD/hF74Cqwo2LDyFmRWieQn4bg7RMXMw15ZR 2uNfUVpICwu4A8DrrrVw3hgPOs5gLc7fOAa1W8kCtrT6LD14PapaycfQBUsW2rsflkWHPnN4 54KutrKoSF9Lq2dNKMHNofxI5156Y9PF0tFsym0tLLuUQWjx/XGKyW3DZ5FPS3GhQKqrSaMU SnwuAn6zqnXgzhwbcIOQp3mQ2N1NZqiQCjiqal8X0jIDu6F5oAcDPxQ4fkawf5WSNvPnIU7V KwIDAQABo0swSTA5BgNVHREEMjAwgRlsYXJzLmVnZ2VydEBuZXRsYWIubmVjLmRlgRNsYXJz LmVnZ2VydEBnbXgubmV0MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQEEBQADgYEAT2s6dS0k RFgs1sPO0siwfgCiUBaS80qiPsiSy3UzVfebJerFgAdr1uyg8nLXmoRXYHh+06Ykutkv2Rvx FmfMYGKLxr9dDnCpodkAlhzFDqWnpQNNpuFA3snW2sA4qCz48WUXeWbo06RfKCJAfk887mQg dGM29ek0Zh4LtLcrxiwwggM/MIICqKADAgECAgENMA0GCSqGSIb3DQEBBQUAMIHRMQswCQYD VQQGEwJaQTEVMBMGA1UECBMMV2VzdGVybiBDYXBlMRIwEAYDVQQHEwlDYXBlIFRvd24xGjAY BgNVBAoTEVRoYXd0ZSBDb25zdWx0aW5nMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZp Y2VzIERpdmlzaW9uMSQwIgYDVQQDExtUaGF3dGUgUGVyc29uYWwgRnJlZW1haWwgQ0ExKzAp BgkqhkiG9w0BCQEWHHBlcnNvbmFsLWZyZWVtYWlsQHRoYXd0ZS5jb20wHhcNMDMwNzE3MDAw MDAwWhcNMTMwNzE2MjM1OTU5WjBiMQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENv bnN1bHRpbmcgKFB0eSkgTHRkLjEsMCoGA1UEAxMjVGhhd3RlIFBlcnNvbmFsIEZyZWVtYWls IElzc3VpbmcgQ0EwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMSmPFVzVftOucqZWh5o wHUEcJ3f6f+jHuy9zfVb8hp2vX8MOmHyv1HOAdTlUAow1wJjWiyJFXCO3cnwK4Vaqj9xVsuv PAsH5/EfkTYkKhPPK9Xzgnc9A74r/rsYPge/QIACZNenprufZdHFKlSFD0gEf6e20TxhBEAe ZBlyYLf7AgMBAAGjgZQwgZEwEgYDVR0TAQH/BAgwBgEB/wIBADBDBgNVHR8EPDA6MDigNqA0 hjJodHRwOi8vY3JsLnRoYXd0ZS5jb20vVGhhd3RlUGVyc29uYWxGcmVlbWFpbENBLmNybDAL BgNVHQ8EBAMCAQYwKQYDVR0RBCIwIKQeMBwxGjAYBgNVBAMTEVByaXZhdGVMYWJlbDItMTM4 MA0GCSqGSIb3DQEBBQUAA4GBAEiM0VCD6gsuzA2jZqxnD3+vrL7CF6FDlpSdf0whuPg2H6ot nzYvwPQcUCCTcDz9reFhYsPZOhl+hLGZGwDFGguCdJ4lUJRix9sncVcljd2pnDmOjCBPZV+V 2vf3h9bGCE6u9uo05RAaWzVNd+NWIXiC3CEZNd4ksdMdRv9dX2VPMYIDOzCCAzcCAQEwaTBi MQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkgTHRkLjEs MCoGA1UEAxMjVGhhd3RlIFBlcnNvbmFsIEZyZWVtYWlsIElzc3VpbmcgQ0ECAwyFWjAJBgUr DgMCGgUAoIIBpzAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0w NDA3MjAxMjQxMzRaMCMGCSqGSIb3DQEJBDEWBBRLuJOniF4/uiWIB+cKf2orohzFYDBSBgkq hkiG9w0BCQ8xRTBDMAoGCCqGSIb3DQMHMA4GCCqGSIb3DQMCAgIAgDANBggqhkiG9w0DAgIB QDAHBgUrDgMCBzANBggqhkiG9w0DAgIBKDB4BgkrBgEEAYI3EAQxazBpMGIxCzAJBgNVBAYT AlpBMSUwIwYDVQQKExxUaGF3dGUgQ29uc3VsdGluZyAoUHR5KSBMdGQuMSwwKgYDVQQDEyNU aGF3dGUgUGVyc29uYWwgRnJlZW1haWwgSXNzdWluZyBDQQIDDIVaMHoGCyqGSIb3DQEJEAIL MWugaTBiMQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkg THRkLjEsMCoGA1UEAxMjVGhhd3RlIFBlcnNvbmFsIEZyZWVtYWlsIElzc3VpbmcgQ0ECAwyF WjANBgkqhkiG9w0BAQEFAASCAQDDrFpaArxvvQWMK98H33JdDdqwxLZo/SOVBzf/HlzYq0we MKWFykyKnOAFnOuoGh+CgId1y2jMdcHL1DJvoIQm9enjD0TzOazOW5idan3c3vNVdPiWuHQq xxukt8r29ddsu1fA9bRXvp+gYd3JDk9np6AoMZpMVtCq0lHP8Kh8wb9fG8vdfpU72aVq9CXA 1sNci89gjuKY3S25s+giHtRtsF7Y5dRQeAxAnaNvdYXJQ+KJSHXnPzsmMzEw3OXsjp/+M541 ICKrA+Rx1YWf8uVEt7C5G/sijr7KZm2l06PmnTPMDjdw1JiQ/NqeTZ3i+CqsvYzBSj5B+3ts dkeI/PBqAAAAAAAA --------------ms080500010802010802040903-- From owner-freebsd-multimedia@FreeBSD.ORG Tue Jul 20 23:32:09 2004 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id B71A316A4CE; Tue, 20 Jul 2004 23:32:09 +0000 (GMT) Received: from lakermmtao05.cox.net (lakermmtao05.cox.net [68.230.240.34]) by mx1.FreeBSD.org (Postfix) with ESMTP id 36D3D43D5D; Tue, 20 Jul 2004 23:32:09 +0000 (GMT) (envelope-from conrads@cox.net) Received: from dolphin.local.net ([68.11.71.51]) by lakermmtao05.cox.net (InterMail vM.6.01.03.02.01 201-2131-111-104-103-20040709) with ESMTP <20040720233207.GEKQ27302.lakermmtao05.cox.net@dolphin.local.net>; Tue, 20 Jul 2004 19:32:07 -0400 Received: from dolphin.local.net (localhost.local.net [127.0.0.1]) by dolphin.local.net (8.12.11/8.12.11) with ESMTP id i6KNW8BQ007570; Tue, 20 Jul 2004 18:32:08 -0500 (CDT) (envelope-from conrads@dolphin.local.net) Received: (from conrads@localhost) by dolphin.local.net (8.12.11/8.12.11/Submit) id i6KNW7Z3007569; Tue, 20 Jul 2004 18:32:07 -0500 (CDT) (envelope-from conrads) Message-ID: X-Mailer: XFMail 1.5.5 on FreeBSD X-Priority: 3 (Normal) Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 8bit MIME-Version: 1.0 In-Reply-To: <20040720122304.GA5158@dylan.home> Date: Tue, 20 Jul 2004 18:32:07 -0500 (CDT) Organization: A Rag-Tag Band of Drug-Crazed Hippies From: "Conrad J. Sabatier" To: Steve Roome cc: freebsd-multimedia@freebsd.org cc: freebsd-current@freebsd.org Subject: Re: [amd64] Sound breakage with snd_ich driver X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: conrads@cox.net List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jul 2004 23:32:09 -0000 On 20-Jul-2004 Steve Roome wrote: > On Tue, Jul 20, 2004 at 06:55:02AM -0500, Conrad J. Sabatier wrote: >> That, as well as whatever is still causing these: >> >> ad0: TIMEOUT - WRITE_DMA retrying (2 retries left) LBA=123971136 > > Is it a SIL3112 SATA controller ? IIRC someone (not mentioning any > names) was claiming it was broken silicon - although to be fair it > doesn't "break" the same way under windows xp. No, mine uses the nVidia nForce3 chipset: atapci0: port 0xffa0-0xffaf,0x376,0x170-0x177,0x3f6,0x1f0-0x1f7 at device 8.0 on pci0 One oddity that I hadn't previously mentioned is that I can't get UDMA higher than 100 on this machine. Don't know if that's a limitation of the drive, or the cable, or what: ad0: 190782MB [387621/16/63] at ata0-master UDMA100 > Getting it fixed would be nice though. Yes, it would be. :-) -- Conrad J. Sabatier -- "In Unix veritas" From owner-freebsd-multimedia@FreeBSD.ORG Wed Jul 21 08:40:13 2004 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 376C016A4CE; Wed, 21 Jul 2004 08:40:13 +0000 (GMT) Received: from mx2.mail.ru (mx2.mail.ru [194.67.23.122]) by mx1.FreeBSD.org (Postfix) with ESMTP id CEF2B43D4C; Wed, 21 Jul 2004 08:40:12 +0000 (GMT) (envelope-from metal_man@mail.ru) Received: from [217.118.66.254] (port=12894 helo=METALLER) by mx2.mail.ru with smtp id 1BnCe0-0009yj-00; Wed, 21 Jul 2004 12:40:10 +0400 Message-ID: <000501c46efe$56ce0f70$928114ac@METALLER> From: "Dmitriy Startsev" To: References: Date: Wed, 21 Jul 2004 12:40:05 +0400 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2800.1106 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 FL-Build: Fidolook 2004 (HL) 6.0.2600.32000 - 17/4/2004 06:54:21 X-Spam: Not detected cc: freebsd-multimedia@freebsd.org cc: freebsd-current@freebsd.org Subject: Re: [amd64] Sound breakage with snd_ich driver X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jul 2004 08:40:13 -0000 Hello, Conrad! You wrote to "Steve Roome" on Tue, 20 Jul 2004 18:32:07 -0500 (CDT): CJS> No, mine uses the nVidia nForce3 chipset: CJS> atapci0: port CJS> 0xffa0-0xffaf,0x376,0x170-0x177,0x3f6,0x1f0-0x1f7 at device 8.0 on CJS> pci0 CJS> One oddity that I hadn't previously mentioned is that I can't get UDMA CJS> higher than 100 on this machine. Don't know if that's a limitation of CJS> the drive, or the cable, or what: CJS> ad0: 190782MB [387621/16/63] at ata0-master UDMA100 I have VIA KT400 chipset (which supports UDMA133) and Samsung SP1203N HDD, but can't get UDMA higher than 100 too. It seems to me this is a problem of FreeBSD drivers, not a hardware (under Windows UDMA133 supported without problems). With best regards, Dmitriy Startsev. From owner-freebsd-multimedia@FreeBSD.ORG Wed Jul 21 14:35:37 2004 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 4BECC16A4CE; Wed, 21 Jul 2004 14:35:37 +0000 (GMT) Received: from sccrmhc12.comcast.net (sccrmhc12.comcast.net [204.127.202.56]) by mx1.FreeBSD.org (Postfix) with ESMTP id DEF8343D5A; Wed, 21 Jul 2004 14:35:36 +0000 (GMT) (envelope-from garycor@comcast.net) Received: from [10.56.78.111] (pcp09118143pcs.union01.nj.comcast.net[69.142.234.88]) by comcast.net (sccrmhc12) with ESMTP id <2004072114353501200fnjs5e> (Authid: garycor); Wed, 21 Jul 2004 14:35:36 +0000 Message-ID: <40FE7F94.5080605@comcast.net> Date: Wed, 21 Jul 2004 10:37:08 -0400 From: Gary Corcoran User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040616 X-Accept-Language: en-us, en MIME-Version: 1.0 To: conrads@cox.net References: In-Reply-To: Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit cc: freebsd-multimedia@freebsd.org cc: freebsd-current@freebsd.org cc: Steve Roome Subject: Re: [amd64] Sound breakage with snd_ich driver X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jul 2004 14:35:37 -0000 Conrad J. Sabatier wrote: > > No, mine uses the nVidia nForce3 chipset: > > atapci0: port > 0xffa0-0xffaf,0x376,0x170-0x177,0x3f6,0x1f0-0x1f7 at device 8.0 on pci0 > > One oddity that I hadn't previously mentioned is that I can't get UDMA > higher than 100 on this machine. Don't know if that's a limitation of > the drive, or the cable, or what: > > ad0: 190782MB [387621/16/63] at ata0-master UDMA100 I believe Maxtor is the only drive maker that supports UDMA133. ST sounds like a Seagate drive, so that will only go up to UDMA100. Gary From owner-freebsd-multimedia@FreeBSD.ORG Wed Jul 21 14:40:12 2004 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id BA6CD16A4CE for ; Wed, 21 Jul 2004 14:40:12 +0000 (GMT) Received: from mail.tellme3times.com (dsl-yul-102.e-scape.net [209.47.218.102]) by mx1.FreeBSD.org (Postfix) with ESMTP id BBCC643D31 for ; Wed, 21 Jul 2004 14:40:11 +0000 (GMT) (envelope-from list@tellme3times.com) Received: from tellme3times.com (halla.tellme3times.com [192.168.7.29]) by mail.tellme3times.com (Postfix) with ESMTP id 4127B40DC for ; Wed, 21 Jul 2004 10:35:49 -0400 (EDT) Message-ID: <40FE81B5.9050801@tellme3times.com> Date: Wed, 21 Jul 2004 10:46:13 -0400 From: Chris User-Agent: Mozilla Thunderbird 0.5 (X11/20040413) X-Accept-Language: en-us, en MIME-Version: 1.0 To: freebsd-multimedia@freebsd.org Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Subject: CD+G X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jul 2004 14:40:12 -0000 Does anyone know how to copy a Karaoke CD+G? My kids have destroyed two allready. It would hurt less if they were copies. Chris From owner-freebsd-multimedia@FreeBSD.ORG Thu Jul 22 10:18:13 2004 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id B9B5716A4CE for ; Thu, 22 Jul 2004 10:18:13 +0000 (GMT) Received: from mailout07.sul.t-online.com (mailout07.sul.t-online.com [194.25.134.83]) by mx1.FreeBSD.org (Postfix) with ESMTP id 52E5843D4C for ; Thu, 22 Jul 2004 10:18:13 +0000 (GMT) (envelope-from Alexander@Leidinger.net) Received: from fwd03.aul.t-online.de by mailout07.sul.t-online.com with smtp id 1BnaeP-0001Ra-08; Thu, 22 Jul 2004 12:18:09 +0200 Received: from Andro-Beta.Leidinger.net (TETUHrZTwevK1fXt0DfRgLqtzi+tOHRy3zHmWFNMEAMHg4f5DC9U6+@[217.83.19.127]) by fmrl03.sul.t-online.com with esmtp id 1BnaeL-1lY40m0; Thu, 22 Jul 2004 12:18:05 +0200 Received: from Magellan.Leidinger.net (Magellan.Leidinger.net [192.168.1.1]) i6MAI65m083661; Thu, 22 Jul 2004 12:18:06 +0200 (CEST) (envelope-from Alexander@Leidinger.net) Date: Thu, 22 Jul 2004 12:18:30 +0200 From: Alexander Leidinger To: freebsd-multimedia@freebsd.org Message-Id: <20040722121830.6ab320b2@Magellan.Leidinger.net> In-Reply-To: <40FE81B5.9050801@tellme3times.com> References: <40FE81B5.9050801@tellme3times.com> X-Mailer: Sylpheed-Claws 0.9.12 (GTK+ 1.2.10; i386-portbld-freebsd5.2) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-ID: TETUHrZTwevK1fXt0DfRgLqtzi+tOHRy3zHmWFNMEAMHg4f5DC9U6+@t-dialin.net Subject: Re: CD+G X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jul 2004 10:18:13 -0000 On Wed, 21 Jul 2004 10:46:13 -0400 Chris wrote: > Does anyone know how to copy a Karaoke CD+G? > > My kids have destroyed two allready. It would hurt less if they were copies. cdrdao should be able to copy it. Bye, Alexander. -- I'm available to get hired (preferred in .lu). http://www.Leidinger.net Alexander @ Leidinger.net GPG fingerprint = C518 BC70 E67F 143F BE91 3365 79E2 9C60 B006 3FE7 From owner-freebsd-multimedia@FreeBSD.ORG Thu Jul 22 13:26:41 2004 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 99BDB16A4CE for ; Thu, 22 Jul 2004 13:26:41 +0000 (GMT) Received: from mail.tellme3times.com (dsl-yul-102.e-scape.net [209.47.218.102]) by mx1.FreeBSD.org (Postfix) with ESMTP id 2526543D2D for ; Thu, 22 Jul 2004 13:26:41 +0000 (GMT) (envelope-from list@tellme3times.com) Received: from tellme3times.com (halla.tellme3times.com [192.168.7.29]) by mail.tellme3times.com (Postfix) with ESMTP id E930D41F5; Thu, 22 Jul 2004 09:22:14 -0400 (EDT) Message-ID: <40FFC1FB.1090000@tellme3times.com> Date: Thu, 22 Jul 2004 09:32:43 -0400 From: Chris User-Agent: Mozilla Thunderbird 0.5 (X11/20040413) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Leidinger References: <40FE81B5.9050801@tellme3times.com> <20040722121830.6ab320b2@Magellan.Leidinger.net> In-Reply-To: <20040722121830.6ab320b2@Magellan.Leidinger.net> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit cc: freebsd-multimedia@freebsd.org Subject: Re: CD+G X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jul 2004 13:26:41 -0000 Alexander Leidinger wrote: >On Wed, 21 Jul 2004 10:46:13 -0400 >Chris wrote: > > > >>Does anyone know how to copy a Karaoke CD+G? >> >>My kids have destroyed two allready. It would hurt less if they were copies. >> >> > >cdrdao should be able to copy it. > >Bye, >Alexander. > > > I get the audio but not the graphics. From owner-freebsd-multimedia@FreeBSD.ORG Thu Jul 22 18:34:36 2004 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id DFD4F16A4CE for ; Thu, 22 Jul 2004 18:34:36 +0000 (GMT) Received: from mail.cableone.net (scanmail3.cableone.net [24.116.0.123]) by mx1.FreeBSD.org (Postfix) with ESMTP id 4C6EC43D1D for ; Thu, 22 Jul 2004 18:34:36 +0000 (GMT) (envelope-from v.velox@vvelox.net) Received: from vixen42.24-119-122-191.cpe.cableone.net (unverified [24.119.122.85]) by smail3.cableone.net (SurgeMail 1.9b) with ESMTP id 28316150 for multiple; Thu, 22 Jul 2004 11:19:35 -0700 Date: Thu, 22 Jul 2004 13:34:28 -0500 From: Vulpes Velox To: Chris Message-Id: <20040722133428.16a0823e@vixen42.24-119-122-191.cpe.cableone.net> In-Reply-To: <40FE81B5.9050801@tellme3times.com> References: <40FE81B5.9050801@tellme3times.com> X-Mailer: Sylpheed-Claws 0.9.12 (GTK+ 1.2.10; i386-portbld-freebsd4.10) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Server: High Performance Mail Server - http://surgemail.com cc: freebsd-multimedia@freebsd.org Subject: Re: CD+G X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jul 2004 18:34:37 -0000 On Wed, 21 Jul 2004 10:46:13 -0400 Chris wrote: > Does anyone know how to copy a Karaoke CD+G? > > My kids have destroyed two allready. It would hurt less if they were > copies. What about this? Using dd to produce a raw copy of the disc and then burning the out put from dd with burncd raw fixate or the like. Note, I've never tried this, but it is what comes to mind. :/ From owner-freebsd-multimedia@FreeBSD.ORG Thu Jul 22 20:10:29 2004 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 9B40316A4CE for ; Thu, 22 Jul 2004 20:10:29 +0000 (GMT) Received: from mail.tellme3times.com (dsl-yul-102.e-scape.net [209.47.218.102]) by mx1.FreeBSD.org (Postfix) with ESMTP id 1ECF743D54 for ; Thu, 22 Jul 2004 20:10:29 +0000 (GMT) (envelope-from list@tellme3times.com) Received: from tellme3times.com (halla.tellme3times.com [192.168.7.29]) by mail.tellme3times.com (Postfix) with ESMTP id CBE93430B; Thu, 22 Jul 2004 16:06:01 -0400 (EDT) Message-ID: <4100209F.6060903@tellme3times.com> Date: Thu, 22 Jul 2004 16:16:31 -0400 From: Chris User-Agent: Mozilla Thunderbird 0.5 (X11/20040413) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Vulpes Velox References: <40FE81B5.9050801@tellme3times.com> <20040722133428.16a0823e@vixen42.24-119-122-191.cpe.cableone.net> In-Reply-To: <20040722133428.16a0823e@vixen42.24-119-122-191.cpe.cableone.net> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit cc: freebsd-multimedia@freebsd.org Subject: Re: CD+G X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jul 2004 20:10:29 -0000 Vulpes Velox wrote: >On Wed, 21 Jul 2004 10:46:13 -0400 >Chris wrote: > > > >>Does anyone know how to copy a Karaoke CD+G? >> >>My kids have destroyed two allready. It would hurt less if they were >>copies. >> >> > >What about this? Using dd to produce a raw copy of the disc and then >burning the out put from dd with burncd raw fixate or the >like. > >Note, I've never tried this, but it is what comes to mind. :/ > > Tried that. It creates one audio track and not the intended result. I even tried dd of=/dev/acd0c if=imagefile bs=2352. (Due to desperation) Tried cdrdao copy. Gets the audio only. I can get the audio tracks but not the graphics... I know my burner supports CD+G From owner-freebsd-multimedia@FreeBSD.ORG Thu Jul 22 20:37:35 2004 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 71BE716A4CE for ; Thu, 22 Jul 2004 20:37:35 +0000 (GMT) Received: from mx1.mail.ru (mx1.mail.ru [194.67.23.121]) by mx1.FreeBSD.org (Postfix) with ESMTP id 0AB5043D41 for ; Thu, 22 Jul 2004 20:37:35 +0000 (GMT) (envelope-from metal_man@mail.ru) Received: from [217.118.66.254] (port=47270 helo=METALLER) by mx1.mail.ru with smtp id 1BnkJn-000MSG-00; Fri, 23 Jul 2004 00:37:33 +0400 Message-ID: <000401c4702b$b92bda20$910e13ac@METALLER> From: "Dmitriy Startsev" To: "Chris" References: <40FE81B5.9050801@tellme3times.com><20040722133428.16a0823e@vixen42.24-119-122-191.cpe.cableone.net> <4100209F.6060903@tellme3times.com> Date: Fri, 23 Jul 2004 00:37:29 +0400 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2800.1106 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 FL-Build: Fidolook 2004 (HL) 6.0.2600.32000 - 17/4/2004 06:54:21 X-Spam: Not detected cc: freebsd-multimedia@freebsd.org Subject: Re: CD+G X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jul 2004 20:37:35 -0000 Hello, Chris! You wrote to "Vulpes Velox" on Thu, 22 Jul 2004 16:16:31 -0400: C> Tried that. It creates one audio track and not the intended result. I C> even tried C> dd of=/dev/acd0c if=imagefile bs=2352. (Due to desperation) C> Tried cdrdao copy. Gets the audio only. C> I can get the audio tracks but not the graphics... C> I know my burner supports CD+G You need something that supports sub-channel copying. Sorry, but nothing comes to my mind about what it might be. With best regards, Dmitriy Startsev. From owner-freebsd-multimedia@FreeBSD.ORG Thu Jul 22 20:53:53 2004 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 442E416A4CE for ; Thu, 22 Jul 2004 20:53:53 +0000 (GMT) Received: from www.eugeneglass.com (64-42-83-115.atgi.net [64.42.83.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id E524643D3F for ; Thu, 22 Jul 2004 20:53:52 +0000 (GMT) (envelope-from jakemsr@jakemsr.com) Received: from funk.gsky.dom (64-42-83-114.atgi.net [64.42.83.114]) by www.eugeneglass.com (8.13.0/8.13.0) with ESMTP id i6MKsddZ003939 for ; Thu, 22 Jul 2004 13:54:17 -0700 (PDT) Received: from funk.gsky.dom (jakemsr@localhost.gsky.dom [127.0.0.1]) by funk.gsky.dom (8.13.0/8.13.0) with ESMTP id i6MKrd1u031938 for ; Thu, 22 Jul 2004 13:53:17 -0700 (PDT) Received: (from jakemsr@localhost) by funk.gsky.dom (8.13.0/8.13.0/Submit) id i6MKrc70030488 for freebsd-multimedia@freebsd.org; Thu, 22 Jul 2004 13:53:16 -0700 (PDT) Date: Thu, 22 Jul 2004 13:53:16 -0700 From: Jacob Meuser To: freebsd-multimedia@freebsd.org Message-ID: <20040722205338.GA4644@funk.gsky.dom> References: <4100209F.6060903@tellme3times.com> <000401c4702b$b92bda20$910e13ac@METALLER> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <000401c4702b$b92bda20$910e13ac@METALLER> User-Agent: Mutt/1.4.2i Subject: Re: CD+G X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jul 2004 20:53:53 -0000 On Fri, Jul 23, 2004 at 12:37:29AM +0400, Dmitriy Startsev wrote: > Hello, Chris! > You wrote to "Vulpes Velox" on Thu, 22 Jul 2004 > 16:16:31 -0400: > > C> Tried that. It creates one audio track and not the intended result. I > C> even tried > > C> dd of=/dev/acd0c if=imagefile bs=2352. (Due to desperation) > > C> Tried cdrdao copy. Gets the audio only. > > C> I can get the audio tracks but not the graphics... > > C> I know my burner supports CD+G > > You need something that supports sub-channel copying. Sorry, but nothing > comes to my mind about what it might be. > > With best regards, Dmitriy Startsev. $ man readcd ... -clone Do a clone read. Read the CD with all sub-channel data and a full TOC. ... readcd is the best way to get images off CDs, IMO. -- From owner-freebsd-multimedia@FreeBSD.ORG Thu Jul 22 21:40:54 2004 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id A674816A4CE for ; Thu, 22 Jul 2004 21:40:54 +0000 (GMT) Received: from ms-smtp-03-eri0.texas.rr.com (ms-smtp-03.texas.rr.com [24.93.47.42]) by mx1.FreeBSD.org (Postfix) with ESMTP id A520043D39 for ; Thu, 22 Jul 2004 21:40:53 +0000 (GMT) (envelope-from shocking@houston.rr.com) Received: from bleep.craftncomp.com (cs68201234-207.houston.rr.com [68.201.234.207])i6MLemo7007550 for ; Thu, 22 Jul 2004 16:40:49 -0500 (CDT) Received: from bleep.craftncomp.com (localhost.craftncomp.com [127.0.0.1]) by bleep.craftncomp.com (8.12.11/8.12.3) with ESMTP id i6MLel27035680 for ; Thu, 22 Jul 2004 16:40:48 -0500 (CDT) (envelope-from shocking@bleep.craftncomp.com) Message-Id: <200407222140.i6MLel27035680@bleep.craftncomp.com> X-Mailer: exmh version 2.7.0 06/18/2004 with nmh-1.0.4 To: freebsd-multimedia@freebsd.org Mime-Version: 1.0 Content-Type: multipart/mixed ; boundary="==_Exmh_-15860966880" Date: Thu, 22 Jul 2004 16:40:47 -0500 From: Stephen Hocking X-Virus-Scanned: Symantec AntiVirus Scan Engine Subject: NTSC <-> PAL VOB conversion? X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jul 2004 21:40:54 -0000 This is a multipart MIME message. --==_Exmh_-15860966880 Content-Type: text/plain; charset=us-ascii All, Now that I've figured out how to back up my DVDs, using libdvdread, cdrecord and dvdbackup, I'm curious to know if anyone's managed to figure out a way to convert the VOBs to a different video format. The dvdbackup program I use creates a directory structure on disk that one can mess with. Any ideas? Stephen --==_Exmh_-15860966880 Content-Type: text/plain ; name="dvdbackup.c"; charset=us-ascii Content-Description: dvdbackup.c Content-Disposition: attachment; filename="dvdbackup.c" /* * Copyright (C) 2002 Olaf Beck * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* dvdbackup version 0.1 */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define MAXNAME 256 /*Flag for verbose mode */ int verbose; int aspect; /* Structs to keep title set information in */ typedef struct { int size_ifo; int size_menu; int size_bup; int number_of_vob_files; int size_vob[10]; } title_set_t; typedef struct { int number_of_title_sets; title_set_t *title_set; } title_set_info_t; typedef struct { int title; int title_set; int vts_title; int chapters; int aspect_ratio; int angles; int audio_tracks; int audio_channels; int sub_pictures; } titles_t; typedef struct { int main_title_set; int number_of_titles; titles_t *titles; } titles_info_t; void bsort_max_to_min(int sector[], int title[], int size); /* Usage: To gather info about the dvd: dvdbackup -i /dev/dvd -I Gerneral backup information: If your backup directory is /my/dvd/backup/dir/ specified with the "-o" flag. Then dvdbackup will create a DVD-Video structure under /my/dvd/backup/dir/TITLE_NAME/VIDEO_TS. Since the title is "uniq" you can use the same dir for all your DVD backups. If it happens to have a generic title dvdbackup will exit with a return value of 2. And you will need to specify a title name with the -n switch. dvdbackup will always mimic the original DVD-Video structure. Hence if you e.g. use the -M (mirror) you will get an exact duplicate of the original. This means that every file will be have the same size as the original one. Like wise goes also for the -F and the -T switch. However the -t and (-t -s/-e) switch is a bit different the titles sectors will be written to the original file but not at the same offset as the original one since they may be gaps in the cell structure that we don't fill. To backup the whole DVD dvdbackup -M -i/dev/dvd -o/my/dvd/backup/dir/ This action creates a valid DVD-Video structure that can be burned to a DVD-/+R(W) with help of mkisofs version 1.11a27 or later To backup the main feature of the DVD: dvdbackup -F -i/dev/dvd -o/my/dvd/backup/dir/ This action creates a valid DVD-Video structure of the feature title set dvdbackup defaults to get the 16:9 version of the main feature if a 4:3 is also present on the DVD. To get the 4:3 version use -a 0. dvdbackup makes it best to make a inteligent guess what is the main feature of the DVD - in case it fails please send a bug report. To backup a title set dvdbackup -T 2 -i/dev/dvd -o/my/dvd/backup/dir/ where "-T 2" specifies that you want to backup title set 2 i.e. all VTS_02_X.XXX files. This action creates a valid DVD-Video structure of the specified title set To backup a title: dvdbackup -t 1 -i/dev/dvd -o/my/dvd/backup/dir This action backups all cells that forms the specified title. Note that there can be sector gaps in between one cell and an other. dvdbackup will backup all sectors that belongs to the title but will skip sectors that aren't a part of the title. To backup a specific chapter or chapters from a title: dvdbackup -t 1 -s 20 -e 25 -i/dev/dvd -o/my/dvd/backup/dir This action will backup chapter 20 to 25 in title 1, as with the backup of a title there can be sector gaps between one chapter (cell) and on other.dvdbackup will backup all sectors that belongs to the title 1 chapter 20 to 25 but will skip sectors that aren't a part of the title 1 chapter 20 to 25. To backup a single chapter e.g. chapter 20 do -s 20 -e 20 To backup from chapter 20 to the end chapter use only -s 20 To backup to chapter 20 from the first chapter use only -e 20 You can skip the -t switch and let the program guess the title although it's not recomened. If you specify a chapter that his higher than the last chapter of the title dvdbackup will turncate to the highest chapter of the title. Return values: 0 on success 1 on usage error 2 on title name error -1 on failur Todo - i.e. what's on the agenda. Make the main feature guessing algoritm better. Not that it doesn't do it's job, but it's implementation it's that great. I would also like to preserve more information about the main feature since that would let me preform better implementations in other functions that depends on the titles_info_t and title_set_info_t strcutures. Make it possible to extract cells in a title not just chapters (very easy so it will definitly be in the next version). Make a split mirror (-S) option that divides a DVD-9 to two valid DVD-5 video structures. This is not a trivial hack and it's my main goal the next month or so. It involves writing ifoedit and vobedit libraries in order to be able to manipulate both the IFO structures and the VOB files. Out of this will most probably also come tscreate and vtscreate which will enable you to make a very simple DVD-Video from MPEG-1/2 source. */ void usage(){ fprintf(stderr,"\nUsage: dvdbackup [options]\n"); fprintf(stderr,"\t-i device\twhere device is your dvd device\n"); fprintf(stderr,"\t-v X\t\twhere X is the amount of verbosity\n"); fprintf(stderr,"\t-I\t\tfor information about the DVD\n"); fprintf(stderr,"\t-o directory\twhere directory is your backup target\n"); fprintf(stderr,"\t-M\t\tbackup the whole DVD\n"); fprintf(stderr,"\t-F\t\tbackup the main feature of the DVD\n"); fprintf(stderr,"\t-T X\t\tbackup title set X\n"); fprintf(stderr,"\t-t X\t\tbackup title X\n"); fprintf(stderr,"\t-s X\t\tbackup from chapter X\n"); fprintf(stderr,"\t-e X\t\tbackup to chapter X\n"); fprintf(stderr,"\t-a 0\t\tto get aspect ratio 4:3 instead of 16:9 if both are present\n"); fprintf(stderr,"\t-h\t\tprint a brief usage message\n"); fprintf(stderr,"\t-?\t\tprint a brief usage message\n\n"); fprintf(stderr,"\t-i is manditory\n"); fprintf(stderr,"\t-o is manditory except if you use -I\n"); fprintf(stderr,"\t-a is option to the -F switch and has no effect on other options\n"); fprintf(stderr,"\t-s and -e should prefereibly be used together with -t \n\n"); exit(1); } int CheckSizeArray(const int size_array[], int reference, int target) { if ( (size_array[reference]/size_array[target] == 1) && ((size_array[reference] * 2 - size_array[target])/ size_array[target] == 1) && ((size_array[reference]%size_array[target] * 3) < size_array[reference]) ) { /* We have a dual DVD with two feature films - now lets see if they have the same amount of chapters*/ return(1); } else { return(0); } } int CheckAudioSubChannels(int audio_audio_array[], int title_set_audio_array[], int subpicture_sub_array[], int title_set_sub_array[], int channels_channel_array[],int title_set_channel_array[], int reference, int candidate, int title_sets) { int temp, i, found_audio, found_sub, found_channels; found_audio=0; temp = audio_audio_array[reference]; for (i=0 ; i < title_sets ; i++ ) { if ( audio_audio_array[i] < temp ) { break; } if ( candidate == title_set_audio_array[i] ) { found_audio=1; break; } } found_sub=0; temp = subpicture_sub_array[reference]; for (i=0 ; i < title_sets ; i++ ) { if ( subpicture_sub_array[i] < temp ) { break; } if ( candidate == title_set_sub_array[i] ) { found_sub=1; break; } } found_channels=0; temp = channels_channel_array[reference]; for (i=0 ; i < title_sets ; i++ ) { if ( channels_channel_array[i] < temp ) { break; } if ( candidate == title_set_channel_array[i] ) { found_channels=1; break; } } return(found_audio + found_sub + found_channels); } int DVDWriteCells(dvd_reader_t * dvd, int cell_start_sector[], int cell_end_sector[], int length, int titles, title_set_info_t * title_set_info, titles_info_t * titles_info, char * targetdir,char * title_name){ /* Loop variables */ int i, f; /* Vob control */ int vob; /* Temp filename,dirname */ char targetname[PATH_MAX]; /* Write buffer */ unsigned char * buffer=NULL; /* File Handler */ int streamout; int size; int left; int leftover; /* Buffer size in DVD sectors */ /* Currently set to 1MB */ int buff = 512; int tsize; /* Offsets */ int soffset; int offset; /* DVD handler */ dvd_file_t * dvd_file=NULL; int title_set; int number_of_vob_files; #ifdef DEBUG fprintf(stderr,"DVDWriteCells: length is %d\n", length); #endif title_set = titles_info->titles[titles - 1].title_set; number_of_vob_files = title_set_info->title_set[title_set].number_of_vob_files; #ifdef DEBUG fprintf(stderr,"DVDWriteCells: title set is %d\n", title_set); fprintf(stderr,"DVDWriteCells: vob files are %d\n", number_of_vob_files); #endif /* Remove all old files silently if they exists */ for ( i = 0 ; i < 10 ; i++ ) { sprintf(targetname,"%s/%s/VIDEO_TS/VTS_%02i_%i.VOB",targetdir, title_name, title_set, i + 1); #ifdef DEBUG fprintf(stderr,"DVDWriteCells: file is %s\n", targetname); #endif unlink( targetname); } /* Loop through all sectors and find the right vob */ for (f = 0; f < length ; f++) { soffset=0; offset=0; /* Now figure which vob we will use and write to that vob and if there is a left over write to the next vob*/ for ( i = 0; i < number_of_vob_files ; i++ ) { tsize = title_set_info->title_set[title_set].size_vob[i]; if (tsize%2048 != 0) { fprintf(stderr, "The Title VOB number %d of title set %d doesn't have a valid DVD size\n", i + 1, title_set); return(1); } else { soffset = offset; offset = offset + tsize/2048; } #ifdef DEBUG fprintf(stderr,"DVDWriteCells: soffset is %d\n", soffset); fprintf(stderr,"DVDWriteCells: offset is %d\n", offset); #endif /* Find out if this is the right vob */ if( soffset <= cell_start_sector[f] && offset > cell_start_sector[f] ) { #ifdef DEBUG fprintf(stderr,"DVDWriteCells: got it \n"); #endif leftover=0; soffset = cell_start_sector[f]; if ( cell_end_sector[f] > offset ) { leftover = cell_end_sector[f] - offset + 1; } else { size = cell_end_sector[f] - cell_start_sector[f] + 1; } #ifdef DEBUG fprintf(stderr,"DVDWriteCells: size is %d\n", size); #endif vob = i + 1; break; } } #ifdef DEBUG fprintf(stderr,"DVDWriteCells: Writing soffset is %d and leftover is %d\n", soffset, leftover); #endif /* Create VTS_XX_X.VOB */ if (title_set == 0) { fprintf(stderr,"Don't try to copy chapters from the VMG domain there aren't any\n"); return(1); } else { sprintf(targetname,"%s/%s/VIDEO_TS/VTS_%02i_%i.VOB",targetdir, title_name, title_set, vob); } #ifdef DEBUG fprintf(stderr,"DVDWriteCells: 1\n"); #endif if ((buffer = (unsigned char *)malloc(buff * 2048 * sizeof(unsigned char))) == NULL) { fprintf(stderr, "Out of memory coping %s\n", targetname); return(1); } #ifdef DEBUG fprintf(stderr,"DVDWriteCells: 2\n"); #endif if ((streamout = open(targetname, O_WRONLY | O_CREAT | O_APPEND, 0644)) == -1) { fprintf(stderr, "Error creating %s\n", targetname); perror(""); return(1); } #ifdef DEBUG fprintf(stderr,"DVDWriteCells: 3\n"); #endif if ((dvd_file = DVDOpenFile(dvd, title_set, DVD_READ_TITLE_VOBS))== 0) { fprintf(stderr, "Faild opending TITLE VOB\n"); free(buffer); close(streamout); return(1); } left = size; #ifdef DEBUG fprintf(stderr,"DVDWriteCells: left is %d\n", left); #endif while( left > 0 ) { if (buff > left) { buff = left; } if ( DVDReadBlocks(dvd_file,soffset,buff, buffer) != buff) { fprintf(stderr, "Error reading MENU VOB\n"); free(buffer); DVDCloseFile(dvd_file); close(streamout); return(1); } if (write(streamout,buffer,buff * 2048) != buff * 2048) { fprintf(stderr, "Error writing TITLE VOB\n"); free(buffer); close(streamout); return(1); } soffset = soffset + buff; left = left - buff; } DVDCloseFile(dvd_file); free(buffer); close(streamout); if ( leftover != 0 ) { vob = vob + 1; if (title_set == 0) { fprintf(stderr,"Don't try to copy chapters from the VMG domain there aren't any\n"); return(1); } else { sprintf(targetname,"%s/%s/VIDEO_TS/VTS_%02i_%i.VOB",targetdir, title_name, title_set, vob); } if ((buffer = (unsigned char *)malloc(buff * 2048 * sizeof(unsigned char))) == NULL) { fprintf(stderr, "Out of memory coping %s\n", targetname); close(streamout); return(1); } if ((streamout = open(targetname, O_WRONLY | O_CREAT | O_APPEND, 0644)) == -1) { fprintf(stderr, "Error creating %s\n", targetname); perror(""); return(1); } if ((dvd_file = DVDOpenFile(dvd, title_set, DVD_READ_TITLE_VOBS))== 0) { fprintf(stderr, "Faild opending TITLE VOB\n"); free(buffer); close(streamout); return(1); } left = leftover; while( left > 0 ) { if (buff > left) { buff = left; } if ( DVDReadBlocks(dvd_file,offset,buff, buffer) != buff) { fprintf(stderr, "Error reading MENU VOB\n"); free(buffer); DVDCloseFile(dvd_file); close(streamout); return(1); } if (write(streamout,buffer,buff * 2048) != buff * 2048) { fprintf(stderr, "Error writing TITLE VOB\n"); free(buffer); close(streamout); return(1); } offset = offset + buff; left = left - buff; } DVDCloseFile(dvd_file); free(buffer); close(streamout); } } return(0); } void FreeSortArrays( int chapter_chapter_array[], int title_set_chapter_array[], int angle_angle_array[], int title_set_angle_array[], int subpicture_sub_array[], int title_set_sub_array[], int audio_audio_array[], int title_set_audio_array[], int size_size_array[], int title_set_size_array[], int channels_channel_array[], int title_set_channel_array[]) { free(chapter_chapter_array); free(title_set_chapter_array); free(angle_angle_array); free(title_set_angle_array); free(subpicture_sub_array); free(title_set_sub_array); free(audio_audio_array); free(title_set_audio_array); free(size_size_array); free(title_set_size_array); free(channels_channel_array); free(title_set_channel_array); } titles_info_t * DVDGetInfo(dvd_reader_t * _dvd) { /* title interation */ int counter, i, f; /* Our guess */ int candidate; int multi = 0; int dual = 0; int titles; int title_sets; /* Arrays for chapter, angle, subpicture, audio, size, aspect, channels - file_set relationship */ /* Size == number_of_titles */ int * chapter_chapter_array; int * title_set_chapter_array; int * angle_angle_array; int * title_set_angle_array; /* Size == number_of_title_sets */ int * subpicture_sub_array; int * title_set_sub_array; int * audio_audio_array; int * title_set_audio_array; int * size_size_array; int * title_set_size_array; int * channels_channel_array; int * title_set_channel_array; /* Temp helpers */ int channels; int temp; int found; int chapters_1; int chapters_2; int found_chapter; int number_of_multi; /*DVD handlers*/ ifo_handle_t * vmg_ifo=NULL; dvd_file_t * vts_title_file=NULL; titles_info_t * titles_info=NULL; /* Open main info file */ vmg_ifo = ifoOpen( _dvd, 0 ); if( !vmg_ifo ) { fprintf( stderr, "Can't open VMG info.\n" ); return (0); } titles = vmg_ifo->tt_srpt->nr_of_srpts; title_sets = vmg_ifo->vmgi_mat->vmg_nr_of_title_sets; if ((vmg_ifo->tt_srpt == 0) || (vmg_ifo->vts_atrt == 0)) { ifoClose(vmg_ifo); return(0); } /* Todo fix malloc check */ titles_info = ( titles_info_t *)malloc(sizeof(titles_info_t)); titles_info->titles = (titles_t *)malloc((titles)* sizeof(titles_t)); titles_info->number_of_titles = titles; chapter_chapter_array = malloc(titles * sizeof(int)); title_set_chapter_array = malloc(titles * sizeof(int)); /*currently not used in the guessing */ angle_angle_array = malloc(titles * sizeof(int)); title_set_angle_array = malloc(titles * sizeof(int)); subpicture_sub_array = malloc(title_sets * sizeof(int)); title_set_sub_array = malloc(title_sets * sizeof(int)); audio_audio_array = malloc(title_sets * sizeof(int)); title_set_audio_array = malloc(title_sets * sizeof(int)); size_size_array = malloc(title_sets * sizeof(int)); title_set_size_array = malloc(title_sets * sizeof(int)); channels_channel_array = malloc(title_sets * sizeof(int)); title_set_channel_array = malloc(title_sets * sizeof(int)); /* Interate over the titles nr_of_srpts */ for (counter=0; counter < titles; counter++ ) { /* For titles_info */ titles_info->titles[counter].title = counter + 1; titles_info->titles[counter].title_set = vmg_ifo->tt_srpt->title[counter].title_set_nr; titles_info->titles[counter].vts_title = vmg_ifo->tt_srpt->title[counter].vts_ttn; titles_info->titles[counter].chapters = vmg_ifo->tt_srpt->title[counter].nr_of_ptts; titles_info->titles[counter].angles = vmg_ifo->tt_srpt->title[counter].nr_of_angles; /* For main title*/ chapter_chapter_array[counter] = vmg_ifo->tt_srpt->title[counter].nr_of_ptts; title_set_chapter_array[counter] = vmg_ifo->tt_srpt->title[counter].title_set_nr; angle_angle_array[counter] = vmg_ifo->tt_srpt->title[counter].nr_of_angles; title_set_angle_array[counter] = vmg_ifo->tt_srpt->title[counter].title_set_nr; } /* Interate over vmg_nr_of_title_sets */ for (counter=0; counter < title_sets ; counter++ ) { /* Picture*/ subpicture_sub_array[counter] = vmg_ifo->vts_atrt->vts[counter].nr_of_vtstt_subp_streams; title_set_sub_array[counter] = counter + 1; /* Audio */ audio_audio_array[counter] = vmg_ifo->vts_atrt->vts[counter].nr_of_vtstt_audio_streams; title_set_audio_array[counter] = counter + 1; channels=0; for (i=0; i < audio_audio_array[counter]; i++) { if ( channels < vmg_ifo->vts_atrt->vts[counter].vtstt_audio_attr[i].channels + 1) { channels = vmg_ifo->vts_atrt->vts[counter].vtstt_audio_attr[i].channels + 1; } } channels_channel_array[counter] = channels; title_set_channel_array[counter] = counter + 1; /* For tiles_info */ for (f=0; f < titles_info->number_of_titles ; f++ ) { if ( titles_info->titles[f].title_set == counter + 1 ) { titles_info->titles[f].aspect_ratio = vmg_ifo->vts_atrt->vts[counter].vtstt_vobs_video_attr.display_aspect_ratio; titles_info->titles[f].sub_pictures = vmg_ifo->vts_atrt->vts[counter].nr_of_vtstt_subp_streams; titles_info->titles[f].audio_tracks = vmg_ifo->vts_atrt->vts[counter].nr_of_vtstt_audio_streams; titles_info->titles[f].audio_channels = channels; } } } /* Close the VMG ifo file we got all the info we need */ ifoClose(vmg_ifo); for (counter=0; counter < title_sets; counter++ ) { vts_title_file = DVDOpenFile(_dvd, counter + 1, DVD_READ_TITLE_VOBS); if (vts_title_file != 0) { size_size_array[counter] = DVDFileSize(vts_title_file); DVDCloseFile(vts_title_file); } else { size_size_array[counter] = 0; } title_set_size_array[counter] = counter + 1; } /* Sort all arrays max to min */ bsort_max_to_min(chapter_chapter_array, title_set_chapter_array, titles); bsort_max_to_min(angle_angle_array, title_set_angle_array, titles); bsort_max_to_min(subpicture_sub_array, title_set_sub_array, title_sets); bsort_max_to_min(audio_audio_array, title_set_audio_array, title_sets); bsort_max_to_min(size_size_array, title_set_size_array, title_sets); bsort_max_to_min(channels_channel_array, title_set_channel_array, title_sets); /* Check if the second biggest one actually can be a feature title */ /* Here we will take do biggest/second and if that is bigger than one it's not a feauture title */ /* Now this is simply not enough since we have to check that the diff between the two of them is small enough to consider the second one a feature title we are doing two checks (biggest + biggest - second) /second == 1 and biggest%second * 3 < biggest */ if ( CheckSizeArray(size_size_array, 0, 1) == 1 ) { /* We have a dual DVD with two feature films - now lets see if they have the same amount of chapters*/ chapters_1 = 0; for (i=0 ; i < titles ; i++ ) { if (titles_info->titles[i].title_set == title_set_size_array[0] ) { if ( chapters_1 < titles_info->titles[i].chapters){ chapters_1 = titles_info->titles[i].chapters; } } } chapters_2 = 0; for (i=0 ; i < titles ; i++ ) { if (titles_info->titles[i].title_set == title_set_size_array[1] ) { if ( chapters_2 < titles_info->titles[i].chapters){ chapters_2 = titles_info->titles[i].chapters; } } } if ( vmg_ifo->vts_atrt->vts[title_set_size_array[0] - 1].vtstt_vobs_video_attr.display_aspect_ratio == vmg_ifo->vts_atrt->vts[title_set_size_array[1] - 1].vtstt_vobs_video_attr.display_aspect_ratio) { /* In this case it's most likely so that we have a dual film but with different context They are with in the same size range and have the same aspect ratio I would guess that such a case is e.g. a DVD containing several episodes of a TV serie*/ candidate = title_set_size_array[0]; multi = 1; } else if ( chapters_1 == chapters_2 && vmg_ifo->vts_atrt->vts[title_set_size_array[0] - 1].vtstt_vobs_video_attr.display_aspect_ratio != vmg_ifo->vts_atrt->vts[title_set_size_array[1] - 1].vtstt_vobs_video_attr.display_aspect_ratio){ /* In this case we have (guess only) the same context - they have the same number of chapters but different aspect ratio and are in the same size range*/ if ( vmg_ifo->vts_atrt->vts[title_set_size_array[0] - 1].vtstt_vobs_video_attr.display_aspect_ratio == aspect) { candidate = title_set_size_array[0]; } else if ( vmg_ifo->vts_atrt->vts[title_set_size_array[1] - 1].vtstt_vobs_video_attr.display_aspect_ratio == aspect) { candidate = title_set_size_array[1]; } else { /* Okay we didn't have the prefered aspect ratio - just make the biggest one a candidate */ /* please send report if this happens*/ fprintf(stderr, "You have encountered a very special DVD, please send a bug report along with all IFO files from this title\n"); candidate = title_set_size_array[0]; } dual = 1; } } else { candidate = title_set_size_array[0]; } /* Lets start checking audio,sub pictures and channels my guess is namly that a special suburb will put titles with a lot of chapters just to make our backup hard */ found = CheckAudioSubChannels(audio_audio_array, title_set_audio_array, subpicture_sub_array, title_set_sub_array, channels_channel_array, title_set_channel_array, 0 , candidate, title_sets); /* Now lets see if we can find our candidate among the top most chapters */ found_chapter=6; temp = chapter_chapter_array[0]; for (i=0 ; (i < titles) && (i < 4) ; i++ ) { if ( candidate == title_set_chapter_array[i] ) { found_chapter=i+1; break; } } if (((found == 3) && (found_chapter == 1) && (dual == 0) && (multi == 0)) || ((found == 3) && (found_chapter < 3 ) && (dual == 1))) { FreeSortArrays( chapter_chapter_array, title_set_chapter_array, angle_angle_array, title_set_angle_array, subpicture_sub_array, title_set_sub_array, audio_audio_array, title_set_audio_array, size_size_array, title_set_size_array, channels_channel_array, title_set_channel_array); titles_info->main_title_set = candidate; return(titles_info); } if (multi == 1) { for (i=0 ; i < title_sets ; ++i) { if (CheckSizeArray(size_size_array, 0, i + 1) == 0) { break; } } number_of_multi = i; for (i = 0; i < number_of_multi; i++ ) { if (title_set_chapter_array[0] == i + 1) { candidate = title_set_chapter_array[0]; } } found = CheckAudioSubChannels(audio_audio_array, title_set_audio_array, subpicture_sub_array, title_set_sub_array, channels_channel_array, title_set_channel_array, 0 , candidate, title_sets); if (found == 3) { FreeSortArrays( chapter_chapter_array, title_set_chapter_array, angle_angle_array, title_set_angle_array, subpicture_sub_array, title_set_sub_array, audio_audio_array, title_set_audio_array, size_size_array, title_set_size_array, channels_channel_array, title_set_channel_array); titles_info->main_title_set = candidate; return(titles_info); } } /* We have now come to that state that we more or less have given up :( giving you a good guess of the main feature film*/ /*No matter what we will more or less only return the biggest VOB*/ /* Lets see if we can find our biggest one - then we return that one */ candidate = title_set_size_array[0]; found = CheckAudioSubChannels(audio_audio_array, title_set_audio_array, subpicture_sub_array, title_set_sub_array, channels_channel_array, title_set_channel_array, 0 , candidate, title_sets); /* Now lets see if we can find our candidate among the top most chapters */ found_chapter=5; temp = chapter_chapter_array[0]; for (i=0 ; (i < titles) && (i < 4) ; i++ ) { if ( candidate == title_set_chapter_array[i] ) { found_chapter=i+1; break; } } /* Here we take chapters in to consideration*/ if (found == 3) { FreeSortArrays( chapter_chapter_array, title_set_chapter_array, angle_angle_array, title_set_angle_array, subpicture_sub_array, title_set_sub_array, audio_audio_array, title_set_audio_array, size_size_array, title_set_size_array, channels_channel_array, title_set_channel_array); titles_info->main_title_set = candidate; return(titles_info); } /* Here we do but we lower the treshold for audio, sub and channels */ if ((found > 1 ) && (found_chapter <= 4)) { FreeSortArrays( chapter_chapter_array, title_set_chapter_array, angle_angle_array, title_set_angle_array, subpicture_sub_array, title_set_sub_array, audio_audio_array, title_set_audio_array, size_size_array, title_set_size_array, channels_channel_array, title_set_channel_array); titles_info->main_title_set = candidate; return(titles_info); /* return it */ } else { /* Here we give up and just return the biggest one :(*/ /* Just return the biggest badest one*/ FreeSortArrays( chapter_chapter_array, title_set_chapter_array, angle_angle_array, title_set_angle_array, subpicture_sub_array, title_set_sub_array, audio_audio_array, title_set_audio_array, size_size_array, title_set_size_array, channels_channel_array, title_set_channel_array); titles_info->main_title_set = candidate; return(titles_info); } /* Some radom thoughts about DVD guessing */ /* We will now gather as much data about the DVD-Video as we can and then make a educated guess which one is the main feature film of it*/ /* Make a tripple array with chapters, angles and title sets - sort out dual title sets with a low number of chapters. Tradtionaly the title set with most chapters is the main film. Number of angles is keept as a reference point of low value*/ /* Make a dual array with number of audio streams, sub picture streams and title sets. Tradtionaly the main film has many audio streams since it's supposed be synconised e.g. a English film syncronised/dubbed in German. We are also keeping track of sub titles since it's also indication of the main film*/ /* Which title set is the biggest one - dual array with title sets and size The biggest one is usally the main film*/ /* Which title set is belonging to title 1 and how many chapters has it. Once again tradtionaly title one is belonging to the main film*/ /* Yes a lot of rant - but it helps me think - some sketch on paper or in the mind I sketch in the comments - beside it will help you understand the code*/ /* Okay lets see if the biggest one has most chapters, it also has more subtitles and audio tracks than the second one and it's title one. Done it must be the main film Hmm the biggest one doesn't have the most chapters? See if the second one has the same amount of chapters and is the biggest one If so we probably have a 4:3 and 16:9 versions of film on the same disk Now we fetch the 16:9 by default unless the forced to do 4:3 First check which one is which. If the 16:9 is the biggest one and has the same or more subtile, audio streams then we are happy unless we are in force 4:3 mode :( The same goes in reverse if we are in force 4:3 mode Hmm, in force 4:3 mode - now we check how much smaller than the biggest one it is (or the reverse if we are in 16:9 mode) Generally a reverse division should render in 1 and with a small modulo - like wise a normal modulo should give us a high modulo If we get more than one it's of cource a fake however if we get just one we still need to check if we subtract the smaller one from the bigger one we should end up with a small number - hence we need to multiply it more than 4 times to get it bigger than the biggest one. Now we know that the two biggest once are really big and possibly carry the same film in differnet formats. We will now return the prefered one either 16:9 or 4:3 but we will first check that the one we return at lest has two or more audio tracks. We don't want it if the other one has a lot more sound (we may end up with a film that only has 2ch Dolby Digital so we want to check for 6ch DTS or Dolby Digital. If the prefered one doesn't have those features but the other once has we will return the other one. */ } int DVDCopyTileVobX(dvd_reader_t * dvd, title_set_info_t * title_set_info, int title_set, int vob, char * targetdir,char * title_name) { /* Loop variable */ int i; /* Temp filename,dirname */ char targetname[PATH_MAX]; struct stat fileinfo; /* Write buffer */ unsigned char * buffer=NULL; unsigned char buffy; /* :-) */ /* File Handler */ int streamout; int size; int left; /* Buffer size in DVD sectors */ /* Currently set to 1MB */ int buff = 512; int offset = 0; int tsize; /* DVD handler */ dvd_file_t * dvd_file=NULL; if (title_set_info->number_of_title_sets + 1 < title_set) { fprintf(stderr,"Faild num title test\n"); return(1); } if (title_set_info->title_set[title_set].number_of_vob_files < vob ) { fprintf(stderr,"Faild vob test\n"); return(1); } if (title_set_info->title_set[title_set].size_vob[0] == 0 ) { fprintf(stderr,"Faild vob 1 size test\n"); return(0); } else if (title_set_info->title_set[title_set].size_vob[vob - 1] == 0 ) { fprintf(stderr,"Faild vob %d test\n", vob); return(0); } else { size = title_set_info->title_set[title_set].size_vob[vob - 1]/2048; if (title_set_info->title_set[title_set].size_vob[vob - 1]%2048 != 0) { fprintf(stderr, "The Title VOB number %d of title set %d doesn't have a valid DVD size\n", vob, title_set); return(1); } } #ifdef DEBUG fprintf(stderr,"After we check the vob it self %d\n", vob); #endif /* Create VTS_XX_X.VOB */ if (title_set == 0) { fprintf(stderr,"Don't try to copy a Title VOB from the VMG domain there aren't any\n"); return(1); } else { sprintf(targetname,"%s/%s/VIDEO_TS/VTS_%02i_%i.VOB",targetdir, title_name, title_set, vob); } /* Now figure out the offset we will start at also check that the previus files are of valid DVD size */ for ( i = 0; i < vob - 1; i++ ) { tsize = title_set_info->title_set[title_set].size_vob[i]; if (tsize%2048 != 0) { fprintf(stderr, "The Title VOB number %d of title set %d doesn't have a valid DVD size\n", i + 1, title_set); return(1); } else { offset = offset + tsize/2048; } } #ifdef DEBUG fprintf(stderr,"The offset for vob %d is %d\n", vob, offset); #endif if (stat(targetname, &fileinfo) == 0) { fprintf(stderr, "The Title file %s exists will try to over write it.\n", targetname); if (! S_ISREG(fileinfo.st_mode)) { fprintf(stderr,"The Title %s file is not valid, it may be a directory\n", targetname); return(1); } else { if ((streamout = open(targetname, O_WRONLY | O_TRUNC, 0644)) == -1) { fprintf(stderr, "Error opening %s\n", targetname); perror(""); return(1); } } } else { if ((streamout = open(targetname, O_WRONLY | O_CREAT, 0644)) == -1) { fprintf(stderr, "Error creating %s\n", targetname); perror(""); return(1); } } left = size; if ((buffer = (unsigned char *)malloc(buff * 2048 * sizeof(buffy))) == NULL) { fprintf(stderr, "Out of memory coping %s\n", targetname); close(streamout); return(1); } if ((dvd_file = DVDOpenFile(dvd, title_set, DVD_READ_TITLE_VOBS))== 0) { fprintf(stderr, "Faild opending TITLE VOB\n"); free(buffer); close(streamout); return(1); } while( left > 0 ) { if (buff > left) { buff = left; } if ( DVDReadBlocks(dvd_file,offset,buff, buffer) != buff) { fprintf(stderr, "Error reading MENU VOB\n"); free(buffer); DVDCloseFile(dvd_file); close(streamout); return(1); } if (write(streamout,buffer,buff * 2048) != buff * 2048) { fprintf(stderr, "Error writing TITLE VOB\n"); free(buffer); close(streamout); return(1); } offset = offset + buff; left = left - buff; } DVDCloseFile(dvd_file); free(buffer); close(streamout); return(0); } int DVDCopyMenu(dvd_reader_t * dvd, title_set_info_t * title_set_info, int title_set, char * targetdir,char * title_name) { /* Temp filename,dirname */ char targetname[PATH_MAX]; struct stat fileinfo; /* Write buffer */ unsigned char * buffer=NULL; unsigned char buffy; /* :-) */ /* File Handler */ int streamout; int size; int left; /* Buffer size in DVD sectors */ /* Currently set to 1MB */ int buff = 512; int offset = 0; /* DVD handler */ dvd_file_t * dvd_file=NULL; if (title_set_info->number_of_title_sets + 1 < title_set) { return(1); } if (title_set_info->title_set[title_set].size_menu == 0 ) { return(0); } else { size = title_set_info->title_set[title_set].size_menu/2048; if (title_set_info->title_set[title_set].size_menu%2048 != 0) { fprintf(stderr, "The Menu VOB of title set %d doesn't have a valid DVD size\n", title_set); return(1); } } /* Create VIDEO_TS.VOB or VTS_XX_0.VOB */ if (title_set == 0) { sprintf(targetname,"%s/%s/VIDEO_TS/VIDEO_TS.VOB",targetdir, title_name); } else { sprintf(targetname,"%s/%s/VIDEO_TS/VTS_%02i_0.VOB",targetdir, title_name, title_set); } if (stat(targetname, &fileinfo) == 0) { fprintf(stderr, "The Menu file %s exists will try to over write it.\n", targetname); if (! S_ISREG(fileinfo.st_mode)) { fprintf(stderr,"The Menu %s file is not valid, it may be a directory\n", targetname); return(1); } else { if ((streamout = open(targetname, O_WRONLY | O_TRUNC, 0644)) == -1) { fprintf(stderr, "Error opening %s\n", targetname); perror(""); return(1); } } } else { if ((streamout = open(targetname, O_WRONLY | O_CREAT, 0644)) == -1) { fprintf(stderr, "Error creating %s\n", targetname); perror(""); return(1); } } left = size; if ((buffer = (unsigned char *)malloc(buff * 2048 * sizeof(buffy))) == NULL) { fprintf(stderr, "Out of memory coping %s\n", targetname); close(streamout); return(1); } if ((dvd_file = DVDOpenFile(dvd, title_set, DVD_READ_MENU_VOBS))== 0) { fprintf(stderr, "Faild opending MENU VOB\n"); free(buffer); close(streamout); return(1); } while( left > 0 ) { if (buff > left) { buff = left; } if ( DVDReadBlocks(dvd_file,offset,buff, buffer) != buff) { fprintf(stderr, "Error reading MENU VOB\n"); free(buffer); DVDCloseFile(dvd_file); close(streamout); return(1); } if (write(streamout,buffer,buff * 2048) != buff * 2048) { fprintf(stderr, "Error writing MENU VOB\n"); free(buffer); close(streamout); return(1); } offset = offset + buff; left = left - buff; } DVDCloseFile(dvd_file); free(buffer); close(streamout); return(0); } int DVDCopyIfoBup (dvd_reader_t * dvd, title_set_info_t * title_set_info, int title_set, char * targetdir,char * title_name) { /* Temp filename,dirname */ char targetname[PATH_MAX]; struct stat fileinfo; /* Write buffer */ unsigned char * buffer=NULL; unsigned char buffy; /* :-) */ /* File Handler */ int streamout; int size; /* DVD handler */ dvd_file_t * dvd_file=NULL; if (title_set_info->number_of_title_sets + 1 < title_set) { return(1); } if (title_set_info->title_set[title_set].size_ifo == 0 ) { return(0); } else { size = title_set_info->title_set[title_set].size_ifo; if (title_set_info->title_set[title_set].size_ifo%2048 != 0) { fprintf(stderr, "The IFO of title set %d doesn't have a valid DVD size\n", title_set); return(1); } } /* Create VIDEO_TS.IFO or VTS_XX_0.IFO */ if (title_set == 0) { sprintf(targetname,"%s/%s/VIDEO_TS/VIDEO_TS.IFO",targetdir, title_name); } else { sprintf(targetname,"%s/%s/VIDEO_TS/VTS_%02i_0.IFO",targetdir, title_name, title_set); } if (stat(targetname, &fileinfo) == 0) { fprintf(stderr, "The IFO file %s exists will try to over write it.\n", targetname); if (! S_ISREG(fileinfo.st_mode)) { fprintf(stderr,"The IFO %s file is not valid, it may be a directory\n", targetname); return(1); } else { if ((streamout = open(targetname, O_WRONLY | O_TRUNC, 0644)) == -1) { fprintf(stderr, "Error opening %s\n", targetname); perror(""); return(1); } } } else { if ((streamout = open(targetname, O_WRONLY | O_CREAT, 0644)) == -1) { fprintf(stderr, "Error creating %s\n", targetname); perror(""); return(1); } } /* Copy VIDEO_TS.IFO, since it's a small file try to copy it in one shot */ if ((buffer = (unsigned char *)malloc(size * sizeof(buffy))) == NULL) { fprintf(stderr, "Out of memory coping %s\n", targetname); close(streamout); return(1); } if ((dvd_file = DVDOpenFile(dvd, title_set, DVD_READ_INFO_FILE))== 0) { fprintf(stderr, "Faild opending IFO for tile set %d\n", title_set); free(buffer); close(streamout); return(1); } if ( DVDReadBytes(dvd_file,buffer,size) != size) { fprintf(stderr, "Error reading IFO for title set %d\n", title_set); free(buffer); DVDCloseFile(dvd_file); close(streamout); return(1); } DVDCloseFile(dvd_file); if (write(streamout,buffer,size) != size) { fprintf(stderr, "Error writing %s\n",targetname); free(buffer); close(streamout); return(1); } free(buffer); close(streamout); /* Create VIDEO_TS.BUP or VTS_XX_0.BUP */ if (title_set == 0) { sprintf(targetname,"%s/%s/VIDEO_TS/VIDEO_TS.BUP",targetdir, title_name); } else { sprintf(targetname,"%s/%s/VIDEO_TS/VTS_%02i_0.BUP",targetdir, title_name, title_set); } if (title_set_info->title_set[title_set].size_bup == 0 ) { return(0); } else { size = title_set_info->title_set[title_set].size_bup; if (title_set_info->title_set[title_set].size_bup%2048 != 0) { fprintf(stderr, "The BUP of title set %d doesn't have a valid DVD size\n", title_set); return(1); } } if (stat(targetname, &fileinfo) == 0) { fprintf(stderr, "The BUP file %s exists will try to over write it.\n", targetname); if (! S_ISREG(fileinfo.st_mode)) { fprintf(stderr,"The BUP %s file is not valid, it may be a directory\n", targetname); return(1); } else { if ((streamout = open(targetname, O_WRONLY | O_TRUNC, 0644)) == -1) { fprintf(stderr, "Error opening %s\n", targetname); perror(""); return(1); } } } else { if ((streamout = open(targetname, O_WRONLY | O_CREAT, 0644)) == -1) { fprintf(stderr, "Error creating %s\n", targetname); perror(""); return(1); } } /* Copy VIDEO_TS.BUP or VTS_XX_0.BUP, since it's a small file try to copy it in one shot */ if ((buffer = (unsigned char *)malloc(size * sizeof(buffy))) == NULL) { fprintf(stderr, "Out of memory coping %s\n", targetname); close(streamout); return(1); } if ((dvd_file = DVDOpenFile(dvd, title_set, DVD_READ_INFO_BACKUP_FILE))== 0) { fprintf(stderr, "Faild opending BUP for title set %d\n", title_set); free(buffer); close(streamout); return(1); } if ( DVDReadBytes(dvd_file,buffer,size) != size) { fprintf(stderr, "Error reading BUP for title set %d\n", title_set); free(buffer); DVDCloseFile(dvd_file); close(streamout); return(1); } DVDCloseFile(dvd_file); if (write(streamout,buffer,size) != size) { fprintf(stderr, "Error writing %s\n", targetname); free(buffer); close(streamout); return(1); } free(buffer); close(streamout); return(0); } int DVDMirrorVMG(dvd_reader_t * dvd, title_set_info_t * title_set_info,char * targetdir,char * title_name){ if ( DVDCopyIfoBup(dvd, title_set_info, 0, targetdir, title_name) != 0 ) { return(1); } if ( DVDCopyMenu(dvd, title_set_info, 0, targetdir, title_name) != 0 ) { return(1); } return(0); } int DVDMirrorTitleX(dvd_reader_t * dvd, title_set_info_t * title_set_info, int title_set, char * targetdir,char * title_name) { /* Loop through the vobs */ int i; if ( DVDCopyIfoBup(dvd, title_set_info, title_set, targetdir, title_name) != 0 ) { return(1); } if ( DVDCopyMenu(dvd, title_set_info, title_set, targetdir, title_name) != 0 ) { return(1); } for (i = 0; i < title_set_info->title_set[title_set].number_of_vob_files ; i++) { #ifdef DEBUG fprintf(stderr,"In the VOB copy loop for %d\n", i); #endif if ( DVDCopyTileVobX(dvd, title_set_info, title_set, i + 1, targetdir, title_name) != 0 ) { return(1); } } return(0); } int DVDGetTitleName(const char *device, char *title) { /* Variables for filehandel and title string interaction */ int filehandle, i, last; /* Open DVD device */ if ( !(filehandle = open(device, O_RDONLY)) ) { fprintf(stderr, "Can't open secified device %s - check your DVD device\n", device); return(1); } /* Seek to title of first track, which is at (track_no * 32768) + 40 */ if ( 32808 != lseek(filehandle, 32808, SEEK_SET) ) { close(filehandle); fprintf(stderr, "Can't seek DVD device %s - check your DVD device\n", device); return(1); } /* Read the DVD-Video title */ if ( 32 != read(filehandle, title, 32)) { close(filehandle); fprintf(stderr, "Can't read title from DVD device %s\n", device); return(1); } /* Terminate the title string */ title[32] = '\0'; /* Remove trailing white space */ last = 32; for ( i = 0; i < 32; i++ ) { if ( title[i] != ' ' ) { last = i; } } title[last + 1] = '\0'; return(0); } void bsort_min_to_max(int sector[], int title[], int size){ int temp_title, temp_sector, i, j; for ( i=0; i < size ; i++ ) { for ( j=0; j < size ; j++ ) { if (sector[i] < sector[j]) { temp_sector = sector[i]; temp_title = title[i]; sector[i] = sector[j]; title[i] = title[j]; sector[j] = temp_sector; title[j] = temp_title; } } } } void bsort_max_to_min(int sector[], int title[], int size){ int temp_title, temp_sector, i, j; for ( i=0; i < size ; i++ ) { for ( j=0; j < size ; j++ ) { if (sector[i] > sector[j]) { temp_sector = sector[i]; temp_title = title[i]; sector[i] = sector[j]; title[i] = title[j]; sector[j] = temp_sector; title[j] = temp_title; } } } } void uniq(int sector[], int title[], int title_sets_array[], int sector_sets_array[], int titles){ int i, j; for ( i=0, j=0; j < titles;) { if (sector[j] != sector[j+1]) { title_sets_array[i] = title[j]; sector_sets_array[i] = sector[j]; i++ ; j++ ; } else { do { if (j < titles) { j++ ; } } while ( sector[j] == sector[j+1] ); } } } void align_end_sector(int cell_start_sector[],int cell_end_sector[], int size) { int i; for (i = 0; i < size - 1 ; i++) { if ( cell_end_sector[i] >= cell_start_sector[i + 1] ) { cell_end_sector[i] = cell_start_sector[i + 1] - 1; } } } void DVDFreeTitleSetInfo(title_set_info_t * title_set_info) { free(title_set_info->title_set); free(title_set_info); } void DVDFreeTitlesInfo(titles_info_t * titles_info) { free(titles_info->titles); free(titles_info); } title_set_info_t *DVDGetFileSet(dvd_reader_t * _dvd) { /* title interation */ int title_sets, counter, i; /* DVD Video files */ char filename[MAXNAME]; int size; /*DVD ifo handler*/ ifo_handle_t * vmg_ifo=NULL; /* The Title Set Info struct*/ title_set_info_t * title_set_info; /* Open main info file */ vmg_ifo = ifoOpen( _dvd, 0 ); if( !vmg_ifo ) { fprintf( stderr, "Can't open VMG info.\n" ); return (0); } title_sets = vmg_ifo->vmgi_mat->vmg_nr_of_title_sets; /* Close the VMG ifo file we got all the info we need */ ifoClose(vmg_ifo); /* Todo fix malloc check */ title_set_info = (title_set_info_t *)malloc(sizeof(title_set_info_t)); title_set_info->title_set = (title_set_t *)malloc((title_sets + 1)* sizeof(title_set_t)); title_set_info->number_of_title_sets = title_sets; /* Find VIDEO_TS.IFO is present - must be present since we did a ifo open 0*/ sprintf(filename,"/VIDEO_TS/VIDEO_TS.IFO"); if ( UDFFindFile(_dvd, filename, &size) != 0 ) { title_set_info->title_set[0].size_ifo = size; } else { DVDFreeTitleSetInfo(title_set_info); return(0); } /* Find VIDEO_TS.VOB if present*/ sprintf(filename,"/VIDEO_TS/VIDEO_TS.VOB"); if ( UDFFindFile(_dvd, filename, &size) != 0 ) { title_set_info->title_set[0].size_menu = size; } else { title_set_info->title_set[0].size_menu = 0 ; } /* Find VIDEO_TS.BUP if present */ sprintf(filename,"/VIDEO_TS/VIDEO_TS.BUP"); if ( UDFFindFile(_dvd, filename, &size) != 0 ) { title_set_info->title_set[0].size_bup = size; } else { DVDFreeTitleSetInfo(title_set_info); return(0); } if (title_set_info->title_set[0].size_ifo != title_set_info->title_set[0].size_bup) { fprintf(stderr,"BUP and IFO size not the same be warened!\n"); } /* Take care of the titles which we don't have in VMG */ title_set_info->title_set[0].number_of_vob_files = 0; title_set_info->title_set[0].size_vob[0] = 0; if ( verbose > 0 ){ fprintf(stderr,"\n\n\nFile sizes for Title set 0 VIDEO_TS.XXX\n"); fprintf(stderr,"IFO = %d, MENU_VOB = %d, BUP = %d\n",title_set_info->title_set[0].size_ifo, title_set_info->title_set[0].size_menu, title_set_info->title_set[0].size_bup ); } if ( title_sets >= 1 ) { for (counter=0; counter < title_sets; counter++ ){ if ( verbose > 1 ){ fprintf(stderr,"At top of loop\n"); } sprintf(filename,"/VIDEO_TS/VTS_%02i_0.IFO",counter + 1); if ( UDFFindFile(_dvd, filename, &size) != 0 ) { title_set_info->title_set[counter + 1].size_ifo = size; } else { DVDFreeTitleSetInfo(title_set_info); return(0); } if ( verbose > 1 ){ fprintf(stderr,"After opening files\n"); } /* Find VTS_XX_0.VOB if present*/ sprintf(filename,"/VIDEO_TS/VTS_%02i_0.VOB", counter + 1); if ( UDFFindFile(_dvd, filename, &size) != 0 ) { title_set_info->title_set[counter + 1].size_menu = size; } else { title_set_info->title_set[counter + 1].size_menu = 0 ; } if ( verbose > 1 ){ fprintf(stderr,"After Menu VOB check\n"); } /* Find all VTS_XX_[1 to 9].VOB files if they are present*/ for( i = 0; i < 9; ++i ) { sprintf(filename,"/VIDEO_TS/VTS_%02i_%i.VOB", counter + 1, i + 1 ); if(UDFFindFile(_dvd, filename, &size) == 0 ) { break; } title_set_info->title_set[counter + 1].size_vob[i] = size; } title_set_info->title_set[counter + 1].number_of_vob_files = i; if ( verbose > 1 ){ fprintf(stderr,"After Menu Title VOB check\n"); } sprintf(filename,"/VIDEO_TS/VTS_%02i_0.BUP", counter + 1); if ( UDFFindFile(_dvd, filename, &size) != 0 ) { title_set_info->title_set[counter +1].size_bup = size; } else { DVDFreeTitleSetInfo(title_set_info); return(0); } if (title_set_info->title_set[counter +1].size_ifo != title_set_info->title_set[counter + 1].size_bup) { fprintf(stderr,"BUP and IFO size for fileset %d is not the same be warened!\n", counter + 1); } if ( verbose > 1 ){ fprintf(stderr,"After Menu Title BUP check\n"); } if ( verbose > 0 ) { fprintf(stderr,"\n\n\nFile sizes for Title set %d i.e.VTS_%02d_X.XXX\n", counter + 1, counter + 1); fprintf(stderr,"IFO: %d, MENU: %d\n", title_set_info->title_set[counter +1].size_ifo, title_set_info->title_set[counter +1].size_menu); for (i = 0; i < title_set_info->title_set[counter + 1].number_of_vob_files ; i++) { fprintf(stderr, "VOB %d is %d\n", i + 1, title_set_info->title_set[counter + 1].size_vob[i]); } fprintf(stderr,"BUP: %d\n",title_set_info->title_set[counter +1].size_bup); } if ( verbose > 1 ){ fprintf(stderr,"Bottom of loop \n"); } } } /* Return the info */ return(title_set_info); } int DVDMirror(dvd_reader_t * _dvd, char * targetdir,char * title_name) { int i; title_set_info_t * title_set_info=NULL; title_set_info = DVDGetFileSet(_dvd); if (!title_set_info) { DVDClose(_dvd); return(1); } if ( DVDMirrorVMG(_dvd, title_set_info, targetdir, title_name) != 0 ) { fprintf(stderr,"Mirror of VMG faild\n"); DVDFreeTitleSetInfo(title_set_info); return(1); } for ( i=0; i < title_set_info->number_of_title_sets; i++) { if ( DVDMirrorTitleX(_dvd, title_set_info, i + 1, targetdir, title_name) != 0 ) { fprintf(stderr,"Mirror of Title set %d faild\n", i + 1); DVDFreeTitleSetInfo(title_set_info); return(1); } } return(0); } int DVDMirrorTitleSet(dvd_reader_t * _dvd, char * targetdir,char * title_name, int title_set) { title_set_info_t * title_set_info=NULL; #ifdef DEBUG fprintf(stderr,"In DVDMirrorTitleSet\n"); #endif title_set_info = DVDGetFileSet(_dvd); if (!title_set_info) { DVDClose(_dvd); return(1); } if ( title_set > title_set_info->number_of_title_sets ) { fprintf(stderr, "Can't copy title_set %d there is only %d title_sets present on this DVD\n", title_set, title_set_info->number_of_title_sets); DVDFreeTitleSetInfo(title_set_info); return(1); } if ( title_set == 0 ) { if ( DVDMirrorVMG(_dvd, title_set_info, targetdir, title_name) != 0 ) { fprintf(stderr,"Mirror of Title set 0 (VMG) faild\n"); DVDFreeTitleSetInfo(title_set_info); return(1); } } else { if ( DVDMirrorTitleX(_dvd, title_set_info, title_set, targetdir, title_name) != 0 ) { fprintf(stderr,"Mirror of Title set %d faild\n", title_set); DVDFreeTitleSetInfo(title_set_info); return(1); } } DVDFreeTitleSetInfo(title_set_info); return(0); } int DVDMirrorMainFeature(dvd_reader_t * _dvd, char * targetdir,char * title_name) { title_set_info_t * title_set_info=NULL; titles_info_t * titles_info=NULL; titles_info = DVDGetInfo(_dvd); if (!titles_info) { fprintf(stderr, "Guess work of main feature film faild\n"); return(1); } title_set_info = DVDGetFileSet(_dvd); if (!title_set_info) { DVDFreeTitlesInfo(titles_info); return(1); } if ( DVDMirrorTitleX(_dvd, title_set_info, titles_info->main_title_set, targetdir, title_name) != 0 ) { fprintf(stderr,"Mirror of main featur file which is title set %d faild\n", titles_info->main_title_set); DVDFreeTitleSetInfo(title_set_info); return(1); } DVDFreeTitlesInfo(titles_info); DVDFreeTitleSetInfo(title_set_info); return(0); } int DVDMirrorChapters(dvd_reader_t * _dvd, char * targetdir,char * title_name, int start_chapter,int end_chapter, int titles) { int result; int chapters = 0; int feature; int i, s; int spg, epg; int pgc; int start_cell, end_cell; int vts_title; title_set_info_t * title_set_info=NULL; titles_info_t * titles_info=NULL; ifo_handle_t * vts_ifo_info=NULL; int * cell_start_sector=NULL; int * cell_end_sector=NULL; /* To do free memory*/ titles_info = DVDGetInfo(_dvd); if (!titles_info) { fprintf(stderr, "Faild to obtain titles information\n"); return(1); } title_set_info = DVDGetFileSet(_dvd); if (!title_set_info) { DVDFreeTitlesInfo(titles_info); return(1); } if(titles == 0) { fprintf(stderr, "No title specified for chapter extraction, will try to figure out main feature title\n"); feature = titles_info->main_title_set; for (i=0; i < titles_info->number_of_titles ; i++ ) { if ( titles_info->titles[i].title_set == titles_info->main_title_set ) { if(chapters < titles_info->titles[i].chapters) { chapters = titles_info->titles[i].chapters; titles = i + 1; } } } } vts_ifo_info = ifoOpen(_dvd, titles_info->titles[titles - 1].title_set); if(!vts_ifo_info) { fprintf(stderr, "Coundn't open tile_set %d IFO file\n", titles_info->titles[titles - 1].title_set); DVDFreeTitlesInfo(titles_info); DVDFreeTitleSetInfo(title_set_info); return(1); } vts_title = titles_info->titles[titles - 1].vts_title; if (end_chapter > titles_info->titles[titles - 1].chapters) { end_chapter = titles_info->titles[titles - 1].chapters; fprintf(stderr, "Turncated the end_chapter only %d chapters in %d title\n", end_chapter,titles); } if (start_chapter > titles_info->titles[titles - 1].chapters) { start_chapter = titles_info->titles[titles - 1].chapters; fprintf(stderr, "Turncated the end_chapter only %d chapters in %d title\n", end_chapter,titles); } /* We assume the same PGC for the whole title - this is not true and need to be fixed later on */ pgc = vts_ifo_info->vts_ptt_srpt->title[vts_title - 1].ptt[start_chapter - 1].pgcn; /* Lookup PG for start chapter */ spg = vts_ifo_info->vts_ptt_srpt->title[vts_title - 1].ptt[start_chapter - 1].pgn; /* Look up start cell for this pgc/pg */ start_cell = vts_ifo_info->vts_pgcit->pgci_srp[pgc - 1].pgc->program_map[spg - 1]; /* Lookup end cell*/ if ( end_chapter < titles_info->titles[titles - 1].chapters ) { epg = vts_ifo_info->vts_ptt_srpt->title[vts_title - 1].ptt[end_chapter].pgn; #ifdef DEBUG fprintf(stderr,"DVDMirrorChapter: epg %d\n", epg); #endif end_cell = vts_ifo_info->vts_pgcit->pgci_srp[pgc - 1].pgc->program_map[epg -1] - 1; #ifdef DEBUG fprintf(stderr,"DVDMirrorChapter: end cell adjusted %d\n", end_cell); #endif } else { end_cell = vts_ifo_info->vts_pgcit->pgci_srp[pgc - 1].pgc->nr_of_cells; #ifdef DEBUG fprintf(stderr,"DVDMirrorChapter: end cell adjusted 2 %d\n",end_cell); #endif } #ifdef DEBUG fprintf(stderr,"DVDMirrorChapter: star cell %d\n", start_cell); #endif /* Put all the cells start and end sector in a dual array */ cell_start_sector = (int *)malloc( (end_cell - start_cell + 1) * sizeof(int)); if(!cell_start_sector) { fprintf(stderr,"Memory allocation error 1\n"); DVDFreeTitlesInfo(titles_info); DVDFreeTitleSetInfo(title_set_info); ifoClose(vts_ifo_info); return(1); } cell_end_sector = (int *)malloc( (end_cell - start_cell + 1) * sizeof(int)); if(!cell_end_sector) { fprintf(stderr,"Memory allocation error\n"); DVDFreeTitlesInfo(titles_info); DVDFreeTitleSetInfo(title_set_info); ifoClose(vts_ifo_info); free(cell_start_sector); return(1); } #ifdef DEBUG fprintf(stderr,"DVDMirrorChapter: start cell is %d\n", start_cell); fprintf(stderr,"DVDMirrorChapter: end cell is %d\n", end_cell); fprintf(stderr,"DVDMirrorChapter: pgc is %d\n", pgc); #endif for (i=0, s=start_cell; s < end_cell +1 ; i++, s++) { cell_start_sector[i] = vts_ifo_info->vts_pgcit->pgci_srp[pgc - 1].pgc->cell_playback[s - 1].first_sector; cell_end_sector[i] = vts_ifo_info->vts_pgcit->pgci_srp[pgc - 1].pgc->cell_playback[s - 1].last_sector; #ifdef DEBUG fprintf(stderr,"DVDMirrorChapter: S is %d\n", s); fprintf(stderr,"DVDMirrorChapter: start sector %d\n", vts_ifo_info->vts_pgcit->pgci_srp[pgc - 1].pgc->cell_playback[s - 1].first_sector); fprintf(stderr,"DVDMirrorChapter: end sector %d\n", vts_ifo_info->vts_pgcit->pgci_srp[pgc - 1].pgc->cell_playback[s - 1].last_sector); #endif } bsort_min_to_max(cell_start_sector, cell_end_sector, end_cell - start_cell + 1); align_end_sector(cell_start_sector, cell_end_sector,end_cell - start_cell + 1); #ifdef DEBUG for (i=0 ; i < end_cell - start_cell + 1; i++) { fprintf(stderr,"DVDMirrorChapter: Start sector is %d end sector is %d\n", cell_start_sector[i], cell_end_sector[i]); } #endif result = DVDWriteCells(_dvd, cell_start_sector, cell_end_sector , end_cell - start_cell + 1, titles, title_set_info, titles_info, targetdir, title_name); DVDFreeTitlesInfo(titles_info); DVDFreeTitleSetInfo(title_set_info); ifoClose(vts_ifo_info); free(cell_start_sector); free(cell_end_sector); if( result != 0) { return(1); } else { return(0); } } int DVDMirrorTitles(dvd_reader_t * _dvd, char * targetdir,char * title_name, int titles) { int end_chapter; titles_info_t * titles_info=NULL; #ifdef DEBUG fprintf(stderr,"In DVDMirrorTitles\n"); #endif titles_info = DVDGetInfo(_dvd); if (!titles_info) { fprintf(stderr, "Faild to obtain titles information\n"); return(1); } end_chapter = titles_info->titles[titles - 1].chapters; #ifdef DEBUG fprintf(stderr,"DVDMirrorTitles: end_chapter %d\n", end_chapter); #endif if (DVDMirrorChapters( _dvd, targetdir, title_name, 1, end_chapter, titles) != 0 ) { DVDFreeTitlesInfo(titles_info); return(1); } DVDFreeTitlesInfo(titles_info); return(0); } int DVDDisplayInfo(dvd_reader_t * _dvd, char * dvd) { int i, f; int chapters; int channels; char title_name[33]=""; title_set_info_t * title_set_info=NULL; titles_info_t * titles_info=NULL; titles_info = DVDGetInfo(_dvd); if (!titles_info) { fprintf(stderr, "Guess work of main feature film faild\n"); return(1); } title_set_info = DVDGetFileSet(_dvd); if (!title_set_info) { DVDFreeTitlesInfo(titles_info); return(1); } DVDGetTitleName(dvd,title_name); fprintf(stdout,"\n\n\nDVD-Video information of the DVD with tile %s\n\n", title_name); /* Print file structure */ fprintf(stdout,"File Structure DVD\n"); fprintf(stdout,"VIDEO_TS/\n"); fprintf(stdout,"\tVIDEO_TS.IFO\t%i\n", title_set_info->title_set[0].size_ifo); if (title_set_info->title_set[0].size_menu != 0 ) { fprintf(stdout,"\tVIDEO_TS.VOB\t%i\n", title_set_info->title_set[0].size_menu); } fprintf(stdout,"\tVIDEO_TS.BUP\t%i\n", title_set_info->title_set[0].size_bup); for( i = 0 ; i < title_set_info->number_of_title_sets ; i++) { fprintf(stdout,"\tVTS_%02i_0.IFO\t%i\n", i + 1, title_set_info->title_set[i + 1].size_ifo); if (title_set_info->title_set[i + 1].size_menu != 0 ) { fprintf(stdout,"\tVTS_%02i_0.VOB\t%i\n", i + 1, title_set_info->title_set[i + 1].size_menu); } if (title_set_info->title_set[i + 1].number_of_vob_files != 0) { for( f = 0; f < title_set_info->title_set[i + 1].number_of_vob_files ; f++ ) { fprintf(stdout,"\tVTS_%02i_%i.VOB\t%i\n", i + 1, f + 1, title_set_info->title_set[i + 1].size_vob[f]); } } fprintf(stdout,"\tVTS_%02i_0.BUP\t%i\n", i + 1, title_set_info->title_set[i + 1].size_bup); } fprintf(stdout,"\n\nMain feature:\n"); fprintf(stdout,"\tTitle set containing the main feature is %d\n", titles_info->main_title_set); for (i=0; i < titles_info->number_of_titles ; i++ ) { if (titles_info->titles[i].title_set == titles_info->main_title_set) { if(titles_info->titles[i].aspect_ratio == 3) { fprintf(stdout,"\tThe aspect ratio of the main feature is 16:9\n"); } else if (titles_info->titles[i].aspect_ratio == 0) { fprintf(stdout,"\tThe aspect ratio of the main feature is 4:3\n"); } else { fprintf(stdout,"\tThe aspect ratio of the main feature is unknown\n"); } fprintf(stdout,"\tThe main feature has %d angle(s)\n", titles_info->titles[i].angles); fprintf(stdout,"\tThe main feature has %d audio_track(s)\n", titles_info->titles[i].angles); fprintf(stdout,"\tThe main feature has %d subpicture channel(s)\n",titles_info->titles[i].sub_pictures); chapters=0; channels=0; for (f=0; f < titles_info->number_of_titles ; f++ ) { if ( titles_info->titles[i].title_set == titles_info->main_title_set ) { if(chapters < titles_info->titles[f].chapters) { chapters = titles_info->titles[f].chapters; } if(channels < titles_info->titles[f].audio_channels) { channels = titles_info->titles[f].audio_channels; } } } fprintf(stdout,"\tThe main feature has a maximum of %d chapter(s) in on of it's titles\n", chapters); fprintf(stdout,"\tThe main feature has a maximum of %d audio channel(s) in on of it's titles\n", channels); break; } } fprintf(stdout,"\n\nTitle Sets:"); for (f=0; f < title_set_info->number_of_title_sets ; f++ ) { fprintf(stdout,"\n\n\tTitle set %d\n", f + 1); for (i=0; i < titles_info->number_of_titles ; i++ ) { if (titles_info->titles[i].title_set == f + 1) { if(titles_info->titles[i].aspect_ratio == 3) { fprintf(stdout,"\t\tThe aspect ratio of title set %d is 16:9\n", f + 1); } else if (titles_info->titles[i].aspect_ratio == 0) { fprintf(stdout,"\t\tThe aspect ratio of title set %d is 4:3\n", f + 1); } else { fprintf(stdout,"\t\tThe aspect ratio of title set %d is unknown\n", f + 1); } fprintf(stdout,"\t\tTitle set %d has %d angle(s)\n", f + 1, titles_info->titles[i].angles); fprintf(stdout,"\t\tTitle set %d has %d audio_track(s)\n", f + 1, titles_info->titles[i].angles); fprintf(stdout,"\t\tTitle set %d has %d subpicture channel(s)\n", f + 1, titles_info->titles[i].sub_pictures); break; } } fprintf(stdout,"\n\t\tTitles included in title set %d is/are\n", f + 1); for (i=0; i < titles_info->number_of_titles ; i++ ) { if (titles_info->titles[i].title_set == f + 1) { fprintf(stdout,"\t\t\tTitle %d:\n", i + 1); fprintf(stdout,"\t\t\t\tTitle %d has %d chapter(s)\n", i + 1, titles_info->titles[i].chapters); fprintf(stdout,"\t\t\t\tTitle %d has %d audio channle(s)\n", i + 1, titles_info->titles[i].audio_channels); } } } DVDFreeTitlesInfo(titles_info); DVDFreeTitleSetInfo(title_set_info); return(0); } int main(int argc, char *argv[]){ /* Args */ int flags; /* Switches */ int title_set = 0; int titles; int start_chapter; int end_chapter; int do_mirror = 0; int do_title_set = 0; int do_chapter = 0; int do_titles = 0; int do_feature = 0; int do_info = 0; int return_code; /* DVD Video device */ char * dvd=NULL; /* Temp switch helpers */ char * verbose_temp=NULL; char * aspect_temp=NULL; char * start_chapter_temp=NULL; char * end_chapter_temp=NULL; char * titles_temp=NULL; char * title_set_temp=NULL; /* Title of the DVD */ char title_name[33]=""; char * provided_title_name=NULL; /* Targer dir */ char * targetdir=NULL; /* Temp filename,dirname */ char targetname[PATH_MAX]; struct stat fileinfo; /* The DVD main structure */ dvd_reader_t * _dvd=NULL; /*Todo do isdigit check */ while ((flags = getopt(argc, argv, "MFI?hi:v:a:o:n:s:e:t:T:")) != -1) { switch (flags) { case 'i': if(optarg[0]=='-') usage(); dvd = optarg; break; case 'v': if(optarg[0]=='-') usage(); verbose_temp = optarg; break; case 'o': if(optarg[0]=='-') usage(); targetdir = optarg; break; case 'n': if(optarg[0]=='-') usage(); provided_title_name = optarg; break; case 'a': if(optarg[0]=='-') usage(); aspect_temp = optarg; break; case 's': if(optarg[0]=='-') usage(); start_chapter_temp = optarg; break; case 'e': if(optarg[0]=='-') usage(); end_chapter_temp = optarg; break; case 't': if(optarg[0]=='-') usage(); titles_temp = optarg; break; case 'T': if(optarg[0]=='-') usage(); title_set_temp = optarg; break; case 'M': do_mirror = 1; break; case 'F': do_feature = 1; break; case 'I': do_info = 1; break; case '?': usage(); break; case 'h': usage(); break; default: usage(); } } if (dvd == NULL) { usage(); exit(1); } if (targetdir == NULL && do_info == 0) { usage(); exit(1); } if(verbose_temp == NULL) { verbose = 0; } else { verbose = atoi(verbose_temp); } if (aspect_temp == NULL) { /* Deafult to 16:9 aspect ratio */ aspect = 3; } else { aspect = atoi(aspect_temp); } if((aspect != 0) && (aspect != 3) && (do_info == 0)){ usage(); exit(1); } if ( titles_temp != NULL) { titles = atoi(titles_temp); if ( titles < 1 ) { usage(); exit(1); } } if ( start_chapter_temp !=NULL) { start_chapter = atoi(start_chapter_temp); if ( start_chapter < 1 || start_chapter > 99 ) { usage(); exit(1); } } if (end_chapter_temp != NULL) { end_chapter = atoi(end_chapter_temp); if ( end_chapter < 1 || end_chapter > 99 ) { usage(); exit(1); } } if ( end_chapter_temp != NULL || start_chapter_temp != NULL) { if( end_chapter_temp == NULL) { end_chapter = 99; } else if ( start_chapter_temp == NULL) { start_chapter = 1; } if ( end_chapter < start_chapter ) { usage(); exit(1); } } if ( titles_temp != NULL && ((end_chapter_temp != NULL) || (start_chapter_temp != NULL))) { do_chapter = 1; } else if ((titles_temp != NULL) && ((end_chapter_temp == NULL) && (start_chapter_temp == NULL))) { do_titles=1; } if (do_chapter && (titles_temp == NULL)) { titles = 0; } if ( title_set_temp != NULL ) { title_set = atoi(title_set_temp); if ( title_set > 99 || title_set < 0 ) { usage(); exit(1); } do_title_set = 1; } if (do_info + do_titles + do_chapter + do_feature + do_title_set + do_mirror > 1 ) { usage(); exit(1); } else if ( do_info + do_titles + do_chapter + do_feature + do_title_set + do_mirror == 0) { usage(); exit(1); } #ifdef DEBUG fprintf(stderr,"After args\n"); #endif _dvd = DVDOpen(dvd); if(!_dvd) exit(-1); if (do_info) { DVDDisplayInfo(_dvd, dvd); DVDClose(_dvd); exit(0); } if(provided_title_name == NULL) { if (DVDGetTitleName(dvd,title_name) != 0) { fprintf(stderr,"You must provide a title name when you read your DVD-Video structure direct from the HD\n"); DVDClose(_dvd); exit(1); } if (strstr(title_name, "DVD_VIDEO") != NULL) { fprintf(stderr,"The DVD-Video title on the disk is DVD_VIDEO which is to generic please provide a title with the -n switch\n"); DVDClose(_dvd); exit(2); } } else { if (strlen(provided_title_name) > 32) { fprintf(stderr,"The title name specified is longer than 32 charachters, truncating the title name\n"); strncpy(title_name,provided_title_name, 32); title_name[32]='\0'; } else { strcpy(title_name,provided_title_name); } } sprintf(targetname,"%s",targetdir); if (stat(targetname, &fileinfo) == 0) { if (! S_ISDIR(fileinfo.st_mode)) { fprintf(stderr,"The target directory is not valid, it may be a ordinary file\n"); } } else { if (mkdir(targetname, S_IRUSR | S_IWUSR | S_IXUSR) != 0) { fprintf(stderr,"Faild creating target directory\n"); perror(""); DVDClose(_dvd); exit(-1); } } sprintf(targetname,"%s/%s",targetdir, title_name); if (stat(targetname, &fileinfo) == 0) { if (! S_ISDIR(fileinfo.st_mode)) { fprintf(stderr,"The title directory is not valid, it may be a ordinary file\n"); } } else { if (mkdir(targetname, S_IRUSR | S_IWUSR | S_IXUSR) != 0) { fprintf(stderr,"Faild creating title directory\n"); perror(""); DVDClose(_dvd); exit(-1); } } sprintf(targetname,"%s/%s/VIDEO_TS",targetdir, title_name); if (stat(targetname, &fileinfo) == 0) { if (! S_ISDIR(fileinfo.st_mode)) { fprintf(stderr,"The VIDEO_TS directory is not valid, it may be a ordinary file\n"); } } else { if (mkdir(targetname, S_IRUSR | S_IWUSR | S_IXUSR) != 0) { fprintf(stderr,"Faild creating VIDEO_TS directory\n"); perror(""); DVDClose(_dvd); exit(-1); } } #ifdef DEBUG fprintf(stderr,"After dirs\n"); #endif if(do_mirror) { if ( DVDMirror(_dvd, targetdir, title_name) != 0 ) { fprintf(stderr, "Mirror of DVD faild\n"); return_code = -1; } else { return_code = 0; } } #ifdef DEBUG fprintf(stderr,"After Mirror\n"); #endif if (do_title_set) { if (DVDMirrorTitleSet(_dvd, targetdir, title_name, title_set) != 0) { fprintf(stderr, "Mirror of title set %d faild\n", title_set); return_code = -1; } else { return_code = 0; } } #ifdef DEBUG fprintf(stderr,"After Title Set\n"); #endif if(do_feature) { if ( DVDMirrorMainFeature(_dvd, targetdir, title_name) != 0 ) { fprintf(stderr, "Mirror of main feature film of DVD faild\n"); return_code = -1; } else { return_code = 0; } } if(do_titles) { if (DVDMirrorTitles(_dvd, targetdir, title_name, titles) != 0) { fprintf(stderr, "Mirror of title %d faild\n", titles); return_code = -1; } else { return_code = 0; } } if(do_chapter) { if (DVDMirrorChapters(_dvd, targetdir, title_name, start_chapter, end_chapter, titles) != 0) { fprintf(stderr, "Mirror of chapters %d to %d in title %d faild\n", start_chapter, end_chapter, titles); return_code = -1; } else { return_code = 0; } } DVDClose(_dvd); exit(return_code); } --==_Exmh_-15860966880 Content-Type: text/plain; charset=us-ascii "Opiates are the religion of the masses." - David Cameron Staples --==_Exmh_-15860966880-- From owner-freebsd-multimedia@FreeBSD.ORG Thu Jul 22 21:51:29 2004 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 2BF9716A4CE for ; Thu, 22 Jul 2004 21:51:29 +0000 (GMT) Received: from imf25aec.mail.bellsouth.net (imf25aec.mail.bellsouth.net [205.152.59.73]) by mx1.FreeBSD.org (Postfix) with ESMTP id EF04143D2F for ; Thu, 22 Jul 2004 21:51:23 +0000 (GMT) (envelope-from ahze@ahze.net) Received: from [192.168.1.5] ([68.209.163.3]) by imf25aec.mail.bellsouth.netESMTP <20040722215123.FBNP1781.imf25aec.mail.bellsouth.net@[192.168.1.5]>; Thu, 22 Jul 2004 17:51:23 -0400 In-Reply-To: <200407222140.i6MLel27035680@bleep.craftncomp.com> References: <200407222140.i6MLel27035680@bleep.craftncomp.com> Mime-Version: 1.0 (Apple Message framework v618) Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed Message-Id: <456E3013-DC29-11D8-B0E4-000A958C81C6@ahze.net> Content-Transfer-Encoding: 7bit From: michael johnson Date: Thu, 22 Jul 2004 17:51:22 -0400 To: Stephen Hocking X-Mailer: Apple Mail (2.618) cc: freebsd-multimedia@freebsd.org Subject: Re: NTSC <-> PAL VOB conversion? X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jul 2004 21:51:29 -0000 Hi, transcode (multimedia/transcode) and/or mencoder (multimedia/mplayer work quite well. here is a few howto's for transcode http://www.theorie.physik.uni-goettingen.de/~ostreich/transcode/html/ index.html Michael On Jul 22, 2004, at 5:40 PM, Stephen Hocking wrote: > All, > > Now that I've figured out how to back up my DVDs, using libdvdread, > cdrecord and dvdbackup, I'm curious to know if anyone's managed to > figure out a way to convert the VOBs to a different video format. > The dvdbackup program I use creates a directory structure on disk > that one can mess with. Any ideas? > > > > Stephen From owner-freebsd-multimedia@FreeBSD.ORG Fri Jul 23 10:17:17 2004 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 1A05816A4CE for ; Fri, 23 Jul 2004 10:17:17 +0000 (GMT) Received: from mailout03.sul.t-online.com (mailout03.sul.t-online.com [194.25.134.81]) by mx1.FreeBSD.org (Postfix) with ESMTP id 43D3043D48 for ; Fri, 23 Jul 2004 10:17:16 +0000 (GMT) (envelope-from Alexander@Leidinger.net) Received: from fwd04.aul.t-online.de by mailout03.sul.t-online.com with smtp id 1Bnx75-0000iQ-01; Fri, 23 Jul 2004 12:17:15 +0200 Received: from Andro-Beta.Leidinger.net (rCAv+uZSoe5Q+U2ehJ-uOB-AGdoORx38QrGVczaIn0WxSU7ieZ4Hg5@[80.131.127.186]) by fmrl04.sul.t-online.com with esmtp id 1Bnx6t-1ZO3uK0; Fri, 23 Jul 2004 12:17:03 +0200 Received: from Magellan.Leidinger.net (Magellan.Leidinger.net [192.168.1.1]) i6NAH64Q087305; Fri, 23 Jul 2004 12:17:06 +0200 (CEST) (envelope-from Alexander@Leidinger.net) Date: Fri, 23 Jul 2004 12:17:31 +0200 From: Alexander Leidinger To: "Dmitriy Startsev" Message-Id: <20040723121731.6fa7a5e4@Magellan.Leidinger.net> In-Reply-To: <000401c4702b$b92bda20$910e13ac@METALLER> References: <40FE81B5.9050801@tellme3times.com> <20040722133428.16a0823e@vixen42.24-119-122-191.cpe.cableone.net> <4100209F.6060903@tellme3times.com> <000401c4702b$b92bda20$910e13ac@METALLER> X-Mailer: Sylpheed-Claws 0.9.12 (GTK+ 1.2.10; i386-portbld-freebsd5.2) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-ID: rCAv+uZSoe5Q+U2ehJ-uOB-AGdoORx38QrGVczaIn0WxSU7ieZ4Hg5@t-dialin.net cc: freebsd-multimedia@freebsd.org Subject: Re: CD+G X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 23 Jul 2004 10:17:17 -0000 On Fri, 23 Jul 2004 00:37:29 +0400 "Dmitriy Startsev" wrote: > You need something that supports sub-channel copying. Sorry, but nothing > comes to my mind about what it might be. cdrdao copy ... --read-subchan rw_raw or cdrdao copy ... --read-subchan rw You need a device which is capable of reading raw subchannels for the first one. Bye, Alexander. -- I'm available to get hired (preferred in .lu). http://www.Leidinger.net Alexander @ Leidinger.net GPG fingerprint = C518 BC70 E67F 143F BE91 3365 79E2 9C60 B006 3FE7 From owner-freebsd-multimedia@FreeBSD.ORG Fri Jul 23 14:06:08 2004 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id BEF2B16A4CE for ; Fri, 23 Jul 2004 14:06:08 +0000 (GMT) Received: from mail.tellme3times.com (dsl-yul-102.e-scape.net [209.47.218.102]) by mx1.FreeBSD.org (Postfix) with ESMTP id 3C99643D45 for ; Fri, 23 Jul 2004 14:06:08 +0000 (GMT) (envelope-from list@tellme3times.com) Received: from tellme3times.com (halla.tellme3times.com [192.168.7.29]) by mail.tellme3times.com (Postfix) with ESMTP id D1AF541F5; Fri, 23 Jul 2004 10:01:37 -0400 (EDT) Message-ID: <41011CBC.1020607@tellme3times.com> Date: Fri, 23 Jul 2004 10:12:12 -0400 From: Chris User-Agent: Mozilla Thunderbird 0.5 (X11/20040413) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Alexander Leidinger References: <40FE81B5.9050801@tellme3times.com> <20040722133428.16a0823e@vixen42.24-119-122-191.cpe.cableone.net> <4100209F.6060903@tellme3times.com> <000401c4702b$b92bda20$910e13ac@METALLER> <20040723121731.6fa7a5e4@Magellan.Leidinger.net> In-Reply-To: <20040723121731.6fa7a5e4@Magellan.Leidinger.net> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit cc: freebsd-multimedia@freebsd.org Subject: Re: CD+G X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 23 Jul 2004 14:06:08 -0000 Alexander Leidinger wrote: >On Fri, 23 Jul 2004 00:37:29 +0400 >"Dmitriy Startsev" wrote: > > > >>You need something that supports sub-channel copying. Sorry, but nothing >>comes to my mind about what it might be. >> >> > > cdrdao copy ... --read-subchan rw_raw >or > cdrdao copy ... --read-subchan rw > >You need a device which is capable of reading raw subchannels for the >first one. > >Bye, >Alexander. > > > Success, cdrdao copy --device "1,0,0" --driver generic-mmc --read-subchan rw_raw the above worked. readcd could not detect the drive. I hate it when that happens, it means I have more reading to do. I have an IDE CD. acd0: CD-RW at ata1-master PIO4 cd0 at ata1 bus 0 target 0 lun 0 cd0: Removable CD-ROM SCSI-0 device cd0: 16.000MB/s transfers Thank you for the help. Chris From owner-freebsd-multimedia@FreeBSD.ORG Fri Jul 23 16:57:05 2004 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id D943016A4CE for ; Fri, 23 Jul 2004 16:57:05 +0000 (GMT) Received: from www.eugeneglass.com (64-42-83-115.atgi.net [64.42.83.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 85E3943D39 for ; Fri, 23 Jul 2004 16:57:05 +0000 (GMT) (envelope-from jakemsr@jakemsr.com) Received: from funk.gsky.dom (64-42-83-114.atgi.net [64.42.83.114]) by www.eugeneglass.com (8.13.0/8.13.0) with ESMTP id i6NGvs4x003131 for ; Fri, 23 Jul 2004 09:57:32 -0700 (PDT) Received: from funk.gsky.dom (jakemsr@localhost.gsky.dom [127.0.0.1]) by funk.gsky.dom (8.13.0/8.13.0) with ESMTP id i6NGuupJ012681 for ; Fri, 23 Jul 2004 09:56:34 -0700 (PDT) Received: (from jakemsr@localhost) by funk.gsky.dom (8.13.0/8.13.0/Submit) id i6NGuuwC010186 for freebsd-multimedia@freebsd.org; Fri, 23 Jul 2004 09:56:34 -0700 (PDT) Date: Fri, 23 Jul 2004 09:56:34 -0700 From: Jacob Meuser To: freebsd-multimedia@freebsd.org Message-ID: <20040723165656.GA27392@funk.gsky.dom> References: <40FE81B5.9050801@tellme3times.com> <20040722133428.16a0823e@vixen42.24-119-122-191.cpe.cableone.net> <4100209F.6060903@tellme3times.com> <000401c4702b$b92bda20$910e13ac@METALLER> <20040723121731.6fa7a5e4@Magellan.Leidinger.net> <41011CBC.1020607@tellme3times.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <41011CBC.1020607@tellme3times.com> User-Agent: Mutt/1.4.2i Subject: Re: CD+G X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 23 Jul 2004 16:57:06 -0000 On Fri, Jul 23, 2004 at 10:12:12AM -0400, Chris wrote: > Alexander Leidinger wrote: > the above worked. readcd could not detect the drive. I hate it when that > happens, it means I have more reading to do. I have an IDE CD. readcd uses the same code ad cdrecord, since they come from the same person --