[mythtv] [RFC] MythMusic: use libcdio to play & rip CDs (Win32 & MacOSX too)

Lawrence Rust lvr at softsystem.co.uk
Wed Dec 1 14:20:10 UTC 2010


On Wed, 2010-12-01 at 13:15 +0100, Jonathan Martens wrote:
> On 1-12-2010 1:02, Jonathan Martens wrote:
> > On 30-11-2010 23:00, Lawrence Rust wrote:
> >>> There are some issues with compiling libcio on windows:
> >>>
> >>> 1. libcdio needs iconv but ./configure under MinGW fails to detect iconv
> >>
> >> Yes, found that and fixed it by adding --disable-joliet to ./configue
> >> (see bottom of my original post).
> >
> > Have not tried that (yet).
> 
> I have applied all you patches (and removed some interfering changes in 
> my local tree) and I am able to build mythmusic with support for ripping.

Good news.  I am currently attempting the build on a clean XP SP3 system
using VirtualBox and the current trunk head (r27402).  It gets as far as
building FFmpeg and then mingw segfaults:

CC      libswscale/rgb2rgb.o
In file included from libswscale/rgb2rgb.c:185:
libswscale/rgb2rgb_template.c: In function 'rgb24toyv12_3DNOW':
libswscale/rgb2rgb_template.c:1998: internal compiler error:
Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.

Any idea?

> To start ripping I have had to manually update the database as some 
> settings (regarding the drive) would not stick through the frontend 
> interface resulting in errors like this:
> 
> 2010-12-01 12:51:08.921 XMLParseBase, Error: Duplicate name: 'banner' in 
> parent
> 'ripstatus'
>                          Location: 
> D:/mythtv/build/share/mythtv/themes/default/mu
> sic-ui.xml @ 1061
>                          Name: 'banner'  Type: 'textarea'
> ++ WARN: could not open input stream...
> 2010-12-01 12:51:09.093 Error: getSectorCount('Z:\',track=1) failed at 
> cdda_iden
> tify()
> ++ WARN: could not open input stream...

[snip]

Ah yes - well spotted.  This is the backslash on the drive letter.
Simple workaround is to add -O "CDDevice=e:" to the mythfrontend command
line.  I strip this in cddecoder-cdio.cpp but made minimal changes to
cdrip.cpp and so it slipped thru - apologies.  This patch will fix it:


Index: mythplugins/mythmusic/mythmusic/cdrip.cpp
===================================================================
--- mythplugins/mythmusic/mythmusic/cdrip.cpp	(revision 27299)
+++ mythplugins/mythmusic/mythmusic/cdrip.cpp	(working copy)
@@ -146,6 +179,10 @@
     m_totalSectorsDone(0), m_lastTrackPct(0),
     m_lastOverallPct(0)
 {
+#ifdef WIN32 // libcdio needs the drive letter with no path
+    if (this->m_CDdevice.endsWith('\\'))
+        this->m_CDdevice.chop(1);
+#endif
 }
 
 CDRipperThread::~CDRipperThread(void)


> read::ripTrack(tracknum = 13) exiting.
> TagLib: Ogg::PageHeader::read() -- error reading page header
> TagLib: broken ogg file
> 2010-12-01 12:53:32.093 MythMainWindow::attach old: none, new: progress, 
> thread:
>   2916
> 
> I need to debug this some more, but my first attempts in looking up a CD 
> and ripping it after the manual intervention (setting the drive letter 
> from 'default' to 'z:') in the database seems to work.

OK, as expected.

> > Attached is a (manually modified) diff of th ewin32-packager.pl scripts.
> > Since I have lots more of local changes/additions in win32-packager.pl
> > the line numbers are possible way off, likely only to apply very fuzzy.

Thanks, applied it and tried it with results noted above.  I also added
this:

@@ -760,6 +760,30 @@
               "make install"],
   comment => 'building and installing: msys libvorbis' ],
 
+# confirmed latest source version as at 01-12-2010:
+[ archive => $sources.'flac-1.2.1.tar.gz',  
+  fetch   =>
'http://mesh.dl.sourceforge.net/project/flac/flac-src/flac-1.2.1-src/flac-1.2.1.tar.gz'],
+[ dir     => $sources.'flac-1.2.1', 
+  extract => $sources.'flac-1.2.1.tar' ],
+[ file    => $msys.'lib/libFLAC.a', 
+  shell   => ["cd $unixsources/flac-1.2.1",
+              "./configure --prefix=/usr",
+              "make",
+              "make install"],
+  comment => 'building and installing: msys libFLAC' ],

to build libFLAC which is needed by mythmusic.  I also found that the
installed \bin\taglib-config has an error:

-prefix=/usr/local
+prefix=/usr

> Attached is my latest minimal modification to the win32-packager.pl 
> script, still need to run it top down from a clean start to see how it 
> works, as well as needing to properly write out the patch to a file.
> For now I manually created the patch by downloading it from your 
> suggested link.
> Due to more local changes to the win32-packager.pl script line numbers 
> might be off and some fuzziness is needed to apply the patch.

Thanks, I'll keep at it until I find a method to build it.

-- Lawrence




More information about the mythtv-dev mailing list