GSoC proposal review

Matěj Laitl matej at laitl.cz
Thu May 2 16:49:32 UTC 2013


On 1. 5. 2013 Abhinandan Ramprasath wrote:
> Motivation for project:
> 
> Audiobooks are usually quite lengthy and go on for hours. It is not always
> possible for people to finish listening to audiobooks in one go. Chapter
> support is pretty important for users to skip through chapters. I would
> find it irritating if I have to seek through to the location I want to be
> on every time. Since, Amarok already provides a bookmark to the location
> where the user left off, addition of chapter markers would make navigating
> an audiobook as easy as a book.
> 
> CUE sheeted music, on the other hand, is very popular, and not providing
> proper support ruins the music experience people would have. It is also
> been a requested feature for quite a long time (5). Many bugs have been
> reported (6) complaining about Amarok’s lack of support for CUE sheeted
> music. Implementation of support has been pushed over releases (from 2.6 to
> 2.8) and I think that this should end with the google summer of code.

Nice. (although it doesn't mention there's already a very limited support for 
cue sheets)

> Goals:
> 1) Implement Qtchapter support in TagLib

Again, I'd explicitly spell "quicktime".

> 4) (Optional) Implement embedded CUE sheet support

What it this? What formats have embedded CUE sheets?

> Implementation Details:
> 
> The project involves making changes in both TagLib and Amarok repositories.
> I would like to divide the project into 3 parts.
> 
> The first one being implementing the QtChapter (QuickTime) support in
> MP4/M4A/M4B files. As per the apple docs(1), the Qt chapter support can be
> achieved by reading the “trak” atom which contains the “chap” data. This
> trak atom contains the text track which contains the chapter information.
> The indicated text track should contain a “stbl” atom ( basically a table )
> which would contain offsets to the location in the file that contain
> chapter title in the file. Reading data at these offsets give information
> about chapter titles. The time at which each each chapter marker occurs can
> be easily calculated using the “bitrate” of the audiofile. These would be
> the changes that I would make in TagLib to support QtChapters. The changes
> in Amarok include, displaying the chapter markers to the user in the form
> of bookmarks or Multi-Tracks.I plan on reading the chapter information in
> Amarok the same way I implemented it in the bug fix (2). For actually
> showing them on Amarok I’ll use the BookmarkGroupPtr to create a new
> bookmark group and add chapter pointers to it in the form of URLs. I would
> like to also store the chapter information in the database as well.
> 
> The second part of the project would be to implement complete CUE sheet
> support.
> 
> What a CUE sheet is?
> 
> CUE sheet contains information related to the album and the main filename
> and the time offsets at which each track occurs.
> 
> What needs to be done?
> 
> I propose to make this change in the KUrl. Parts of the Url would have data
> about the Base File, Time-Offset and Duration of the track (after a “?” or
> “#” at the end, if not possible a new protocol?). Then these URL’s would be
> interpreted in the UmsCollection or SqlCollection classes as separate Track
> files. This would also enable storing the details of each song in the
> database, hence there is no need to access the CUE file every time.
> 
> Amarok already has a basic CUE sheet support, it can read CUE sheets  added
> manually through the browser or from a cd. I would like to integrate this
> with the CollectionScanner perfectly( the way it is supposed to work,
> highlighted by popular bug: (4) ). The scanner will automatically recognize
> these CUE files and record them as separate tracks in the database as
> mentioned above. I would like to store any changed metadata of a specific
> file in the KUrl. If time permits, I plan on implementing embedded CUE
> sheet support in Amarok.
> 
> The third and last part of the project would be to implement support for
> the NeroChapter type in MP4. Since, this is not so popular, I would like to
> keep this my last part of the project. This involves more changes in TagLib
> than Amarok. The chapter track information is found under the “udta” atom.
> This part of the project would be to automatically detect the type of
> chapter present in the given file and decode the chapter data and provide
> it neatly.

There are more considerations - perhaps how CollectionScanner would need to be 
updated, how to handle metadata editing, how to handle copying cuesheeted 
tracks out of Local Collection etc. But I see you already mention these under 
Timeline.

> About Me:
> 
> I am a Student of SSN College of Engineering. I prefer coding in
> C/C++/Python. I was introduced to Amarok when my friend suggested it after
> looking at my android app Lyricize (3). Since then I have fallen in love
> with it. I would love to make any contribution that makes music more
> enjoyable. I am also an enthusiastic web and android developer. I am a very
> big FLOSS fan. I have written scripts that predict and scrape the indian
> stock market data and avails it to developers as an API as well as
> contributions to Haiku OS.
> 
> Introduced to C and C++ by my mother at the age of 8,

Hehe :-)

> I have continued to
> work on various projects during school and college to sharpen my skills. I
> have learnt to code in languages such as java,php,ruby,node(javascript),
> etc. I have won hackathons conducted by KRDS, Mozilla. Also, A finalist at
> the Yahoo open hack 2012. I try to contribute to open source as much as I
> can ( github: https://github.com/abhiin1947/ ).
> 
> Am I comfortable working independently under a mentor or supervisor?
> 
> Yes. I have been an intern for the ULaw Software Foundation based in Canada
> and time zones aren’t really a problem at all.
> 
> After GSoC:
> 
> After GSoC I plan on continuing to fix bugs and code more features for
> Amarok and taglib. I intend to learn about more file formats and improving
> support in those areas.
> 
> My experience with Amarok:
> 
> I started out my Amarok journey by trying to solve bug 240409 ( which turns
> out to be a big part of my proposal ). It was initially marked as a junior
> job. I tried to implement chapter detection using library mp4v2 ( patch:
> https://git.reviewboard.kde.org/r/109079/ ) which was eventually rejected.
> After research and learning, I implemented support for chapter detection in
> Amarok by using mp4atom.h from taglib explicitly ( patch:
> https://git.reviewboard.kde.org/r/109256/ ). Since then, Unfortunately,
> exams started and I couldn’t find the time to work more on it.
> 
> My Bug fixes include https://git.reviewboard.kde.org/r/110243/ ,
> https://git.reviewboard.kde.org/r/110150/ . Both of them are relatively new
> and pending.

Your About Me section very nice as a whole.

Good luck!
	Matěj Laitl


More information about the Amarok-devel mailing list