jfloat Java_org_videolan_libvlc_LibVLC_getPosition(JNIEnv *env, jobject thiz) { libvlc_media_player_t *mp = getMediaPlayer(env, thiz); if (mp) return (jfloat) libvlc_media_player_get_position(mp); return -1; }
qreal NPlaybackEngineVlc::position() const { if (!hasMedia()) return -1; return libvlc_media_player_get_position(m_mediaPlayer); }
int player::getPosition() { if (mp) { float pos = libvlc_media_player_get_position(mp); // if player is initialize return position return (int) (pos * 1000.0); } else { return 0; } }
int CAVPlayer::GetPos() { if (m_pVLC_Player) { return (int)(1000 * libvlc_media_player_get_position(m_pVLC_Player)); } return 0; }
double PlayerEngine_vlc::getSliderPOS(){ float pos = libvlc_media_player_get_position(vlcPlayer); return (double)pos*100.0; /* if (libvlc_media_player_get_state(vlcPlayer) == libvlc_Ended) */ this->stopState(); }
jfloat Java_org_videolan_libvlc_MediaPlayer_getPosition(JNIEnv *env, jobject thiz) { vlcjni_object *p_obj = VLCJniObject_getInstance(env, thiz); if (!p_obj) return -1; return (jfloat) libvlc_media_player_get_position(p_obj->u.p_mp); }
void VLCMainwindow::updateInterface() { //Update interface and check if song is finished if(vlcPlayer) //It segfault if vlcPlayer don't exist { /* update the timeline */ float pos = libvlc_media_player_get_position(vlcPlayer); int siderPos=(int)(pos*(float)(1000)); slider->setValue(siderPos); /* Stop the media */ if (libvlc_media_player_get_state(vlcPlayer) == 6) { this->stop(); } } }
void Mwindow::updateInterface() { //Update interface and check if song is finished if (!vlcPlayer) return; /* update the timeline */ float pos = libvlc_media_player_get_position(vlcPlayer); slider->setValue((int)(pos*1000.0)); /* Stop the media */ if (libvlc_media_player_get_state(vlcPlayer) == libvlc_Ended) this->stop(); }
STDMETHODIMP VLCInput::get_position(double* position) { if( NULL == position ) return E_POINTER; *position = 0.0f; libvlc_media_player_t *p_md; HRESULT hr = getMD(&p_md); if( SUCCEEDED(hr) ) { *position = libvlc_media_player_get_position(p_md); } return hr; };
void VLCAudioPlayer::checkFrame() { static int framenb = -1; fps = libvlc_media_player_get_fps(mediaPlayer, &vlc_ex); length = libvlc_media_player_get_length(mediaPlayer, &vlc_ex); float pos = libvlc_media_player_get_position(mediaPlayer, &vlc_ex); qDebug() << pos; int frame = ((length * fps) / 1000) * pos; if ((int) frame != framenb) { framenb = frame; emit frameChanged(framenb); } }
static gdouble clutter_vlc_get_progress(ClutterVlcVideoTexture* video_texture) { ClutterVlcVideoTexturePrivate* priv; gdouble position; priv = video_texture->priv; if (priv->vlc_media_player == NULL) return 0.0; position = libvlc_media_player_get_position(priv->vlc_media_player, &priv->vlc_exception); clutter_vlc_catch(&priv->vlc_exception); return position; }
void VideoSource::updateInterface() { if(!_isPlaying) return; // It's possible that the vlc doesn't play anything // so check before // libvlc_media_t *curMedia = libvlc_media_player_get_media (_mp, &_vlcexcep); libvlc_media_t *curMedia = libvlc_media_player_get_media (_mp); // libvlc_exception_clear(&_vlcexcep); if (curMedia == NULL) return; // float pos=libvlc_media_player_get_position (_mp, &_vlcexcep); float pos=libvlc_media_player_get_position (_mp); // int siderPos=(int)(pos*(float)(POSITION_RESOLUTION)); // int volume=libvlc_audio_get_volume (_vlcinstance,&_vlcexcep); // int volume=libvlc_audio_get_volume (_vlcinstance); int volume = libvlc_audio_get_volume(_mp); }
void SMActionVideoVLC::slotTimeout(void) { if (getStatus() != STATUS_PLAY) return; // It's possible that the vlc doesn't play anything // so check before libvlc_media_t *curMedia = libvlc_media_player_get_media (_mp); if (curMedia == NULL) return; float pos=libvlc_media_player_get_position (_mp); qint64 percent = 100 * pos; getProgressBar()->setValue((int)percent); if (pos >= 1.0) { } }
void Player::updateInterface() { if(!_isPlaying) return; // It's possible that the vlc doesn't play anything // so check before libvlc_media_t *curMedia = libvlc_media_player_get_media (_mp); //libvlc_media_t *curMedia = libvlc_media_player_get_media (_mp, &_vlcexcep); // [20101215 JG] Used for versions prior to VLC 1.2.0. //libvlc_exception_clear(&_vlcexcep); // [20101215 JG] Used for versions prior to VLC 1.2.0. if (curMedia == NULL) return; float pos=libvlc_media_player_get_position (_mp); //float pos=libvlc_media_player_get_position (_mp, &_vlcexcep); // [20101215 JG] Used for versions prior to VLC 1.2.0. int siderPos=(int)(pos*(float)(POSITION_RESOLUTION)); _positionSlider->setValue(siderPos); int volume=libvlc_audio_get_volume (_mp); //int volume=libvlc_audio_get_volume (_vlcinstance,&_vlcexcep); // [20101215 JG] Used for versions prior to VLC 1.2.0. _volumeSlider->setValue(volume); }
/** * Thumbnailer vout unlock **/ static void thumbnailer_unlock(void *opaque, void *picture, void *const *pixels) { thumbnailer_sys_t *sys = opaque; /* If we have already received a thumbnail, we skip this frame. */ pthread_mutex_lock(&sys->doneMutex); bool hasThumb = sys->hasThumb; pthread_mutex_unlock(&sys->doneMutex); if (hasThumb) return; sys->nbReceivedFrames++; if (libvlc_media_player_get_position(sys->mp) < THUMBNAIL_POSITION / 2 // Arbitrary choice to work around broken files. && libvlc_media_player_get_length(sys->mp) > 1000 && sys->nbReceivedFrames < 10) { return; } /* Else we have received our first thumbnail and we can exit. */ const char *dataSrc = sys->frameData; char *dataDest = sys->thumbnail + sys->thumbnailOffset; /* Copy the thumbnail. */ unsigned i; for (i = 0; i < sys->nbLines; ++i) { memcpy(dataDest, dataSrc, sys->picPitch); dataDest += sys->lineSize; dataSrc += sys->picPitch; } /* Signal that the thumbnail was created. */ pthread_mutex_lock(&sys->doneMutex); sys->hasThumb = true; pthread_cond_signal(&sys->doneCondVar); pthread_mutex_unlock(&sys->doneMutex); }
RuntimeNPObject::InvokeResult LibvlcInputNPObject::getProperty(int index, NPVariant &result) { /* is plugin still running */ if( isPluginRunning() ) { VlcPlugin* p_plugin = getPrivate<VlcPlugin>(); libvlc_exception_t ex; libvlc_exception_init(&ex); libvlc_media_player_t *p_md = p_plugin->getMD(&ex); if( libvlc_exception_raised(&ex) ) { if( index != ID_input_state ) { NPN_SetException(this, libvlc_exception_get_message(&ex)); libvlc_exception_clear(&ex); return INVOKERESULT_GENERIC_ERROR; } else { /* for input state, return CLOSED rather than an exception */ INT32_TO_NPVARIANT(0, result); libvlc_exception_clear(&ex); return INVOKERESULT_NO_ERROR; } } switch( index ) { case ID_input_length: { double val = (double)libvlc_media_player_get_length(p_md, &ex); RETURN_ON_EXCEPTION(this,ex); DOUBLE_TO_NPVARIANT(val, result); return INVOKERESULT_NO_ERROR; } case ID_input_position: { double val = libvlc_media_player_get_position(p_md, &ex); RETURN_ON_EXCEPTION(this,ex); DOUBLE_TO_NPVARIANT(val, result); return INVOKERESULT_NO_ERROR; } case ID_input_time: { double val = (double)libvlc_media_player_get_time(p_md, &ex); RETURN_ON_EXCEPTION(this,ex); DOUBLE_TO_NPVARIANT(val, result); return INVOKERESULT_NO_ERROR; } case ID_input_state: { int val = libvlc_media_player_get_state(p_md, &ex); RETURN_ON_EXCEPTION(this,ex); INT32_TO_NPVARIANT(val, result); return INVOKERESULT_NO_ERROR; } case ID_input_rate: { float val = libvlc_media_player_get_rate(p_md, &ex); RETURN_ON_EXCEPTION(this,ex); DOUBLE_TO_NPVARIANT(val, result); return INVOKERESULT_NO_ERROR; } case ID_input_fps: { double val = libvlc_media_player_get_fps(p_md, &ex); RETURN_ON_EXCEPTION(this,ex); DOUBLE_TO_NPVARIANT(val, result); return INVOKERESULT_NO_ERROR; } case ID_input_hasvout: { bool val = p_plugin->player_has_vout(&ex); RETURN_ON_EXCEPTION(this,ex); BOOLEAN_TO_NPVARIANT(val, result); return INVOKERESULT_NO_ERROR; } default: ; } } return INVOKERESULT_GENERIC_ERROR; }
/** * Thumbnailer main function. * return null if the thumbail generation failed. **/ jbyteArray Java_org_videolan_libvlc_util_VLCUtil_nativeGetThumbnail(JNIEnv *env, jobject thiz, jobject jmedia, const jint frameWidth, const jint frameHeight) { vlcjni_object *p_obj = VLCJniObject_getInstance(env, jmedia); jbyteArray byteArray = NULL; /* Create the thumbnailer data structure */ thumbnailer_sys_t *sys = calloc(1, sizeof(thumbnailer_sys_t)); if (sys == NULL) { LOGE("Could not create the thumbnailer data structure!"); goto enomem; } /* Initialize the barrier. */ pthread_mutex_init(&sys->doneMutex, NULL); pthread_cond_init(&sys->doneCondVar, NULL); /* Create a media player playing environment */ libvlc_media_player_t *mp = libvlc_media_player_new_from_media(p_obj->u.p_m); libvlc_media_player_set_video_title_display(mp, libvlc_position_disable, 0); /* Get the size of the video with the tracks information of the media. */ libvlc_media_track_t **tracks; libvlc_media_parse(p_obj->u.p_m); int nbTracks = libvlc_media_tracks_get(p_obj->u.p_m, &tracks); /* Parse the results */ unsigned videoWidth = 0, videoHeight = 0; bool hasVideoTrack = false; for (unsigned i = 0; i < nbTracks; ++i) if (tracks[i]->i_type == libvlc_track_video) { videoWidth = tracks[i]->video->i_width; videoHeight = tracks[i]->video->i_height; hasVideoTrack = true; break; } libvlc_media_tracks_release(tracks, nbTracks); /* Abort if we have not found a video track. */ if (!hasVideoTrack) { LOGE("Could not find any video track in this file.\n"); goto end; } LOGD("Video dimensions: %ix%i.\n", videoWidth, videoHeight ); /* VLC could not tell us the size */ if( videoWidth == 0 || videoHeight == 0 ) { LOGE("Could not find the video dimensions.\n"); goto end; } if( videoWidth < THUMBNAIL_MIN_WIDTH || videoHeight < THUMBNAIL_MIN_HEIGHT || videoWidth > THUMBNAIL_MAX_WIDTH || videoHeight > THUMBNAIL_MAX_HEIGHT ) { LOGE("Wrong video dimensions.\n"); goto end; } /* Compute the size parameters of the frame to generate. */ unsigned thumbWidth = frameWidth; unsigned thumbHeight = frameHeight; const float inputAR = (float)videoWidth / videoHeight; const float screenAR = (float)frameWidth / frameHeight; /* Most of the cases, video is wider than tall */ if (screenAR < inputAR) { thumbHeight = (float)frameWidth / inputAR + 1; sys->blackBorders = ( (frameHeight - thumbHeight) / 2 ) * frameWidth; } else { LOGD("Weird aspect Ratio.\n"); thumbWidth = (float)frameHeight * inputAR; sys->blackBorders = (frameWidth - thumbWidth) / 2; } sys->thumbPitch = thumbWidth * PIXEL_SIZE; sys->thumbHeight = thumbHeight; sys->frameWidth = frameWidth; /* Allocate the memory to store the frames. */ size_t thumbSize = sys->thumbPitch * (sys->thumbHeight+1); sys->thumbData = malloc(thumbSize); if (sys->thumbData == NULL) { LOGE("Could not allocate the memory to store the frame!"); goto end; } /* Allocate the memory to store the thumbnail. */ unsigned frameSize = frameWidth * frameHeight * PIXEL_SIZE; sys->frameData = calloc(frameSize, 1); if (sys->frameData == NULL) { LOGE("Could not allocate the memory to store the thumbnail!"); goto end; } /* Set the video format and the callbacks. */ libvlc_video_set_format(mp, "RGBA", thumbWidth, thumbHeight, sys->thumbPitch); libvlc_video_set_callbacks(mp, thumbnailer_lock, thumbnailer_unlock, NULL, (void*)sys); sys->state = THUMB_SEEKING; /* Play the media. */ libvlc_media_player_play(mp); libvlc_media_player_set_position(mp, THUMBNAIL_POSITION); const int wait_time = 50000; const int max_attempts = 100; for (int i = 0; i < max_attempts; ++i) { if (libvlc_media_player_is_playing(mp) && libvlc_media_player_get_position(mp) >= THUMBNAIL_POSITION) break; usleep(wait_time); } /* Wait for the thumbnail to be generated. */ pthread_mutex_lock(&sys->doneMutex); sys->state = THUMB_SEEKED; struct timespec deadline; clock_gettime(CLOCK_REALTIME, &deadline); deadline.tv_sec += 10; /* amount of seconds before we abort thumbnailer */ do { int ret = pthread_cond_timedwait(&sys->doneCondVar, &sys->doneMutex, &deadline); if (ret == ETIMEDOUT) break; } while (sys->state != THUMB_DONE); pthread_mutex_unlock(&sys->doneMutex); /* Stop and release the media player. */ libvlc_media_player_stop(mp); libvlc_media_player_release(mp); if (sys->state == THUMB_DONE) { /* Create the Java byte array to return the create thumbnail. */ byteArray = (*env)->NewByteArray(env, frameSize); if (byteArray == NULL) { LOGE("Could not allocate the Java byte array to store the frame!"); goto end; } (*env)->SetByteArrayRegion(env, byteArray, 0, frameSize, (jbyte *)sys->frameData); } end: pthread_mutex_destroy(&sys->doneMutex); pthread_cond_destroy(&sys->doneCondVar); free(sys->frameData); free(sys->thumbData); free(sys); enomem: return byteArray; }
/** * Thumbnailer main function. * return null if the thumbail generation failed. **/ jbyteArray Java_org_videolan_vlc_LibVLC_getThumbnail(JNIEnv *env, jobject thiz, jlong instance, jstring filePath, const jint frameWidth, const jint frameHeight) { libvlc_instance_t *libvlc = (libvlc_instance_t *)(intptr_t)instance; jbyteArray byteArray = NULL; /* Create the thumbnailer data structure */ thumbnailer_sys_t *sys = calloc(1, sizeof(thumbnailer_sys_t)); if (sys == NULL) { LOGE("Could not create the thumbnailer data structure!"); return NULL; } /* Initialize the barrier. */ pthread_mutex_init(&sys->doneMutex, NULL); pthread_cond_init(&sys->doneCondVar, NULL); /* Create a media player playing environment */ libvlc_media_player_t *mp = libvlc_media_player_new(libvlc); libvlc_media_t *m = new_media(instance, env, thiz, filePath, true, false); if (m == NULL) { LOGE("Could not create the media to play!"); goto end; } /* Fast and no options */ libvlc_media_add_option( m, ":no-audio" ); libvlc_media_add_option( m, ":no-spu" ); libvlc_media_add_option( m, ":no-osd" ); libvlc_media_player_set_media(mp, m); /* Get the size of the video with the tracks information of the media. */ libvlc_media_track_info_t *tracks; libvlc_media_parse(m); int nbTracks = libvlc_media_get_tracks_info(m, &tracks); libvlc_media_release(m); /* Parse the results */ unsigned videoWidth, videoHeight; bool hasVideoTrack = false; for (unsigned i = 0; i < nbTracks; ++i) if (tracks[i].i_type == libvlc_track_video) { videoWidth = tracks[i].u.video.i_width; videoHeight = tracks[i].u.video.i_height; hasVideoTrack = true; break; } free(tracks); /* Abort if we have not found a video track. */ if (!hasVideoTrack) { LOGE("Could not find any video track in this file.\n"); goto end; } /* VLC could not tell us the size */ if( videoWidth == 0 || videoHeight == 0 ) { LOGE("Could not find the video dimensions.\n"); goto end; } /* Compute the size parameters of the frame to generate. */ unsigned thumbWidth = frameWidth; unsigned thumbHeight = frameHeight; const float inputAR = (float)videoWidth / videoHeight; const float screenAR = (float)frameWidth / frameHeight; /* Most of the cases, video is wider than tall */ if (screenAR < inputAR) { thumbHeight = (float)frameWidth / inputAR + 1; sys->blackBorders = ( (frameHeight - thumbHeight) / 2 ) * frameWidth; } else { LOGD("Weird aspect Ratio.\n"); thumbWidth = (float)frameHeight * inputAR; sys->blackBorders = (frameWidth - thumbWidth) / 2; } sys->thumbPitch = thumbWidth * PIXEL_SIZE; sys->thumbHeight = thumbHeight; sys->frameWidth = frameWidth; /* Allocate the memory to store the frames. */ size_t thumbSize = sys->thumbPitch * (sys->thumbHeight+1); sys->thumbData = malloc(thumbSize); if (sys->thumbData == NULL) { LOGE("Could not allocate the memory to store the frame!"); goto end; } /* Allocate the memory to store the thumbnail. */ unsigned frameSize = frameWidth * frameHeight * PIXEL_SIZE; sys->frameData = calloc(frameSize, 1); if (sys->frameData == NULL) { LOGE("Could not allocate the memory to store the thumbnail!"); goto end; } /* Set the video format and the callbacks. */ libvlc_video_set_format(mp, "RGBA", thumbWidth, thumbHeight, sys->thumbPitch); libvlc_video_set_callbacks(mp, thumbnailer_lock, thumbnailer_unlock, NULL, (void*)sys); sys->state = THUMB_SEEKING; /* Play the media. */ libvlc_media_player_play(mp); libvlc_media_player_set_position(mp, THUMBNAIL_POSITION); int loops = 100; for (;;) { float pos = libvlc_media_player_get_position(mp); if (pos > THUMBNAIL_POSITION || !loops--) break; usleep(50000); } /* Wait for the thumbnail to be generated. */ pthread_mutex_lock(&sys->doneMutex); sys->state = THUMB_SEEKED; struct timespec deadline; clock_gettime(CLOCK_REALTIME, &deadline); deadline.tv_sec += 10; /* amount of seconds before we abort thumbnailer */ do { int ret = pthread_cond_timedwait(&sys->doneCondVar, &sys->doneMutex, &deadline); if (ret == ETIMEDOUT) break; } while (sys->state != THUMB_DONE); pthread_mutex_unlock(&sys->doneMutex); /* Stop and release the media player. */ libvlc_media_player_stop(mp); libvlc_media_player_release(mp); if (sys->state == THUMB_DONE) { /* Create the Java byte array to return the create thumbnail. */ byteArray = (*env)->NewByteArray(env, frameSize); if (byteArray == NULL) { LOGE("Could not allocate the Java byte array to store the frame!"); goto end; } (*env)->SetByteArrayRegion(env, byteArray, 0, frameSize, (jbyte *)sys->frameData); } end: pthread_mutex_destroy(&sys->doneMutex); pthread_cond_destroy(&sys->doneCondVar); free(sys->frameData); free(sys->thumbData); free(sys); return byteArray; }
void MainWindow::OnPositionChanged_VLC(wxCommandEvent& event) { float factor = libvlc_media_player_get_position(media_player); setTimeline(factor); }
double VlcVideoPlayer::getPosition() const { return double( libvlc_media_player_get_position( vlcPlayer )); }
void VlcVideoPlayer::forward() { // @todo Fix audio click (if we have time!) libvlc_media_player_set_position(vlcPlayer, libvlc_media_player_get_position (vlcPlayer) + 0.1); // Forward 10% }
// Control Buttons void VlcVideoPlayer::backward() { // @todo Fix audio click (if we have time!). libvlc_media_player_set_position(vlcPlayer, libvlc_media_player_get_position (vlcPlayer) - 0.1); // Backward 10% }
float VLCWrapper::GetMediaPosition () const { return libvlc_media_player_get_position (Player_.get ()); }