<div dir="ltr"><div><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, May 2, 2013 at 10:19 PM, Matěj Laitl <span dir="ltr"><<a href="mailto:matej@laitl.cz" target="_blank">matej@laitl.cz</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="im">On 1. 5. 2013 Abhinandan Ramprasath wrote:<br>

> Motivation for project:<br>
><br>
> Audiobooks are usually quite lengthy and go on for hours. It is not always<br>
> possible for people to finish listening to audiobooks in one go. Chapter<br>
> support is pretty important for users to skip through chapters. I would<br>
> find it irritating if I have to seek through to the location I want to be<br>
> on every time. Since, Amarok already provides a bookmark to the location<br>
> where the user left off, addition of chapter markers would make navigating<br>
> an audiobook as easy as a book.<br>
><br>
> CUE sheeted music, on the other hand, is very popular, and not providing<br>
> proper support ruins the music experience people would have. It is also<br>
> been a requested feature for quite a long time (5). Many bugs have been<br>
> reported (6) complaining about Amarok’s lack of support for CUE sheeted<br>
> music. Implementation of support has been pushed over releases (from 2.6 to<br>
> 2.8) and I think that this should end with the google summer of code.<br>
<br>
</div>Nice. (although it doesn't mention there's already a very limited support for<br>
cue sheets)<br>
<br>
> Goals:<br>
<div class="im">> 1) Implement Qtchapter support in TagLib<br>
<br>
</div>Again, I'd explicitly spell "quicktime".<br>
<div class="im"><br>
> 4) (Optional) Implement embedded CUE sheet support<br>
<br>
</div>What it this? What formats have embedded CUE sheets?<br>
<div><div class="h5"><br>
> Implementation Details:<br>
><br>
> The project involves making changes in both TagLib and Amarok repositories.<br>
> I would like to divide the project into 3 parts.<br>
><br>
> The first one being implementing the QtChapter (QuickTime) support in<br>
> MP4/M4A/M4B files. As per the apple docs(1), the Qt chapter support can be<br>
> achieved by reading the “trak” atom which contains the “chap” data. This<br>
> trak atom contains the text track which contains the chapter information.<br>
> The indicated text track should contain a “stbl” atom ( basically a table )<br>
> which would contain offsets to the location in the file that contain<br>
> chapter title in the file. Reading data at these offsets give information<br>
> about chapter titles. The time at which each each chapter marker occurs can<br>
> be easily calculated using the “bitrate” of the audiofile. These would be<br>
> the changes that I would make in TagLib to support QtChapters. The changes<br>
> in Amarok include, displaying the chapter markers to the user in the form<br>
> of bookmarks or Multi-Tracks.I plan on reading the chapter information in<br>
> Amarok the same way I implemented it in the bug fix (2). For actually<br>
> showing them on Amarok I’ll use the BookmarkGroupPtr to create a new<br>
> bookmark group and add chapter pointers to it in the form of URLs. I would<br>
> like to also store the chapter information in the database as well.<br>
><br>
> The second part of the project would be to implement complete CUE sheet<br>
> support.<br>
><br>
> What a CUE sheet is?<br>
><br>
> CUE sheet contains information related to the album and the main filename<br>
> and the time offsets at which each track occurs.<br>
><br>
> What needs to be done?<br>
><br>
> I propose to make this change in the KUrl. Parts of the Url would have data<br>
> about the Base File, Time-Offset and Duration of the track (after a “?” or<br>
> “#” at the end, if not possible a new protocol?). Then these URL’s would be<br>
> interpreted in the UmsCollection or SqlCollection classes as separate Track<br>
> files. This would also enable storing the details of each song in the<br>
> database, hence there is no need to access the CUE file every time.<br>
><br>
> Amarok already has a basic CUE sheet support, it can read CUE sheets  added<br>
> manually through the browser or from a cd. I would like to integrate this<br>
> with the CollectionScanner perfectly( the way it is supposed to work,<br>
> highlighted by popular bug: (4) ). The scanner will automatically recognize<br>
> these CUE files and record them as separate tracks in the database as<br>
> mentioned above. I would like to store any changed metadata of a specific<br>
> file in the KUrl. If time permits, I plan on implementing embedded CUE<br>
> sheet support in Amarok.<br>
><br>
> The third and last part of the project would be to implement support for<br>
> the NeroChapter type in MP4. Since, this is not so popular, I would like to<br>
> keep this my last part of the project. This involves more changes in TagLib<br>
> than Amarok. The chapter track information is found under the “udta” atom.<br>
> This part of the project would be to automatically detect the type of<br>
> chapter present in the given file and decode the chapter data and provide<br>
> it neatly.<br>
<br>
</div></div>There are more considerations - perhaps how CollectionScanner would need to be<br>
updated, how to handle metadata editing, how to handle copying cuesheeted<br>
tracks out of Local Collection etc. But I see you already mention these under<br>
Timeline.<br>
<div class="im"><br>
> About Me:<br>
><br>
> I am a Student of SSN College of Engineering. I prefer coding in<br>
> C/C++/Python. I was introduced to Amarok when my friend suggested it after<br>
> looking at my android app Lyricize (3). Since then I have fallen in love<br>
> with it. I would love to make any contribution that makes music more<br>
> enjoyable. I am also an enthusiastic web and android developer. I am a very<br>
> big FLOSS fan. I have written scripts that predict and scrape the indian<br>
> stock market data and avails it to developers as an API as well as<br>
> contributions to Haiku OS.<br>
><br>
> Introduced to C and C++ by my mother at the age of 8,<br>
<br>
</div>Hehe :-)<br>
<div><div class="h5"><br>
> I have continued to<br>
> work on various projects during school and college to sharpen my skills. I<br>
> have learnt to code in languages such as java,php,ruby,node(javascript),<br>
> etc. I have won hackathons conducted by KRDS, Mozilla. Also, A finalist at<br>
> the Yahoo open hack 2012. I try to contribute to open source as much as I<br>
> can ( github: <a href="https://github.com/abhiin1947/" target="_blank">https://github.com/abhiin1947/</a> ).<br>
><br>
> Am I comfortable working independently under a mentor or supervisor?<br>
><br>
> Yes. I have been an intern for the ULaw Software Foundation based in Canada<br>
> and time zones aren’t really a problem at all.<br>
><br>
> After GSoC:<br>
><br>
> After GSoC I plan on continuing to fix bugs and code more features for<br>
> Amarok and taglib. I intend to learn about more file formats and improving<br>
> support in those areas.<br>
><br>
> My experience with Amarok:<br>
><br>
> I started out my Amarok journey by trying to solve bug 240409 ( which turns<br>
> out to be a big part of my proposal ). It was initially marked as a junior<br>
> job. I tried to implement chapter detection using library mp4v2 ( patch:<br>
> <a href="https://git.reviewboard.kde.org/r/109079/" target="_blank">https://git.reviewboard.kde.org/r/109079/</a> ) which was eventually rejected.<br>
> After research and learning, I implemented support for chapter detection in<br>
> Amarok by using mp4atom.h from taglib explicitly ( patch:<br>
> <a href="https://git.reviewboard.kde.org/r/109256/" target="_blank">https://git.reviewboard.kde.org/r/109256/</a> ). Since then, Unfortunately,<br>
> exams started and I couldn’t find the time to work more on it.<br>
><br>
> My Bug fixes include <a href="https://git.reviewboard.kde.org/r/110243/" target="_blank">https://git.reviewboard.kde.org/r/110243/</a> ,<br>
> <a href="https://git.reviewboard.kde.org/r/110150/" target="_blank">https://git.reviewboard.kde.org/r/110150/</a> . Both of them are relatively new<br>
> and pending.<br>
<br>
</div></div>Your About Me section very nice as a whole.<br>
<br>
Good luck!<br></blockquote>Thanks a lot matej! :-)<div style>Good luck to you as well </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<span class=""><font color="#888888">        Matěj Laitl<br>
</font></span></blockquote></div>Abhinandan</div></div>