View Issue Details

IDProjectCategoryView StatusLast Update
0019408MMW 5Playbackpublic2024-09-18 14:38
Reporterrusty Assigned To 
PriorityhighSeverityminorReproducibilityalways
Status assignedResolutionopen 
Product Version5.0 
Target Version5.1.1 
Summary0019408: UPnP/Streaming: improved handling of non-seekable streams
Description0019380 included a fix so that MM is able to play non-seekable aac streams served by a UPnP server (e.g. 'Baby you're a rich man' from that bug). Although this is now working, there are still minor issues re. the seek bar:
1) If the seekbar is moved significantly (I believe to a portion of the file that hasn't been cached), then MM starts playing the next song rather than waiting for the audio to download and then start playing.
2) If the seekbar is moved a little (presumably to a portion of the file that has been cached), then MM plays from a new position, but when the seekbar reaches the end of the track, playback continues (which would imply that when the seekbar was moved, the audio and the seekbar position became out of sync).

A possible solution would be to only allow the seekbar to be moved to a portion of the file that MM has cached. Ideally, this would be implemented in tandem with a general solution that displayed visibility of the cached portion of the track.
TagsNo tags attached.
Fixed in build

Relationships

related to 0019380 closedmichal UPnP playback of certain track formats --> failure and/or crash C33DC74A 

Activities

michal

2022-09-29 14:38

developer   ~0069571

"cached portion of the track" is not really possible in this situation. We know duration of the file, but not size of the file. We e.g. download 5MB of the file, but we don't know, what duration does it mean, it could know only decoder inside Media Foundation framework.
Our solution (for tracks decoded by in_mfaudio plugin, like AAC or MP3 streams) would be to cache the file during playback and allow seeking within downloaded part a waiting for seek, when seeking to not cached part. MF framework counts with this (flags MFBYTESTREAM_HAS_SLOW_SEEK and MFBYTESTREAM_IS_PARTIALLY_DOWNLOADED), so it should work ok, hopefully.