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
|
||||
)
|
||||
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
|
||||
strstr(*descriptionM, "minisatip") // minisatip server
|
||||
)
|
||||
quirkM |= eSatipQuirkCiXpmt;
|
||||
// These devices support the TNR protocol extension
|
||||
// These devices support the TNR protocol extension:
|
||||
if (strstr(*descriptionM, "DVBViewer") // DVBViewer Media Server
|
||||
)
|
||||
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
|
||||
strstr(*descriptionM, "DIGIBIT") || // Telestar Digibit R1
|
||||
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
|
||||
)
|
||||
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)
|
||||
quirksM = cString::sprintf("%s%sSessionId", *quirksM, isempty(*quirksM) ? "" : ",");
|
||||
|
19
server.h
19
server.h
@ -76,15 +76,16 @@ private:
|
||||
|
||||
public:
|
||||
enum eSatipQuirk {
|
||||
eSatipQuirkNone = 0x00,
|
||||
eSatipQuirkSessionId = 0x01,
|
||||
eSatipQuirkPlayPids = 0x02,
|
||||
eSatipQuirkForceLock = 0x04,
|
||||
eSatipQuirkRtpOverTcp = 0x08,
|
||||
eSatipQuirkCiXpmt = 0x10,
|
||||
eSatipQuirkCiTnr = 0x20,
|
||||
eSatipQuirkForcePilot = 0x40,
|
||||
eSatipQuirkMask = 0xFF
|
||||
eSatipQuirkNone = 0x00,
|
||||
eSatipQuirkSessionId = 0x01,
|
||||
eSatipQuirkPlayPids = 0x02,
|
||||
eSatipQuirkForceLock = 0x04,
|
||||
eSatipQuirkRtpOverTcp = 0x08,
|
||||
eSatipQuirkCiXpmt = 0x10,
|
||||
eSatipQuirkCiTnr = 0x20,
|
||||
eSatipQuirkForcePilot = 0x40,
|
||||
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);
|
||||
virtual ~cSatipServer();
|
||||
|
4
tuner.c
4
tuner.c
@ -120,8 +120,8 @@ void cSatipTuner::Action(void)
|
||||
break;
|
||||
case tsSet:
|
||||
debug4("%s: tsSet [device %d]", __PRETTY_FUNCTION__, deviceIdM);
|
||||
// some devices require TEARDOWN before new PLAY command
|
||||
Disconnect();
|
||||
if (currentServerM.IsQuirk(cSatipServer::eSatipQuirkTearAndPlay))
|
||||
Disconnect();
|
||||
if (Connect()) {
|
||||
tuning.Set(eTuningTimeoutMs);
|
||||
RequestState(tsTuned, smInternal);
|
||||
|
Loading…
Reference in New Issue
Block a user