Page 6 of 9 FirstFirst 123456789 LastLast
Results 51 to 60 of 81

Thread: Linux Frontends

  1. #51
    pkg
    pkg is offline
    Low Bitrate pkg's Avatar
    Join Date
    Apr 2005
    Location
    Arizona
    Posts
    96
    Yeah, documentation is the worst. Someone should write a program to do it! haha.
    -pkg

    Check out my tC: http://publicjestering.com/tc
    Check out my site: http://publicjestering.com

  2. #52
    FLAC TheLlama's Avatar
    Join Date
    Jul 2004
    Location
    All over the world
    Posts
    970
    Quote Originally Posted by pkg
    Yeah, documentation is the worst. Someone should write a program to do it! haha.
    You should check out doxygen. It is very useful for documenting APIs and just source code in general. Of course, it won't write user manuals for you.

    Your project sounds neat. I wrote my previous player using fmod and sqlite. I could have done alot of things better but I'm interested in seeing how you have some stuff set up. I'm writing my current player with fmod and probably mysql because it's important that I have a webfront.

    Does your player actively scan the directory and update the database? Or do you have to explicitly rescan from the player or external program? I'm looking for a good way to keep a consistent DB. I guess your using id3lib for reading tags?

    Anyways, its good to see people working on Linux players.

  3. #53
    Variable Bitrate intuitionsys's Avatar
    Join Date
    Jul 2005
    Location
    Northern Virginia
    Posts
    293
    I'm using libid3 for reading my tags with a simple wrapper class. I'm not using SQL for my databases though. I just use my own simple parsers with flat csv databases.

    You should check out doxygen. It is very useful for documenting APIs and just source code in general. Of course, it won't write user manuals for you.
    Normally that's what I'd use and I still might end up doing that but for now I'll just have the code heavily commented. The only real API for software that I've written would be the remote control handler for external applications called by the main application's "Applications Library".
    Silverwolf 2 is dead.
    Silverwolf 3...?

  4. #54
    pkg
    pkg is offline
    Low Bitrate pkg's Avatar
    Join Date
    Apr 2005
    Location
    Arizona
    Posts
    96
    Quote Originally Posted by TheLlama
    You should check out doxygen. It is very useful for documenting APIs and just source code in general. Of course, it won't write user manuals for you.

    Your project sounds neat. I wrote my previous player using fmod and sqlite. I could have done alot of things better but I'm interested in seeing how you have some stuff set up. I'm writing my current player with fmod and probably mysql because it's important that I have a webfront.

    Does your player actively scan the directory and update the database? Or do you have to explicitly rescan from the player or external program? I'm looking for a good way to keep a consistent DB. I guess your using id3lib for reading tags?

    Anyways, its good to see people working on Linux players.
    Thanks

    Doxygen is great! But as you say, It still wont write your user manual. haha.

    The goal of my mp3 player is to make a skinnable interface with the easiest UI, playlist, and playlist manager that I could think of. The application will have XML based skinning in the very near future for custom look (and feel).

    The default skin has large buttons in a driver friendly layout and an easy to manipulate playlist and songlist manager.

    In theory the player can handle an unlimited number of songs (vectors rule!). Which is why i had to go with a sql backend.

    Breaking apart the list generation and sql queries into Threads keeps the application going while doing large queries (think 10,000 songs being listed). The ability to dynamically update the lists in the UI is crucial for this type of querying as well. Making the user wait is bad news.

    I went with TagLib (http://developer.kde.org/~wheeler/taglib.html) for the tagging. I took about 5 days researching tagging libraries and it came down to ID3tag and TagLib.

    ID3Tag is incredible, a really tight C implementation with small and efficient code. Great for embedded devices. I would have to also write a C++ wrapper like intuitionSys did which is something I am not very good at. Also the documentation was mediocre.

    TagLib was perfect for what I needed. C++, LGPL, great documentation. I had my base code for reading ID3 tags and generating DB entries written in 30 mins. TagLib also supports Ogg, FLAC, and a few other tagging schemes (completing the music format independance I was looking for).

    Right now the player only scans in one large chunk copying everything into the DB (creating duplicates ). The goal for me is to have only a few paths to import music, each of these directly tied into the tagging/scanning engine. This method will make dupes less of an issue but there will need to be some SQL work to keep the DB tight. I have been brainstorming about psudo-active scanning, event driven more so than autonomous scanning. Probably will need a clean-up job that runs in the background, removing dupes. But anything like this will be a ways down the road (I hope :P) probably included in a file management interface.

    Feel free to bounce any ideas off of me. You can PM me if you don't want to go public with them.

    IntuitionSys - are you planning to go to SQL at some point? did you write your parsers in C++?
    -pkg

    Check out my tC: http://publicjestering.com/tc
    Check out my site: http://publicjestering.com

  5. #55
    Variable Bitrate intuitionsys's Avatar
    Join Date
    Jul 2005
    Location
    Northern Virginia
    Posts
    293
    Quote Originally Posted by pkg
    Breaking apart the list generation and sql queries into Threads keeps the application going while doing large queries (think 10,000 songs being listed). The ability to dynamically update the lists in the UI is crucial for this type of querying as well. Making the user wait is bad news.
    Yeah for 10k+ songs, threaded SQL access is probably a better way to go. Right now, actually drawing the list takes more time than reading the library. Mind you I'm keeping the library in memory right now in an STL type structure. There is about a 1-second delay when switching sort methods when entries are re-added to the display widget (an overridden QListView widget using overridden QListViewItem objects).

    Quote Originally Posted by pkg
    TagLib was perfect for what I needed. C++, LGPL, great documentation. I had my base code for reading ID3 tags and generating DB entries written in 30 mins. TagLib also supports Ogg, FLAC, and a few other tagging schemes (completing the music format independance I was looking for).
    That's something else I need to work on down the road. Personally I only use MP3s but WMA and OGG support would definitely be a plus.

    Quote Originally Posted by pkg
    Right now the player only scans in one large chunk copying everything into the DB (creating duplicates ). The goal for me is to have only a few paths to import music, each of these directly tied into the tagging/scanning engine.
    What I'm doing is using dedicated import areas; the FTP area, the USB stick, CD/DVD, and CompactFlash card. Right now the user has to deliberately import new files into the database from the selected source, so what you're doing is probably similar to what I'm doing. The engine moves the files over to the master library, then refreshes the database to include the new files. Everything in the master library gets a unique "catalog number" filename.

    As we discussed somewhere else I think, I'll be adding some flagging mechanism to skip over files already in the database so the refresh doesn't take so long. For 10k+ songs the refresh could up to 2 minutes, maybe more.

    Quote Originally Posted by pkg
    IntuitionSys - are you planning to go to SQL at some point? did you write your parsers in C++?
    I won't be moving to SQL for a while, as everything works pretty well the way it is, but then I only have about 2k files in my own library. Once the source is released and assuming it actually gets installed by anyone , it would be interesting to see what kind of performance people with huge libraries get.

    Yes all my parsers are in C++, as part of the main executable.
    Silverwolf 2 is dead.
    Silverwolf 3...?

  6. #56
    pkg
    pkg is offline
    Low Bitrate pkg's Avatar
    Join Date
    Apr 2005
    Location
    Arizona
    Posts
    96
    LOL, we pwned this thread
    -pkg

    Check out my tC: http://publicjestering.com/tc
    Check out my site: http://publicjestering.com

  7. #57
    pkg
    pkg is offline
    Low Bitrate pkg's Avatar
    Join Date
    Apr 2005
    Location
    Arizona
    Posts
    96
    Beta woes:

    Captains log 051025

    The Beta... version.. that WAS going TO be ready.. LAST night

    (ok, enough captain kirk :P

    So I got my beta version ready this weekend and last night brought it over to my qa machine and installed in my car.

    After getting through all of the new OS dependancies and changes to the installed libraries I fire up the Music player and load in some songs and... segfault!

    Looks like I have some problems in the threads that my development machine was gracious enough to ignore. I probably just need to work on the Mutexes, and locks, hopefully only a couple of hours worth of work. <fingers crossed>

    I have never seen behavior like this with threads.
    Development machine - no crashing, thread problems not seen.
    QA machine - segfault, thread problems.

    Anyone have any insight as to why my dev machine wouldnt be having these segfaults while the QA machine is?
    -pkg

    Check out my tC: http://publicjestering.com/tc
    Check out my site: http://publicjestering.com

  8. #58
    Variable Bitrate intuitionsys's Avatar
    Join Date
    Jul 2005
    Location
    Northern Virginia
    Posts
    293
    Quote Originally Posted by pkg
    Anyone have any insight as to why my dev machine wouldnt be having these segfaults while the QA machine is?
    Chances are you have differences in the libraries you're linking to. What kind of optimization are you using? e.g. -O2, etc. Any debug stuff turned on/off? I'm assuming you're using C/C++...

    Oh btw I got started on the new Silverwolf website. God willing it'll be available sometime this week...
    Silverwolf 2 is dead.
    Silverwolf 3...?

  9. #59
    pkg
    pkg is offline
    Low Bitrate pkg's Avatar
    Join Date
    Apr 2005
    Location
    Arizona
    Posts
    96
    I have tracked the segfault to a for{} loop which is using a vector itererator. The loop is inside of a thread function. The first loop goes fine, beginning of the second loop it will segfault. The app doesnt crash when running in Valgrind. No optimizations are being done, debug build is enabled.

    Are there any special rules to running iterators inside of Threads that you know of?
    -pkg

    Check out my tC: http://publicjestering.com/tc
    Check out my site: http://publicjestering.com

  10. #60
    Variable Bitrate intuitionsys's Avatar
    Join Date
    Jul 2005
    Location
    Northern Virginia
    Posts
    293
    Quote Originally Posted by pkg
    Are there any special rules to running iterators inside of Threads that you know of?
    Not that I know of, so long as the data the pointer iterators are pointing to isn't shared globally and getting corrupted somewhere else. Are you sure you're not coming across null or uninitialized pointers that reference non-existent or unreserved memory? The only other thing I can think of is if you are using STL (or the Qt style derivative) type pointer iteration, are you possibly going beyond the boundary? Does your second loop possibly begin at the end point of the previous loop or is it nested using an entirely different iterator? I'm just stabbing in the dark of course but those are the things I could think of off the top of my head
    Silverwolf 2 is dead.
    Silverwolf 3...?

Similar Threads

  1. Possible EPIA distro for Linux, Can we make one?
    By adamis in forum Software & Software Development
    Replies: 15
    Last Post: 02-23-2005, 05:50 PM
  2. Linux Login, UPS and Linux Touch Screen
    By polc1410 in forum Newbie
    Replies: 5
    Last Post: 02-11-2005, 10:43 AM
  3. The LOW Risk Linux Adventure...
    By grepzen in forum Software & Software Development
    Replies: 13
    Last Post: 11-08-2004, 09:12 PM
  4. PS2 Linux -- check it out
    By Superfly in forum General Hardware Discussion
    Replies: 7
    Last Post: 03-21-2003, 11:11 PM
  5. mp3/ogg player for Linux?
    By mpfreeze in forum Software & Software Development
    Replies: 5
    Last Post: 12-16-2002, 09:35 AM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •