summaryrefslogtreecommitdiff
path: root/p2pvr/ice/dvbsi.ice
blob: 63123f277c606de4ea0a41897511baaf12739d28 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
#ifndef DVISI_ICE
#define DVISI_ICE

#include "common.ice"

// This attempts to define an ICE representation of domain objects contained
// within the DVB SI (Digital Video Broadcasting specification for Service
// Information - EN 300 468 v1.11.1)

module DVBSI {
	// Descriptors
	class Delivery {
		[ "slicer:db:pkey" ]
		int TransportStreamId = 0;
		long Frequency = 0;
	};

	class SatelliteDelivery extends Delivery {
		int OrbitalPosition = 0;
		bool WestEastFlag = false;
		short Polarization = 0;
		short RollOff = 0;
		bool ModulationSystem = false;
		short ModulationType = 0;
		int SymbolRate = 0;
		short FecInner = 0;
	};

	class CableDelivery extends Delivery {
		short FecOuter = 0;
		short Modulation = 0;
		int SymbolRate = 0;
		short FecInner = 0;
	};

	class TerrestrialDelivery extends Delivery {
		short Bandwidth = 0;
		bool Priority = false;
		bool TimeSlicing = false;
		bool MpeFec = false;
		short Constellation = 0;
		short Hierarchy = 0;
		short CodeRateHP = 0;
		short CodeRateLP = 0;
		short GuardInterval = 0;
		short TransmissionMode = 0;
		bool OtherFrequencyFlag = false;
	};

	struct NetworkService {
		[ "slicer:db:pkey" ]
		int ServiceId = 0;
		int TransportStreamId = 0;
		short Type = 0;
	};
	sequence<NetworkService> NetworkServiceList;

	class NetworkTransportStream {
		int NetworkId = 0;
		[ "slicer:db:pkey" ]
		int TransportStreamId = 0;
		int OriginalNetworkId = 0;
		[ "slicer:db:ignore" ]
		SatelliteDelivery Satellite;
		[ "slicer:db:ignore" ]
		CableDelivery Cable;
		[ "slicer:db:ignore" ]
		TerrestrialDelivery Terrestrial;
		[ "slicer:db:ignore" ]
		NetworkServiceList Services;
	};
	sequence<NetworkTransportStream> NetworkTransportStreams;

	class Network {
		[ "slicer:db:pkey" ]
		int NetworkId = 0;
		optional(1) string Name;
		[ "slicer:db:ignore" ]
		NetworkTransportStreams TransportStreams;
	};
	sequence<Network> Networks;

	class BouquetTransportStream {
		[ "slicer:db:pkey" ]
		int TransportStreamId = 0;
		[ "slicer:db:pkey" ]
		int OriginalNetworkId = 0;
	};
	sequence <BouquetTransportStream> BouquetTransportStreamList;

	class Bouquet {
		[ "slicer:db:pkey" ]
		int BouquetId = 0;
		optional(1) string Name;
		optional(2) string DefaultAuthority;
		[ "slicer:db:ignore" ]
		BouquetTransportStreamList Streams;
	};

	class Service {
		[ "slicer:db:pkey" ]
		int ServiceId;
		[ "slicer:db:pkey" ]
		int TransportStreamId = 0;
		bool EitSchedule = false;
		bool EitPresentFollowing = false;
		short RunningStatus = 0;
		bool FreeCaMode = false;
		optional(1) string ProviderName;
		optional(2) string Name;
		optional(3) short Type;
		optional(4) string DefaultAuthority;
	};
	sequence<Service> ServiceList;

	class TransportStream {
		[ "slicer:db:pkey" ]
		int TransportStreamId = 0;
		int OriginalNetworkId = 0;
		[ "slicer:db:ignore" ]
		ServiceList Services;
	};

	class Stream {
		short Type = 0;
		int Id = 0;
		int ServiceId = 0;
	};
	sequence<Stream> StreamList;

	class ProgramMap {
		int ServiceId = 0;
		StreamList Streams;
	};

	class EitInformation {
		int ServiceId = 0;
		int TransportStreamId = 0;
		int OriginalNetworkId = 0;
	};

	class Event {
		[ "slicer:db:pkey" ]
		int ServiceId = 0;
		[ "slicer:db:pkey" ]
		int EventId = 0;
		string Title;
		string TitleLang;
		optional(1) string Subtitle;
		optional(2) string Description;
		optional(3) string DescriptionLang;
		Common::DateTime StartTime;
		Common::DateTime StopTime;
		optional(4) short Episode;
		optional(5) short Episodes;
		optional(6) short Year;
		optional(7) string Flags;
		optional(8) short DvbRating;
		optional(9) short VideoAspect;
		optional(10) short VideoFrameRate;
		optional(11) bool VideoHD;
		optional(12) short AudioChannels;
		optional(13) string AudioLanguage;
		optional(14) string SubtitleLanguage;
		optional(15) short Category;
		optional(16) short SubCategory;
		optional(17) short UserCategory;
		optional(18) short Season;
	};
	sequence<Event> Events;
};

#endif