bool cDvbHdFfDevice::SetPlayMode(ePlayMode PlayMode) { if (PlayMode == pmNone) { if (fd_video == -1) fd_video = DvbOpen(DEV_DVB_VIDEO, adapter, frontend, O_RDWR | O_NONBLOCK); if (fd_audio == -1) fd_audio = DvbOpen(DEV_DVB_AUDIO, adapter, frontend, O_RDWR | O_NONBLOCK); mHdffCmdIf->CmdAvSetVideoSpeed(0, 100); mHdffCmdIf->CmdAvSetAudioSpeed(0, 100); mHdffCmdIf->CmdAvEnableVideoAfterStop(0, false); mHdffCmdIf->CmdAvSetPcrPid(0, 0); mHdffCmdIf->CmdAvSetVideoPid(0, 0, HDFF_VIDEO_STREAM_MPEG1); mHdffCmdIf->CmdAvSetAudioPid(0, 0, HDFF_AUDIO_STREAM_MPEG1); ioctl(fd_video, VIDEO_SELECT_SOURCE, VIDEO_SOURCE_DEMUX); mHdffCmdIf->CmdAvSetDecoderInput(0, 0); mHdffCmdIf->CmdAvEnableSync(0, true); mHdffCmdIf->CmdAvSetPlayMode(0, true); mHdffCmdIf->CmdAvMuteAudio(0, false); } else { if (playMode == pmNone) TurnOffLiveMode(true); if (PlayMode == pmExtern_THIS_SHOULD_BE_AVOIDED) { close(fd_video); fd_video = -1; close(fd_audio); fd_audio = -1; } else { isTransferMode = Transferring() || (cTransferControl::ReceiverDevice() == this); mHdffCmdIf->CmdAvSetPlayMode(1, isTransferMode); mHdffCmdIf->CmdAvSetStc(0, 100000); mHdffCmdIf->CmdAvEnableSync(0, false); mHdffCmdIf->CmdAvEnableVideoAfterStop(0, true); playVideoPid = -1; playAudioPid = -1; playPcrPid = -1; audioCounter = 0; videoCounter = 0; freezed = false; trickMode = false; isPlayingVideo = false; mHdffCmdIf->CmdAvSetDecoderInput(0, 2); ioctl(fd_video, VIDEO_SELECT_SOURCE, VIDEO_SOURCE_MEMORY); } } playMode = PlayMode; return true; }
bool SCDEVICE::SetChannelDevice(const cChannel *Channel, bool LiveView) { DEBUGLOG("%s", __FUNCTION__); bool ret = DVBDEVICE::SetChannelDevice(Channel, LiveView); if (LiveView && IsPrimaryDevice() && Channel->Ca() >= CA_ENCRYPTED_MIN && !Transferring() && softcsa) { INFOLOG("Forcing transfermode on card %s", devId); DVBDEVICE::SetChannelDevice(Channel, false); // force transfermode } return ret; }