diff --git a/application/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt b/application/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt index c85d01f7b..be3bc2cc7 100644 --- a/application/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt +++ b/application/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt @@ -871,7 +871,7 @@ class PlaylistManager(val service: PlaybackService) : MediaWrapperList.EventList if (internalMedia != null) id = internalMedia.id } } - if (id != 0L) medialibrary.increasePlayCount(id) + if (id != 0L) medialibrary.setProgress(id, 1.0f) } } diff --git a/buildsystem/compile-medialibrary.sh b/buildsystem/compile-medialibrary.sh index 865d70f08..5279d510d 100755 --- a/buildsystem/compile-medialibrary.sh +++ b/buildsystem/compile-medialibrary.sh @@ -4,7 +4,7 @@ # ARGUMENTS # ############# -MEDIALIBRARY_HASH=03031cd1605ab07f61738b71a782831ea31c36b5 +MEDIALIBRARY_HASH=1755e7abfa80f53129050c9d39f5494025a9a854 while [ $# -gt 0 ]; do case $1 in diff --git a/medialibrary/jni/AndroidMediaLibrary.cpp b/medialibrary/jni/AndroidMediaLibrary.cpp index 7ee8b44b8..7c4b6c7a2 100644 --- a/medialibrary/jni/AndroidMediaLibrary.cpp +++ b/medialibrary/jni/AndroidMediaLibrary.cpp @@ -177,11 +177,11 @@ AndroidMediaLibrary::forceRescan() } bool -AndroidMediaLibrary::increasePlayCount(int64_t mediaId) +AndroidMediaLibrary::setProgress(int64_t mediaId, float progress) { auto media = p_ml->media(mediaId); if (media != nullptr) - return media->increasePlayCount(); + return media->setProgress( progress ); return false; } diff --git a/medialibrary/jni/AndroidMediaLibrary.h b/medialibrary/jni/AndroidMediaLibrary.h index 29d65aa1f..527f6afa3 100644 --- a/medialibrary/jni/AndroidMediaLibrary.h +++ b/medialibrary/jni/AndroidMediaLibrary.h @@ -51,7 +51,7 @@ public: void reload( const std::string& entryPoint ); void forceParserRetry(); void forceRescan(); - bool increasePlayCount(int64_t mediaId); + bool setProgress(int64_t mediaId, float progress); void removeMediaFromHistory(int64_t mediaId); /* History */ std::vector lastMediaPlayed(); diff --git a/medialibrary/jni/medialibrary.cpp b/medialibrary/jni/medialibrary.cpp index 9d92d1f18..a83adcc52 100644 --- a/medialibrary/jni/medialibrary.cpp +++ b/medialibrary/jni/medialibrary.cpp @@ -240,9 +240,9 @@ forceRescan(JNIEnv* env, jobject thiz) } jboolean -increasePlayCount(JNIEnv* env, jobject thiz, jlong id) +setProgress(JNIEnv* env, jobject thiz, jlong id, jfloat progress) { - return MediaLibrary_getInstance(env, thiz)->increasePlayCount((int64_t)id); + return MediaLibrary_getInstance(env, thiz)->setProgress((int64_t)id, (float)progress); } void @@ -2119,7 +2119,7 @@ static JNINativeMethod methods[] = { {"nativeReload", "(Ljava/lang/String;)V", (void*)reloadEntryPoint }, {"nativeForceParserRetry", "()V", (void*)forceParserRetry }, {"nativeForceRescan", "()V", (void*)forceRescan }, - {"nativeIncreasePlayCount", "(J)Z", (void*)increasePlayCount }, + {"nativeSetProgress", "(JF)Z", (void*)setProgress }, {"nativeSetMediaUpdatedCbFlag", "(I)V", (void*)setMediaUpdatedCbFlag }, {"nativeSetMediaAddedCbFlag", "(I)V", (void*)setMediaAddedCbFlag }, {"nativePlaylistCreate", "(Ljava/lang/String;)Lorg/videolan/medialibrary/interfaces/media/Playlist;", (void*)playlistCreate }, diff --git a/medialibrary/jni/utils.cpp b/medialibrary/jni/utils.cpp index 6a2cdaa51..5de7d0b59 100644 --- a/medialibrary/jni/utils.cpp +++ b/medialibrary/jni/utils.cpp @@ -62,10 +62,7 @@ mediaToMediaWrapper(JNIEnv* env, fields *fields, medialibrary::MediaPtr const& m unsigned int width = hasVideoTracks ? videoTracks.at(0)->width() : 0; unsigned int height = hasVideoTracks ? videoTracks.at(0)->height() : 0; int64_t duration = mediaPtr->duration(); - const medialibrary::IMetadata& progressMeta = mediaPtr->metadata( medialibrary::IMedia::MetadataType::Progress ); - int64_t progress = progressMeta.isSet() ? progressMeta.asInt() : 0; - // workaround to convert legacy percentage progress - if (progress != 0 && progress < 100) progress = duration * ( progress / 100.0 ); + const float progress = mediaPtr->progress() * duration; const medialibrary::IMetadata& seenMeta = mediaPtr->metadata( medialibrary::IMedia::MetadataType::Seen ); int64_t seen = seenMeta.isSet() ? seenMeta.asInt() : 0; diff --git a/medialibrary/src/org/videolan/medialibrary/MedialibraryImpl.java b/medialibrary/src/org/videolan/medialibrary/MedialibraryImpl.java index 0eca3dc92..0ea70f0db 100644 --- a/medialibrary/src/org/videolan/medialibrary/MedialibraryImpl.java +++ b/medialibrary/src/org/videolan/medialibrary/MedialibraryImpl.java @@ -466,8 +466,8 @@ public class MedialibraryImpl extends Medialibrary { return mIsInitiated ? nativeGetFoldersCount(type) : 0; } - public boolean increasePlayCount(long mediaId) { - return mIsInitiated && mediaId > 0 && nativeIncreasePlayCount(mediaId); + public boolean setProgress(long mediaId, float progress) { + return mIsInitiated && mediaId > 0 && nativeSetProgress(mediaId, progress); } // If media is not in ML, find it with its path @@ -641,7 +641,7 @@ public class MedialibraryImpl extends Medialibrary { private native void nativeReload(String entryPoint); private native void nativeForceParserRetry(); private native void nativeForceRescan(); - private native boolean nativeIncreasePlayCount(long mediaId); + private native boolean nativeSetProgress(long mediaId, float progress); private native void nativeSetMediaUpdatedCbFlag(int flags); private native void nativeSetMediaAddedCbFlag(int flags); private native SearchAggregate nativeSearch(String query); diff --git a/medialibrary/src/org/videolan/medialibrary/interfaces/Medialibrary.java b/medialibrary/src/org/videolan/medialibrary/interfaces/Medialibrary.java index 3b49d01be..6e24ebcbc 100644 --- a/medialibrary/src/org/videolan/medialibrary/interfaces/Medialibrary.java +++ b/medialibrary/src/org/videolan/medialibrary/interfaces/Medialibrary.java @@ -747,7 +747,7 @@ abstract public class Medialibrary { abstract public MediaWrapper addStream(String mrl, String title); abstract public Folder[] getFolders(int type, int sort, boolean desc, int nbItems, int offset); abstract public int getFoldersCount(int type); - abstract public boolean increasePlayCount(long mediaId); + abstract public boolean setProgress(long mediaId, float progress); abstract public SearchAggregate search(String query); abstract public MediaWrapper[] searchMedia(String query); abstract public MediaWrapper[] searchMedia(String query, int sort, boolean desc, int nbItems, int offset); diff --git a/medialibrary/src/org/videolan/medialibrary/stubs/StubMedialibrary.java b/medialibrary/src/org/videolan/medialibrary/stubs/StubMedialibrary.java index a2ad387a2..ad1b1d805 100644 --- a/medialibrary/src/org/videolan/medialibrary/stubs/StubMedialibrary.java +++ b/medialibrary/src/org/videolan/medialibrary/stubs/StubMedialibrary.java @@ -389,7 +389,7 @@ public class StubMedialibrary extends Medialibrary { media = addStream(mrl, title); } dt.mHistory.add(media); - increasePlayCount(media.getId()); + setProgress(media.getId(), 1.0f); return true; } @@ -482,7 +482,7 @@ public class StubMedialibrary extends Medialibrary { public void requestThumbnail(long id) {} - public boolean increasePlayCount(long mediaId) { + public boolean setProgress(long mediaId, float progress) { for (int i = 0; i < dt.mVideoMediaWrappers.size(); i++) { MediaWrapper media = dt.mVideoMediaWrappers.get(i); if (media.getId() == mediaId) {