示例#1
0
static int
mp_play(void)
{
    player_pb_state_t state = player_playback_get_state(mp->player);

    if (state == PLAYER_PB_STATE_PAUSE)
        player_playback_pause(mp->player); /* unpause */
    else if (state == PLAYER_PB_STATE_IDLE)
        player_playback_start(mp->player);

    return 0;
}
示例#2
0
GF_Err LIBPLAYER_ServiceCommand(GF_InputService *plug, GF_NetworkCommand *com)
{
	LibPlayerIn *read = (LibPlayerIn *) plug->priv;
	GF_LOG(GF_LOG_DEBUG, GF_LOG_MODULE, ("[LibPlayerIN] ServiceCommand for instance %d, read->state=%d\n", read->player_id, read->state));
	if (!com->base.on_channel) return GF_NOT_SUPPORTED;

	if (com->command_type==GF_NET_SERVICE_HAS_AUDIO) return GF_NOT_SUPPORTED;

	switch (com->command_type) {
	case GF_NET_CHAN_SET_PULL: return GF_NOT_SUPPORTED;
	case GF_NET_CHAN_INTERACTIVE: return GF_OK;
	/*since data is file-based, no padding is needed (decoder plugin will handle it itself)*/
	case GF_NET_CHAN_SET_PADDING:  return GF_OK;
	case GF_NET_CHAN_BUFFER:
 		return GF_OK; 
		com->buffer.max = com->buffer.min = 0;
		return GF_OK;
	case GF_NET_CHAN_DURATION:
		/*this module is not made for updates, use undefined duration*/
		com->duration.duration = -1;
		return GF_OK;
	case GF_NET_CHAN_PLAY:
		if (read->state==0) {
#ifndef TEST_LIBPLAYER
			player_playback_start(read->player);
#endif
			read->state = 1;
			GF_LOG(GF_LOG_DEBUG, GF_LOG_MODULE, ("[LibPlayerIN] Starting playback for instance %d\n", read->player_id));
		}
		return GF_OK;
	case GF_NET_CHAN_STOP:
		if (read->state==1) {
#ifndef TEST_LIBPLAYER
			player_playback_pause(read->player);
#endif
			read->state = 0;
			GF_LOG(GF_LOG_DEBUG, GF_LOG_MODULE, ("[LibPlayerIN] Stopping playback for instance %d\n", read->player_id));
		}
		return GF_OK;
	case GF_NET_CHAN_CONFIG:  return GF_OK;
	case GF_NET_CHAN_GET_DSI:
		com->get_dsi.dsi = NULL;
		com->get_dsi.dsi_len = 0;
		return GF_OK;
	}
	return GF_OK;
}
示例#3
0
static int on_libplayer_event(player_event_t e, void *data)
{
	GF_LOG(GF_LOG_DEBUG, GF_LOG_MODULE, ("[LibPlayerIN] Received event %d\n", e));

  switch (e) {
	case PLAYER_EVENT_PLAYBACK_FINISHED:
	  player_playback_stop(data);
	  player_playback_start(data);
	  if ((in.w && in.h) || (out.w && out.h))
					player_video_io_windows_set(data, &in, &out);
	  break;
    case PLAYER_EVENT_FE_HAS_LOCK:
      break;
    case PLAYER_EVENT_FE_TIMEDOUT:
      break;
    default:
      break;
  }

  return 0;
}
示例#4
0
文件: libplayer.c 项目: Bevara/GPAC
static int on_libplayer_event(player_event_t e, void *data)
{
	GF_LOG(GF_LOG_DEBUG, GF_LOG_MODULE, ("[LibPlayerEvent] Received event %d\n", e));

	switch (e) {
	case PLAYER_EVENT_PLAYBACK_FINISHED:
		player_playback_stop(data);
		player_playback_start(data);
		break;
	case PLAYER_EVENT_FE_HAS_LOCK:
		break;
	case PLAYER_EVENT_FE_TIMEDOUT:
		break;
	case PLAYER_EVENT_VIDEO_PICTURE:
		break;
	default:
		break;
	}

	return 0;
}