/* --------------------------------------------------------------------------*/ int player_stop_async(int pid) { player_cmd_t *cmd; int r = PLAYER_SUCCESS; play_para_t *player_para; player_status sta; player_para = player_open_pid_data(pid); if (player_para == NULL) { return PLAYER_NOT_VALID_PID; } sta = get_player_state(player_para); log_print("[player_stop]player_status=%x\n", sta); if (PLAYER_THREAD_IS_STOPPED(sta)) { player_close_pid_data(pid); log_print("[player_stop]pid=%d thread is already stopped\n", pid); return PLAYER_SUCCESS; } cmd = message_alloc(); if (cmd) { cmd->ctrl_cmd = CMD_STOP; ffmpeg_interrupt(player_para->thread_mgt.pthread_id); r = send_message(player_para, cmd); } else { r = PLAYER_NOMEM; } player_close_pid_data(pid); return r; }
/* --------------------------------------------------------------------------*/ int player_send_message(int pid, player_cmd_t *cmd) { player_cmd_t *mycmd; int r = -1; play_para_t *player_para; char buf[512]; player_para = player_open_pid_data(pid); if (player_para == NULL) { return PLAYER_NOT_VALID_PID; } if (player_get_state(pid) == PLAYER_EXIT) { player_close_pid_data(pid); return PLAYER_SUCCESS; } mycmd = message_alloc(); if (mycmd) { memcpy(mycmd, cmd, sizeof(*cmd)); r = send_message_by_pid(pid, mycmd); if (cmd2str(cmd, buf) != -1) { log_print("[%s]cmd = %s\n", __FUNCTION__, buf); } } else { r = PLAYER_NOMEM; } player_close_pid_data(pid); return r; }
/* --------------------------------------------------------------------------*/ int player_exit(int pid) { int ret = PLAYER_SUCCESS; play_para_t *para; log_print("[player_exit:enter]pid=%d\n", pid); para = player_open_pid_data(pid); if (para != NULL) { log_print("[player_exit]player_state=0x%x\n", get_player_state(para)); if (get_player_state(para) != PLAYER_EXIT) { player_stop(pid); } ret = player_thread_wait_exit(para); log_print("[player_exit]player thread already exit: %d\n", ret); ffmpeg_uninterrupt(para->thread_mgt.pthread_id); FREE(para); para = NULL; } player_close_pid_data(pid); player_release_pid(pid); log_print("[player_exit:exit]pid=%d\n", pid); return ret; }
/* --------------------------------------------------------------------------*/ int player_start_play(int pid) { player_cmd_t *cmd; int r = PLAYER_SUCCESS; play_para_t *player_para; log_print("[player_start_play:enter]pid=%d\n", pid); player_para = player_open_pid_data(pid); if (player_para == NULL) { return PLAYER_NOT_VALID_PID; } cmd = message_alloc(); if (cmd) { cmd->ctrl_cmd = CMD_START; r = send_message(player_para, cmd); } else { r = PLAYER_NOMEM; } player_close_pid_data(pid); log_print("[player_start_play:exit]pid = %d\n", pid); return r; }
/* --------------------------------------------------------------------------*/ int player_stop(int pid) { player_cmd_t *cmd; int r = PLAYER_SUCCESS; play_para_t *player_para; player_status sta; log_print("[player_stop:enter]pid=%d\n", pid); player_para = player_open_pid_data(pid); if (player_para == NULL) { return PLAYER_NOT_VALID_PID; } sta = get_player_state(player_para); log_print("[player_stop]player_status=%x\n", sta); if (PLAYER_THREAD_IS_STOPPED(sta)) { player_close_pid_data(pid); log_print("[player_stop]pid=%d thread is already stopped\n", pid); return PLAYER_SUCCESS; } /*if (player_para->pFormatCtx) { av_ioctrl(player_para->pFormatCtx, AVIOCTL_STOP, 0, 0); }*/ cmd = message_alloc(); if (cmd) { cmd->ctrl_cmd = CMD_STOP; ffmpeg_interrupt(player_para->thread_mgt.pthread_id); r = send_message(player_para, cmd); r = player_thread_wait_exit(player_para); log_print("[player_stop:%d]wait player_theadpid[%d] r = %d\n", __LINE__, player_para->player_id, r); clear_all_message(player_para); ffmpeg_uninterrupt(player_para->thread_mgt.pthread_id); } else { r = PLAYER_NOMEM; } player_close_pid_data(pid); log_print("[player_stop:exit]pid=%d\n", pid); return r; }
int send_message_by_pid(int pid, player_cmd_t *cmd) { int ret; play_para_t *player_para; player_para = player_open_pid_data(pid); if (player_para == NULL) { return PLAYER_NOT_VALID_PID; } ret = send_message(player_para, cmd); player_close_pid_data(pid); return ret; }
/* --------------------------------------------------------------------------*/ int player_get_media_info(int pid, media_info_t *minfo) { play_para_t *player_para; player_status sta; player_para = player_open_pid_data(pid); if (player_para == NULL) { return PLAYER_NOT_VALID_PID; /*this data is 0 for default!*/ } sta = get_player_state(player_para); if (sta >= PLAYER_ERROR && sta <= PLAYER_EXIT) { player_close_pid_data(pid); return PLAYER_INVALID_CMD; } MEMSET(minfo, 0, sizeof(media_info_t)); MEMCPY(minfo, &player_para->media_info, sizeof(media_info_t)); log_print("[player_get_media_info]video_num=%d vidx=%d\n", minfo->stream_info.total_video_num, minfo->stream_info.cur_video_index); player_close_pid_data(pid); return PLAYER_SUCCESS; }
/* --------------------------------------------------------------------------*/ int player_get_play_info(int pid, player_info_t *info) { play_para_t *player_para; player_para = player_open_pid_data(pid); if (player_para == NULL) { return PLAYER_NOT_VALID_PID; /*this data is 0 for default!*/ } MEMSET(info, 0, sizeof(player_info_t)); MEMCPY(info, &player_para->state, sizeof(player_info_t)); player_close_pid_data(pid); return PLAYER_SUCCESS; }
/* --------------------------------------------------------------------------*/ unsigned int player_get_extern_priv(int pid) { unsigned long externed; play_para_t *player_para; player_para = player_open_pid_data(pid); if (player_para == NULL) { return PLAYER_NOT_VALID_PID; /*this data is 0 for default!*/ } externed = player_para->extern_priv; player_close_pid_data(pid); return externed; }
/* --------------------------------------------------------------------------*/ player_status player_get_state(int pid) { player_status status; play_para_t *player_para; player_para = player_open_pid_data(pid); if (player_para == NULL) { return PLAYER_NOT_VALID_PID; } status = get_player_state(player_para); player_close_pid_data(pid); return status; }
int send_message_by_pid(int pid, player_cmd_t *cmd) { int ret; play_para_t *player_para; player_para = player_open_pid_data(pid); if (player_para == NULL) { return PLAYER_NOT_VALID_PID; } if (cmd->ctrl_cmd == CMD_SEARCH) { ret = send_message_update(player_para, cmd); } else { ret = send_message(player_para, cmd); } player_close_pid_data(pid); return ret; }
/* --------------------------------------------------------------------------*/ int audio_set_spectrum_switch(int pid, int isStart, int interval) { int ret = -1; play_para_t *player_para; codec_para_t *p; player_para = player_open_pid_data(pid); if (player_para == NULL) { return 0; /*this data is 0 for default!*/ } p = get_audio_codec(player_para); if (p != NULL) { ret = codec_audio_spectrum_switch(p, isStart, interval); } player_close_pid_data(pid); return ret; }
/* --------------------------------------------------------------------------*/ int audio_stereo(int pid) { int ret = -1; play_para_t *player_para; codec_para_t *p; player_para = player_open_pid_data(pid); if (player_para == NULL) { return 0; /*this data is 0 for default!*/ } p = get_audio_codec(player_para); if (p != NULL) { ret = codec_stereo(p); } player_close_pid_data(pid); return ret; }
int audio_set_mute(int pid, int mute_on) { int ret = PLAYER_FAILED; play_para_t *player_para; codec_para_t *p; player_para = player_open_pid_data(pid); if (player_para != NULL) { player_para->playctrl_info.audio_mute = mute_on & 0x1; log_print("[audio_set_mute:%d]muteon=%d audio_mute=%d\n", __LINE__, mute_on, player_para->playctrl_info.audio_mute); p = get_audio_codec(player_para); if (p != NULL) { ret = codec_set_mute(p, mute_on); } player_close_pid_data(pid); } else { ret = codec_set_mute(NULL, mute_on); } return ret; }