1 /**
2  * FreeRDP: A Remote Desktop Protocol Implementation
3  * Video Redirection Virtual Channel - Constants
4  *
5  * Copyright 2010-2011 Vic Lee
6  * Copyright 2012 Hewlett-Packard Development Company, L.P.
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  *     http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  */
20 
21 #ifndef FREERDP_CHANNEL_TSMF_CLIENT_CONSTANTS_H
22 #define FREERDP_CHANNEL_TSMF_CLIENT_CONSTANTS_H
23 
24 #define GUID_SIZE 16
25 #define TSMF_BUFFER_PADDING_SIZE 8
26 
27 /* Interface IDs defined in [MS-RDPEV]. There's no constant names in the MS
28    documentation, so we create them on our own. */
29 #define TSMF_INTERFACE_DEFAULT 0x00000000
30 #define TSMF_INTERFACE_CLIENT_NOTIFICATIONS 0x00000001
31 #define TSMF_INTERFACE_CAPABILITIES 0x00000002
32 
33 /* Interface ID Mask */
34 #define STREAM_ID_STUB 0x80000000
35 #define STREAM_ID_PROXY 0x40000000
36 #define STREAM_ID_NONE 0x00000000
37 
38 /* Functon ID */
39 /* Common IDs for all interfaces are as follows. */
40 #define RIMCALL_RELEASE 0x00000001
41 #define RIMCALL_QUERYINTERFACE 0x00000002
42 /* Capabilities Negotiator Interface IDs are as follows. */
43 #define RIM_EXCHANGE_CAPABILITY_REQUEST 0x00000100
44 /* The Client Notifications Interface ID is as follows. */
45 #define PLAYBACK_ACK 0x00000100
46 #define CLIENT_EVENT_NOTIFICATION 0x00000101
47 /* Server Data Interface IDs are as follows. */
48 #define EXCHANGE_CAPABILITIES_REQ 0x00000100
49 #define SET_CHANNEL_PARAMS 0x00000101
50 #define ADD_STREAM 0x00000102
51 #define ON_SAMPLE 0x00000103
52 #define SET_VIDEO_WINDOW 0x00000104
53 #define ON_NEW_PRESENTATION 0x00000105
54 #define SHUTDOWN_PRESENTATION_REQ 0x00000106
55 #define SET_TOPOLOGY_REQ 0x00000107
56 #define CHECK_FORMAT_SUPPORT_REQ 0x00000108
57 #define ON_PLAYBACK_STARTED 0x00000109
58 #define ON_PLAYBACK_PAUSED 0x0000010a
59 #define ON_PLAYBACK_STOPPED 0x0000010b
60 #define ON_PLAYBACK_RESTARTED 0x0000010c
61 #define ON_PLAYBACK_RATE_CHANGED 0x0000010d
62 #define ON_FLUSH 0x0000010e
63 #define ON_STREAM_VOLUME 0x0000010f
64 #define ON_CHANNEL_VOLUME 0x00000110
65 #define ON_END_OF_STREAM 0x00000111
66 #define SET_ALLOCATOR 0x00000112
67 #define NOTIFY_PREROLL 0x00000113
68 #define UPDATE_GEOMETRY_INFO 0x00000114
69 #define REMOVE_STREAM 0x00000115
70 #define SET_SOURCE_VIDEO_RECT 0x00000116
71 
72 /* Supported platform */
73 #define MMREDIR_CAPABILITY_PLATFORM_MF 0x00000001
74 #define MMREDIR_CAPABILITY_PLATFORM_DSHOW 0x00000002
75 #define MMREDIR_CAPABILITY_PLATFORM_OTHER 0x00000004
76 
77 /* TSMM_CLIENT_EVENT Constants */
78 #define TSMM_CLIENT_EVENT_ENDOFSTREAM 0x0064
79 #define TSMM_CLIENT_EVENT_STOP_COMPLETED 0x00C8
80 #define TSMM_CLIENT_EVENT_START_COMPLETED 0x00C9
81 #define TSMM_CLIENT_EVENT_MONITORCHANGED 0x012C
82 
83 /* TS_MM_DATA_SAMPLE.SampleExtensions */
84 #define TSMM_SAMPLE_EXT_CLEANPOINT 0x00000001
85 #define TSMM_SAMPLE_EXT_DISCONTINUITY 0x00000002
86 #define TSMM_SAMPLE_EXT_INTERLACED 0x00000004
87 #define TSMM_SAMPLE_EXT_BOTTOMFIELDFIRST 0x00000008
88 #define TSMM_SAMPLE_EXT_REPEATFIELDFIRST 0x00000010
89 #define TSMM_SAMPLE_EXT_SINGLEFIELD 0x00000020
90 #define TSMM_SAMPLE_EXT_DERIVEDFROMTOPFIELD 0x00000040
91 #define TSMM_SAMPLE_EXT_HAS_NO_TIMESTAMPS 0x00000080
92 #define TSMM_SAMPLE_EXT_RELATIVE_TIMESTAMPS 0x00000100
93 #define TSMM_SAMPLE_EXT_ABSOLUTE_TIMESTAMPS 0x00000200
94 
95 /* MajorType */
96 #define TSMF_MAJOR_TYPE_UNKNOWN 0
97 #define TSMF_MAJOR_TYPE_VIDEO 1
98 #define TSMF_MAJOR_TYPE_AUDIO 2
99 
100 /* SubType */
101 #define TSMF_SUB_TYPE_UNKNOWN 0
102 #define TSMF_SUB_TYPE_WVC1 1
103 #define TSMF_SUB_TYPE_WMA2 2
104 #define TSMF_SUB_TYPE_WMA9 3
105 #define TSMF_SUB_TYPE_MP3 4
106 #define TSMF_SUB_TYPE_MP2A 5
107 #define TSMF_SUB_TYPE_MP2V 6
108 #define TSMF_SUB_TYPE_WMV3 7
109 #define TSMF_SUB_TYPE_AAC 8
110 #define TSMF_SUB_TYPE_H264 9
111 #define TSMF_SUB_TYPE_AVC1 10
112 #define TSMF_SUB_TYPE_AC3 11
113 #define TSMF_SUB_TYPE_WMV2 12
114 #define TSMF_SUB_TYPE_WMV1 13
115 #define TSMF_SUB_TYPE_MP1V 14
116 #define TSMF_SUB_TYPE_MP1A 15
117 #define TSMF_SUB_TYPE_YUY2 16
118 #define TSMF_SUB_TYPE_MP43 17
119 #define TSMF_SUB_TYPE_MP4S 18
120 #define TSMF_SUB_TYPE_MP42 19
121 #define TSMF_SUB_TYPE_OGG 20
122 #define TSMF_SUB_TYPE_SPEEX 21
123 #define TSMF_SUB_TYPE_THEORA 22
124 #define TSMF_SUB_TYPE_FLAC 23
125 #define TSMF_SUB_TYPE_VP8 24
126 #define TSMF_SUB_TYPE_VP9 25
127 #define TSMF_SUB_TYPE_H263 26
128 #define TSMF_SUB_TYPE_M4S2 27
129 #define TSMF_SUB_TYPE_WMA1 28
130 
131 /* FormatType */
132 #define TSMF_FORMAT_TYPE_UNKNOWN 0
133 #define TSMF_FORMAT_TYPE_MFVIDEOFORMAT 1
134 #define TSMF_FORMAT_TYPE_WAVEFORMATEX 2
135 #define TSMF_FORMAT_TYPE_MPEG2VIDEOINFO 3
136 #define TSMF_FORMAT_TYPE_VIDEOINFO2 4
137 #define TSMF_FORMAT_TYPE_MPEG1VIDEOINFO 5
138 
139 #endif /* FREERDP_CHANNEL_TSMF_CLIENT_CONSTANTS_H */
140