/* --------------------------------------------------------------------------*/ int player_set_autobuffer_level(int pid, float min, float middle, float max) { player_cmd_t cmd; int ret; log_print("[%s:enter]pid=%d min=%.3f middle=%.3f max=%.3f\n", __FUNCTION__, pid, min, middle, max); if (min < middle && middle < max && max < 1) { MEMSET(&cmd, 0, sizeof(player_cmd_t)); cmd.set_mode = CMD_SET_AUTOBUF_LEV; cmd.f_param = min; cmd.f_param1 = middle; cmd.f_param2 = max; ret = player_send_message(pid, &cmd); } else { ret = -1; log_error("[%s]invalid param, please check!\n", __FUNCTION__); } log_print("[%s:exit]pid=%d min=%.3f middle=%.3f max=%.3f\n", __FUNCTION__, pid, min, middle, max); return ret; }
void render_video(void *hrender, AVFrame *video) { RENDER *render = (RENDER*)hrender; AVFrame picture; // init picture memset(&picture, 0, sizeof(AVFrame)); if (!render || !render->vdev) return; do { VDEV_COMMON_CTXT *vdev = (VDEV_COMMON_CTXT*)render->vdev; if ( render->render_xcur != render->render_xnew || render->render_ycur != render->render_ynew || render->render_wcur != render->render_wnew || render->render_hcur != render->render_hnew ) { render->render_xcur = render->render_xnew; render->render_ycur = render->render_ynew; render->render_wcur = render->render_wnew; render->render_hcur = render->render_hnew; // vdev set rect vdev_setrect(render->vdev, render->render_xcur, render->render_ycur, render->render_wcur, render->render_hcur); // we need recreate sws if (!render->sws_context) { sws_freeContext(render->sws_context); } render->sws_context = sws_getContext( render->video_width, render->video_height, render->pixel_fmt, vdev->sw, vdev->sh, (AVPixelFormat)vdev->pixfmt, SWS_FAST_BILINEAR, 0, 0, 0); } if (video->format == AV_PIX_FMT_DXVA2_VLD) { vdev_setparam(render->vdev, PARAM_VDEV_POST_SURFACE, video); } else { vdev_lock(render->vdev, picture.data, picture.linesize); if (picture.data[0] && video->pts != -1) { sws_scale(render->sws_context, video->data, video->linesize, 0, render->video_height, picture.data, picture.linesize); } vdev_unlock(render->vdev, video->pts); } #if CONFIG_ENABLE_SNAPSHOT if (render->render_status & RENDER_SNAPSHOT) { int ret = take_snapshot(render->snapfile, render->snapwidth, render->snapheight, video); player_send_message(((VDEV_COMMON_CTXT*)render->vdev)->surface, MSG_TAKE_SNAPSHOT, 0); render->render_status &= ~RENDER_SNAPSHOT; } #endif //++ seek step if (render->render_status & RENDER_SEEKSTEP) { render->render_status &= ~RENDER_SEEKSTEP; break; } //-- seek step } while (render->render_status & RENDER_PAUSE); }
int player_noloop(int pid) { player_cmd_t cmd; int ret; log_print("[player_loop:enter]pid=%d\n", pid); MEMSET(&cmd, 0, sizeof(player_cmd_t)); cmd.set_mode = CMD_NOLOOP; ret = player_send_message(pid, &cmd); log_print("[player_loop:exit]pid=%d ret=%d\n", pid, ret); return ret; }
/* --------------------------------------------------------------------------*/ int player_resume(int pid) { player_cmd_t cmd; int ret; log_print("[player_resume:enter]pid=%d\n", pid); MEMSET(&cmd, 0, sizeof(player_cmd_t)); cmd.ctrl_cmd = CMD_RESUME; ret = player_send_message(pid, &cmd); log_print("[player_resume:exit]pid=%d ret=%d\n", pid, ret); return ret; }
/* --------------------------------------------------------------------------*/ int player_pause(int pid) { player_cmd_t cmd; int ret = PLAYER_SUCCESS; log_print("[player_pause:enter]pid=%d\n", pid); MEMSET(&cmd, 0, sizeof(player_cmd_t)); cmd.ctrl_cmd = CMD_PAUSE; ret = player_send_message(pid, &cmd); log_print("[player_pause:exit]pid=%d ret=%d\n", pid, ret); return ret; }
/* --------------------------------------------------------------------------*/ int player_backward(int pid, int speed) { player_cmd_t cmd; int ret; log_print("[player_backward:enter]pid=%d speed=%d\n", pid, speed); MEMSET(&cmd, 0, sizeof(player_cmd_t)); cmd.ctrl_cmd = CMD_FB; cmd.param = speed; ret = player_send_message(pid, &cmd); log_print("[player_backward]cmd=%x param=%d ret=%d\n", cmd.ctrl_cmd, cmd.param, ret); return ret; }
/* --------------------------------------------------------------------------*/ int player_timesearch(int pid, float s_time) { player_cmd_t cmd; int ret; log_print("[player_timesearch:enter]pid=%d s_time=%f\n", pid, s_time); MEMSET(&cmd, 0, sizeof(player_cmd_t)); cmd.ctrl_cmd = CMD_SEARCH; cmd.f_param = s_time; ret = player_send_message(pid, &cmd); log_print("[player_timesearch:exit]pid=%d ret=%d\n", pid, ret); return ret; }
/* * Class: com_farcore_playerservice_MediaPlayer * Method: start * Signature: (I)I */ JNIEXPORT jint JNICALL Java_com_farcore_playerservice_AmPlayer_start (JNIEnv *env, jobject obj, jint pid){ #if 0 player_cmd_t cmd; int ret = -1; memset((void*)&cmd,0,sizeof(player_cmd_t)); cmd.ctrl_cmd = CMD_START; ret = player_send_message(pid,&cmd); return ret; #else LOGI("player start play"); player_start_play(pid); return 0; #endif }
/* --------------------------------------------------------------------------*/ int player_enable_autobuffer(int pid, int enable) { player_cmd_t cmd; int ret; log_print("[%s:enter]pid=%d enable=%d\n", __FUNCTION__, pid, enable); MEMSET(&cmd, 0, sizeof(player_cmd_t)); cmd.set_mode = CMD_EN_AUTOBUF; cmd.param = enable; ret = player_send_message(pid, &cmd); log_print("[%s:exit]pid=%d enable=%d\n", __FUNCTION__, pid, enable); return ret; }
/* --------------------------------------------------------------------------*/ int player_sid(int pid, int sub_id) { player_cmd_t cmd; int ret; log_print("[player_sid:enter]pid=%d sub_id=%d\n", pid, sub_id); MEMSET(&cmd, 0, sizeof(player_cmd_t)); cmd.ctrl_cmd = CMD_SWITCH_SID; cmd.param = sub_id; ret = player_send_message(pid, &cmd); log_print("[player_sid:exit]pid=%d sub_id=%d\n", pid, sub_id); return ret; }
/* --------------------------------------------------------------------------*/ int player_aid(int pid, int audio_id) { player_cmd_t cmd; int ret; log_print("[player_aid:enter]pid=%d aid=%d\n", pid, audio_id); MEMSET(&cmd, 0, sizeof(player_cmd_t)); cmd.ctrl_cmd = CMD_SWITCH_AID; cmd.param = audio_id; ret = player_send_message(pid, &cmd); log_print("[player_aid:exit]pid=%d ret=%d\n", pid, ret); return ret; }