Allow uncompleted playback to be fetched
In order to implement a "Continue watching" feature from the UIs, we need to be able to return a list of media that have not been marked as completed, or that have a progress set.
The main issue is that the progress is a media meta, meaning it's application defined, and the media library doesn't know what the stored value means. For example, iOS uses the playback position, ie. a float in [0;1] range (https://code.videolan.org/videolan/vlc-ios/-/blob/master/SharedSources/MediaLibraryService.swift#L379) while vlc-android uses the current playback time (https://code.videolan.org/videolan/vlc-android/-/blob/master/application/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt#L444)
This prevents us from providing a way for the application to get the (most recent?) uncompleted playbacks.
We need to expose the progress as a full blown media field, and enforce a common representation for it
-
Add a progress field, holding a REAL
, defaulting to -1 -
Index that field since we will be querying media filtering with this field -
Remove IMedia::MetadataType::Progress
, be sure to assign 51 to theSpeed
enum member -
Replace 'increasePlayCount by a
setProgress` function, which will take the new progress, and update the play count accordingly -
Handle migration from Android & iOS previous meta -
Add a uncompleteMedia
accessor toIMediaLibrary
Not sure if we should enforce filtering out audio media when accessing uncomplete media.
Not sure uncompleteMedia
is the best name, suggestions welcome :)