Bug 270003 - MP3 with CUE file playback/transition broken
Summary: MP3 with CUE file playback/transition broken
Status: CONFIRMED
Alias: None
Product: amarok
Classification: Applications
Component: Playback/CUE sheet support (show other bugs)
Version: 2.7.1
Platform: Arch Linux Linux
: NOR normal
Target Milestone: 2.8
Assignee: Amarok Developers
URL:
Keywords:
Depends on: 187587
Blocks:
  Show dependency treegraph
 
Reported: 2011-04-03 15:13 UTC by lazx888
Modified: 2013-07-12 15:07 UTC (History)
5 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description lazx888 2011-04-03 15:13:36 UTC
Version:           2.4-GIT (using KDE 4.6.1) 
OS:                Linux

When playing an MP3 with CUE file, the CUE is parsed properly, but playback/transition to next track is broken.  Amarok plays the first track okay, but does not play next track.

Reproducible: Always

Steps to Reproduce:
1) Use VLC-phonon or GStreamer-phonon backend.
2) Load mp3 that has a cue file.
3) Play track and wait for transition to next track

Actual Results:  
1) Playback stops (no transition).
2) Unable to restart playback of mp3 with cue file.  Loading a different mp3 and then retrying playback of mp3 with cue file allows ONE track of mp3 with cue file to be played again, but upon transition to next track playback is broken again.

