shana / google-highly-open-participation-mono

Automatically exported from code.google.com/p/google-highly-open-participation-mono
0 stars 0 forks source link

Add Linux CD-ROM support to musicbrainz-sharp #45

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
In an upcoming version, Banshee[1] will use the new musicbrainz-sharp
library to retrieve CD metadata from the MusicBrainz[2] database.
MusicBrainz uniquely identifies CDs by their TOC (table of contents).
musicbrainz-sharp currently only reads TOCs on Windows. You would add
support for reading CD TOCs on Linux.

The musicbrainz-sharp code can be found in the Banshee svn repo[3]. As a
reference, consult the libdiscid[4] implementation. Write a C# class to
create the TOC using P/Invoke when necessary. See DiscWin32.cs[5] for the
Windows implementation as an example.

[1] http://banshee-project.org/Main_Page
[2] http://musicbrainz.org
[3] http://svn.gnome.org/svn/banshee/trunk/musicbrainz-sharp
[4] http://musicbrainz.org/doc/libdiscid
[5]
http://svn.gnome.org/viewvc/banshee/trunk/musicbrainz-sharp/src/MusicBrainz/Musi
cBrainz/DiscWin32.cs?view=log

Original issue reported on code.google.com by lunchtim...@gmail.com on 13 Dec 2007 at 4:21

GoogleCodeExporter commented 9 years ago
If you're interested in this issue, feel free to contact we with any questions 
in
irc.gnome.org#mono-ghop. I'm scottp.

Original comment by lunchtim...@gmail.com on 13 Dec 2007 at 4:37

GoogleCodeExporter commented 9 years ago
I would like to claim this task, but I am working on issue 26. I have asked for 
the
issue to either be redesigned, or that I be unclaimed. I have not received an 
answer
in about 2 days. Is it possible for me to work on this issue? Could the person 
or
people responsible for issue 26 be poked. I have already created bindings for 
libdiscid.

Original comment by williamj...@gmail.com on 19 Dec 2007 at 12:10

GoogleCodeExporter commented 9 years ago
I've unclaimed you from issue 26 and put you down for this one.

Original comment by lunchtim...@gmail.com on 19 Dec 2007 at 1:35

GoogleCodeExporter commented 9 years ago
Where can I find the documentation for the TrackOffsets array?

Original comment by williamj...@gmail.com on 19 Dec 2007 at 4:00

GoogleCodeExporter commented 9 years ago
How do I test my code? The musicbrainz-sharp project will not compile due to 
these
two errors:
System.Net.HttpWebRequest does not contain a definition for CachePolicy(CS0117)
System.Net.HttpWebResponse does not contain a definition for IsFromCache(CS0117)
I think these functions are not implemented in mono yet.

Thanks for the help.

Original comment by williamj...@gmail.com on 19 Dec 2007 at 4:22

GoogleCodeExporter commented 9 years ago
TrackOffsets is an array of the frame offset for each track. It's essentially 
the
place on the CD (frame) where every track begins. See DiscWin32 or libdiscid 
for how
it's used (in libdiscid's disc_linux.c it's called "TrackOffsets").

CachePolicy isn't implemented in mono, but it should be stubbed out. What 
version of
mono are you running. You may need to update to at least 1.2.5.

Original comment by lunchtim...@gmail.com on 19 Dec 2007 at 7:02

GoogleCodeExporter commented 9 years ago
I meant to say, in libdiscid's disc_linux.c it's called "track_offset".

Original comment by lunchtim...@gmail.com on 20 Dec 2007 at 1:48

GoogleCodeExporter commented 9 years ago
I created a test project that uses banshee-sharp and it fails with a runtime 
error.
Unhandled Exception: System.MissingMethodException: Method not found:
'System.Threading.Thread.get_ManagedThreadId'.

I upgraded to mono 1.2.5.1. Do I need mono 1.2.6?

Original comment by williamj...@gmail.com on 20 Dec 2007 at 3:41

GoogleCodeExporter commented 9 years ago
Try 1.2.6. If that doesn't work, let me know and we'll figure something out.

Original comment by lunchtim...@gmail.com on 20 Dec 2007 at 8:55

GoogleCodeExporter commented 9 years ago
I tried 1.2.6. Same problem. I am attaching the project I used to test my code.

Original comment by williamj...@gmail.com on 22 Dec 2007 at 4:30

