mx-remote 2.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mx_remote/Interface.py +1656 -0
- mx_remote/Uid.py +137 -0
- mx_remote/__init__.py +12 -0
- mx_remote/api/BayConfig.py +53 -0
- mx_remote/api/__init__.py +8 -0
- mx_remote/const.py +20 -0
- mx_remote/main.py +117 -0
- mx_remote/proto/BayConfig.py +104 -0
- mx_remote/proto/Constants.py +382 -0
- mx_remote/proto/Data.py +142 -0
- mx_remote/proto/Factory.py +168 -0
- mx_remote/proto/FrameAmpDolbySettings.py +51 -0
- mx_remote/proto/FrameAmpZoneSettings.py +123 -0
- mx_remote/proto/FrameBase.py +80 -0
- mx_remote/proto/FrameBayConfig.py +47 -0
- mx_remote/proto/FrameBayConfigSecondary.py +43 -0
- mx_remote/proto/FrameBayHide.py +53 -0
- mx_remote/proto/FrameBayStatus.py +51 -0
- mx_remote/proto/FrameConnectStatus.py +38 -0
- mx_remote/proto/FrameDiscover.py +21 -0
- mx_remote/proto/FrameEDID.py +20 -0
- mx_remote/proto/FrameEDIDProfile.py +24 -0
- mx_remote/proto/FrameFilterStatus.py +39 -0
- mx_remote/proto/FrameFirmwareVersion.py +40 -0
- mx_remote/proto/FrameHeader.py +92 -0
- mx_remote/proto/FrameHello.py +77 -0
- mx_remote/proto/FrameLinks.py +45 -0
- mx_remote/proto/FrameMeshOperation.py +66 -0
- mx_remote/proto/FrameMirrorStatus.py +49 -0
- mx_remote/proto/FrameNetworkStatus.py +163 -0
- mx_remote/proto/FramePDUState.py +71 -0
- mx_remote/proto/FramePowerChange.py +38 -0
- mx_remote/proto/FrameRCAction.py +50 -0
- mx_remote/proto/FrameRCIr.py +17 -0
- mx_remote/proto/FrameRCKey.py +40 -0
- mx_remote/proto/FrameReboot.py +26 -0
- mx_remote/proto/FrameRoutingChange.py +66 -0
- mx_remote/proto/FrameSetName.py +27 -0
- mx_remote/proto/FrameSignalStatus.py +46 -0
- mx_remote/proto/FrameSignalStatusNew.py +285 -0
- mx_remote/proto/FrameSysTemperature.py +50 -0
- mx_remote/proto/FrameTXRCAction.py +58 -0
- mx_remote/proto/FrameTopology.py +36 -0
- mx_remote/proto/FrameV2IPDeviceConfiguration.py +86 -0
- mx_remote/proto/FrameV2IPLink.py +16 -0
- mx_remote/proto/FrameV2IPSetMaster.py +16 -0
- mx_remote/proto/FrameV2IPSourceSwitch.py +84 -0
- mx_remote/proto/FrameV2IPSources.py +43 -0
- mx_remote/proto/FrameV2IPStats.py +55 -0
- mx_remote/proto/FrameV2IPStreamDetails.py +46 -0
- mx_remote/proto/FrameVolume.py +62 -0
- mx_remote/proto/FrameVolumeDown.py +28 -0
- mx_remote/proto/FrameVolumeSet.py +81 -0
- mx_remote/proto/FrameVolumeUp.py +28 -0
- mx_remote/proto/LinkConfig.py +121 -0
- mx_remote/proto/PDUState.py +95 -0
- mx_remote/proto/Svd.py +69 -0
- mx_remote/proto/V2IPConfig.py +71 -0
- mx_remote/proto/V2IPStats.py +126 -0
- mx_remote/proto/__init__.py +8 -0
- mx_remote/proto/svd.csv +157 -0
- mx_remote/remote/Bay.py +923 -0
- mx_remote/remote/ConnectionAsync.py +132 -0
- mx_remote/remote/Device.py +530 -0
- mx_remote/remote/Link.py +187 -0
- mx_remote/remote/PDU.py +152 -0
- mx_remote/remote/Remote.py +300 -0
- mx_remote/remote/State.py +28 -0
- mx_remote/remote/V2IP.py +83 -0
- mx_remote-2.0.0.dist-info/METADATA +90 -0
- mx_remote-2.0.0.dist-info/RECORD +74 -0
- mx_remote-2.0.0.dist-info/WHEEL +4 -0
- mx_remote-2.0.0.dist-info/entry_points.txt +2 -0
- mx_remote-2.0.0.dist-info/licenses/LICENSE +11 -0
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
##################################################
|
|
2
|
+
## MX Remote Python Interface ##
|
|
3
|
+
## ##
|
|
4
|
+
## author: Lars Op den Kamp (lars@opdenkamp.eu) ##
|
|
5
|
+
## copyright (c) 2024 Op den Kamp IT Solutions ##
|
|
6
|
+
##################################################
|
|
7
|
+
|
|
8
|
+
class PDUOutletState:
|
|
9
|
+
''' pdu outlet state '''
|
|
10
|
+
OFF = 0
|
|
11
|
+
ON = 1
|
|
12
|
+
REBOOTING = 2
|
|
13
|
+
|
|
14
|
+
def __init__(self, state: int):
|
|
15
|
+
self._state = state
|
|
16
|
+
|
|
17
|
+
@property
|
|
18
|
+
def is_on(self) -> bool:
|
|
19
|
+
# outlet powered on
|
|
20
|
+
return (self._state == self.ON)
|
|
21
|
+
|
|
22
|
+
@property
|
|
23
|
+
def is_off(self) -> bool:
|
|
24
|
+
# outlet powered off
|
|
25
|
+
return (self._state == self.OFF) or self.is_rebooting
|
|
26
|
+
|
|
27
|
+
@property
|
|
28
|
+
def is_rebooting(self) -> bool:
|
|
29
|
+
# outlet rebooting
|
|
30
|
+
return (self._state == self.REBOOTING)
|
|
31
|
+
|
|
32
|
+
def __str__(self) -> str:
|
|
33
|
+
if self._state == self.ON:
|
|
34
|
+
return "ON"
|
|
35
|
+
elif self._state == self.OFF:
|
|
36
|
+
return "OFF"
|
|
37
|
+
elif self._state == self.REBOOTING:
|
|
38
|
+
return "REBOOTING"
|
|
39
|
+
return "Unknown"
|
|
40
|
+
|
|
41
|
+
def __repr__(self) -> str:
|
|
42
|
+
return str(self)
|
|
43
|
+
|
|
44
|
+
class PDUState:
|
|
45
|
+
def __init__(self, frame):
|
|
46
|
+
self._current = frame.current
|
|
47
|
+
self._voltage = frame.voltage
|
|
48
|
+
self._power = frame.power
|
|
49
|
+
self._dissipation = frame.dissipation
|
|
50
|
+
self._frequency = frame.frequency
|
|
51
|
+
|
|
52
|
+
self._outlets = []
|
|
53
|
+
ptr = 0
|
|
54
|
+
while ptr < 8:
|
|
55
|
+
self._outlets.append(PDUOutletState(frame.outlet_state(ptr)))
|
|
56
|
+
ptr = ptr + 1
|
|
57
|
+
|
|
58
|
+
@property
|
|
59
|
+
def current(self) -> float:
|
|
60
|
+
# current (A)
|
|
61
|
+
return self._current
|
|
62
|
+
|
|
63
|
+
@property
|
|
64
|
+
def voltage(self) -> float:
|
|
65
|
+
# voltage (V)
|
|
66
|
+
return self._voltage
|
|
67
|
+
|
|
68
|
+
@property
|
|
69
|
+
def power(self) -> float:
|
|
70
|
+
# power consumption (W)
|
|
71
|
+
return self._power
|
|
72
|
+
|
|
73
|
+
@property
|
|
74
|
+
def dissipation(self) -> float:
|
|
75
|
+
# power dissipation (W)
|
|
76
|
+
return self._dissipation
|
|
77
|
+
|
|
78
|
+
@property
|
|
79
|
+
def frequency(self) -> float:
|
|
80
|
+
# AC frequency
|
|
81
|
+
return self._frequency
|
|
82
|
+
|
|
83
|
+
@property
|
|
84
|
+
def outlets(self) -> list[PDUOutletState]:
|
|
85
|
+
# list of all outlets defined in this frame
|
|
86
|
+
return self._outlets
|
|
87
|
+
|
|
88
|
+
def outlet(self, outlet) -> PDUOutletState:
|
|
89
|
+
# get the state of a single outlet
|
|
90
|
+
return self._outlets[outlet] if outlet < 8 else None
|
|
91
|
+
|
|
92
|
+
def __str__(self) -> str:
|
|
93
|
+
return "current = {}A, voltage = {}V, power = {}W, diss = {}W, pf = {}, freq = {}Hz, outlets = {}". \
|
|
94
|
+
format(str(self.current), str(self.voltage), str(self.power), str(self.dissipation), str(self.power_factor), str(self.frequency), str(self.outlets))
|
|
95
|
+
|
mx_remote/proto/Svd.py
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
##################################################
|
|
2
|
+
## MX Remote Python Interface ##
|
|
3
|
+
## ##
|
|
4
|
+
## author: Lars Op den Kamp (lars@opdenkamp.eu) ##
|
|
5
|
+
## copyright (c) 2024 Op den Kamp IT Solutions ##
|
|
6
|
+
##################################################
|
|
7
|
+
|
|
8
|
+
import csv
|
|
9
|
+
from ..const import *
|
|
10
|
+
|
|
11
|
+
class Svd:
|
|
12
|
+
def __init__(self, data:list[int]) -> None:
|
|
13
|
+
self._data = data
|
|
14
|
+
|
|
15
|
+
@property
|
|
16
|
+
def id(self) -> int:
|
|
17
|
+
return int(self._data[0])
|
|
18
|
+
|
|
19
|
+
@property
|
|
20
|
+
def picture_aspect(self) -> int:
|
|
21
|
+
return int(self._data[1])
|
|
22
|
+
|
|
23
|
+
@property
|
|
24
|
+
def pixel_aspect(self) -> int:
|
|
25
|
+
return int(self._data[2])
|
|
26
|
+
|
|
27
|
+
@property
|
|
28
|
+
def horizontal_active(self) -> int:
|
|
29
|
+
return int(self._data[3])
|
|
30
|
+
|
|
31
|
+
@property
|
|
32
|
+
def horizontal_total(self) -> int:
|
|
33
|
+
return int(self._data[4])
|
|
34
|
+
|
|
35
|
+
@property
|
|
36
|
+
def vertical_active(self) -> int:
|
|
37
|
+
return int(self._data[5])
|
|
38
|
+
|
|
39
|
+
@property
|
|
40
|
+
def vertical_total(self) -> int:
|
|
41
|
+
return int(self._data[6])
|
|
42
|
+
|
|
43
|
+
@property
|
|
44
|
+
def refresh(self) -> int:
|
|
45
|
+
return int(self._data[7])
|
|
46
|
+
|
|
47
|
+
@property
|
|
48
|
+
def interlaced(self) -> bool:
|
|
49
|
+
return (int(self._data[8]) == 1)
|
|
50
|
+
|
|
51
|
+
@property
|
|
52
|
+
def multiplier(self) -> int:
|
|
53
|
+
return int(self._data[9])
|
|
54
|
+
|
|
55
|
+
def __str__(self) -> str:
|
|
56
|
+
return f"{self.horizontal_active}x{self.vertical_active}@{self.refresh}Hz"
|
|
57
|
+
|
|
58
|
+
def __repr__(self) -> str:
|
|
59
|
+
return str(self)
|
|
60
|
+
|
|
61
|
+
class SvdMap:
|
|
62
|
+
svd:dict[int, Svd] = {}
|
|
63
|
+
|
|
64
|
+
def __init__(self) -> None:
|
|
65
|
+
with open(f'{BASE_PATH}/proto/svd.csv', newline='') as csvfile:
|
|
66
|
+
reader = csv.reader(csvfile, delimiter=';', quotechar='|')
|
|
67
|
+
for row in reader:
|
|
68
|
+
svd = Svd(row)
|
|
69
|
+
self.svd[svd.id] = svd
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
##################################################
|
|
2
|
+
## MX Remote Python Interface ##
|
|
3
|
+
## ##
|
|
4
|
+
## author: Lars Op den Kamp (lars@opdenkamp.eu) ##
|
|
5
|
+
## copyright (c) 2024 Op den Kamp IT Solutions ##
|
|
6
|
+
##################################################
|
|
7
|
+
|
|
8
|
+
from ..Uid import MxrDeviceUid
|
|
9
|
+
from ..Interface import V2IPStreamSource, V2IPStreamSources
|
|
10
|
+
|
|
11
|
+
class V2IPConfig:
|
|
12
|
+
''' Single source configuration '''
|
|
13
|
+
def __init__(self, frame, port:int, payload:bytes):
|
|
14
|
+
if len(payload) < 40:
|
|
15
|
+
raise Exception(f"invalid size: {len(payload)}")
|
|
16
|
+
self.frame = frame
|
|
17
|
+
self.port = port
|
|
18
|
+
self.payload = payload
|
|
19
|
+
self.video = V2IPStreamSource("video", self.payload[16:22])
|
|
20
|
+
self.audio = V2IPStreamSource("audio", self.payload[24:30])
|
|
21
|
+
self.anc = V2IPStreamSource("anc", self.payload[32:38])
|
|
22
|
+
|
|
23
|
+
def process(self) -> None:
|
|
24
|
+
# register or update this link in the local cache
|
|
25
|
+
pass
|
|
26
|
+
|
|
27
|
+
@property
|
|
28
|
+
def uid(self) -> MxrDeviceUid:
|
|
29
|
+
return MxrDeviceUid(self.payload[0:16])
|
|
30
|
+
|
|
31
|
+
def __repr__(self) -> str:
|
|
32
|
+
return str(self)
|
|
33
|
+
|
|
34
|
+
def __str__(self) -> str:
|
|
35
|
+
return f"V2IP port {self.port} source uid {self.uid} - {self.video} {self.audio} {self.anc}"
|
|
36
|
+
|
|
37
|
+
class V2IPStreamSourcesData(V2IPStreamSources):
|
|
38
|
+
def __init__(self, video:V2IPStreamSource, audio:V2IPStreamSource, anc:V2IPStreamSource) -> None:
|
|
39
|
+
self._video = video
|
|
40
|
+
self._audio = audio
|
|
41
|
+
self._anc = anc
|
|
42
|
+
|
|
43
|
+
@property
|
|
44
|
+
def video(self) -> V2IPStreamSource:
|
|
45
|
+
return self._video
|
|
46
|
+
|
|
47
|
+
@video.setter
|
|
48
|
+
def video(self, stream:V2IPStreamSource) -> None:
|
|
49
|
+
self._video = stream
|
|
50
|
+
|
|
51
|
+
@property
|
|
52
|
+
def audio(self) -> V2IPStreamSource:
|
|
53
|
+
return self._audio
|
|
54
|
+
|
|
55
|
+
@audio.setter
|
|
56
|
+
def audio(self, stream:V2IPStreamSource) -> None:
|
|
57
|
+
self._audio = stream
|
|
58
|
+
|
|
59
|
+
@property
|
|
60
|
+
def anc(self) -> V2IPStreamSource:
|
|
61
|
+
return self._anc
|
|
62
|
+
|
|
63
|
+
@anc.setter
|
|
64
|
+
def anc(self, stream:V2IPStreamSource) -> None:
|
|
65
|
+
self._anc = stream
|
|
66
|
+
|
|
67
|
+
def __str__(self) -> str:
|
|
68
|
+
return f"video:{self.video} audio:{self.audio} anc:{self.anc}"
|
|
69
|
+
|
|
70
|
+
def __repr__(self) -> str:
|
|
71
|
+
return str(self)
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
##################################################
|
|
2
|
+
## MX Remote Python Interface ##
|
|
3
|
+
## ##
|
|
4
|
+
## author: Lars Op den Kamp (lars@opdenkamp.eu) ##
|
|
5
|
+
## copyright (c) 2024 Op den Kamp IT Solutions ##
|
|
6
|
+
##################################################
|
|
7
|
+
|
|
8
|
+
from enum import Enum
|
|
9
|
+
|
|
10
|
+
class V2IPTxStats:
|
|
11
|
+
def __init__(self, data:bytes) -> None:
|
|
12
|
+
if len(data) < 20:
|
|
13
|
+
raise Exception(f'invalid stats size: {len(data)}')
|
|
14
|
+
self._data = data
|
|
15
|
+
|
|
16
|
+
@property
|
|
17
|
+
def video(self) -> int:
|
|
18
|
+
return int.from_bytes(self._data[0:4], "little")
|
|
19
|
+
|
|
20
|
+
@property
|
|
21
|
+
def audio(self) -> int:
|
|
22
|
+
return int.from_bytes(self._data[4:8], "little")
|
|
23
|
+
|
|
24
|
+
@property
|
|
25
|
+
def anc(self) -> int:
|
|
26
|
+
return int.from_bytes(self._data[8:12], "little")
|
|
27
|
+
|
|
28
|
+
@property
|
|
29
|
+
def stream_down(self) -> int:
|
|
30
|
+
return int.from_bytes(self._data[12:16], "little")
|
|
31
|
+
|
|
32
|
+
@property
|
|
33
|
+
def overflow(self) -> int:
|
|
34
|
+
return int.from_bytes(self._data[16:20], "little")
|
|
35
|
+
|
|
36
|
+
def __str__(self) -> str:
|
|
37
|
+
rv = f"Video: {self.video}, Audio: {self.audio}, Anc: {self.anc}"
|
|
38
|
+
if self.stream_down > 0:
|
|
39
|
+
rv += f", Stream Down:{self.stream_down}"
|
|
40
|
+
if self.overflow > 0:
|
|
41
|
+
rv += f", Overflow:{self.overflow}"
|
|
42
|
+
return rv
|
|
43
|
+
|
|
44
|
+
def __repr__(self) -> str:
|
|
45
|
+
return str(self)
|
|
46
|
+
|
|
47
|
+
class V2IPDecoderState(Enum):
|
|
48
|
+
UNKNOWN = 0
|
|
49
|
+
HEALTHY = 1
|
|
50
|
+
BAD = 2
|
|
51
|
+
|
|
52
|
+
def __str__(self) -> str:
|
|
53
|
+
if self.value == 1:
|
|
54
|
+
return 'Healthy'
|
|
55
|
+
if self.value == 2:
|
|
56
|
+
return 'Bad'
|
|
57
|
+
return 'Unknown'
|
|
58
|
+
|
|
59
|
+
class V2IPRxStats:
|
|
60
|
+
def __init__(self, data:bytes) -> None:
|
|
61
|
+
if len(data) < 44:
|
|
62
|
+
raise Exception(f'invalid stats size: {len(data)}')
|
|
63
|
+
self._data = data
|
|
64
|
+
|
|
65
|
+
@property
|
|
66
|
+
def video_total(self) -> int:
|
|
67
|
+
return int.from_bytes(self._data[0:4], "little")
|
|
68
|
+
|
|
69
|
+
@property
|
|
70
|
+
def video_dropped(self) -> int:
|
|
71
|
+
return int.from_bytes(self._data[4:8], "little")
|
|
72
|
+
|
|
73
|
+
@property
|
|
74
|
+
def video_sequence_errors(self) -> int:
|
|
75
|
+
return int.from_bytes(self._data[8:12], "little")
|
|
76
|
+
|
|
77
|
+
@property
|
|
78
|
+
def wdt_timeout(self) -> int:
|
|
79
|
+
return int.from_bytes(self._data[12:16], "little")
|
|
80
|
+
|
|
81
|
+
@property
|
|
82
|
+
def audio_total(self) -> int:
|
|
83
|
+
return int.from_bytes(self._data[16:20], "little")
|
|
84
|
+
|
|
85
|
+
@property
|
|
86
|
+
def audio_dropped(self) -> int:
|
|
87
|
+
return int.from_bytes(self._data[20:24], "little")
|
|
88
|
+
|
|
89
|
+
@property
|
|
90
|
+
def audio_sequence_errors(self) -> int:
|
|
91
|
+
return int.from_bytes(self._data[24:28], "little")
|
|
92
|
+
|
|
93
|
+
@property
|
|
94
|
+
def anc_total(self) -> int:
|
|
95
|
+
return int.from_bytes(self._data[28:32], "little")
|
|
96
|
+
|
|
97
|
+
@property
|
|
98
|
+
def anc_dropped(self) -> int:
|
|
99
|
+
return int.from_bytes(self._data[32:36], "little")
|
|
100
|
+
|
|
101
|
+
@property
|
|
102
|
+
def anc_sequence_errors(self) -> int:
|
|
103
|
+
return int.from_bytes(self._data[36:40], "little")
|
|
104
|
+
|
|
105
|
+
@property
|
|
106
|
+
def decoder_state(self) -> V2IPDecoderState:
|
|
107
|
+
return V2IPDecoderState(int(self._data[40]))
|
|
108
|
+
|
|
109
|
+
def __str__(self) -> str:
|
|
110
|
+
viseq = f" (seq: {self.video_sequence_errors})" if self.video_sequence_errors > 0 else ''
|
|
111
|
+
auseq = f" (seq: {self.audio_sequence_errors})" if self.audio_sequence_errors > 0 else ''
|
|
112
|
+
anseq = f" (seq: {self.anc_sequence_errors})" if self.anc_sequence_errors > 0 else ''
|
|
113
|
+
wdt = f" WDT Timeout:{self.wdt_timeout}" if self.wdt_timeout > 0 else ''
|
|
114
|
+
return f"State: {self.decoder_state}, Video: {self.video_total}{viseq}, Audio: {self.audio_total}{auseq}, Anc: {self.anc_total}{anseq}{wdt}"
|
|
115
|
+
|
|
116
|
+
class V2IPDeviceStats:
|
|
117
|
+
tx:V2IPTxStats = None
|
|
118
|
+
tx_per_minute:V2IPTxStats = None
|
|
119
|
+
rx:V2IPRxStats = None
|
|
120
|
+
rx_per_minute:V2IPRxStats = None
|
|
121
|
+
|
|
122
|
+
def __str__(self) -> str:
|
|
123
|
+
return f"v2ip stats: tx={self.tx_per_minute} rx={self.rx_per_minute}"
|
|
124
|
+
|
|
125
|
+
def __repr__(self) -> str:
|
|
126
|
+
return str(self)
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
##################################################
|
|
2
|
+
## MX Remote Python Interface ##
|
|
3
|
+
## ##
|
|
4
|
+
## author: Lars Op den Kamp (lars@opdenkamp.eu) ##
|
|
5
|
+
## copyright (c) 2024 Op den Kamp IT Solutions ##
|
|
6
|
+
##################################################
|
|
7
|
+
|
|
8
|
+
from .Constants import *
|
mx_remote/proto/svd.csv
ADDED
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
1;0;0;640;800;480;525;60;0;1
|
|
2
|
+
2;0;2;720;858;480;525;60;0;1
|
|
3
|
+
3;1;4;720;858;480;525;60;0;1
|
|
4
|
+
4;1;0;1280;1650;720;750;60;0;1
|
|
5
|
+
5;1;0;1920;2200;1080;1125;60;1;1
|
|
6
|
+
6;0;2;720;858;480;525;60;1;2
|
|
7
|
+
7;1;4;720;858;480;525;60;1;2
|
|
8
|
+
8;0;2;720;858;240;262;60;0;2
|
|
9
|
+
9;1;4;720;858;240;262;60;0;2
|
|
10
|
+
10;0;2;720;858;480;525;60;1;4
|
|
11
|
+
11;1;4;720;858;480;525;60;1;4
|
|
12
|
+
12;0;2;720;858;240;262;60;0;4
|
|
13
|
+
13;1;4;720;858;240;262;60;0;4
|
|
14
|
+
14;0;2;720;858;480;525;60;0;2
|
|
15
|
+
15;1;4;720;858;480;525;60;0;2
|
|
16
|
+
16;1;0;1920;2200;1080;1125;60;0;1
|
|
17
|
+
17;0;3;720;864;576;625;50;0;1
|
|
18
|
+
18;1;5;720;864;576;625;50;0;1
|
|
19
|
+
19;1;0;1280;1980;720;750;50;0;1
|
|
20
|
+
20;1;0;1920;2640;1080;1125;50;1;1
|
|
21
|
+
21;0;3;720;864;576;625;50;1;2
|
|
22
|
+
22;1;5;720;864;576;625;50;1;2
|
|
23
|
+
23;0;3;720;864;288;312;50;0;2
|
|
24
|
+
24;1;5;720;864;288;312;50;0;2
|
|
25
|
+
25;0;3;720;864;576;625;50;1;4
|
|
26
|
+
26;1;5;720;864;576;625;50;1;4
|
|
27
|
+
27;0;3;720;864;288;312;50;0;4
|
|
28
|
+
28;1;5;720;864;288;312;50;0;4
|
|
29
|
+
29;0;3;720;864;576;625;50;0;2
|
|
30
|
+
30;1;5;720;864;576;625;50;0;2
|
|
31
|
+
31;1;0;1920;2640;1080;1125;50;0;1
|
|
32
|
+
32;1;0;1920;2750;1080;1125;24;0;1
|
|
33
|
+
33;1;0;1920;2640;1080;1125;25;0;1
|
|
34
|
+
34;1;0;1920;2200;1080;1125;30;0;1
|
|
35
|
+
35;0;2;720;858;480;525;60;0;4
|
|
36
|
+
36;1;4;720;858;480;525;60;0;4
|
|
37
|
+
37;0;3;720;814;576;625;50;0;4
|
|
38
|
+
38;1;5;720;814;576;625;50;0;4
|
|
39
|
+
39;1;0;1920;2304;1080;1250;50;1;1
|
|
40
|
+
40;1;0;1920;2640;1080;1125;100;1;1
|
|
41
|
+
41;1;0;1280;1980;720;750;100;0;1
|
|
42
|
+
42;0;2;720;864;576;625;100;0;1
|
|
43
|
+
43;1;4;720;864;576;625;100;0;1
|
|
44
|
+
44;0;3;720;864;576;625;100;1;2
|
|
45
|
+
45;1;5;720;864;576;625;100;1;2
|
|
46
|
+
46;1;0;1920;2200;1080;1125;120;1;1
|
|
47
|
+
47;1;0;1280;1650;720;750;120;0;1
|
|
48
|
+
48;0;3;720;858;480;525;120;0;1
|
|
49
|
+
49;1;5;720;858;480;525;120;0;1
|
|
50
|
+
50;0;2;720;864;576;625;120;1;2
|
|
51
|
+
51;1;4;720;864;576;625;120;1;2
|
|
52
|
+
52;0;3;720;864;576;625;200;0;1
|
|
53
|
+
53;1;5;720;864;576;625;200;0;1
|
|
54
|
+
54;0;3;720;864;576;625;200;1;2
|
|
55
|
+
55;1;5;720;864;576;625;200;1;2
|
|
56
|
+
56;0;2;720;858;480;525;240;0;1
|
|
57
|
+
57;1;4;720;858;480;525;240;0;1
|
|
58
|
+
58;0;2;720;858;480;525;240;1;2
|
|
59
|
+
59;1;4;720;858;480;525;240;1;2
|
|
60
|
+
60;1;0;1280;3300;720;750;24;0;1
|
|
61
|
+
61;1;0;1280;3960;720;750;25;0;1
|
|
62
|
+
62;1;0;1280;3300;720;750;30;0;1
|
|
63
|
+
63;1;0;1920;2200;1080;1125;120;0;1
|
|
64
|
+
64;1;0;1920;2640;1080;1125;100;0;1
|
|
65
|
+
65;2;1;1280;3300;720;750;24;0;1
|
|
66
|
+
66;2;1;1280;3960;720;750;25;0;1
|
|
67
|
+
67;2;1;1280;3300;720;750;30;0;1
|
|
68
|
+
68;2;1;1280;1980;720;750;50;0;1
|
|
69
|
+
69;2;1;1280;1650;720;750;60;0;1
|
|
70
|
+
70;2;1;1280;1980;720;750;100;0;1
|
|
71
|
+
71;2;1;1280;1650;720;750;120;0;1
|
|
72
|
+
72;2;1;1920;2750;1080;1125;24;0;1
|
|
73
|
+
73;2;1;1920;2640;1080;1125;25;0;1
|
|
74
|
+
74;2;1;1920;2200;1080;1125;30;0;1
|
|
75
|
+
75;2;1;1920;2640;1080;1125;50;0;1
|
|
76
|
+
76;2;1;1920;2200;1080;1125;60;0;1
|
|
77
|
+
77;2;1;1920;2640;1080;1125;100;0;1
|
|
78
|
+
78;2;1;1920;2200;1080;1125;120;0;1
|
|
79
|
+
79;2;6;1680;3300;720;750;24;0;1
|
|
80
|
+
80;2;6;1680;3168;720;750;25;0;1
|
|
81
|
+
81;2;6;1680;2640;720;750;30;0;1
|
|
82
|
+
82;2;6;1680;2200;720;750;50;0;1
|
|
83
|
+
83;2;6;1680;2200;720;750;60;0;1
|
|
84
|
+
84;2;6;1680;2000;720;825;100;0;1
|
|
85
|
+
85;2;6;1680;2000;720;825;120;0;1
|
|
86
|
+
86;2;6;2560;3750;1080;1100;24;0;1
|
|
87
|
+
87;2;6;2560;3200;1080;1125;25;0;1
|
|
88
|
+
88;2;6;2560;3520;1080;1125;30;0;1
|
|
89
|
+
89;2;6;2560;3300;1080;1125;50;0;1
|
|
90
|
+
90;2;6;2560;3000;1080;1100;60;0;1
|
|
91
|
+
91;2;6;2560;2970;1080;1250;100;0;1
|
|
92
|
+
92;2;6;2560;3300;1080;1250;120;0;1
|
|
93
|
+
93;1;0;3840;5500;2160;2250;24;0;1
|
|
94
|
+
94;1;0;3840;5280;2160;2250;25;0;1
|
|
95
|
+
95;1;0;3840;4400;2160;2250;30;0;1
|
|
96
|
+
96;1;0;3840;5280;2160;2250;50;0;1
|
|
97
|
+
97;1;0;3840;4400;2160;2250;60;0;1
|
|
98
|
+
98;3;0;4096;5500;2160;2250;24;0;1
|
|
99
|
+
99;3;0;4096;5280;2160;2250;25;0;1
|
|
100
|
+
100;3;0;4096;4400;2160;2250;30;0;1
|
|
101
|
+
101;3;0;4096;5280;2160;2250;50;0;1
|
|
102
|
+
102;3;0;4096;4400;2160;2250;60;0;1
|
|
103
|
+
103;2;1;3840;5500;2160;2250;24;0;1
|
|
104
|
+
104;2;1;3840;5280;2160;2250;25;0;1
|
|
105
|
+
105;2;1;3840;4400;2160;2250;30;0;1
|
|
106
|
+
106;2;1;3840;5280;2160;2250;50;0;1
|
|
107
|
+
107;2;1;3840;4400;2160;2250;60;0;1
|
|
108
|
+
108;1;0;1280;2500;720;750;48;0;1
|
|
109
|
+
109;2;1;1280;2500;720;750;48;0;1
|
|
110
|
+
110;2;6;1680;2750;720;825;48;0;1
|
|
111
|
+
111;1;0;1920;2750;1080;1125;48;0;1
|
|
112
|
+
112;2;1;1920;2750;1080;1125;48;0;1
|
|
113
|
+
113;2;0;2560;3750;1080;1100;48;0;1
|
|
114
|
+
114;1;0;3840;5500;2160;2250;48;0;1
|
|
115
|
+
115;3;0;4096;5500;2160;2250;48;0;1
|
|
116
|
+
116;2;1;3840;5500;2160;2250;48;0;1
|
|
117
|
+
117;1;0;3840;5280;2160;2250;100;0;1
|
|
118
|
+
118;1;0;3840;4400;2160;2250;120;0;1
|
|
119
|
+
119;2;1;3840;5280;2160;2250;100;0;1
|
|
120
|
+
120;2;1;3840;4400;2160;2250;120;0;1
|
|
121
|
+
121;2;0;5120;7500;2160;2200;24;0;1
|
|
122
|
+
122;2;0;5120;7200;2160;2200;25;0;1
|
|
123
|
+
123;2;0;5120;6000;2160;2200;30;0;1
|
|
124
|
+
124;2;0;5120;6250;2160;2450;48;0;1
|
|
125
|
+
125;2;0;5120;6600;2160;2250;50;0;1
|
|
126
|
+
126;2;0;5120;5500;2160;2250;60;0;1
|
|
127
|
+
127;2;0;5120;6600;2160;2250;100;0;1
|
|
128
|
+
193;2;0;5120;5500;2160;2250;120;0;1
|
|
129
|
+
194;1;0;7680;11000;4320;4500;24;0;1
|
|
130
|
+
195;1;0;7680;10800;4320;4400;25;0;1
|
|
131
|
+
196;1;0;7680;9000;4320;4400;30;0;1
|
|
132
|
+
197;1;0;7680;11000;4320;4500;48;0;1
|
|
133
|
+
198;1;0;7680;10800;4320;4400;50;0;1
|
|
134
|
+
199;1;0;7680;9000;4320;4400;60;0;1
|
|
135
|
+
200;1;0;7680;10560;4320;4500;100;0;1
|
|
136
|
+
201;1;0;7680;8800;4320;4500;120;0;1
|
|
137
|
+
202;2;1;7680;11000;4320;4500;24;0;1
|
|
138
|
+
203;2;1;7680;10800;4320;4400;25;0;1
|
|
139
|
+
204;2;1;7680;9000;4320;4400;30;0;1
|
|
140
|
+
205;2;1;7680;11000;4320;4500;48;0;1
|
|
141
|
+
206;2;1;7680;10800;4320;4400;50;0;1
|
|
142
|
+
207;2;1;7680;9000;4320;4400;60;0;1
|
|
143
|
+
208;2;1;7680;10560;4320;4500;100;0;1
|
|
144
|
+
209;2;1;7680;8800;4320;4500;100;0;1
|
|
145
|
+
210;2;0;10240;12500;4320;4950;24;0;1
|
|
146
|
+
211;2;0;10240;13500;4320;4400;25;0;1
|
|
147
|
+
212;2;0;10240;11000;4320;4500;30;0;1
|
|
148
|
+
213;2;0;10240;12500;4320;4950;48;0;1
|
|
149
|
+
214;2;0;10240;13500;4320;4400;50;0;1
|
|
150
|
+
215;2;0;10240;11000;4320;4400;60;0;1
|
|
151
|
+
216;2;0;10240;13200;4320;4500;100;0;1
|
|
152
|
+
217;2;0;10240;11000;4320;4500;120;0;1
|
|
153
|
+
218;3;0;4096;5280;2160;2250;100;0;1
|
|
154
|
+
219;3;0;4096;4400;2160;2250;120;0;1
|
|
155
|
+
244;2;6;2560;2720;1440;1481;60;0;1
|
|
156
|
+
248;2;6;1680;2240;1050;1089;60;0;1
|
|
157
|
+
251;2;6;1440;1904;900;934;60;0;1
|