I noticed something strange in the VLCKit code that may be related to the issue.
Inside VLCMediaPlayer.m we currently have this:
Code: Select all
- (void)play
{
libvlc_media_player_play(_playerInstance);
}
- (void)pause
{
libvlc_media_player_set_pause(_playerInstance, 1);
}
Looking at vlc/lib/media_player.c which contains both libvlc functions called here, we see that
libvlc_media_player_play always calls
vlc_player_start before possibly calling resume.
Code: Select all
int libvlc_media_player_play( libvlc_media_player_t *p_mi )
{
vlc_player_t *player = p_mi->player;
vlc_player_Lock(player);
int ret = vlc_player_Start(player);
if (ret == VLC_SUCCESS)
{
if (vlc_player_IsPaused(player))
vlc_player_Resume(player);
}
vlc_player_Unlock(player);
return ret;
}
Meanwhile, under
libvlc_media_player_set_pause, we see that it can either call pause/stop or resume, depending on the number specified in the second parameter.
Code: Select all
void libvlc_media_player_set_pause( libvlc_media_player_t *p_mi, int paused )
{
vlc_player_t *player = p_mi->player;
vlc_player_Lock(player);
if (paused)
{
if (vlc_player_CanPause(player))
vlc_player_Pause(player);
else
vlc_player_Stop(player);
}
else
{
vlc_player_Resume(player);
}
vlc_player_Unlock(player);
}
Could it be that we were supposed to call
libvlc_media_player_set_pause to resume playback instead of
libvlc_media_player_play?