Browse Source

Manual groups JNI

3.3.x
Nicolas Pomepuy 6 years ago
committed by Geoffrey Métais
parent
commit
10d7e783f2
  1. 12
      medialibrary/jni/AndroidMediaLibrary.cpp
  2. 2
      medialibrary/jni/AndroidMediaLibrary.h
  3. 26
      medialibrary/jni/medialibrary.cpp
  4. 16
      medialibrary/src/org/videolan/medialibrary/MedialibraryImpl.java
  5. 4
      medialibrary/src/org/videolan/medialibrary/interfaces/Medialibrary.java
  6. 10
      medialibrary/src/org/videolan/medialibrary/stubs/StubMedialibrary.java

12
medialibrary/jni/AndroidMediaLibrary.cpp

@ -584,6 +584,18 @@ AndroidMediaLibrary::groupDestroy( const int64_t groupId )
return group != nullptr && group->destroy();
}
medialibrary::MediaGroupPtr
AndroidMediaLibrary::createMediaGroup( std::string name )
{
return p_ml->createMediaGroup(name);
}
medialibrary::MediaGroupPtr
AndroidMediaLibrary::createMediaGroup( const std::vector<int64_t> mediaIds )
{
return p_ml->createMediaGroup(mediaIds);
}
void
AndroidMediaLibrary::requestThumbnail( int64_t media_id, medialibrary::ThumbnailSizeType sizeType, uint32_t desiredWidth,
uint32_t desiredHeight, float position )

2
medialibrary/jni/AndroidMediaLibrary.h

@ -113,6 +113,8 @@ public:
bool groupUserInteracted(const int64_t groupId );
int64_t groupDuration(const int64_t groupId );
bool groupDestroy(const int64_t groupId );
medialibrary::MediaGroupPtr createMediaGroup( std::string name );
medialibrary::MediaGroupPtr createMediaGroup( std::vector<int64_t> mediaIds );
void onMediaGroupsModified( std::set<int64_t> mediaGroupsIds );
void onMediaGroupsDeleted( std::set<int64_t> mediaGroupsIds );
void onBookmarksAdded( std::vector<medialibrary::BookmarkPtr> );

26
medialibrary/jni/medialibrary.cpp

@ -1909,6 +1909,30 @@ groupDestroy(JNIEnv* env, jobject thiz, jobject medialibrary, jlong id)
return MediaLibrary_getInstance(env, medialibrary)->groupDestroy(id);
}
jobject
createMediaGroupByName(JNIEnv* env, jobject thiz, jstring name)
{
AndroidMediaLibrary *aml = MediaLibrary_getInstance(env, thiz);
const char *name_cstr = env->GetStringUTFChars(name, JNI_FALSE);
medialibrary::MediaGroupPtr group = aml->createMediaGroup(name_cstr);
env->ReleaseStringUTFChars(name, name_cstr);
return group != nullptr ? convertVideoGroupObject(env, &ml_fields, group) : nullptr;
}
jobject
createMediaGroup(JNIEnv* env, jobject thiz, jlongArray mediaIds)
{
AndroidMediaLibrary *aml = MediaLibrary_getInstance(env, thiz);
std::vector<int64_t> cids;
jsize size = env->GetArrayLength(mediaIds);
jlong *ids = env->GetLongArrayElements(mediaIds, 0);
for (int i = 0; i < size; ++i)
cids.push_back((int64_t) ids[i]);
env->ReleaseLongArrayElements(mediaIds, ids, 0);
medialibrary::MediaGroupPtr group = aml->createMediaGroup(cids);
return group != nullptr ? convertVideoGroupObject(env, &ml_fields, group) : nullptr;
}
/*
* JNI stuff
*/
@ -1994,6 +2018,8 @@ static JNINativeMethod methods[] = {
{"nativePlaylistCreate", "(Ljava/lang/String;)Lorg/videolan/medialibrary/interfaces/media/Playlist;", (void*)playlistCreate },
{"nativeGetVideoGroups", "(IZII)[Lorg/videolan/medialibrary/interfaces/media/VideoGroup;", (void*)videoGroups },
{"nativeGetVideoGroupsCount", "()I", (void*)videoGroupsCount },
{"nativeCreateGroupByName", "(Ljava/lang/String;)Lorg/videolan/medialibrary/interfaces/media/VideoGroup;", (void*)createMediaGroupByName },
{"nativeCreateGroup", "([J)Lorg/videolan/medialibrary/interfaces/media/VideoGroup;", (void*)createMediaGroup },
};

16
medialibrary/src/org/videolan/medialibrary/MedialibraryImpl.java

@ -228,6 +228,18 @@ public class MedialibraryImpl extends Medialibrary {
if (mIsInitiated) nativeSetVideoGroupsPrefixLength(lenght);
}
@Override
@WorkerThread
public VideoGroup createVideoGroup(String name) {
return mIsInitiated && !TextUtils.isEmpty(name) ? nativeCreateGroupByName(name) : null;
}
@Override
@WorkerThread
public VideoGroup createVideoGroup(long[] ids) {
return mIsInitiated && (ids.length != 0) ? nativeCreateGroup(ids) : null;
}
@WorkerThread
public Album[] getAlbums() {
@ -563,6 +575,10 @@ public class MedialibraryImpl extends Medialibrary {
private native VideoGroup[] nativeGetVideoGroups(int sort, boolean desc, int nbItems, int offset);
private native int nativeGetVideoGroupsCount();
private native void nativeSetVideoGroupsPrefixLength(int length);
private native VideoGroup nativeCreateGroupByName(String name);
private native VideoGroup nativeCreateGroup(long[] ids);
private native Album[] nativeGetAlbums(int sort, boolean desc);
private native Album[] nativeGetPagedAlbums(int sort, boolean desc, int nbItems, int offset);
private native int nativeGetAlbumsCount();

4
medialibrary/src/org/videolan/medialibrary/interfaces/Medialibrary.java

@ -714,6 +714,10 @@ abstract public class Medialibrary {
abstract public VideoGroup[] getVideoGroups(int sort, boolean desc, int nbItems, int offset);
abstract public int getVideoGroupsCount();
abstract public void setVideoGroupsPrefixLength(int lenght);
abstract public VideoGroup createVideoGroup(String name);
abstract public VideoGroup createVideoGroup(long[] ids);
abstract public Album[] getAlbums();
abstract public Album[] getAlbums(int sort, boolean desc);
abstract public Album[] getPagedAlbums(int sort, boolean desc, int nbItems, int offset);

10
medialibrary/src/org/videolan/medialibrary/stubs/StubMedialibrary.java

@ -148,6 +148,16 @@ public class StubMedialibrary extends Medialibrary {
@Override
public void setVideoGroupsPrefixLength(int lenght) {}
@Override
public VideoGroup createVideoGroup(String name) {
return null;
}
@Override
public VideoGroup createVideoGroup(long[] ids) {
return null;
}
public Album[] getAlbums() {
return getAlbums(SORT_DEFAULT, false);
}

Loading…
Cancel
Save