Jérôme Guilbaud - Update of the WinAmp 5 VLC skin
Joel Arvidsson <dogai at privat.utfors.se> - Swedish translation
Joeri van Dooren <joeri at van.dooren.be> - OS X icon (v0.4.0)
+Jörg<vlc-ml at aab.noctis dot de> - VLM seek/show media functions
Johen Michael Zorko <zorko at att.net> - fix for delay issues in udp sout
John Paul Lorenti <jpl31 at columbia.edu> - ALSA device selection patch
Jonas Larsen <jonas at vrt.dk> - Danish translation
private native void _playMedia(String mediaName);
private native void _stopMedia(String mediaName);
private native void _pauseMedia(String mediaName);
+ private native void _seekMedia(String mediaName, float percentage);
+ private native String _showMedia(String mediaName);
+ private native float _getMediaposition(String name, int mediaInstance);
+ private native int _getMediatime(String name, int mediaInstance);
+ private native int _getMedialength(String name, int mediaInstance);
+ private native int _getMediarate(String name, int mediaInstance);
+ private native int _getMediatitle(String name, int mediaInstance);
+ private native int _getMediachapter(String name, int mediaInstance);
+ private native int _getMediaseekable(String name, int mediaInstance);
public VLM( long instance ) {
this.libvlcInstance = instance;
_pauseMedia(name);
}
+ public void seekMedia(String name, float percentage) throws VLCException {
+ _seekMedia(name, percentage);
+ }
+
+ public String showMedia(String name) throws VLCException {
+ return _showMedia(name);
+ }
+
+ public float getMediaPosition(String name, int mediaInstance) throws VLCException {
+ return _getMediaposition(name, mediaInstance);
+ }
+
+ public int getMediaTime(String name, int mediaInstance) throws VLCException {
+ return _getMediatime(name, mediaInstance);
+ }
+
+ public int getMediaLength(String name, int mediaInstance) throws VLCException {
+ return _getMedialength(name, mediaInstance);
+ }
+
+ public int getMediaRate(String name, int mediaInstance) throws VLCException {
+ return _getMediarate(name, mediaInstance);
+ }
+
+ public int getMediaTitle(String name, int mediaInstance) throws VLCException {
+ return _getMediatitle(name, mediaInstance);
+ }
+
+ public int getMediaChapter(String name, int mediaInstance) throws VLCException {
+ return _getMediachapter(name, mediaInstance);
+ }
+
+ public boolean getMediaSeekable(String name, int mediaInstance) throws VLCException {
+ return _getMediaseekable(name, mediaInstance) > 0;
+ }
+
+
public long getInstance() {
return libvlcInstance;
}
XSetBackground(dsi_x11->display, gc, 0);
/* and reparent */
- libvlc_video_reparent( input, dsi_x11->drawable, exception );
+ libvlc_video_reparent( input, (libvlc_drawable_t)dsi_x11->drawable, exception );
CHECK_EXCEPTION_FREE ;
}
}
+JNIEXPORT void JNICALL Java_org_videolan_jvlc_VLM__1seekMedia (JNIEnv *env, jobject _this, jstring name, jfloat percentage)
+{
+ INIT_FUNCTION;
+ const char* psz_name = env->GetStringUTFChars( name, 0 );
+
+ libvlc_vlm_seek_media( (libvlc_instance_t *) instance, (char*)psz_name, (float)percentage, exception );
+ CHECK_EXCEPTION_FREE ;
+
+ if (psz_name != NULL) {
+ env->ReleaseStringUTFChars( name, psz_name );
+ }
+}
+
+JNIEXPORT jstring JNICALL Java_org_videolan_jvlc_VLM__1showMedia (JNIEnv *env, jobject _this, jstring name)
+{
+ INIT_FUNCTION;
+ const char* psz_name = env->GetStringUTFChars( name, 0 );
+ char *psz_response;
+ jstring js_response;
+
+ psz_response = libvlc_vlm_show_media( (libvlc_instance_t *) instance, (char*)psz_name, exception );
+ CHECK_EXCEPTION_FREE ;
+
+ if (psz_name != NULL) {
+ env->ReleaseStringUTFChars( name, psz_name );
+ }
+ js_response = env->NewStringUTF(psz_response);
+ if (psz_response != NULL) {
+ free(psz_response);
+ }
+ return js_response;
+}
+
+#define LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( attr, returnType, dummyGetType, dummyDefault)\
+JNIEXPORT j ## returnType JNICALL Java_org_videolan_jvlc_VLM__1getMedia ## attr(JNIEnv *env, jobject _this, jstring name, jint index) \
+{ \
+ INIT_FUNCTION; \
+ const char* psz_name = env->GetStringUTFChars( name, 0 ); \
+ returnType response; \
+ \
+ response = libvlc_vlm_get_media_ ## attr( (libvlc_instance_t *) instance, (char*)psz_name, (int)index, exception ); \
+ CHECK_EXCEPTION_FREE ; \
+ \
+ if (psz_name != NULL) { \
+ env->ReleaseStringUTFChars( name, psz_name ); \
+ } \
+ return response; \
+}
+
+LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( position, float, Float, -1);
+LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( time, int, Integer, -1);
+LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( length, int, Integer, -1);
+LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( rate, int, Integer, -1);
+LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( title, int, Integer, 0);
+LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( chapter, int, Integer, 0);
+LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( seekable, int, Bool, 0);
+
+#undef LIBVLC_VLM_GET_MEDIA_ATTRIBUTE
*/
void libvlc_vlm_pause_media( libvlc_instance_t *, char *, libvlc_exception_t * );
-
+/**
+ * Seeks in the named broadcast.
+ * \param p_instance the instance
+ * \param psz_name the name of the broadcast
+ * \param f_percentage the percentage to seek to
+ * \param p_exception an initialized exception
+ */
+void libvlc_vlm_seek_media( libvlc_instance_t *, char *,
+ float, libvlc_exception_t * );
+
+/**
+ * Return information of the named broadcast.
+ * \param p_instance the instance
+ * \param psz_name the name of the broadcast
+ * \param p_exception an initialized exception
+ */
+char* libvlc_vlm_show_media( libvlc_instance_t *, char *, libvlc_exception_t * );
+
+#define LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( attr, returnType, getType, default)\
+returnType libvlc_vlm_get_media_## attr( libvlc_instance_t *, \
+ char *, int , libvlc_exception_t * );
+
+LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( position, float, Float, -1);
+LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( time, int, Integer, -1);
+LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( length, int, Integer, -1);
+LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( rate, int, Integer, -1);
+LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( title, int, Integer, 0);
+LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( chapter, int, Integer, 0);
+LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( seekable, int, Bool, 0);
+
+#undef LIBVLC_VLM_GET_MEDIA_ATTRIBUTE
/** @} */
/** @} */
libvlc_exception_raise( p_exception, "Unable to pause %s",
psz_name );
}
- free( psz_message);
+ free( psz_message );
+#endif
+}
+
+void libvlc_vlm_seek_media( libvlc_instance_t *p_instance, char *psz_name,
+ float f_percentage, libvlc_exception_t *p_exception )
+
+{
+ char *psz_message;
+ vlm_message_t *answer;
+ CHECK_VLM;
+#ifdef ENABLE_VLM
+ asprintf( &psz_message, "control %s seek %f", psz_name, f_percentage );
+ vlm_ExecuteCommand( p_instance->p_vlm, psz_message, &answer );
+ if( answer->psz_value )
+ {
+ libvlc_exception_raise( p_exception, "Unable to seek %s to %f",
+ psz_name, f_percentage );
+ }
+ free( psz_message );
+#endif
+}
+
+#ifdef ENABLE_VLM
+#define LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( attr, returnType, getType, default)\
+returnType libvlc_vlm_get_media_## attr( libvlc_instance_t *p_instance, \
+ char *psz_name, int i_instance, \
+ libvlc_exception_t *p_exception ) \
+{ \
+ vlm_media_instance_t *p_media_instance; \
+ CHECK_VLM; \
+ vlm_media_t *p_media; \
+ p_media = vlm_MediaSearch( p_instance->p_vlm, psz_name ); \
+ if ( p_media == NULL ) \
+ { \
+ libvlc_exception_raise( p_exception, "Unable to find media %s", \
+ psz_name); \
+ } \
+ else \
+ { \
+ if ( i_instance < p_media->i_instance ) \
+ { \
+ p_media_instance = p_media->instance[ i_instance ]; \
+ return var_Get ## getType( p_media_instance->p_input, #attr );\
+ } \
+ else \
+ { \
+ libvlc_exception_raise( p_exception, "Media index %i out of range",\
+ i_instance); \
+ } \
+ } \
+ return default; \
+}
+#else
+#define LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( attr, returnType, getType, default)\
+returnType libvlc_vlm_get_media_## attr( libvlc_instance_t *p_instance, \
+ char *psz_name, int i_instance, libvlc_exception_t *p_exception ) \
+{ \
+ char *psz_message; \
+ vlm_message_t *answer; \
+ CHECK_VLM; \
+ return default; \
+}
+#endif
+
+LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( position, float, Float, -1);
+LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( time, int, Integer, -1);
+LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( length, int, Integer, -1);
+LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( rate, int, Integer, -1);
+LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( title, int, Integer, 0);
+LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( chapter, int, Integer, 0);
+LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( seekable, int, Bool, 0);
+
+#undef LIBVLC_VLM_GET_MEDIA_ATTRIBUTE
+
+char* libvlc_vlm_show_media( libvlc_instance_t *p_instance, char *psz_name,
+ libvlc_exception_t *p_exception )
+{
+ char* recurse_answer( char* psz_prefix, vlm_message_t *p_answer ) {
+ char* psz_childprefix;
+ char* psz_response="";
+ char* response_tmp;
+ int i;
+ vlm_message_t *aw_child, **paw_child;
+
+ asprintf( &psz_childprefix, "%s%s.", psz_prefix, p_answer->psz_name );
+
+ if ( p_answer->i_child )
+ {
+ paw_child = p_answer->child;
+ aw_child = *( paw_child );
+ for( i = 0; i < p_answer->i_child; i++ )
+ {
+ asprintf( &response_tmp, "%s%s%s:%s\n",
+ psz_response, psz_prefix, aw_child->psz_name,
+ aw_child->psz_value );
+ free( psz_response );
+ psz_response = response_tmp;
+ if ( aw_child->i_child )
+ {
+ asprintf(&response_tmp, "%s%s", psz_response,
+ recurse_answer(psz_childprefix, aw_child));
+ free( psz_response );
+ psz_response = response_tmp;
+ }
+ paw_child++;
+ aw_child = *( paw_child );
+ }
+ }
+ free( psz_childprefix );
+ return psz_response;
+ }
+
+ char *psz_message;
+ vlm_message_t *answer;
+ char *psz_response;
+
+ CHECK_VLM;
+#ifdef ENABLE_VLM
+ asprintf( &psz_message, "show %s", psz_name );
+ asprintf( &psz_response, "", psz_name );
+ vlm_ExecuteCommand( p_instance->p_vlm, psz_message, &answer );
+ if( answer->psz_value )
+ {
+ libvlc_exception_raise( p_exception, "Unable to call show %s: %s",
+ psz_name, answer->psz_value );
+ }
+ else
+ {
+ if ( answer->child )
+ {
+ psz_response = recurse_answer( "", answer );
+ }
+ }
+ free( psz_message );
+ return(psz_response );
#endif
}