Attachments:

GoogleCodeExporter commented 9 years ago
I'm afraid I'm away from my dev machine for the next month (Christmas break, 
w00t),
so I'll have to refer you to IRC. If you can't find any help in #mono-ghop, 
#banshee,
or #mono, post here again and I'll see what I can piece out.

Original comment by lunchtim...@gmail.com on 22 Dec 2007 at 10:38

GoogleCodeExporter commented 9 years ago
I figured out that I needed to use the 2.0 runtime for my test program rather 
than
the 1.1 that is the default in monodevelop.

Original comment by williamj...@gmail.com on 23 Dec 2007 at 4:44

GoogleCodeExporter commented 9 years ago
Is it possible to wrap libdiscid and have that take care of the platform 
specific
bits in linux? This makes for cleaner code, but it adds the dependency of 
libdiscid.
libdiscid could also be used for windows allowing a single class to be written.

Original comment by williamj...@gmail.com on 26 Dec 2007 at 5:35

GoogleCodeExporter commented 9 years ago
Ideally I would like to avoid depending on libdiscid. If it's feasible, try to
re-create the logic from libdiscid in C# using P/Invoke. If that's just not 
going to
work, the go ahead and wrap libdiscid and we'll just live with the dependency.

Original comment by lunchtim...@gmail.com on 26 Dec 2007 at 9:50

GoogleCodeExporter commented 9 years ago
I think it is possible to recreate the logic from the libdiscid code, but I 
think it
would really messy. It would be easier and more portable to just use libdiscid.
Libdiscid has the ability to run on Linux, Windows and MacOSX.

Original comment by williamj...@gmail.com on 27 Dec 2007 at 2:24

GoogleCodeExporter commented 9 years ago
libdiscid it is then.

Original comment by lunchtim...@gmail.com on 27 Dec 2007 at 7:48

GoogleCodeExporter commented 9 years ago
Placing an arbitrary duedate for housekeeping purposes, but the owner and 
claimee can
negotiate and change if it isn't enough.   :)

Original comment by jpo...@gmail.com on 28 Dec 2007 at 2:33

GoogleCodeExporter commented 9 years ago
Here is a preliminary patch. I have added a new project called libdiscid-sharp 
and
have modified musicbrainz-sharp to use this on linux.

There are two known issues I would like help with. Firstly, how do I know if 
the ID
that musicbrainz-sharp is generating is valid? how do I test this?

Secondly, I need some review on libdiscid-sharp. This is the first real linux c#
application/library I have written. I would appreciate comments on code style,
deployment, or anything else that is wrong.

Thanks!

Original comment by williamj...@gmail.com on 31 Dec 2007 at 3:55

Attachments:

GoogleCodeExporter commented 9 years ago
Posting to let you know that I've got the patch. I will have it reviewed by 
Friday
(very busy vacation this is turning out to be). If you're eager to take on 
another
issue, let me know.

Original comment by lunchtim...@gmail.com on 2 Jan 2008 at 9:38

GoogleCodeExporter commented 9 years ago
That's Friday at the latest, btw.

Original comment by lunchtim...@gmail.com on 2 Jan 2008 at 9:38

GoogleCodeExporter commented 9 years ago
I really doubt that I got the implementation right on the first try and expect 
to do
more work on it. However my goal is to get three tasks done and this is my 
second. I
would like to start on issue 58.

Original comment by williamj...@gmail.com on 6 Jan 2008 at 8:52

GoogleCodeExporter commented 9 years ago
Hey William, sorry I didn't get around to this when I said I would. I've given 
the
code a look over and there are naturally some things to change, however I need 
to
give some thought to how I would like the projects structured (i.e. whether to 
have
libdiscid-sharp be its own project, &c.). Setting up a new and separate project 
has
some considerations which I'll have to weigh. As far as your work goes, the 
wrapper
looks very nice and you've done a good job with the task as we agreed to handle 
it.
I'll close the issue and assign you to issue 58. Good work!

Original comment by lunchtim...@gmail.com on 6 Jan 2008 at 9:16

GoogleCodeExporter commented 9 years ago
P.S., actually I'll wait to assign you to issue 58 until there's an "I claim 
this
task" post - it looks like renatoat is interested, but has not claimed it yet.

Original comment by lunchtim...@gmail.com on 6 Jan 2008 at 9:17