I'm planning to do some traveling this summer, so I'll be probably quite often not available at all for a couple of days in a row. I can help with TagLib problems/questions, but I will probably not have enough time to be a regular mentor.
Lukas On Sat, May 4, 2013 at 6:00 PM, Matěj Laitl <ma...@laitl.cz> wrote: > Hi TagLib developers, > Google Summer of Code student proposal deadline was yesterday and we're quite > happy that we've got a fair number of good proposals in Amarok. On the other > hand we unfortunately don't have enough mentoring manpower to mentor all the > good proposals (doesn't necessary mean this one). > > One of the proposals is "Implementing CUE sheet and chapter support in Amarok" > by Abhinandan Ramprasath, which may (despite the title) touch more TagLib than > Amarok. > > Perhaps one of you (Lukáši?) would be able to help us (and TagLib) by > mentoring this proposal? Some reasons supporting it: > * most solid bits of the proposal are IMO the ones touching actual metadata > parsing, parts about Amarok integration are more brief. Student's past > involvement touched also the metadata reading bits. > * chapter reading from MP4 (QuickTime and Nero subformats), Ogg files and > embedded CUE sheet reading from FLAC (and perhaps wavpack) files would be of > good benefit to whole TagLib community, not just Amarok. > * Amarok integration points in the proposal could be replaced by implementing > cue or chapter reading from more file formats (already mentioned above) as > already outlined in the proposal, should be student agree on this. > > Formally, applications for Amarok are under KDE and given TagLib's strong ties > with KDE, this shouldn't be a problem. OTOH mentoring is quite a commitment > with reports that it takes ~1 hour a working day during the coding period > (June 17 - September 29). [3][4] > > What do you think? We'd be glad to receive any indication from you by this > Monday (as it is the date we have to coordinate GSoC proposals within KDE) > > Regards, > Matěj Laitl of Amarok > > ----------- > Original idea at [1], discussion with student about the proposal at [2], copy > of the proposal follows. > > [1] > http://community.kde.org/GSoC/2013/Ideas#Project:_Unified_CUE_File_and_Audiobook_Chapter_Support_in_Amarok > [2] https://mail.kde.org/pipermail/amarok-devel/2013-April/012031.html and > https://mail.kde.org/pipermail/amarok-devel/2013-May/012078.html > [3] https://code.google.com/p/google-summer-of-code/wiki/AdviceforMentors > [4] http://en.flossmanuals.net/gsocmentoring/ > > On 3. 5. 2013 Abhinandan Ramprasath <abhiin1...@gmail.com> wrote: >> This is the proposal I'm submitting for GSoC. Thanks to Matej for the >> reviews. >> >> *Short Description:* >> >> Amarok currently has very limited CUE sheet support >> and no support for chapters. My project aims at detecting chapter markers >> of various formats by implementing them in TagLib and using it to Amarok's >> advantage. Also, Integrating CUE sheets with Amarok so that they work >> seamlessly. >> >> Basic Details: >> >> Name: Abhinandan Ramaprasath >> Email Address: abhiin1...@gmail.com >> Freenode IRC Nick: abhiin1947 >> IM Service and Username: Gtalk - abhiin1947 >> Location (City, Country and/or Time Zone): Chennai, India, UTC+05:30 >> Github: https://github.com/abhiin1947/ >> Proposal Title: Implementing CUE sheet and chapter support in Amarok >> >> 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 an important feature in modern audio players. Trying to find the >> part of the audiobook that the user wants is an arduous task. 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 >> flipping through a book. >> >> Chapter markers otherwise have been a demanded feature ( with over 40+ >> wishes ). It would be very useful in enhanced podcasts >> <http://en.wikipedia.org/wiki/Podcast#Enhanced_podcasts> to be able >> to jump to various chapters/parts with just a click of a button. >> >> CUE sheeted music, on the other hand, is very popular, and not providing >> proper support ruins the music experience. It has also been a requested >> feature for quite a long time (1) ( 700+ votes ). Many bugs have been >> reported (2) about Amarok’s lack of support for CUE sheeted music. >> Implementation of CUE sheet support has been delayed over releases (from >> 2.6 to 2.8) and I would like to complete it this Google Summer of Code. >> >> Goals: >> >> The goals of my project would be to >> 1) Implement QuickTime chapter support in TagLib. >> 2) MP3 chapter support in Amarok. >> 3) Implement OGG chapter support in TagLib. >> 4) Display these chapters in Amarok. >> 5) Integrate CUE sheet support with collection manager and Amarok for a >> seamless music experience. >> 6) Implement support for NeroChapter type in TagLib >> 7) Solve bugs related to my project along the way (3). >> >> Implementation Details: >> >> The project involves making changes in both TagLib and Amarok repositories. >> I would like to divide the project into 5 parts. >> >> *1. QtChapter support in MP4/M4A/M4B files* >> >> The first part is implementing the QtChapter (Qt = QuickTime in this >> proposal) support in MP4/M4A/M4B files. As per the Apple >> docs<https://developer.apple.com/library/mac/#documentation/QuickTime/qtff/Q >> TFFChap2/qtff2.html>, the Qt (QuickTime) 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 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 (QuickTime). >> >> This should also solve part of the bug >> <https://bugs.kde.org/show_bug.cgi?id=144849>. This merge will provide >> support for the Apple Enhanced Podcast ( M4A ) as well. >> >> 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<https://git.reviewboard.kde.org/r/109256/>attempt. 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. >> >> *2. Show MP3 chapter markers in Amarok* >> >> Thanks to a recent pull request >> <https://github.com/taglib/taglib/pull/173>by krejclu6, MP3 chapter >> support has been implemented in TagLib. This small >> part of the project is to use this framework to show MP3 chapter markers in >> Amarok. The implementation of this in Amarok will be same as mentioned >> before. >> >> *3. Implement OGG chapter support* >> >> OGG chapter support is something TagLib still lacks. According to XIPH's >> docs <http://wiki.xiph.org/Chapter_Extension>, chapter support in OGG is >> very straightforward. The chapter data is found in the comments of the file >> along with the metadata. >> >> *4. **Implement CUE Sheet support* >> >> The fourth part of the project would be to implement complete CUE sheet >> support. >> >> *What is CUE sheet?* >> >> CUE sheet contains information related to the album, 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 CDROM. I would like to integrate >> this better with the CollectionScanner ( the way it is supposed to work, >> highlighted in the bug >> <https://bugs.kde.org/show_bug.cgi?id=187587>report's comments ). The >> scanner will automatically recognize these CUE >> files and record them as separate tracks in the database as mentioned >> above. Any changed metadata in the file would be stored in the KUrl. >> >> *5. Support for NeroChapter type in MP4* >> >> The 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 the 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 aim at automatically detecting the >> type of chapter present in the given file, decoding the chapter data and >> providing it neatly. >> >> Tentative Timeline: >> >> June >> < GSoC begins > >> >> week 4: Community Bonding Period - Ask for improvement suggestions and get >> to know the Amarok community. >> >> July- >> >> week 1: Create Abstract Classes in TagLib for MP4 chapter support ( This >> will be useful for the last part of the project as well ). Implementing >> QtChapter (QuickTime) Support. >> >> week 2: Finish implementing QtChapter (QuickTime) Support in TagLib. >> Implement OGG chapter support. >> >> week 3: Modify the database and store the chapter data in it. >> >> week 4: Tweak UI in Amarok to display the chapter markers (MP3, MP4, >> OGG). Start Implementation of CUE sheet support. >> >> < Mid-term - Complete chapter support in Amarok> >> >> August- >> >> *week 1*: Integrate CUE sheet reading with the scanner and automatically >> detect that these are separate track files and add them to the collection. >> >> *weeks 2 and 3*: Implement changes in KUrl. Make modifications in >> SqlCollection and other methods and classes that use url(TrackPtr , >> playback and other controllers). >> >> *week 4*: Make modifications in UmsCollection to support CUE sheets as well. >> >> September- >> >> *week 1*: Implement modules that allow the user to change the metadata of >> CUE-sheeted tracks. I do not plan on making these changes in the CUE sheet >> instead store them locally/in the url so that Amarok can display them >> >> *week 2*: Finish CUE sheet support in Amarok. >> >> *week 3*: Implement NeroChapter support in TagLib. >> >> < pencils down > >> >> *week 4*: Testing and resolving any bugs. >> >> Do you have other obligations from late May to early August (school, work, >> vacation, etc.)? >> >> No. I can work upto 50 hours a week, 6-8 hours in the weekdays, and in the >> weekends too, if required, or if I am possessed with the compulsive urge to >> get something done ;) College starts early August, but it’s early in the >> semester, and the course work would be extremely light. >> >> About Me: >> >> I am an Information Technology undergrad at SSN College of Engineering. I >> am comfortable writing code in C/C++/Python. I was introduced to Amarok >> when my friend suggested it after looking at my android app >> Lyricize > <https://play.google.com/store/apps/details?id=com.festalize.LyricMatch>. >> It totally drew me in. I'd love to make any contribution that makes >> music more enjoyable. I am also an enthusiastic web and android developer, >> and a great fan of FOSS. On a Foreign Exchange trade related project I >> recently worked on, I built a scraper >> <https://github.com/makkarlabs/stockscrape>, which I open sourced, that >> scrapes data from the National Stock Exchange website, and publishes it as >> a JSON API. I’ve also contributed to the Haiku OS. >> >> Introduced to C and C++ at the age of 8, I continued to work on programming >> challenges, web and mobile related projects during school and college to >> sharpen my skills. I have learnt to code in languages such as java, php, >> ruby, node(javascript), etc. In the hackathon conducted by KRDS in 2012, I >> created a location guessing Facebook game which won the second >> prize<http://lighthouseinsights.in/a-chat-with-the-krds-india-facecode-hacka >> thon-winners.html>. I also was selected as one of the winners of Firefox OS >> hackathon conducted by Mozilla for creating a collaborative browser across >> platforms called BrowseWithMe using nodejs ( >> server <https://bitbucket.org/abhiin1947/bb_monkey/src>, >> client <https://github.com/makkarlabs/bbmonkey> ). I created a >> gesturecontrolled web app >> Fliptube <https://github.com/makkarlabs/fliptube>, a YouTube client where >> mobile users could flip through videos with ease, for the Yahoo! Open hack >> 2012 and it was selected as top 10 hacks of the night (out of 180+ hacks). >> >> 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 multimedia related file >> formats and improving support in those areas. >> >> One area I intentionally did not mention is the implementation of matroska >> chapter support. I plan on implementing this after GSoC as I feel it would >> be too much for 3 months. It is similar to the chapter markers in OGG >> Vorbis. >> Another requested feature is the support for embedded CUE files. I have >> explained these more clearly in the "Additional Information" section. This >> is one feature that requires a lot more time so, I plan to work on this >> after GSoC. >> >> 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/ ). It was rejected because it was >> a technical preview. I have been busy with exams since, and have not been >> able to finish it. >> >> Two other recent bug fixes that are not accepted yet - >> https://git.reviewboard.kde.org/r/110243/ , >> https://git.reviewboard.kde.org/r/110150/ >> >> Additional Information: >> >> Embedded CUE sheets are CUEs that are stored within the audio files. There >> are 2 formats in which they occur, FLAC and WAVPACK. The FLAC embedded CUE >> sheet has its own tags whereas the WAVPACK uses the apev2 tag. The task >> would be to implement CUE detection in TagLib and then use them to >> implement it in Amarok. >> >> External Links: >> >> (1) - https://bugs.kde.org/show_bug.cgi?id=187587 reported 2009 >> >> (2) - https://bugs.kde.org/show_bug.cgi?id=187587 , >> https://bugs.kde.org/show_bug.cgi?id=286089 , >> https://bugs.kde.org/show_bug.cgi?id=294136 , >> https://bugs.kde.org/show_bug.cgi?id=270003 , >> https://bugs.kde.org/show_bug.cgi?id=279234 , >> https://bugs.kde.org/show_bug.cgi?id=230272 >> >> (3) - https://bugs.kde.org/show_bug.cgi?id=240409 , >> https://bugs.kde.org/show_bug.cgi?id=187587 , >> https://bugs.kde.org/show_bug.cgi?id=286089 , >> https://bugs.kde.org/show_bug.cgi?id=270003 , >> https://bugs.kde.org/show_bug.cgi?id=294136 , >> https://bugs.kde.org/show_bug.cgi?id=144849 >> >> (4) - *https://bugs.kde.org/show_bug.cgi?id=144849* > _______________________________________________ > taglib-devel mailing list > taglib-de...@kde.org > https://mail.kde.org/mailman/listinfo/taglib-devel _______________________________________________ Amarok-devel mailing list Amarok-devel@kde.org https://mail.kde.org/mailman/listinfo/amarok-devel