Expected Results:  
Gapless transition to next track of mp3 with cue file.
Comment 1 lazx888 2011-04-03 15:27:16 UTC
amarok: BEGIN: void EngineController::slotAboutToFinish() 
amarok:   [EngineController] Track finished completely, updating statistics 
amarok:   [EngineController] finished a track that consists of part of another track, go to next track even if this url is technically not done yet 
amarok:   BEGIN: void EngineController::stop(bool) 
amarok:     BEGIN: void TimecodeObserver::stopped(qint64, qint64) 
amarok:     END__: void TimecodeObserver::stopped(qint64, qint64) [Took: 0s] 
amarok:     BEGIN: virtual Capabilities::Capability* Meta::TimecodeTrack::createCapabilityInterface(Capabilities::Capability::Type) 
amarok:     END__: virtual Capabilities::Capability* Meta::TimecodeTrack::createCapabilityInterface(Capabilities::Capability::Type) [Took: 0s] 
amarok:     BEGIN: void OSDWidget::show(const QString&, const QImage&) 
amarok:     END__: void OSDWidget::show(const QString&, const QImage&) [Took: 0.003s] 
stateChangedInternal newState: "StoppedState" previousState: "PlayingState" 
stateChangedInternal newState: "StoppedState" previousState: "StoppedState" 
stateChangedInternal newState: "StoppedState" previousState: "StoppedState" 
setSource 
setSource Error: MediaSource is empty. 
amarok:     BEGIN: void EngineController::slotNewTrackPlaying(const Phonon::MediaSource&) 
amarok:       [EngineController] Empty MediaSource (engine stop) 
amarok:     END__: void EngineController::slotNewTrackPlaying(const Phonon::MediaSource&) [Took: 0s] 
amarok:   END__: void EngineController::stop(bool) [Took: 0.053s] 
amarok:   BEGIN: void Playlist::Actions::requestNextTrack() 
amarok:     [Playlist::Actions] so far so good! 
amarok:     BEGIN: void Playlist::Actions::play(quint64, bool) 
amarok:       BEGIN: void EngineController::setNextTrack(Meta::TrackPtr) 
amarok:         [EngineController] locking mutex 
amarok:         [EngineController] locked! 
amarok:         BEGIN: void EngineController::play(Meta::TrackPtr, uint) 
amarok:           BEGIN: void EngineController::stop(bool) 
setSource 
setSource Error: MediaSource is empty. 
amarok:             BEGIN: void EngineController::slotNewTrackPlaying(const Phonon::MediaSource&) 
amarok:               [EngineController] Empty MediaSource (engine stop) 
amarok:             END__: void EngineController::slotNewTrackPlaying(const Phonon::MediaSource&) [Took: 0s]                                                                                                          
amarok:           END__: void EngineController::stop(bool) [Took: 0s] 
amarok:           [EngineController] play: bounded is  QObject(0x0)  current "Sliding Sh" 
amarok:           BEGIN: virtual Capabilities::Capability* Meta::TimecodeTrack::createCapabilityInterface(Capabilities::Capability::Type) 
amarok:           END__: virtual Capabilities::Capability* Meta::TimecodeTrack::createCapabilityInterface(Capabilities::Capability::Type) [Took: 0s] 
amarok:           BEGIN: virtual Capabilities::Capability* Meta::TimecodeTrack::createCapabilityInterface(Capabilities::Capability::Type) 
amarok:           END__: virtual Capabilities::Capability* Meta::TimecodeTrack::createCapabilityInterface(Capabilities::Capability::Type) [Took: 0s] 
amarok:           BEGIN: virtual Capabilities::Capability* Meta::TimecodeTrack::createCapabilityInterface(Capabilities::Capability::Type) 
amarok:           END__: virtual Capabilities::Capability* Meta::TimecodeTrack::createCapabilityInterface(Capabilities::Capability::Type) [Took: 0s] 
amarok:           [EngineController] Starting bounded playback of url  KUrl("file:///home/xxx/music/album_that_has_cue/mp3_that_has_cue.mp3")  at position  57546 
amarok:           BEGIN: void EngineController::playUrl(const KUrl&, uint) 
amarok:             [EngineController] URL:  "file:///home/xxx/music/album_that_has_cue/mp3_that_has_cue.mp3" 
amarok:             [EngineController] offset:  57546 
setSource 
setSource yeap, 'tis a local file or url "file" 
stateChangedInternal newState: "BufferingState" previousState: "StoppedState" 
loadMediaInternal "file:///home/xxx/music/album_that_has_cue/mp3_that_has_cue.mp3" 
stateChangedInternal newState: "StoppedState" previousState: "BufferingState" 
amarok:             BEGIN: void EngineController::slotNewTrackPlaying(const Phonon::MediaSource&) 
amarok:               [EngineController] Using gain of 0 with relative peak of 0 
amarok:               BEGIN: virtual Capabilities::Capability* Meta::TimecodeTrack::createCapabilityInterface(Capabilities::Capability::Type) 
amarok:               END__: virtual Capabilities::Capability* Meta::TimecodeTrack::createCapabilityInterface(Capabilities::Capability::Type) [Took: 0s] 
amarok:               BEGIN: virtual Capabilities::Capability* Meta::TimecodeTrack::createCapabilityInterface(Capabilities::Capability::Type) 
amarok:               END__: virtual Capabilities::Capability* Meta::TimecodeTrack::createCapabilityInterface(Capabilities::Capability::Type) [Took: 0s] 
amarok:               BEGIN: void TimecodeObserver::trackPlaying(Meta::TrackPtr) 
amarok:               END__: void TimecodeObserver::trackPlaying(Meta::TrackPtr) [Took: 0s] 
amarok:               BEGIN: virtual Capabilities::Capability* Meta::TimecodeTrack::createCapabilityInterface(Capabilities::Capability::Type) 
amarok:               END__: virtual Capabilities::Capability* Meta::TimecodeTrack::createCapabilityInterface(Capabilities::Capability::Type) [Took: 0s] 
amarok:               BEGIN: virtual Capabilities::Capability* Meta::TimecodeTrack::createCapabilityInterface(Capabilities::Capability::Type) 
amarok:               END__: virtual Capabilities::Capability* Meta::TimecodeTrack::createCapabilityInterface(Capabilities::Capability::Type) [Took: 0s] 
amarok:               BEGIN: void Playlist::Actions::slotTrackPlaying(Meta::TrackPtr) 
amarok:                 BEGIN: void StatusBar::updateTotalPlaylistLength() 
amarok:                 END__: void StatusBar::updateTotalPlaylistLength() [Took: 0s] 
amarok:                 BEGIN: void Playlist::PrettyListView::slotPlaylistActiveTrackChanged() 
amarok:                 END__: void Playlist::PrettyListView::slotPlaylistActiveTrackChanged() [Took: 0s] 
amarok:               END__: void Playlist::Actions::slotTrackPlaying(Meta::TrackPtr) [Took: 0.001s] 
amarok:               BEGIN: void ProgressWidget::trackLengthChanged(qint64) 
amarok:                 new length:  522227 
amarok:                 slider enabled! 
amarok:                 BEGIN: void ProgressWidget::redrawBookmarks(const QString*) 
amarok:                 END__: void ProgressWidget::redrawBookmarks(const QString*) [Took: 0s] 
amarok:               END__: void ProgressWidget::trackLengthChanged(qint64) [Took: 0s] 
amarok:               BEGIN: virtual Capabilities::Capability* Meta::TimecodeTrack::createCapabilityInterface(Capabilities::Capability::Type) 
amarok:               END__: virtual Capabilities::Capability* Meta::TimecodeTrack::createCapabilityInterface(Capabilities::Capability::Type) [Took: 0s] 
amarok:               BEGIN: virtual Capabilities::Capability* Meta::TimecodeTrack::createCapabilityInterface(Capabilities::Capability::Type) 
amarok:               END__: virtual Capabilities::Capability* Meta::TimecodeTrack::createCapabilityInterface(Capabilities::Capability::Type) [Took: 0s] 
amarok:               BEGIN: virtual Capabilities::Capability* Meta::TimecodeTrack::createCapabilityInterface(Capabilities::Capability::Type) 
amarok:               END__: virtual Capabilities::Capability* Meta::TimecodeTrack::createCapabilityInterface(Capabilities::Capability::Type) [Took: 0s] 
amarok:               BEGIN: void OSDWidget::show(const QString&, const QImage&) 
amarok:               END__: void OSDWidget::show(const QString&, const QImage&) [Took: 0s] 
amarok:             END__: void EngineController::slotNewTrackPlaying(const Phonon::MediaSource&) [Took: 0.005s]                                                                                                      
amarok:             [EngineController] seeking to  57546 
stateChangedInternal newState: "PausedState" previousState: "StoppedState" 
pushSeek seek: 57546 
popSeek real seek: 57546 
seekInternal 57546 
play 
stateChangedInternal newState: "PlayingState" previousState: "PausedState" 
updateVolume Volume changed to -  50  From  50 
amarok:             [EngineController] track pos after play:  -1 
amarok:           END__: void EngineController::playUrl(const KUrl&, uint) [Took: 0.006s] 
amarok:         END__: void EngineController::play(Meta::TrackPtr, uint) [Took: 0.006s] 
amarok:       END__: void EngineController::setNextTrack(Meta::TrackPtr) [Took: 0.006s] 
amarok:     END__: void Playlist::Actions::play(quint64, bool) [Took: 0.006s] 
amarok:   END__: void Playlist::Actions::requestNextTrack() [Took: 0.006s] 
amarok: END__: void EngineController::slotAboutToFinish() [Took: 0.06s] 
amarok: BEGIN: void EngineController::slotStateChanged(Phonon::State, Phonon::State) 
amarok: END__: void EngineController::slotStateChanged(Phonon::State, Phonon::State) [Took: 0s] 
amarok: BEGIN: void EngineController::slotStateChanged(Phonon::State, Phonon::State) 
amarok: END__: void EngineController::slotStateChanged(Phonon::State, Phonon::State) [Took: 0s] 
amarok: BEGIN: void EngineController::slotStateChanged(Phonon::State, Phonon::State) 
amarok: END__: void EngineController::slotStateChanged(Phonon::State, Phonon::State) [Took: 0s] 
amarok: BEGIN: void EngineController::slotStateChanged(Phonon::State, Phonon::State) 
amarok: END__: void EngineController::slotStateChanged(Phonon::State, Phonon::State) [Took: 0s] 
amarok: BEGIN: void EngineController::slotStateChanged(Phonon::State, Phonon::State) 
amarok: END__: void EngineController::slotStateChanged(Phonon::State, Phonon::State) [Took: 0s] 
amarok: BEGIN: virtual Capabilities::Capability* Meta::TimecodeTrack::createCapabilityInterface(Capabilities::Capability::Type) 
amarok: END__: virtual Capabilities::Capability* Meta::TimecodeTrack::createCapabilityInterface(Capabilities::Capability::Type) [Took: 0s] 
amarok: BEGIN: virtual bool MainWindow::queryExit() 
amarok:   BEGIN: void MainWindow::saveLayout() 
amarok:   END__: void MainWindow::saveLayout() [Took: 0s] 
amarok: END__: virtual bool MainWindow::queryExit() [Took: 0s] 
amarok: BEGIN: virtual App::~App() 
amarok:   [ScanManager] Abort scan:  "Abort requested from SqlCollection::stopScan()" 
amarok:   BEGIN: void TimecodeObserver::stopped(qint64, qint64) 
amarok:   END__: void TimecodeObserver::stopped(qint64, qint64) [Took: 0s] 
amarok:   BEGIN: virtual Capabilities::Capability* Meta::TimecodeTrack::createCapabilityInterface(Capabilities::Capability::Type) 
amarok:   END__: virtual Capabilities::Capability* Meta::TimecodeTrack::createCapabilityInterface(Capabilities::Capability::Type) [Took: 0s] 
amarok:   BEGIN: void OSDWidget::show(const QString&, const QImage&) 
amarok:   END__: void OSDWidget::show(const QString&, const QImage&) [Took: 0.003s] 
amarok:   BEGIN: virtual Capabilities::Capability* Meta::TimecodeTrack::createCapabilityInterface(Capabilities::Capability::Type) 
amarok:   END__: virtual Capabilities::Capability* Meta::TimecodeTrack::createCapabilityInterface(Capabilities::Capability::Type) [Took: 0s] 
amarok:   BEGIN: virtual Capabilities::Capability* Meta::TimecodeTrack::createCapabilityInterface(Capabilities::Capability::Type) 
amarok:   END__: virtual Capabilities::Capability* Meta::TimecodeTrack::createCapabilityInterface(Capabilities::Capability::Type) [Took: 0s]
Comment 2 domponforums 2011-04-03 15:43:21 UTC
yeah, this isn't working and is a show stopper for any cd that has a .cue file in the same directory. Please offer an option to disable .cue file support in amarok or fix the bug.

