Version: 2.2 (using KDE 4.3.1) Installed from: Gentoo Packages Amarok's implementation of cue sheet support, at least as far as the playlist interface is concerned, is broken. Each time a track plays, it's information is changed to that of the last track in the cue sheet. For example, if I load the album below (chosen because the album is short), I get the following playlist: Konami - Dracula X Remixes 01-Dracula X -- Gate to Heaven - DJ Feilong Xbeat Mix (8:39) 02-Vampire Killer -- DJ Feilong Orient Express Vocal Mix (8:46) 03-Big Burn X-Storm Dub (15:03) 04-Trans Form (6:32) 05-Cemetary of Rainbow (7:22) 06-Vampire Killer (3:47) However, after I play the first three songs, it looks like this: 06-Vampire Killer (3:47) 06-Vampire Killer (3:47) 06-Vampire Killer (3:47) 04-Trans Form (6:32) 05-Cemetary of Rainbow (7:22) 06-Vampire Killer (3:47) This problem has existed for over 2 years, as originally reported in bug 145661 and in this forum thread: http://forum.kde.org/viewtopic.php?f=115&t=71502&p=107555 In bug 145661 I had suggested methods for fixing it and even provided a working patch, but the bug closed without resolution because the playlist functionality was apparently very different in v2. Fair enough, but now that v2 is stable, cue sheet support has been reimplemented in the exact same broken manner as the previous reports were ignored. Please fix this. I don't mean to sound rude or snarky in this report, but this has been a major problem for me for 2 years now. I even got the point where I patched my own version of Amarok and stopped upgrading because I got tired of every upgrade breaking the playlist again I was desperately hoping that this would be fixed in v2, but so far no luck. Please let me know if I can do anything to help troubleshoot/fix/test this. Thanks.
Is this still valid with current 2.2.1, 2.2.2 beta or 2.2-git?
Closing for lack of feedback. Feel free to reopen if you can reproduce this with Amarok 2.2.2, to be released on Monday.
I just got a chance to test this on 2.2. It still has the same issue. Would you like me to attach a log file or screenshot or anything with information to help fix the problem? Or perhaps someone can look at my comments/code in bug 145661, since symptomatically this seems to be the exact same problem?
I'm attaching a log snippet from amarok with debugging enabled. It shows everything that happens when I attempt to start playing a FLAC file in a directory also containing a cue sheet. You can see at the top that the file's name is "02 Tobel.flac", and towards the bottom, after it processes the FLAC file, you'll see that amarok correctly reads the metadata for the file and sees that the Title is "Tobel". However, at four other places in that output amarok consults the CUE sheet for information about the track, even though it doesn't need this information. It sees "showing timecode: "Rhapsody 6 - 0:00" at 0", which is wrong on two counts as that's not the name of the track, nor is it the correct length of the track. Rhapsody 6 is the last track mentioned in the CUE sheet, which always gets picked up by amarok for some reason (see my original description for more info). So, it sees Rhapsody 6 in the cue sheet, which is incorrect, then it gets the correct name from the metadata in the file, which is correct, and then on line 481 it shows that it updated the track name in the plalist to the *incorrect* title of Rhapsody 6. I'm attempting to use this output to trace my way through the code (again) to figure out why this is happening, but this is *far* beyond my meager scripting skills. I'll post more information if I can find it, but in the meantime I hope this will give the amarok devs a hint about where to look for the problem. Thanks.
Created attachment 40109 [details] debug output showing the incorrect behavior
Jared, are you still using Amarok 2.2? My question was about Amarok 2.2.2
Shoot, sorry, this is indeed version 2.2.2. I mistyped my last post.
OK, thank you for the feedback. Please do not use the verified status if you reopen a bug, but reopen it, it's tricky to go around that now. Please paste debug outputs in line to make them searchable: amarok: BEGIN: void Playlist::Actions::play(quint64, bool) amarok: BEGIN: void EngineController::play(const Meta::TrackPtr&, uint) amarok: [EngineController] Just a normal, boring track... :-P amarok: BEGIN: void EngineController::playUrl(const KUrl&, uint) amarok: [EngineController] URL: "file:///home/user/data/music/test/02%20Tobel.flac" amarok: BEGIN: void EngineController::slotNewTrackPlaying(const Phonon::MediaSource&) amarok: [EngineController] Using gain of -4.11 with relative peak of -0.000265076 amarok: BEGIN: virtual void Context::ContextView::engineNewTrackPlaying() amarok: END__: virtual void Context::ContextView::engineNewTrackPlaying() - Took 6.5e-05s amarok: BEGIN: virtual void MetaCue::Track::unsubscribe(Meta::Observer*) amarok: Removing observer: 0x1fd82d0 amarok: END__: virtual void MetaCue::Track::unsubscribe(Meta::Observer*) - Took 5.3e-05s amarok: BEGIN: virtual void MetaCue::Track::subscribe(Meta::Observer*) amarok: Adding observer: 0x1fd82d0 amarok: END__: virtual void MetaCue::Track::subscribe(Meta::Observer*) - Took 5.2e-05s amarok: BEGIN: virtual void ProgressWidget::engineNewTrackPlaying() amarok: BEGIN: virtual void ProgressWidget::engineTrackLengthChanged(qint64) amarok: new length: 154826 amarok: slider enabled! amarok: BEGIN: void ProgressWidget::redrawBookmarks(const QString*) amarok: BEGIN: void Amarok::TimeSlider::clearTriangles() amarok: number of triangles: 0 amarok: deleted them all... amarok: END__: void Amarok::TimeSlider::clearTriangles() - Took 6.6e-05s amarok: BEGIN: virtual BookmarkList MetaCue::TimecodeLoadCapabilityImpl::loadTimecodes() amarok: cue has 1 entries amarok: seconds : 0 amarok: BEGIN: AmarokUrl PlayUrlGenerator::createTrackBookmark(Meta::TrackPtr, int, QString) amarok: concocted url: "amarok://play/ZmlsZTovLy9ob21lL2picmVsYW5kL2RhdGEvbXVzaWMvVW5wcm9jZXNzZWQvR2FtZS9TcXVhcmUlMjBFbml4L1NhR2ElMjBGcm9udGllciUyMElJJTIwUGlhbm8lMjBQaWVjZXMvMDIlMjBUb2JlbC5mbGFj?pos=0" amarok: pos: 0 amarok: END__: AmarokUrl PlayUrlGenerator::createTrackBookmark(Meta::TrackPtr, int, QString) - Took 9.7e-05s amarok: argument: "pos=0" unescaped: "0" amarok: BEGIN: virtual BookmarkViewItem::~BookmarkViewItem() amarok: END__: virtual BookmarkViewItem::~BookmarkViewItem() - Took 3.1e-05s amarok: END__: virtual BookmarkList MetaCue::TimecodeLoadCapabilityImpl::loadTimecodes() - Took 0.00031s amarok: found 1 timecodes on this track amarok: showing timecode: "Rhapsody 6 - 0:00" at 0 amarok: BEGIN: void ProgressWidget::addBookmark(const QString&, int, bool) amarok: BEGIN: void Amarok::TimeSlider::drawTriangle(const QString&, int, bool) amarok: drawing triangle at 0 amarok: END__: void Amarok::TimeSlider::drawTriangle(const QString&, int, bool) - Took 9.8e-05s amarok: END__: void ProgressWidget::addBookmark(const QString&, int, bool) - Took 0.00015s amarok: BEGIN: virtual BookmarkViewItem::~BookmarkViewItem() amarok: END__: virtual BookmarkViewItem::~BookmarkViewItem() - Took 3.1e-05s amarok: END__: void ProgressWidget::redrawBookmarks(const QString*) - Took 0.00074s amarok: END__: virtual void ProgressWidget::engineTrackLengthChanged(qint64) - Took 0.00085s amarok: END__: virtual void ProgressWidget::engineNewTrackPlaying() - Took 0.00092s amarok: BEGIN: void Playlist::PrettyListView::scrollToActiveTrack() amarok: [Playlist::PrettyListView] skipping scroll? false amarok: END__: void Playlist::PrettyListView::scrollToActiveTrack() - Took 0.00013s amarok: BEGIN: virtual void Amarok::OSD::engineNewTrackPlaying() amarok: BEGIN: void OSDWidget::show(const QString&, QImage) amarok: END__: void OSDWidget::show(const QString&, QImage) - Took 0.01s amarok: END__: virtual void Amarok::OSD::engineNewTrackPlaying() - Took 0.023s amarok: BEGIN: virtual void TimecodeObserver::engineNewTrackPlaying() amarok: END__: virtual void TimecodeObserver::engineNewTrackPlaying() - Took 7e-05s amarok: BEGIN: virtual void ProgressWidget::engineNewTrackPlaying() amarok: BEGIN: virtual void ProgressWidget::engineTrackLengthChanged(qint64) amarok: new length: 154826 amarok: slider enabled! amarok: BEGIN: void ProgressWidget::redrawBookmarks(const QString*) amarok: BEGIN: void Amarok::TimeSlider::clearTriangles() amarok: number of triangles: 0 amarok: deleted them all... amarok: END__: void Amarok::TimeSlider::clearTriangles() - Took 0.00013s amarok: BEGIN: virtual BookmarkList MetaCue::TimecodeLoadCapabilityImpl::loadTimecodes() amarok: cue has 1 entries amarok: seconds : 0 amarok: BEGIN: AmarokUrl PlayUrlGenerator::createTrackBookmark(Meta::TrackPtr, int, QString) amarok: concocted url: "amarok://play/ZmlsZTovLy9ob21lL2picmVsYW5kL2RhdGEvbXVzaWMvVW5wcm9jZXNzZWQvR2FtZS9TcXVhcmUlMjBFbml4L1NhR2ElMjBGcm9udGllciUyMElJJTIwUGlhbm8lMjBQaWVjZXMvMDIlMjBUb2JlbC5mbGFj?pos=0" amarok: pos: 0 amarok: END__: AmarokUrl PlayUrlGenerator::createTrackBookmark(Meta::TrackPtr, int, QString) - Took 0.00017s amarok: argument: "pos=0" unescaped: "0" amarok: BEGIN: virtual BookmarkViewItem::~BookmarkViewItem() amarok: END__: virtual BookmarkViewItem::~BookmarkViewItem() - Took 3.3e-05s amarok: END__: virtual BookmarkList MetaCue::TimecodeLoadCapabilityImpl::loadTimecodes() - Took 0.00072s amarok: found 1 timecodes on this track amarok: showing timecode: "Rhapsody 6 - 0:00" at 0 amarok: BEGIN: void ProgressWidget::addBookmark(const QString&, int, bool) amarok: BEGIN: void Amarok::TimeSlider::drawTriangle(const QString&, int, bool) amarok: drawing triangle at 0 amarok: END__: void Amarok::TimeSlider::drawTriangle(const QString&, int, bool) - Took 0.0006s amarok: END__: void ProgressWidget::addBookmark(const QString&, int, bool) - Took 0.00066s amarok: BEGIN: virtual BookmarkViewItem::~BookmarkViewItem() amarok: END__: virtual BookmarkViewItem::~BookmarkViewItem() - Took 3.1e-05s amarok: END__: void ProgressWidget::redrawBookmarks(const QString*) - Took 0.0018s amarok: END__: virtual void ProgressWidget::engineTrackLengthChanged(qint64) - Took 0.0019s amarok: END__: virtual void ProgressWidget::engineNewTrackPlaying() - Took 0.002s amarok: END__: void EngineController::slotNewTrackPlaying(const Phonon::MediaSource&) - Took 0.034s amarok: END__: void EngineController::playUrl(const KUrl&, uint) - Took 0.041s amarok: END__: void EngineController::play(const Meta::TrackPtr&, uint) - Took 0.041s amarok: END__: void Playlist::Actions::play(quint64, bool) - Took 0.041s [flac @ 0x5b3ca10]FRAME HEADER not here Last message repeated 1 times [flac @ 0x5b3ca10]invalid subframe padding [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here Last message repeated 1 times [flac @ 0x5b3ca10]illegal residual coding method 3 [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here Last message repeated 3 times [flac @ 0x5b3ca10]invalid subframe padding [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]invalid predictor order: 10 > 1 [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]invalid subframe padding [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here Last message repeated 1 times [flac @ 0x5b3ca10]invalid coding type [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]illegal residual coding method 2 [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here Last message repeated 1 times [flac @ 0x5b3ca10]qlevel -11 not supported, maybe buggy stream [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]invalid coding type [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]invalid channel mode: 11 [flac @ 0x5b3ca10]invalid frame header [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here Last message repeated 1 times [flac @ 0x5b3ca10]qlevel -7 not supported, maybe buggy stream [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]overread: 1803 [flac @ 0x5b3ca10]FRAME HEADER not here Last message repeated 2 times [flac @ 0x5b3ca10]qlevel -3 not supported, maybe buggy stream [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]invalid subframe padding [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here Last message repeated 1 times [flac @ 0x5b3ca10]invalid subframe padding [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here Last message repeated 1 times [flac @ 0x5b3ca10]invalid subframe padding [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here Last message repeated 1 times [flac @ 0x5b3ca10]invalid subframe padding [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]invalid subframe padding [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]qlevel -12 not supported, maybe buggy stream [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here Last message repeated 1 times [flac @ 0x5b3ca10]invalid subframe padding [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]invalid predictor order: 12 > 0 [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here Last message repeated 1 times [flac @ 0x5b3ca10]invalid subframe padding [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]invalid coding type [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here Last message repeated 1 times [flac @ 0x5b3ca10]invalid coding type [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]invalid subframe padding [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]invalid predictor order: 1 > 0 [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here Last message repeated 1 times [flac @ 0x5b3ca10]qlevel -14 not supported, maybe buggy stream [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]qlevel -10 not supported, maybe buggy stream [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]qlevel -6 not supported, maybe buggy stream [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here Last message repeated 1 times [flac @ 0x5b3ca10]invalid subframe padding [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here Last message repeated 2 times [flac @ 0x5b3ca10]invalid coding type [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here Last message repeated 2 times [flac @ 0x5b3ca10]invalid channel mode: 14 [flac @ 0x5b3ca10]invalid frame header [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]invalid subframe padding [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]invalid subframe padding [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here Last message repeated 1 times [flac @ 0x5b3ca10]invalid coding type [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]qlevel -6 not supported, maybe buggy stream [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]qlevel -16 not supported, maybe buggy stream [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]illegal residual coding method 2 [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]invalid subframe padding [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]invalid subframe padding [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here Last message repeated 1 times [flac @ 0x5b3ca10]qlevel -5 not supported, maybe buggy stream [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]invalid coeff precision [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here Last message repeated 1 times [flac @ 0x5b3ca10]invalid coding type [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]qlevel -10 not supported, maybe buggy stream [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]invalid subframe padding [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]invalid subframe padding [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]invalid subframe padding [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]invalid coding type [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]invalid subframe padding [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]invalid coding type [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]invalid subframe padding [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]invalid coding type [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]invalid coding type [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]invalid subframe padding [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]qlevel -2 not supported, maybe buggy stream [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]invalid subframe padding [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]invalid coding type [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]qlevel -12 not supported, maybe buggy stream [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]invalid predictor order: 10 > 8 [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]qlevel -3 not supported, maybe buggy stream [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here Last message repeated 2 times [flac @ 0x5b3ca10]invalid subframe padding [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]invalid coding type [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here Last message repeated 1 times [flac @ 0x5b3ca10]illegal residual coding method 2 [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]invalid subframe padding [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]qlevel -4 not supported, maybe buggy stream [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here Last message repeated 1 times [flac @ 0x5b3ca10]invalid subframe padding [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]qlevel -7 not supported, maybe buggy stream [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here Last message repeated 1 times [flac @ 0x5b3ca10]invalid coding type [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]invalid subframe padding [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]overread: 6760 [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]invalid sample size code (7) [flac @ 0x5b3ca10]invalid frame header [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]invalid subframe padding [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]qlevel -3 not supported, maybe buggy stream [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]qlevel -2 not supported, maybe buggy stream [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here Last message repeated 1 times [flac @ 0x5b3ca10]invalid subframe padding [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here Last message repeated 4 times [flac @ 0x5b3ca10]illegal residual coding method 2 [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here Last message repeated 4 times [flac @ 0x5b3ca10]invalid channel mode: 15 [flac @ 0x5b3ca10]invalid frame header [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here Last message repeated 1 times [flac @ 0x5b3ca10]invalid subframe padding [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here Last message repeated 1 times [flac @ 0x5b3ca10]invalid subframe padding [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]invalid channel mode: 15 [flac @ 0x5b3ca10]invalid frame header [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]invalid coding type [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here Last message repeated 1 times [flac @ 0x5b3ca10]broken stream, invalid padding [flac @ 0x5b3ca10]invalid frame header [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here amarok: BEGIN: void EngineController::slotStateChanged(Phonon::State, Phonon::State) amarok: BEGIN: void EngineSubject::stateChangedNotify(Phonon::State, Phonon::State) amarok: State changed, oldState: 1 -> newState: 0 amarok: END__: void EngineSubject::stateChangedNotify(Phonon::State, Phonon::State) - Took 0.015s amarok: END__: void EngineController::slotStateChanged(Phonon::State, Phonon::State) - Took 0.015s amarok: BEGIN: void EngineController::slotTrackLengthChanged(qint64) amarok: BEGIN: virtual void ProgressWidget::engineTrackLengthChanged(qint64) amarok: new length: 154826 amarok: slider enabled! amarok: BEGIN: void ProgressWidget::redrawBookmarks(const QString*) amarok: BEGIN: void Amarok::TimeSlider::clearTriangles() amarok: number of triangles: 1 amarok: BEGIN: virtual BookmarkTriangle::~BookmarkTriangle() QCoreApplication::postEvent: Unexpected null receiver amarok: END__: virtual BookmarkTriangle::~BookmarkTriangle() - Took 5.7e-05s amarok: deleted them all... amarok: END__: void Amarok::TimeSlider::clearTriangles() - Took 0.00022s amarok: BEGIN: virtual BookmarkList MetaCue::TimecodeLoadCapabilityImpl::loadTimecodes() amarok: cue has 1 entries amarok: seconds : 0 amarok: BEGIN: AmarokUrl PlayUrlGenerator::createTrackBookmark(Meta::TrackPtr, int, QString) amarok: concocted url: "amarok://play/ZmlsZTovLy9ob21lL2picmVsYW5kL2RhdGEvbXVzaWMvVW5wcm9jZXNzZWQvR2FtZS9TcXVhcmUlMjBFbml4L1NhR2ElMjBGcm9udGllciUyMElJJTIwUGlhbm8lMjBQaWVjZXMvMDIlMjBUb2JlbC5mbGFj?pos=0" amarok: pos: 0 amarok: END__: AmarokUrl PlayUrlGenerator::createTrackBookmark(Meta::TrackPtr, int, QString) - Took 0.00014s amarok: argument: "pos=0" unescaped: "0" amarok: BEGIN: virtual BookmarkViewItem::~BookmarkViewItem() amarok: END__: virtual BookmarkViewItem::~BookmarkViewItem() - Took 4.8e-05s amarok: END__: virtual BookmarkList MetaCue::TimecodeLoadCapabilityImpl::loadTimecodes() - Took 0.00045s amarok: found 1 timecodes on this track amarok: showing timecode: "Rhapsody 6 - 0:00" at 0 amarok: BEGIN: void ProgressWidget::addBookmark(const QString&, int, bool) amarok: BEGIN: void Amarok::TimeSlider::drawTriangle(const QString&, int, bool) amarok: drawing triangle at 0 amarok: END__: void Amarok::TimeSlider::drawTriangle(const QString&, int, bool) - Took 0.00013s amarok: END__: void ProgressWidget::addBookmark(const QString&, int, bool) - Took 0.00022s amarok: BEGIN: virtual BookmarkViewItem::~BookmarkViewItem() amarok: END__: virtual BookmarkViewItem::~BookmarkViewItem() - Took 4.7e-05s amarok: END__: void ProgressWidget::redrawBookmarks(const QString*) - Took 0.0012s amarok: END__: virtual void ProgressWidget::engineTrackLengthChanged(qint64) - Took 0.0013s amarok: BEGIN: virtual void ProgressWidget::engineTrackLengthChanged(qint64) amarok: new length: 154826 amarok: slider enabled! amarok: BEGIN: void ProgressWidget::redrawBookmarks(const QString*) amarok: BEGIN: void Amarok::TimeSlider::clearTriangles() amarok: number of triangles: 1 amarok: BEGIN: virtual BookmarkTriangle::~BookmarkTriangle() QCoreApplication::postEvent: Unexpected null receiver amarok: END__: virtual BookmarkTriangle::~BookmarkTriangle() - Took 5.4e-05s amarok: deleted them all... amarok: END__: void Amarok::TimeSlider::clearTriangles() - Took 0.00023s amarok: BEGIN: virtual BookmarkList MetaCue::TimecodeLoadCapabilityImpl::loadTimecodes() amarok: cue has 1 entries amarok: seconds : 0 amarok: BEGIN: AmarokUrl PlayUrlGenerator::createTrackBookmark(Meta::TrackPtr, int, QString) amarok: concocted url: "amarok://play/ZmlsZTovLy9ob21lL2picmVsYW5kL2RhdGEvbXVzaWMvVW5wcm9jZXNzZWQvR2FtZS9TcXVhcmUlMjBFbml4L1NhR2ElMjBGcm9udGllciUyMElJJTIwUGlhbm8lMjBQaWVjZXMvMDIlMjBUb2JlbC5mbGFj?pos=0" amarok: pos: 0 amarok: END__: AmarokUrl PlayUrlGenerator::createTrackBookmark(Meta::TrackPtr, int, QString) - Took 0.00013s amarok: argument: "pos=0" unescaped: "0" amarok: BEGIN: virtual BookmarkViewItem::~BookmarkViewItem() amarok: END__: virtual BookmarkViewItem::~BookmarkViewItem() - Took 4.6e-05s amarok: END__: virtual BookmarkList MetaCue::TimecodeLoadCapabilityImpl::loadTimecodes() - Took 0.00041s amarok: found 1 timecodes on this track amarok: showing timecode: "Rhapsody 6 - 0:00" at 0 amarok: BEGIN: void ProgressWidget::addBookmark(const QString&, int, bool) amarok: BEGIN: void Amarok::TimeSlider::drawTriangle(const QString&, int, bool) amarok: drawing triangle at 0 amarok: END__: void Amarok::TimeSlider::drawTriangle(const QString&, int, bool) - Took 0.0068s amarok: END__: void ProgressWidget::addBookmark(const QString&, int, bool) - Took 0.0069s amarok: BEGIN: virtual BookmarkViewItem::~BookmarkViewItem() amarok: END__: virtual BookmarkViewItem::~BookmarkViewItem() - Took 4.8e-05s amarok: END__: void ProgressWidget::redrawBookmarks(const QString*) - Took 0.0079s amarok: END__: virtual void ProgressWidget::engineTrackLengthChanged(qint64) - Took 0.008s amarok: END__: void EngineController::slotTrackLengthChanged(qint64) - Took 0.0095s amarok: BEGIN: void EngineController::slotMetaDataChanged() amarok: [EngineController] Artist : ("Mikiko Saiki") amarok: [EngineController] Album : ("SaGa Frontier II Piano Pieces") amarok: [EngineController] Title : ("Tobel") amarok: [EngineController] Genre : ("Game") amarok: [EngineController] Tracknumber: ("02") amarok: [EngineController] Length : () amarok: [EngineController] Track changed: true amarok: BEGIN: void EngineSubject::newMetaDataNotify(const QHash<long long int, QString>&, bool) amarok: BEGIN: virtual void Context::ContextView::engineNewMetaData(const QHash<long long int, QString>&, bool) amarok: END__: virtual void Context::ContextView::engineNewMetaData(const QHash<long long int, QString>&, bool) - Took 6e-05s amarok: END__: void EngineSubject::newMetaDataNotify(const QHash<long long int, QString>&, bool) - Took 0.00017s amarok: END__: void EngineController::slotMetaDataChanged() - Took 0.0005s amarok: BEGIN: void EngineController::slotStateChanged(Phonon::State, Phonon::State) amarok: BEGIN: void EngineSubject::stateChangedNotify(Phonon::State, Phonon::State) amarok: State changed, oldState: 0 -> newState: 1 amarok: END__: void EngineSubject::stateChangedNotify(Phonon::State, Phonon::State) - Took 0.00089s amarok: END__: void EngineController::slotStateChanged(Phonon::State, Phonon::State) - Took 0.00098s amarok: BEGIN: void EngineController::slotStateChanged(Phonon::State, Phonon::State) amarok: BEGIN: void EngineSubject::stateChangedNotify(Phonon::State, Phonon::State) amarok: State changed, oldState: 1 -> newState: 3 amarok: END__: void EngineSubject::stateChangedNotify(Phonon::State, Phonon::State) - Took 0.00056s amarok: END__: void EngineController::slotStateChanged(Phonon::State, Phonon::State) - Took 0.00066s amarok: BEGIN: void EngineController::slotStateChanged(Phonon::State, Phonon::State) amarok: BEGIN: void EngineSubject::stateChangedNotify(Phonon::State, Phonon::State) amarok: State changed, oldState: 3 -> newState: 2 amarok: BEGIN: virtual void MetaCue::Track::subscribe(Meta::Observer*) amarok: Adding observer: 0x34553f8 amarok: END__: virtual void MetaCue::Track::subscribe(Meta::Observer*) - Took 7.6e-05s amarok: BEGIN: virtual void MetaCue::Track::subscribe(Meta::Observer*) amarok: Adding observer: 0x1ce7d40 amarok: END__: virtual void MetaCue::Track::subscribe(Meta::Observer*) - Took 0.0001s amarok: END__: void EngineSubject::stateChangedNotify(Phonon::State, Phonon::State) - Took 0.0089s amarok: END__: void EngineController::slotStateChanged(Phonon::State, Phonon::State) - Took 0.009s amarok: [Playlist::Model] Metadata updated for track "Rhapsody 6" amarok: BEGIN: void EngineController::stop(bool) amarok: [EngineController] m_currentTrack != 0 amarok: BEGIN: void Meta::StatisticsProvider::played(double) amarok: called with playedFraction = inf amarok: END__: void Meta::StatisticsProvider::played(double) - Took 0.00054s amarok: BEGIN: virtual void Context::ContextView::enginePlaybackEnded(qint64, qint64, EngineObserver::PlaybackEndedReason) amarok: END__: virtual void Context::ContextView::enginePlaybackEnded(qint64, qint64, EngineObserver::PlaybackEndedReason) - Took 5e-05s amarok: BEGIN: virtual void ProgressWidget::enginePlaybackEnded(qint64, qint64, EngineObserver::PlaybackEndedReason) amarok: BEGIN: void Amarok::TimeSlider::clearTriangles() amarok: number of triangles: 1 amarok: BEGIN: virtual BookmarkTriangle::~BookmarkTriangle() QCoreApplication::postEvent: Unexpected null receiver amarok: END__: virtual BookmarkTriangle::~BookmarkTriangle() - Took 0.00037s amarok: deleted them all... amarok: END__: void Amarok::TimeSlider::clearTriangles() - Took 0.00054s amarok: END__: virtual void ProgressWidget::enginePlaybackEnded(qint64, qint64, EngineObserver::PlaybackEndedReason) - Took 0.00067s amarok: BEGIN: virtual void TimecodeObserver::enginePlaybackEnded(qint64, qint64, EngineObserver::PlaybackEndedReason) amarok: END__: virtual void TimecodeObserver::enginePlaybackEnded(qint64, qint64, EngineObserver::PlaybackEndedReason) - Took 4.7e-05s amarok: BEGIN: virtual void ProgressWidget::enginePlaybackEnded(qint64, qint64, EngineObserver::PlaybackEndedReason) amarok: BEGIN: void Amarok::TimeSlider::clearTriangles() amarok: number of triangles: 1 amarok: BEGIN: virtual BookmarkTriangle::~BookmarkTriangle() QCoreApplication::postEvent: Unexpected null receiver amarok: END__: virtual BookmarkTriangle::~BookmarkTriangle() - Took 5.4e-05s amarok: deleted them all... amarok: END__: void Amarok::TimeSlider::clearTriangles() - Took 0.00021s amarok: END__: virtual void ProgressWidget::enginePlaybackEnded(qint64, qint64, EngineObserver::PlaybackEndedReason) - Took 0.00033s amarok: BEGIN: void EngineController::slotNewTrackPlaying(const Phonon::MediaSource&) amarok: [EngineController] Empty MediaSource (engine stop) amarok: END__: void EngineController::slotNewTrackPlaying(const Phonon::MediaSource&) - Took 8.5e-05s amarok: END__: void EngineController::stop(bool) - Took 0.0029s [flac @ 0x5b3ca10]illegal residual coding method 3 [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]invalid subframe padding [flac @ 0x5b3ca10]decode_frame() failed [flac @ 0x5b3ca10]FRAME HEADER not here [flac @ 0x5b3ca10]invalid subframe padding [flac @ 0x5b3ca10]decode_frame() failed amarok: BEGIN: void EngineController::slotStateChanged(Phonon::State, Phonon::State) amarok: BEGIN: void EngineSubject::stateChangedNotify(Phonon::State, Phonon::State) amarok: State changed, oldState: 2 -> newState: 1 amarok: END__: void EngineSubject::stateChangedNotify(Phonon::State, Phonon::State) - Took 0.0015s amarok: END__: void EngineController::slotStateChanged(Phonon::State, Phonon::State) - Took 0.0017s
*** Bug 219830 has been marked as a duplicate of this bug. ***
Confirmed by duplicate.
This still happens in 2.3.1, but the symptoms are different now. Instead of the playlist information changing for each track as it's played, all are changed when tracks are loaded. Ie., to reuse my example from the first post, the playlist would look like this immediately after loading the tracks: 06-Vampire Killer (8:39) 06-Vampire Killer (8:46) 06-Vampire Killer (15:03) 06-Vampire Killer (6:32) 06-Vampire Killer (7:22) 06-Vampire Killer (3:47) There are two other differences: 1. Track time no longer seems to be affected - Amarok shows the accurate track length for each sone, even though number and title are messed up 2. This triggers the behavior described in bug 192114, where playback stops after each track. So, even though that bug was supposedly fixed in the latest version, it's still an issue if cue sheets are involved.
This still happens in 2.3.1. Here's a sample "album" that demonstrates the problem: http://www.legroom.net/public/amarok_cue_problem.tbz2 This is from an album that Amarok fails to load properly 100% of the time. I edited the cue sheet to only include the first 5 tracks, and trimmed each track down to just 10 seconds, so it's only about a 4.5 MB download. To reproduce: 1. Download and unpack file 2. Load tracks in Amarok, either via drag-and-drop or the Play Media... option - Notice the track number of tracks 1-4 all change to that of the last track (track 5). 3. Start playing the tracks - Notice that playback stops after each track. This was done on KDE 4.4.5 w/ Amarok 2.3.1.
For one more good test, rename the cue file to .cue.old and repeat steps 1-3 from my previous post. Note this time that Amarok loads and plays the tracks properly.
Thank you for the feedback.
commit c5d7f3314c0c2fa5b9a69a0a98b64fdab843ad3d branch master Author: Sergey Ivanov <123kash@gmail.com> Date: Thu Jan 13 13:19:53 2011 +0300 Fixed issue with wrong handling of multyfiles cuesheets. BUG: 262668 BUG: 209341 diff --git a/ChangeLog b/ChangeLog index 49aa9bb..a975985 100644 --- a/ChangeLog +++ b/ChangeLog @@ -9,6 +9,9 @@ VERSION 2.4.1 CHANGES: BUGFIXES: + * Fixed issues with multifiles cuesheet, when all tracks get metadata of last track + in cuesheet, and each file defined in sheet gets all tracks of this sheet. + (BR 262668) (BR 209341) * Fixed crash when trying to download a full size cover and the server redirects the request. (BR 262902) * Fixed issue when breadcrumbs stayed not updated after service insert/remove. (BR 262780) diff --git a/src/core-impl/meta/cue/CueFileSupport.cpp b/src/core-impl/meta/cue/CueFileSupport.cpp index 53f4262..7765d26 100644 --- a/src/core-impl/meta/cue/CueFileSupport.cpp +++ b/src/core-impl/meta/cue/CueFileSupport.cpp @@ -35,34 +35,19 @@ using namespace MetaCue; * @author (C) 2005 by Martin Ehmke <ehmke@gmx.de> */ -CueFileItemMap CueFileSupport::loadCueFile( Meta::TrackPtr track ) -{ - - //attempt to find cue file, return empty map if not found or invalid - KUrl cuefile = locateCueSheet( track->playableUrl() ); - if( cuefile.isEmpty() ) - { - debug() << "No cue file found for track " << track->playableUrl(); - return CueFileItemMap(); - } - - return loadCueFile( cuefile, track->length() ); -} - - -CueFileItemMap CueFileSupport::loadCueFile( const KUrl &cuefile, qint64 mediaLength ) +CueFileItemMap CueFileSupport::loadCueFile( const KUrl &cuefile, const Meta::TrackPtr track ) { DEBUG_BLOCK CueFileItemMap cueItems; - + debug() << "CUEFILE: " << cuefile.pathOrUrl(); if ( QFile::exists ( cuefile.pathOrUrl() ) ) { debug() << " EXISTS!"; QFile file ( cuefile.pathOrUrl() ); - int track = 0; + int trackNr = 0; QString defaultArtist; QString defaultAlbum; QString artist; @@ -71,6 +56,8 @@ CueFileItemMap CueFileSupport::loadCueFile( const KUrl &cuefile, qint64 mediaLen long prevIndex = -1; bool index00Present = false; long index = -1; + bool filesSection = false; + bool fileFound = false; int mode = BEGIN; if ( file.open ( QIODevice::ReadOnly ) ) @@ -94,12 +81,17 @@ CueFileItemMap CueFileSupport::loadCueFile( const KUrl &cuefile, qint64 mediaLen if ( line.startsWith ( "title", Qt::CaseInsensitive ) ) { title = line.mid ( 6 ).remove ( '"' ); - if ( mode == BEGIN ) + if ( mode == BEGIN && !filesSection ) { defaultAlbum = title; title.clear(); debug() << "Album: " << defaultAlbum; } + else if( !fileFound ) + { + title.clear(); + continue; + } else debug() << "Title: " << title; } @@ -107,17 +99,22 @@ CueFileItemMap CueFileSupport::loadCueFile( const KUrl &cuefile, qint64 mediaLen else if ( line.startsWith ( "performer", Qt::CaseInsensitive ) ) { artist = line.mid ( 10 ).remove ( '"' ); - if ( mode == BEGIN ) + if ( mode == BEGIN && !filesSection ) { defaultArtist = artist; artist.clear(); debug() << "Album Artist: " << defaultArtist; } + else if( !fileFound ) + { + artist.clear(); + continue; + } else debug() << "Artist: " << artist; } - else if ( line.startsWith ( "track", Qt::CaseInsensitive ) ) + else if ( line.startsWith ( "track", Qt::CaseInsensitive ) && fileFound ) { if ( mode == TRACK_FOUND ) { @@ -126,24 +123,24 @@ CueFileItemMap CueFileSupport::loadCueFile( const KUrl &cuefile, qint64 mediaLen debug() << "Mode is TRACK_FOUND, abort."; return CueFileItemMap(); } - if ( mode == INDEX_FOUND ) + else if ( mode == INDEX_FOUND ) { if ( artist.isNull() ) artist = defaultArtist; - debug() << "Inserting item: " << title << " - " << artist << " on " << defaultAlbum << " (" << track << ")"; + debug() << "Inserting item: " << title << " - " << artist << " on " << defaultAlbum << " (" << trackNr << ")"; // add previous entry to map - cueItems.insert ( index, CueFileItem ( title, artist, defaultAlbum, track, index ) ); + cueItems.insert ( index, CueFileItem ( title, artist, defaultAlbum, trackNr, index ) ); prevIndex = index; title.clear(); artist.clear(); - track = 0; + trackNr = 0; } - track = line.section ( ' ',1,1 ).toInt(); - debug() << "Track: " << track; + trackNr = line.section ( ' ',1,1 ).toInt(); + debug() << "Track: " << trackNr; mode = TRACK_FOUND; } - else if ( line.startsWith ( "index", Qt::CaseInsensitive ) ) + else if ( line.startsWith ( "index", Qt::CaseInsensitive ) && fileFound ) { if ( mode == TRACK_FOUND ) { @@ -197,14 +194,23 @@ CueFileItemMap CueFileSupport::loadCueFile( const KUrl &cuefile, qint64 mediaLen } debug() << "index: " << index; } + else if( line.startsWith ( "file", Qt::CaseInsensitive ) ) + { + QString file = line.mid ( 5 ).remove ( '"' ); + if( fileFound ) + break; + + fileFound = file.contains ( track->playableUrl().fileName(), Qt::CaseInsensitive ); + filesSection = true; + } } if ( artist.isNull() ) artist = defaultArtist; - debug() << "Inserting item: " << title << " - " << artist << " on " << defaultAlbum << " (" << track << ")"; + debug() << "Inserting item: " << title << " - " << artist << " on " << defaultAlbum << " (" << trackNr << ")"; // add previous entry to map - cueItems.insert ( index, CueFileItem ( title, artist, defaultAlbum, track, index ) ); + cueItems.insert ( index, CueFileItem ( title, artist, defaultAlbum, trackNr, index ) ); file.close(); } @@ -214,8 +220,8 @@ CueFileItemMap CueFileSupport::loadCueFile( const KUrl &cuefile, qint64 mediaLen * we can set the lenth for the last track after all the cue file was loaded into array. */ - cueItems[index].setLength ( mediaLength - index ); - debug() << "Setting length of track " << cueItems[index].title() << " to " << mediaLength - index << " msecs."; + cueItems[index].setLength ( track->length() - index ); + debug() << "Setting length of track " << cueItems[index].title() << " to " << track->length() - index << " msecs."; return cueItems; } diff --git a/src/core-impl/meta/cue/CueFileSupport.h b/src/core-impl/meta/cue/CueFileSupport.h index 741f7f6..e85b1a1 100644 --- a/src/core-impl/meta/cue/CueFileSupport.h +++ b/src/core-impl/meta/cue/CueFileSupport.h @@ -104,11 +104,9 @@ class CueFileSupport TRACK_FOUND, // track found, index not yet found INDEX_FOUND }; - - static CueFileItemMap loadCueFile( Meta::TrackPtr track ); - static CueFileItemMap loadCueFile( const KUrl &cuefile, qint64 mediaLength ); - + static CueFileItemMap loadCueFile( const KUrl &cuefile, const Meta::TrackPtr track ); + /** * Used to locate a cue sheet for a local track. * @return A KUrl containing the url for the cue sheet diff --git a/src/playlist/PlaylistController.cpp b/src/playlist/PlaylistController.cpp index d6c78a1..578fee5 100644 --- a/src/playlist/PlaylistController.cpp +++ b/src/playlist/PlaylistController.cpp @@ -602,7 +602,7 @@ Playlist::Controller::insertionHelper( int bottomModelRow, Meta::TrackList& tl ) KUrl cuesheet = MetaCue::CueFileSupport::locateCueSheet( track->playableUrl() ); if( !cuesheet.isEmpty() ) { - MetaCue::CueFileItemMap cueMap = MetaCue::CueFileSupport::loadCueFile( track ); + MetaCue::CueFileItemMap cueMap = MetaCue::CueFileSupport::loadCueFile( cuesheet, track ); if( !cueMap.isEmpty() ) { Meta::TrackList cueTracks = MetaCue::CueFileSupport::generateTimeCodeTracks( track, cueMap );
(In reply to comment #15) > commit c5d7f3314c0c2fa5b9a69a0a98b64fdab843ad3d > branch master > Author: Sergey Ivanov <123kash@gmail.com> > Date: Thu Jan 13 13:19:53 2011 +0300 > > Fixed issue with wrong handling of multyfiles cuesheets. > BUG: 262668 > BUG: 209341 In what version of Amarok is this supposed to be applied? I just upgraded to 2.4.0 and the issue still remains.
Jared, the header of the report tells you which version this is fixed in, in this case 2.4.1
Ahh, thank you, Myriam. I completely missed that line. Unfortunately, I just upgraded to Amarok 2.4.1, and the problem has still not been fixed, though it exhibits a different behavior now. To illustrate, here is an example of loading tracks without a CUE sheet present: http://www.legroom.net/public/ex_241_nocue.png That's how it the playlist should look. Now, here's the same playlist with the CUE sheet present: http://www.legroom.net/public/ex_241_cue.png For some reason it seems to mangle the first track, but the rest are fine. This is repeatable for me using Amarok 2.4.1 and the sample files below: http://www.legroom.net/public/amarok_cue_problem2.tbz2 This is different behavior than originally described in this bug report, but still a symptom of the same basic problem: buggy CUE sheet support. I think this bug should be reopened as it hasn't been properly fixed, but I can open a new bug if you think that's more appropriate. Whatever would help to get this finally fixed. :-) Thanks.
Please open a new one, as this is not exactly the same problem as this one. Also please try to remove the configuration files of amarok, sometimes left-over settings can cause problems (even if I doubt it in this case).
2.4.3 Looks like fixed.