mirror of
https://github.com/rofafor/vdr-plugin-satip.git
synced 2023-10-10 13:37:42 +02:00
Use quirk to TEARDOWN before PLAY to avoid possible glitches
This commit is contained in:
parent
43b60b1566
commit
0115ba1725
11
server.c
11
server.c
@ -139,16 +139,16 @@ cSatipServer::cSatipServer(const char *srcAddressP, const char *addressP, const
|
|||||||
strstr(*descriptionM, "Schwaiger Sat>IP Server") // Schwaiger MS41IP
|
strstr(*descriptionM, "Schwaiger Sat>IP Server") // Schwaiger MS41IP
|
||||||
)
|
)
|
||||||
quirkM |= eSatipQuirkForceLock;
|
quirkM |= eSatipQuirkForceLock;
|
||||||
// These devices support the X_PMT protocol extension
|
// These devices support the X_PMT protocol extension:
|
||||||
if (strstr(*descriptionM, "OctopusNet") || // Digital Devices OctopusNet
|
if (strstr(*descriptionM, "OctopusNet") || // Digital Devices OctopusNet
|
||||||
strstr(*descriptionM, "minisatip") // minisatip server
|
strstr(*descriptionM, "minisatip") // minisatip server
|
||||||
)
|
)
|
||||||
quirkM |= eSatipQuirkCiXpmt;
|
quirkM |= eSatipQuirkCiXpmt;
|
||||||
// These devices support the TNR protocol extension
|
// These devices support the TNR protocol extension:
|
||||||
if (strstr(*descriptionM, "DVBViewer") // DVBViewer Media Server
|
if (strstr(*descriptionM, "DVBViewer") // DVBViewer Media Server
|
||||||
)
|
)
|
||||||
quirkM |= eSatipQuirkCiTnr;
|
quirkM |= eSatipQuirkCiTnr;
|
||||||
// These devices don't support auto-detection of pilot tones
|
// These devices don't support auto-detection of pilot tones:
|
||||||
if (strstr(*descriptionM, "GSSBOX") || // Grundig Sat Systems GSS.box DSI 400
|
if (strstr(*descriptionM, "GSSBOX") || // Grundig Sat Systems GSS.box DSI 400
|
||||||
strstr(*descriptionM, "DIGIBIT") || // Telestar Digibit R1
|
strstr(*descriptionM, "DIGIBIT") || // Telestar Digibit R1
|
||||||
strstr(*descriptionM, "Multibox-") || // Inverto IDL-400s: Multibox-<MMAACC>:SAT>IP
|
strstr(*descriptionM, "Multibox-") || // Inverto IDL-400s: Multibox-<MMAACC>:SAT>IP
|
||||||
@ -156,6 +156,11 @@ cSatipServer::cSatipServer(const char *srcAddressP, const char *addressP, const
|
|||||||
strstr(*descriptionM, "KATHREIN SatIP Server") // Kathrein ExIP 414/E
|
strstr(*descriptionM, "KATHREIN SatIP Server") // Kathrein ExIP 414/E
|
||||||
)
|
)
|
||||||
quirkM |= eSatipQuirkForcePilot;
|
quirkM |= eSatipQuirkForcePilot;
|
||||||
|
// These devices require TEARDOWN before new PLAY command:
|
||||||
|
if (strstr(*descriptionM, "FRITZ!WLAN Repeater DVB-C") || // FRITZ!WLAN Repeater DVB-C
|
||||||
|
strstr(*descriptionM, "fritzdvbc") // FRITZ!WLAN Repeater DVB-C (old firmware)
|
||||||
|
)
|
||||||
|
quirkM |= eSatipQuirkTearAndPlay;
|
||||||
}
|
}
|
||||||
if ((quirkM & eSatipQuirkMask) & eSatipQuirkSessionId)
|
if ((quirkM & eSatipQuirkMask) & eSatipQuirkSessionId)
|
||||||
quirksM = cString::sprintf("%s%sSessionId", *quirksM, isempty(*quirksM) ? "" : ",");
|
quirksM = cString::sprintf("%s%sSessionId", *quirksM, isempty(*quirksM) ? "" : ",");
|
||||||
|
19
server.h
19
server.h
@ -76,15 +76,16 @@ private:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
enum eSatipQuirk {
|
enum eSatipQuirk {
|
||||||
eSatipQuirkNone = 0x00,
|
eSatipQuirkNone = 0x00,
|
||||||
eSatipQuirkSessionId = 0x01,
|
eSatipQuirkSessionId = 0x01,
|
||||||
eSatipQuirkPlayPids = 0x02,
|
eSatipQuirkPlayPids = 0x02,
|
||||||
eSatipQuirkForceLock = 0x04,
|
eSatipQuirkForceLock = 0x04,
|
||||||
eSatipQuirkRtpOverTcp = 0x08,
|
eSatipQuirkRtpOverTcp = 0x08,
|
||||||
eSatipQuirkCiXpmt = 0x10,
|
eSatipQuirkCiXpmt = 0x10,
|
||||||
eSatipQuirkCiTnr = 0x20,
|
eSatipQuirkCiTnr = 0x20,
|
||||||
eSatipQuirkForcePilot = 0x40,
|
eSatipQuirkForcePilot = 0x40,
|
||||||
eSatipQuirkMask = 0xFF
|
eSatipQuirkTearAndPlay = 0x80,
|
||||||
|
eSatipQuirkMask = 0xFF
|
||||||
};
|
};
|
||||||
cSatipServer(const char *srcAddressP, const char *addressP, const int portP, const char *modelP, const char *filtersP, const char *descriptionP, const int quirkP);
|
cSatipServer(const char *srcAddressP, const char *addressP, const int portP, const char *modelP, const char *filtersP, const char *descriptionP, const int quirkP);
|
||||||
virtual ~cSatipServer();
|
virtual ~cSatipServer();
|
||||||
|
4
tuner.c
4
tuner.c
@ -120,8 +120,8 @@ void cSatipTuner::Action(void)
|
|||||||
break;
|
break;
|
||||||
case tsSet:
|
case tsSet:
|
||||||
debug4("%s: tsSet [device %d]", __PRETTY_FUNCTION__, deviceIdM);
|
debug4("%s: tsSet [device %d]", __PRETTY_FUNCTION__, deviceIdM);
|
||||||
// some devices require TEARDOWN before new PLAY command
|
if (currentServerM.IsQuirk(cSatipServer::eSatipQuirkTearAndPlay))
|
||||||
Disconnect();
|
Disconnect();
|
||||||
if (Connect()) {
|
if (Connect()) {
|
||||||
tuning.Set(eTuningTimeoutMs);
|
tuning.Set(eTuningTimeoutMs);
|
||||||
RequestState(tsTuned, smInternal);
|
RequestState(tsTuned, smInternal);
|
||||||
|
Loading…
Reference in New Issue
Block a user