Bug 209341 - cuesheet support - track information always changed to LAST track in cue sheet
Summary: cuesheet support - track information always changed to LAST track in cue sheet
Status: RESOLVED FIXED
Alias: None
Product: amarok
Classification: Unclassified
Component: Playlist (show other bugs)
Version: 2.3.1
Platform: Gentoo Packages Unspecified
: NOR normal with 20 votes (vote)
Target Milestone: 2.4.0
Assignee: Amarok Developers
URL:
Keywords:
: 219830 (view as bug list)
Depends on:
Blocks:
 
Reported: 2009-10-03 23:44 UTC by Jared B.
Modified: 2011-08-03 00:12 UTC (History)
3 users (show)

See Also:
Latest Commit:
Version Fixed In: 2.4.1


Attachments
debug output showing the incorrect behavior (59.41 KB, text/plain)
2010-01-22 02:38 UTC, Jared B.
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Jared B. 2009-10-03 23:44:29 UTC
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.
Comment 1 Myriam Schweingruber 2009-12-17 17:19:52 UTC
Is this still valid with current 2.2.1, 2.2.2 beta or 2.2-git?
Comment 2 Myriam Schweingruber 2010-01-07 11:41:09 UTC
Closing for lack of feedback. Feel free to reopen if you can reproduce this with Amarok 2.2.2, to be released on Monday.
Comment 3 Jared B. 2010-01-22 01:48:32 UTC
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?
Comment 4 Jared B. 2010-01-22 02:37:09 UTC
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.
Comment 5 Jared B. 2010-01-22 02:38:46 UTC
Created attachment 40109 [details]
debug output showing the incorrect behavior
Comment 6 Myriam Schweingruber 2010-01-22 10:46:16 UTC
Jared, are you still using Amarok 2.2? My question was about Amarok 2.2.2
Comment 7 Jared B. 2010-01-22 15:53:00 UTC
Shoot, sorry, this is indeed version 2.2.2.  I mistyped my last post.
Comment 8 Myriam Schweingruber 2010-01-22 16:55:30 UTC
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
Comment 9 Myriam Schweingruber 2010-02-24 22:32:20 UTC
*** Bug 219830 has been marked as a duplicate of this bug. ***
Comment 10 Myriam Schweingruber 2010-02-24 22:32:55 UTC
Confirmed by duplicate.
Comment 11 Jared B. 2010-08-16 00:58:44 UTC
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.
Comment 12 Jared B. 2010-08-16 01:02:31 UTC
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.
Comment 13 Jared B. 2010-08-16 04:48:45 UTC
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.
Comment 14 Myriam Schweingruber 2010-08-16 09:37:13 UTC
Thank you for the feedback.
Comment 15 Sergey Ivanov 2011-01-13 11:25:55 UTC
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 );
Comment 16 Jared B. 2011-05-15 19:25:28 UTC
(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.
Comment 17 Myriam Schweingruber 2011-05-15 22:16:43 UTC
Jared, the header of the report tells you which version this is fixed in, in this case 2.4.1
Comment 18 Jared B. 2011-05-15 23:52:57 UTC
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.
Comment 19 Myriam Schweingruber 2011-05-16 08:58:38 UTC
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).
Comment 20 Vovochka 2011-08-03 00:12:25 UTC
2.4.3
Looks like fixed.