Browse Source

Add the album artist id to the MediaWrapper

merge-requests/2174/head
Nicolas Pomepuy 2 years ago
committed by Duncan McNamara
parent
commit
1f0367c991
  1. 2
      application/vlc-android/src/org/videolan/vlc/util/DummyMediaWrapperProvider.kt
  2. 1
      application/vlc-android/src/org/videolan/vlc/widget/MiniPlayerAppWidgetProvider.kt
  3. 2
      medialibrary/jni/medialibrary.cpp
  4. 8
      medialibrary/jni/utils.cpp
  5. 12
      medialibrary/src/org/videolan/medialibrary/MLServiceLocator.java
  6. 19
      medialibrary/src/org/videolan/medialibrary/interfaces/media/MediaWrapper.java
  7. 15
      medialibrary/src/org/videolan/medialibrary/media/MediaWrapperImpl.java
  8. 8
      medialibrary/src/org/videolan/medialibrary/stubs/StubDataSource.java
  9. 13
      medialibrary/src/org/videolan/medialibrary/stubs/StubMediaWrapper.java

2
application/vlc-android/src/org/videolan/vlc/util/DummyMediaWrapperProvider.kt

@ -31,7 +31,7 @@ object DummyMediaWrapperProvider {
fun getDummyMediaWrapper(id: Long): MediaWrapper {
if (id >= 0) throw IllegalArgumentException("Dummy MediaWrapper id must be < 0")
return MLServiceLocator.getAbstractMediaWrapper(id, "dummy://Mrl", -1L, -1F, 18820L, MediaWrapper.TYPE_VIDEO,
"", "", -1L, "", "", -1L,
"", "", -1L, -1L, "", "", -1L,
"", "", 416, 304, "", 0, -2,
0, 0, 1509466228L, 0L, true, false, 1970, true, 1683711438317L)
}

1
application/vlc-android/src/org/videolan/vlc/widget/MiniPlayerAppWidgetProvider.kt

@ -436,6 +436,7 @@ class MiniPlayerAppWidgetProvider : AppWidgetProvider() {
"Track name",
"",
-1L,
-1L,
"Artist name",
"",
-1L,

2
medialibrary/jni/medialibrary.cpp

@ -2841,7 +2841,7 @@ jint JNI_OnLoad(JavaVM *vm, void *reserved)
GET_ID(GetMethodID,
ml_fields.MediaWrapper.initID,
ml_fields.MediaWrapper.clazz,
"<init>", "(JLjava/lang/String;JFJILjava/lang/String;Ljava/lang/String;JLjava/lang/String;Ljava/lang/String;JLjava/lang/String;Ljava/lang/String;IILjava/lang/String;IIIIJJZZIZJ)V");
"<init>", "(JLjava/lang/String;JFJILjava/lang/String;Ljava/lang/String;JJLjava/lang/String;Ljava/lang/String;JLjava/lang/String;Ljava/lang/String;IILjava/lang/String;IIIIJJZZIZJ)V");
GET_CLASS(ml_fields.HistoryItem.clazz,
"org/videolan/medialibrary/media/HistoryItem", true);

8
medialibrary/jni/utils.cpp

@ -26,7 +26,7 @@ mediaToMediaWrapper(JNIEnv* env, fields *fields, medialibrary::MediaPtr const& m
}
utils::jni::string artist, genre, album, albumArtist, mrl, title, thumbnail, filename;
jint trackNumber = 0, discNumber = 0;
int64_t artistId = -1, albumId = -1;
int64_t artistId = -1, albumArtistId = -1, albumId = -1;
const bool isPresent = mediaPtr->isPresent();
medialibrary::ArtistPtr artistPtr = mediaPtr->artist();
@ -42,8 +42,10 @@ mediaToMediaWrapper(JNIEnv* env, fields *fields, medialibrary::MediaPtr const& m
album = vlcNewStringUTF(env, albumPtr->title().c_str());
albumId = albumPtr->id();
medialibrary::ArtistPtr albumArtistPtr = albumPtr->albumArtist();
if (albumArtistPtr != NULL)
if (albumArtistPtr != NULL) {
albumArtist = vlcNewStringUTF(env, albumArtistPtr->name().c_str());
albumArtistId = albumArtistPtr->id();
}
}
trackNumber = mediaPtr->trackNumber();
discNumber = mediaPtr->discNumber();
@ -73,7 +75,7 @@ mediaToMediaWrapper(JNIEnv* env, fields *fields, medialibrary::MediaPtr const& m
auto isFavorite = mediaPtr->isFavorite();
return { env, env->NewObject(fields->MediaWrapper.clazz, fields->MediaWrapper.initID,
(jlong) mediaPtr->id(), mrl.get(), (jlong) mediaPtr->lastTime(), (jfloat) mediaPtr->lastPosition(), (jlong) duration, type,
title.get(), filename.get(), (jlong) artistId, artist.get(), genre.get(), (jlong) albumId, album.get(),
title.get(), filename.get(), (jlong) artistId, albumArtistId, artist.get(), genre.get(), (jlong) albumId, album.get(),
albumArtist.get(), width, height, thumbnail.get(),
audioTrack, spuTrack, trackNumber, discNumber, (jlong) files.at(0)->lastModificationDate(),
(jlong) mediaPtr->playCount(), hasThumbnail, isFavorite, mediaPtr->releaseDate(), isPresent, (jlong) mediaPtr->insertionDate())

12
medialibrary/src/org/videolan/medialibrary/MLServiceLocator.java

@ -64,7 +64,7 @@ public class MLServiceLocator {
// MediaWrapper
public static MediaWrapper getAbstractMediaWrapper(long id, String mrl, long time, float position, long length,
int type, String title, String filename, long artistId,
int type, String title, String filename, long artistId, long albumArtistId,
String artist, String genre, long albumId, String album,
String albumArtist, int width, int height,
String artworkURL, int audio, int spu,
@ -73,29 +73,29 @@ public class MLServiceLocator {
int releaseDate, boolean isPresent, long insertionDate) {
if (sMode == LocatorMode.VLC_ANDROID) {
return new MediaWrapperImpl(id, mrl, time, position, length, type, title,
filename, artistId, artist, genre, albumId, album, albumArtist, width, height, artworkURL,
filename, artistId, albumArtistId, artist, genre, albumId, album, albumArtist, width, height, artworkURL,
audio, spu, trackNumber, discNumber, lastModified, seen, isThumbnailGenerated,
isFavorite, releaseDate, isPresent, insertionDate);
} else {
return new StubMediaWrapper(id, mrl, time, position, length, type, title,
filename,artistId, artist, genre, albumId, album, albumArtist, width, height, artworkURL,
filename,artistId, albumArtistId, artist, genre, albumId, album, albumArtist, width, height, artworkURL,
audio, spu, trackNumber, discNumber, lastModified, seen, isThumbnailGenerated, isFavorite, releaseDate, isPresent, insertionDate);
}
}
public static MediaWrapper getAbstractMediaWrapper(Uri uri, long time, float position, long length, int type,
Bitmap picture, String title, long artistId, String artist,
Bitmap picture, String title, long artistId, long albumArtistId, String artist,
String genre, long albumId, String album, String albumArtist,
int width, int height, String artworkURL,
int audio, int spu, int trackNumber,
int discNumber, long lastModified, long seen,
long insertionDate) {
if (sMode == LocatorMode.VLC_ANDROID) {
return new MediaWrapperImpl(uri, time, position, length, type, picture, title, artistId, artist, genre,
return new MediaWrapperImpl(uri, time, position, length, type, picture, title, artistId, albumArtistId, artist, genre,
albumId, album, albumArtist, width, height, artworkURL, audio, spu, trackNumber,
discNumber, lastModified, seen, false, insertionDate);
} else {
return new StubMediaWrapper(uri, time, position, length, type, picture, title, artistId, artist, genre,
return new StubMediaWrapper(uri, time, position, length, type, picture, title, artistId, albumArtistId, artist, genre,
albumId, album, albumArtist, width, height, artworkURL, audio, spu, trackNumber,
discNumber, lastModified, seen, false, insertionDate);
}

19
medialibrary/src/org/videolan/medialibrary/interfaces/media/MediaWrapper.java

@ -92,6 +92,7 @@ public abstract class MediaWrapper extends MediaLibraryItem implements Parcelabl
protected String mDisplayTitle;
protected long mArtistId;
protected long mAlbumArtistId;
protected String mArtist;
protected String mGenre;
protected String mCopyright;
@ -152,6 +153,7 @@ public abstract class MediaWrapper extends MediaLibraryItem implements Parcelabl
public abstract boolean markAsPlayed();
public abstract Album getAlbumWrapper();
public abstract Artist getArtistWrapper();
public abstract Artist getAlbumArtistWrapper();
/**
* Create a new MediaWrapper
@ -159,7 +161,7 @@ public abstract class MediaWrapper extends MediaLibraryItem implements Parcelabl
* @param mrl Should not be null.
*/
public MediaWrapper(long id, String mrl, long time, float position, long length, int type, String title,
String filename, long artistId, String artist, String genre, long albumId, String album, String albumArtist,
String filename, long artistId, long albumArtistId, String artist, String genre, long albumId, String album, String albumArtist,
int width, int height, String artworkURL, int audio, int spu, int trackNumber,
int discNumber, long lastModified, long seen, boolean isThumbnailGenerated,
boolean isFavorite, int releaseDate, boolean isPresent, long insertionDate) {
@ -171,7 +173,7 @@ public abstract class MediaWrapper extends MediaLibraryItem implements Parcelabl
mFilename = filename;
mReleaseYear = releaseDate;
mIsPresent = isPresent;
init(time, position, length, type, null, title, artistId, artist, genre, albumId, album, albumArtist, width, height,
init(time, position, length, type, null, title, artistId, albumArtistId, artist, genre, albumId, album, albumArtist, width, height,
artworkURL != null ? VLCUtil.UriFromMrl(artworkURL).getPath() : null, audio, spu,
trackNumber, discNumber, lastModified, seen, isPresent, null, isFavorite, insertionDate);
final StringBuilder sb = new StringBuilder();
@ -318,7 +320,7 @@ public abstract class MediaWrapper extends MediaLibraryItem implements Parcelabl
}
private void init(long time, float position, long length, int type,
Bitmap picture, String title, long artistId, String artist, String genre, long albumId, String album, String albumArtist,
Bitmap picture, String title, long artistId, long albumArtistId, String artist, String genre, long albumId, String album, String albumArtist,
int width, int height, String artworkURL, int audio, int spu, int trackNumber, int discNumber, long lastModified,
long seen, boolean isPresent, IMedia.Slave[] slaves, boolean isFavorite, long insertionDate) {
mFilename = null;
@ -336,6 +338,7 @@ public abstract class MediaWrapper extends MediaLibraryItem implements Parcelabl
mTitle = title != null ? title.trim() : null;
mArtistId = artistId;
mAlbumArtistId = albumArtistId;
mArtist = artist != null ? artist.trim() : null;
mGenre = genre != null ? genre.trim() : null;
mAlbumId = albumId;
@ -352,11 +355,11 @@ public abstract class MediaWrapper extends MediaLibraryItem implements Parcelabl
}
public MediaWrapper(Uri uri, long time, float position, long length, int type,
Bitmap picture, String title, long artistId, String artist, String genre, long albumId, String album, String albumArtist,
Bitmap picture, String title, long artistId, long albumArtistId, String artist, String genre, long albumId, String album, String albumArtist,
int width, int height, String artworkURL, int audio, int spu, int trackNumber,
int discNumber, long lastModified, long seen, boolean isFavorite, long insertionDate) {
mUri = uri;
init(time, position, length, type, picture, title, artistId, artist, genre, albumId, album, albumArtist,
init(time, position, length, type, picture, title, artistId, albumArtistId, artist, genre, albumId, album, albumArtist,
width, height, artworkURL, audio, spu, trackNumber, discNumber, lastModified, seen, true, null, isFavorite, insertionDate);
}
@ -614,6 +617,10 @@ public abstract class MediaWrapper extends MediaLibraryItem implements Parcelabl
return mArtistId;
}
public long getAlbumArtistId() {
return mAlbumArtistId;
}
public Boolean isArtistUnknown() {
return mArtist == null;
}
@ -764,6 +771,7 @@ public abstract class MediaWrapper extends MediaLibraryItem implements Parcelabl
(Bitmap) in.readParcelable(Bitmap.class.getClassLoader()),
in.readString(),
in.readLong(),
in.readLong(),
in.readString(),
in.readString(),
in.readLong(),
@ -795,6 +803,7 @@ public abstract class MediaWrapper extends MediaLibraryItem implements Parcelabl
dest.writeParcelable(getPicture(), flags);
dest.writeString(getTitle());
dest.writeLong(getArtistId());
dest.writeLong(getAlbumArtistId());
dest.writeString(getArtist());
dest.writeString(getGenre());
dest.writeLong(getAlbumId());

15
medialibrary/src/org/videolan/medialibrary/media/MediaWrapperImpl.java

@ -41,21 +41,21 @@ public class MediaWrapperImpl extends MediaWrapper {
public final static String TAG = "VLC/MediaWrapperImpl";
public MediaWrapperImpl(long id, String mrl, long time, float position, long length, int type, String title,
String filename,long artistId, String artist, String genre, long albumId, String album, String albumArtist,
String filename,long artistId, long albumArtistId, String artist, String genre, long albumId, String album, String albumArtist,
int width, int height, String artworkURL, int audio, int spu, int trackNumber,
int discNumber, long lastModified, long seen, boolean isThumbnailGenerated,
boolean isFavorite, int releaseDate, boolean isPresent, long insertionDate) {
super(id, mrl, time, position, length, type, title, filename, artistId, artist,
super(id, mrl, time, position, length, type, title, filename, artistId, albumArtistId, artist,
genre, albumId, album, albumArtist, width, height, artworkURL,
audio, spu, trackNumber, discNumber, lastModified,
seen, isThumbnailGenerated, isFavorite, releaseDate, isPresent, insertionDate);
}
public MediaWrapperImpl(Uri uri, long time, float position, long length, int type,
Bitmap picture, String title, long artistId, String artist, String genre, long albumId, String album, String albumArtist,
Bitmap picture, String title, long artistId, long albumArtistId, String artist, String genre, long albumId, String album, String albumArtist,
int width, int height, String artworkURL, int audio, int spu, int trackNumber,
int discNumber, long lastModified, long seen, boolean isFavorite, long insertionDate) {
super(uri, time, position, length, type, picture, title, artistId, artist,
super(uri, time, position, length, type, picture, title, artistId, albumArtistId, artist,
genre, albumId, album, albumArtist, width, height, artworkURL,
audio, spu, trackNumber, discNumber, lastModified, seen, isFavorite, insertionDate);
}
@ -91,6 +91,13 @@ public class MediaWrapperImpl extends MediaWrapper {
return null;
}
@Override
public Artist getAlbumArtistWrapper() {
final Medialibrary ml = Medialibrary.getInstance();
if (ml.isInitiated()) return ml.getArtist(mAlbumArtistId);
return null;
}
public void setArtist(String artist) {
mArtist = artist;
}

8
medialibrary/src/org/videolan/medialibrary/stubs/StubDataSource.java

@ -94,7 +94,7 @@ public class StubDataSource {
fileName = i + " - " + STUBBED_VIDEO_TITLE + STUBBED_AUDIO_EXTENSION;
String mrl = baseMrl + ((folder != null) ? folder + "/" : "") + fileName;
media = MLServiceLocator.getAbstractMediaWrapper(getUUID(), mrl, -1L, -1F, 18820L, MediaWrapper.TYPE_VIDEO,
fileName, fileName, -1L, "", "", -1L,
fileName, fileName, -1L,-1L, "", "", -1L,
"", "", 416, 304, "", 0, -2,
0, 0, 1509466228L, 0L, true, false, 1970, true, 1683711438317L);
addVideo(media);
@ -110,7 +110,7 @@ public class StubDataSource {
fileName = i + " - " + STUBBED_AUDIO_TITLE + STUBBED_AUDIO_EXTENSION;
String mrl = baseMrl + ((folder != null) ? folder + "/" : "") + fileName;
media = MLServiceLocator.getAbstractMediaWrapper(getUUID(), mrl, -1L, -1F, 280244L, MediaWrapper.TYPE_AUDIO,
i + "-Show Me The Way", fileName, -1L, "Peter Frampton", "Rock", -1L,
i + "-Show Me The Way", fileName, -1L,-1L, "Peter Frampton", "Rock", -1L,
"Shine On CD2", "Peter Frampton",
0, 0, baseMrl + folder + ".jpg",
0, -2, 1, 0,
@ -396,6 +396,7 @@ public class StubDataSource {
jsonObject.getString("title"),
jsonObject.getString("filename"),
-1L,
-1L,
jsonObject.getString("artist"),
jsonObject.getString("genre"),
-1L,
@ -560,6 +561,7 @@ public class StubDataSource {
media.getTitle(),
media.getFileName(),
-1L,
-1L,
media.getArtist(),
genre.getTitle(),
-1L,
@ -590,7 +592,7 @@ public class StubDataSource {
public MediaWrapper addMediaWrapper(String mrl, String title, int type) {
MediaWrapper media = MLServiceLocator.getAbstractMediaWrapper(getUUID(), mrl, -1L, -1F, 280224L, type,
title, title, -1L, "Artisto", "Jazz", -1L, "XYZ CD1", "", 0, 0, baseMrl + title, -2,
title, title, -1L, -1L, "Artisto", "Jazz", -1L, "XYZ CD1", "", 0, 0, baseMrl + title, -2,
1, 1, 0, 1547452796L, 0L, true, false, 0, true, 1683711438317L);
if (type == MediaWrapper.TYPE_ALL) type = media.getType();
if (type == MediaWrapper.TYPE_VIDEO) addVideo(media);

13
medialibrary/src/org/videolan/medialibrary/stubs/StubMediaWrapper.java

@ -14,11 +14,11 @@ import org.videolan.medialibrary.interfaces.media.MediaWrapper;
public class StubMediaWrapper extends MediaWrapper {
public StubMediaWrapper(long id, String mrl, long time, float position, long length, int type, String title,
String filename, long artistId, String artist, String genre, long albumId, String album, String albumArtist,
String filename, long artistId, long albumArtistId, String artist, String genre, long albumId, String album, String albumArtist,
int width, int height, String artworkURL, int audio, int spu, int trackNumber,
int discNumber, long lastModified, long seen, boolean isThumbnailGenerated,
boolean isFavorite, int releaseDate, boolean isPresent, long insertionDate) {
super(id, mrl, time, position, length, type, title, filename, artistId, artist,
super(id, mrl, time, position, length, type, title, filename, artistId, albumArtistId, artist,
genre, albumId, album, albumArtist, width, height, artworkURL,
audio, spu, trackNumber, discNumber, lastModified,
seen, isThumbnailGenerated, isFavorite, releaseDate, isPresent, insertionDate);
@ -46,10 +46,10 @@ public class StubMediaWrapper extends MediaWrapper {
}
public StubMediaWrapper(Uri uri, long time, float position, long length, int type,
Bitmap picture, String title, long artistId, String artist, String genre, long albumId, String album, String albumArtist,
Bitmap picture, String title, long artistId, long albumArtistId, String artist, String genre, long albumId, String album, String albumArtist,
int width, int height, String artworkURL, int audio, int spu, int trackNumber,
int discNumber, long lastModified, long seen, boolean isFavorite, long insertionDate) {
super(uri, time, position, length, type, picture, title, artistId, artist,
super(uri, time, position, length, type, picture, title, artistId, albumArtistId, artist,
genre, albumId, album, albumArtist, width, height, artworkURL,
audio, spu, trackNumber, discNumber, lastModified, seen, isFavorite, insertionDate);
}
@ -103,6 +103,11 @@ public class StubMediaWrapper extends MediaWrapper {
return null;
}
@Override
public Artist getAlbumArtistWrapper() {
return null;
}
public boolean setLongMeta(int metaDataType, long metadataValue) {
mMetaLong.setValueAt(metaDataType, metadataValue);
return true;

Loading…
Cancel
Save