thanks!
Comment 3 lazx888 2011-05-23 19:10:59 UTC
Update:

I have tried git amarok (20110523), git phonon-mplayer (20110523), and git phonon-xine (20110523) - still no luck.

Is this an amarok and backend issue?

Is there any other info I can provide to help out with this bug/lack of feature?
Comment 4 Myriam Schweingruber 2011-05-26 08:12:00 UTC
(In reply to comment #3)
> Update:
> 
> I have tried git amarok (20110523), git phonon-mplayer (20110523), and git
> phonon-xine (20110523) - still no luck.

the mplayer and xine backends are deprecated, please use the gstreamer or vlc ones instead.
> 
> Is this an amarok and backend issue?

Most likely an Amarok one, as the CUE support still is not fully implemented.
> 
> Is there any other info I can provide to help out with this bug/lack of
> feature?

Not really, we need more developer time and availability.
Comment 5 Sven Krohlas 2011-06-19 15:49:31 UTC
Confirmed in git master. Is this a regression?
Comment 6 Myriam Schweingruber 2011-06-19 18:02:03 UTC
No, not a regression, just never implemented.
Comment 7 Basti 2011-07-10 07:40:28 UTC
I can confirm this bug. I played a mp3 file using an .cue file. After the first song was played Amarok plays the first song again. No matter which song I want to start, Amarok always plays the first! So there’s no way to listen to the hole mp3. Using Amarok 2.4.1, phonon-gstreamer-4.5.0.
Comment 8 Andreas Kirsch 2011-10-20 14:24:45 UTC
I have the same problem with Amarok 2.4.3 under KDE 4.7.2 and phonon-gstreamer-4.5.1. The only workaround is to move the cue-file to another directory.
Comment 9 Myriam Schweingruber 2013-04-11 08:58:05 UTC
What is the status of this with Amarok 2.7?
Comment 10 Myriam Schweingruber 2013-07-12 15:07:44 UTC
Bump version.