static int mp_pause(void) { enna_log(ENNA_MSG_INFO, NULL, "pause"); if (player_playback_get_state(mp->player) == PLAYER_PB_STATE_PLAY) player_playback_pause(mp->player); return 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; }
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; }