File live-CHANGELOG of Package live
x
1
2011.06.16:
2
- Updated "AC3AudioRTPSink" and "AC3AudioRTPSource" to conform to RFC 4184, which defines the RTP payload format for AC-3 audio.
3
Previously, we were using a different, incompatible payload format (that had been defined by an initial draft document, but
4
which differed from that defined in the final RFC. Unfortunately, this means that older clients that use our code
5
- including existing binary versions of VLC and MPlayer - will no longer be able to play AC-3/RTP streams from our server
6
(until they are rebuilt using this newest version of our library).
7
- Updated "AC3AudioStreamFramer" - and added a new class "AC3AudioFileServerMediaSubsession" - to support streaming from an AC-3
8
audio file. We also added this support to the "testOnDemandRTSPServer" demo application, and to the "LIVE555 Media Server"
9
(currently just the source code; not the prebuilt binary versions).
10
(Thanks to Ashwani Kathuria for suggesting this.)
11
- Moved the definition of "class StreamState" from "OnDemandServerMediaSubsession.cpp" to "OnDemandServerMediaSubsession.hh".
12
Even though "class StreamState" is used only internally, in the implementation of "OnDemandServerMediaSubsession", moving its
13
definition to the header file makes it possible for subclasses of "OnDemandServerMediaSubsession" to access it.
14
15
2011.06.14a:
16
- Removed some junk (debugging) files that had accidentally been left in the "testProgs/" directory.
17
18
2011.06.14:
19
- Fixed a race condition in "H264VideoFileServerMediaSubsession" and "MPEG4VideoFileServerMediaSubsession" that could have been
20
triggered when two separate clients tried to stream the same file concurrently. (Thanks to Bruno Abreu for reporting this.)
21
- Fixed a minor bug in "Authenticator::operator=()": we were not freeing the LHS object's memory before doing the
22
assignment. (Thanks to Sawan Das for noting this.)
23
- Updated "config.iphoneos" to change LIBRARY_LINK from "ar cr " to "libtool -s -o ", just as we did for "config.macosx" in the
24
previous release.
25
26
2011.06.12:
27
- Updated the RTCP implementation to (if we're a SSM source) reflect incoming RTCP packets back to the multicast group
28
*only* if the packet originated from another host. This means that we won't reflect packets that come from other
29
processes on our own host. The reason for this is that we can't reliably distinguish such packets from packets that were
30
actually looped back from us. (We must not 'reflect' such packets, otherwise we risk a packet storm.)
31
- Updated the "ByteStreamFileSource" code to make the underlying socket non-blocking. We also read data using "read()"
32
rather than "fread()", to eliminate blocking (if READ_FROM_FILES_SYNCHRONOUSLY is not defined). (This change should
33
affect only reading from pipes, not regular files.) (Thanks to Tyson Wiser for noting this issue.)
34
- Updated the "DelayQueue" destructor to make sure that any remaining delay queue entries are destroyed.
35
(Thanks to "Mr. Xiao" and Luke Kucalaba for (independently) reporting this issue.)
36
- Updated "config.macosx" to change LIBRARY_LINK from "ar cr " to "libtool -s -o ", because someone reported that "ar"
37
didn't work for them.
38
- Added support for receiving the "audio/EAC3" RTP payload format (which is handled the same way as "audio/AC3").
39
(Thanks to Gregory McGarry for the patch.)
40
41
2011.05.25:
42
- Fixed a bug in "RTSPClient" which was causing clients to crash if servers returned a 401 error code, but without a
43
"WWW-Authenticate:" header. (Thanks to Sebastien Escudier for reporting this.)
44
45
2011.03.14:
46
- Updated the "MPEG2TransportFileServerMediaSubsession" to use the "streamDuration" parameter (if >0.0) to limit
47
the number of Transport Packets that are streamed from the source file. (This happens only if the file is indexed.)
48
This allows the server to implement finite RTSP ranges for such streams.
49
- Fixed a minor bug in "OnDemandServerMediaSubsession" if "reuseFirstSource" is set. (Thanks to Andreas Gaer for noting this.)
50
51
2011.03.06:
52
- Changed the implementation of "RTSPClient::teardownMediaSession()" and "RTSPClient::teardownMediaSubsession()"
53
(i.e., in the old, now-deprecated synchronous "RTSPClient" interface) to not wait for, or handle, a response to the
54
RTSP "TEARDOWN" command. This avoids the client blocking indefinitely if the server (or its connection) happens to die before
55
the RTSP response gets sent.
56
(Note, however: All RTSP client applications should be updated to use the new, asynchronous interface. The old synchronous
57
interface will not be supported indefinitely.)
58
59
2011.03.05:
60
- Changed the signature of the "OnDemandServerMediaSubsession::seekStreamSource()"
61
virtual function to add a "streamDuration" field. This field (if >0.0) tells
62
the implementation how much data to stream before ending with EOF.
63
Our RTSPServer implementation now uses this to implement finite RTSP ranges
64
(as specified in the "Range:" header). As with seeking, only some codecs currently
65
implement this: MP3 audio, WAV audio, and DV video.
66
- We now support streaming from IMA ADPCM ("DVI4") WAV files.
67
- When streaming MP3 audio files or indexed MPEG Transport Stream Files, we now compute a more accurate bitrate estimate
68
(for use in computing RTCP packet frequencies).
69
70
2011.01.24:
71
- Fixed a bug that was accidentally introduced in version 2011.01.10, and which crashes VLC (when VLC is used to play a
72
"rtsp://" URL). To avoid the bug, VLC should therefore use this version or later.
73
74
2011.01.21:
75
- Fixed a bug in "H264VideoStreamFramer" that was introduced in the last release.
76
(This affected the "testH264VideoToTransportStream" demo application.) (Thanks to Dunling Li for reporting this.)
77
- Fixed a minor syntax bug in "H264VideoStreamFramer.cpp" which (fortunately) had not been an actual problem.
78
(Thanks to Guillaume Le Neindre for the report.)
79
80
2011.01.20:
81
- Added a new demo application "testH264VideoToTransportStream", which takes a H.264 Video input file (named "in.264"),
82
and converts it to a Transport Stream file (named "out.ts").
83
(Note that for this conversion to work properly, the input H.264 file must contain sufficient timing information for us to be
84
able to deduce the frame rate.)
85
(Thanks to Dunling Li for this suggestion.)
86
- Changed our RTSP server implementation so that the "SET_PARAMETER" command succeeds (but does nothing) by default.
87
(Subclasses can redefine its behavior, if necessary.) We also now support the special "*" URL, which designates an
88
operation on the entire server. (The only commands for which this is allowed are "OPTIONS", "GET_PARAMETER" and "SET_PARAMETER".)
89
(Thanks to Jeremy Noring for noting that some clients need this.)
90
91
2011.01.19:
92
- Fixed a bug in "OnDemandServerMediaSubsession" that was causing unicast RTSP/RTP
93
servers to sometimes omit sending the very first packet of a stream. (This seemed
94
to occur only for servers running on Windows.)
95
96
2011.01.10:
97
- Updated "RTSPClient" so that the new asynchronous interface can handle RTSP URLs that contain a "<username>:<password>@"
98
before the server host name/address. This had been supported in the old synchronous interface, but when we implemented the
99
new asynchronous interface, we had forgotten to implement it there as well.
100
- Made a change to the implementation (but not the default behavior) of "RTSPServer" to allow for the possibility of a subclass
101
implementing HTTP streaming (using the same HTTP port that we use to support RTSP-over-HTTP tunneling).
102
103
2011.01.06:
104
- We added support for receiving the RTP payload formats "audio/L20", "audio/L24" and "audio/DAT12", as defined in RFC 3190.
105
We also recognize the new "fmtp:"-line parameters "emphasis" and "channel-order" that this RFC also defines.
106
(Thanks to Maciej Szlapka for noting that these payload formats had not previously been supported.)
107
108
2011.01.05:
109
- Made a small change to the sanity check introduced to "MultiFramedRTPSink" and "BasicUDPSink" in version 2010.12.05 to
110
eliminate the possibility of small extra delays accumulating over time. (Thanks to Warren Young for raising this issue.)
111
- Made a small change to the 'magic values' that are used to implement the "esds" atom for MPEG-4 video in "QuickTimeFileSink".
112
(I have no idea what these values are supposed to do, but Stu Tomlinson reports that the new values work better for him.)
113
114
2010.12.31:
115
- We now support 'trick play' operations (seeking, fast-forward, reverse play) on MPEG Transport Stream files that contain
116
H.264 video (rather than just MPEG-2 video, as previously). To support this, the index file format has been extended in a
117
backwards-compatible way, so that existing index files (for MPEG-2 video Transport Streams) will continue to work as before.
118
New versions of the "MPEG2TransportStreamIndexer" and "testMPEG2TransportStreamTrickPlay" utilities - and the
119
"live555MediaServer" - have also been released.
120
- Fixed a bug in the definition of the "profile_level_id" field in "H264VideoRTPSink". (Thanks to Geoff Cleary for noting this.)
121
- Change the parsing of RTSP "Range:" headers to allow parameters of the form "clock=" or"smtpe=". (However, we currently don't
122
interpret parameters of this form; instead, we just ignore them.)
123
(Thanks to Sebastien Escudier for this suggestion.)
124
- Fixed "openRTSP" to properly reset internal state before repeating the playing of a stream (if the '-c' (play continuously))
125
option is used. (Thanks to Anon Sricharoenchai for noting this.)
126
127
2010.12.14:
128
- Oops - there was a serious bug in the 'event trigger' implementation in the previous release.
129
IMPORTANT: You should upgrade to this new version if you plan to use the 'event trigger' mechanism!
130
(Thanks to "P.J." for noticing the bug in the previous version.)
131
132
2010.12.11:
133
- Added a new 'event trigger' mechanism to "TaskScheduler". This makes it possible
134
to define new events that can be handled within the event loop. Unlike other
135
library functions, events can be 'triggered' (i.e., fired) from a separate thread.
136
This makes it easier to implement input devices than the old 'watchVariable'
137
mechanism (which remains).
138
Also, the "DeviceSource" class - which is a model for how to implement an input
139
device class - has been significantly improved. It now uses the new 'event trigger'
140
mechanism. Also, more of it has been implemented, making it clearer where new code
141
needs to be written.
142
143
2010.12.05:
144
- Significantly improved our support for streaming H.264 video. In particular, "H264VideoStreamFramer"
145
and "H264VideoStreamDiscreteFramer" (a new class) act like their corresponding MPEG4 versions: "H264VideoStreamFramer" reads
146
a H.264 Video Elementary Stream byte stream (e.g., from a file), and "H264VideoStreamDiscreteFramer" reads discrete H.264 video
147
NAL units (i.e., one-at-a-time), e.g., from a H.264 video encoder. (Note that developers no longer need to subclass
148
"H264VideoStreamFramer".) We also added a new demo application - "testH264VideoStreamer" - for streaming from
149
a H.264 Elementary Stream Video file via multicast. "testOnDemandRTSPServer" and "live555MediaServer" were also updated to
150
stream H.264 Video Elementary Stream files.
151
- Added a sanity check to "MultiFramedRTPSink" and "BasicUDPSink" to allow for the possibility of the system clock jumping ahead
152
in time, and thereby messing up the calculation of how long to wait before sending the next packet.
153
(Thanks to Anders Chen for noting this issue.)
154
- Fixed bugs in "AMRAudioRTPSource" and "QCELPAudioRTPSource" that might sometimes cause an event handler to try to reference
155
objects that had already been deleted. (Thanks to David Cailliere for detecting the problem with "AMRAudioRTPSource";
156
it turns out that "QCELPAudioRTPSource" had the same problem.)
157
158
2010.11.17:
159
- Added new a member function "setAuthenticationDatabase()" to "RTSPServer". This allows a server's manager to change
160
(or disable) authentication at runtime. (Thanks to Jeremy Norling for suggesting this functionality.)
161
162
2010.11.10:
163
- Fixed "openRTSP" to eliminate a recursive call to "shutdown()" if we receive a RTCP "BYE" while in the middle of doing
164
a RTSP "TEARDOWN" command. (Thanks to David Cailliere for noting this issue.)
165
166
2010.11.09:
167
- The previous release had accidentally included some experimental changes to "H264VideoStreamFramer" that were not (yet)
168
intended to see the light of day.
169
170
2010.11.08:
171
- Fixed a minor problem with RTSP-over-HTTP support in "RTSPClient" that was causing some servers to complain due to the
172
"CSeq:" header value not being incremented properly. (Thanks to Kamil Dobkowski for the report.)
173
174
2010.11.04:
175
- Backed out and corrected the change to "RTSPClient" that we made in version 2010.10.22. It turns out that existing RTSP-over-HTTP
176
servers that return "401 Unauthorized" in response to the HTTP "GET" *do*, in fact, want clients to resend the "GET" command
177
(with a filled-in "Authorization:" header). However, at least one such server out there closes the TCP connection after
178
sending back the "401 Unauthorized" response, so we need to send the second "GET" command using a new TCP connection.
179
(Thanks to Kamil Dobkowski for providing access to a server that illustrated this problem.)
180
181
2010.10.28:
182
- Updated "JPEGVideoRTPSource" amd "JPEGVideoRTPSink" to support optional "Restart Marker Headers" in the outgoing RTP packet.
183
(We already supported such headers in *incoming* JPEG/RTP packets ("JPEGVideoRTPSource").)
184
If "type()" (defined by the "JPEGVideoSource" subclass) returns a value in [64,127], then the "JPEGVideoSource" subclass must
185
also redefine "restartInterval()" to return a non-zero value.
186
(Thanks to Cristiano Belloni for suggesting this addition.)
187
188
2010.10.23a:
189
- Fixed a bug in the way that "RTSPClient" generates ephemeral RTP/RTCP port number pairs for use when receiving unicast
190
RTSP/RTP streams. The RTP (even) port was guaranteed not to be in use elsewhere on the same host, but that guarantee was not
191
necessarily true for the RTCP (next, i.e. odd) port. This version fixes this.
192
193
2010.10.23:
194
- Our server implementation of "RTSP-over-HTTP tunneling" now allows for the possibility of receiving data from the
195
(Base-64-encoded) initial RTSP command at the same time that we receive the HTTP "POST" command. (This is a possibility because
196
the client does not wait for a response to the "POST" - because there isn't one.)
197
198
2010.10.22:
199
- Made a minor modification to the way that "RTSPClient" does "RTSP-over-HTTP tunneling". If the initial "GET" request
200
returns "401 Unauthorized", then we don't resend it (with an "Authorization:" header).
201
Instead, we continue, as normal, sending the subsequent HTTP "POST" (with an "Authorization:" header).
202
It's not clear (from the limited documentation on "RTSP-over-HTTP tunneling") which behavior is 'correct', but at least some
203
servers seem to handle the new approach better.
204
205
2010.10.20:
206
- Made the implementation of 'RTSP-over-HTTP tunneling' in the RTSP server more tolerant of certain buggy clients.
207
(Thanks to Cristiano Belloni for this suggestion.)
208
209
2010.10.15:
210
- Added server support for RTSP/RTP-over-HTTP tunneling. We added a new "RTSPServer" member function
211
Boolean setUpTunnelingOverHTTP(Port httpPort);
212
to (attempt to) set up tunneling on the specified HTTP port number.
213
We also updated the "testOnDemandRTSPServer" and "live555MediaServer" applications to try to set up HTTP tunneling
214
on port 80, then port 8000, and then finally port 8080.
215
216
2010.10.06:
217
- Made a small change to "RTSPClient" to make it better handle RTSP servers that
218
erroneously do not include "CSeq:" lines in their responses.
219
(Thanks to Sebastien Escudier for this suggestion.)
220
- Made a minor update to "RTSPClient" to better handle any error in the HTTP "GET" command (if RTSP-over-HTTP tunneling
221
is being used).
222
- Updated the "timestampString()" function in "groupsock/GroupsockHelper.cpp" to allow for the possibility of "ctime()" returning NULL.
223
- Removed the (never fully implemented) "RTSPOverHTTPServer" class.
224
Instead, RTSP-over-HTTP tunneling will be implemented within the existing "RTSPServer"
225
code, as that seems to be easier than using a separate class.
226
227
2010.09.25:
228
- Disabled the code for "Groupsock::multicastSendOnly()", because it was apparently causing SSM multicast packets to not be
229
received by other applications on the same host (at least, for some systems).
230
231
2010.09.23a:
232
- Backed out the "RTSPServer" change that was in the previous release, because of a report that it doesn't work.
233
234
2010.09.23:
235
- Updated "H2564VideoFileSink" to take an optional "sprop parameter string" parameter as input. If present, this string is
236
decoded, and the resulting data (SPS/PPS NAL units) is prepended to the file.
237
Also, updated "openRTSP" to call "MediaSubsession::fmtp_spropparametersets()", and pass this string when creating a
238
"H2564VideoFileSink".
239
- Updated "RTSPServer" to ensure that we transmit RTP and RTCP packets over the same interface that is used by the requesting client
240
(in case the server is multi-homed). (Thanks to David Stegbauer for this suggestion.)
241
242
2010.09.22:
243
- Added a new virtual function "internalError()" to "UsageEnvironment" and "TaskScheduler". This function is called
244
a small number of times within the library code when an unexepected, 'should not occur'-type error condition occurs.
245
The default implementation of this function calls "abort()", but subclasses can, of course, redefine this, if desired.
246
- Updated "RTSPClient::parseTransportParams()" to accept either "port=<num1>-<num2>" or "port=<num>".
247
(The RTSP specification is ambiguous about whether or not both are allowed.)
248
- Made sure that calls to "ntohl()" and "htonl()" take (and return) "u_int32_t" rather than unsigned", for improved portability.
249
(Thanks to Anon Sricharoenchai for this suggestion.)
250
251
2010.09.10:
252
- Added a sanity check to "MediaSubsession::getNormalPlayTime()" so that we ignore any old packet that might
253
mess up the initial computation of the presentationTime-to-NPT offset following the arrival of new "RTP-Info" data.
254
This should never happen with our servers (though John Shao Fa - who proposed this check - claims to be seeing it).
255
We add the check, however, to protect against other servers that might be messing up.
256
257
2010.09.03:
258
- Made sure that various calls to "TaskScheduler::scheduleDelayedTask()" are called with a "int64_t" 'delay in microseconds'
259
parameter, to avoid possible integer underflow if the system clock gets set back in time.
260
(Thanks to Sebastien Escudier for reporting this problem.)
261
262
2010.08.31:
263
- Fixed some problems in the way that we implement RTP/RTCP-over-TCP streams that were showing up when we have more than one
264
such stream sharing the same input source ("reuseFirstSource" == True). (Thanks to John Tam for reporting this.)
265
266
2010.08.22:
267
- Updated the "DarwinInjector" class to use the new, asynchronous "RTSPClient" interface.
268
269
2010.07.29:
270
- Fixed a bug in RTP-over-TCP that was sometimes causing a socket to (attempt to be) read after it had already been closed.
271
(Thanks to Wilton @ Invent Vision for reporting this bug.)
272
- Fixed some bugs in the way that RTP reception statistics were being generated and reported. (Thanks to David Cailliere.)
273
- Added a new config file "config.linux-64bit" that should work better than "config.linux" for building for 64-bit Linux systems.
274
275
2010.07.13:
276
- Updated the "openRTSP" and "playSIP" applications to use the new asynchronous "RTSPClient" interface.
277
- Made the "readSocket()" routine more bullet-proof against Windows brain damage that was apparently causing problems with
278
Windows RTSP clients that do RTP-over-TCP.
279
(Thanks to Kamil Dobkowski for this suggestion.)
280
281
2010.07.07:
282
- Fixed a problem with RTP-over-TCP reception that was causing some RTP-over-TCP streams to not be received properly.
283
All RTSP client applications that can request/receive RTP-over-TCP should upgrade to this new version.
284
(Thanks to Kamil Dobkowski for providing a server that we could use to debug the problem.)
285
- Reinstated the functionality of the "forceMulticastOnUnspecified" flag in the "RTSPClient" "SETUP" command.
286
(This functionality had temporarily been disabled, because I wasn't sure that it was still used by anyone.
287
But apparently it is.)
288
289
2010.06.22:
290
- Fixed another bug in the new "RTSPClient" implementation (thanks to Sebastien Escudier); we were not recognizing
291
"npt=now-" in "Range:" headers.
292
- Fixed a bug in "openRTSP" (reported by Kenneth Ljungh). We were closing output files before issuing a RTSP "TEARDOWN" command.
293
This problem was exposed only with the new "RTSPClient" implementation, because it reenters the event loop (thereby possibly
294
handling incoming RTP packets) after the sending of the "TEARDOWN", before it gets handled and responded to.
295
We have now fixed the "openRTSP" code to not close output files until after the RTSP "TEARDOWN" has been completed.
296
297
2010.06.18:
298
- Fixed a bug in the new "RTSPClient" implementation (reported by Sebastien Escudier) - that was causing problems
299
when streaming from some RTSP-enabled video cameras.
300
301
2010.06.16a:
302
- Made "RTSPClient"s parsing of "Transport:" headers more bullet-proof against those sent by some servers
303
(including, apparently, some recent versions of VLC's built-in RTSP server) that include a "client_port=" field,
304
but no "server_port=" field. (In this case, we assume that the server port is the same as the client port.)
305
306
2010.06.16:
307
- Fixed another bug in the new "RTSPClient" implementation of "GET_PARAMETER".
308
(Thanks to Denis Charmet for reporting this.)
309
- Made "RTSPServer::RTSPClientSession::handleAlternativeRequestByte1()" more bullet-proof against an alleged bug noted by
310
Jeremy Noring. (The actual bug hasn't been located, but this change apparently stops it from causing problems.)
311
312
2010.06.15:
313
- Removed the "blockUntilReadable()" function, because it's no longer needed, now that all socket reads are asynchronous.
314
This means that "readSocket()" no longer calls "select()", which should improve the performance of applications.
315
- Improved the processing of RTP/RTCP/RTSP-over-TCP (possibly fixing some bugs in the process).
316
- Fixed bugs in the new "RTSPClient" implementation of "GET_PARAMETER" and "SET_PARAMETER".
317
(Thanks to Denis Charmet for reporting this.)
318
319
2010.06.11:
320
- Fixed some potential memory access errors in the previous version of "RTSPClient".
321
- Removed code from "RTSPClient" that was supposed to deal with buggy (Microsoft?) servers, but which in reality was causing
322
clients to not know the duration of time-bounded streams properly.
323
- Modified the new RTSP client implementation of "RTSP-over-HTTP" to make it more consistent with the old implementation.
324
(Doug Porter reported a problem with the implementation in release 2010.05.29.)
325
- "AMRAudioSource" (and therefore its subclasses also) were not redefining the "MIMEtype()" virtual function. Fixed this.
326
(Thanks to Adam Mich for reporting this.)
327
- Fixed a minor problem that was causing some "UsageEnvironment"-allocated tables not to get deleted under some circumstances.
328
329
2010.05.29:
330
- Made a major change to the interface and implementation of "RTSPClient", to make it perform operations asynchronously
331
- i.e., without blocking. Each operation that performs a RTSP command now takes a 'response handler' function as parameter.
332
The operation returns immediately, but the 'response handler' function will get called later, when a response arrives
333
(or if an error occurs).
334
For backwards compatibility, the old 'synchronous' interface still remains, and is implemented using the new 'asynchronous'
335
interface. (However, the old 'synchronous' interface should not be used for new applications, and it will likely be removed
336
in a few months.)
337
For now, the demo application "openRTSP" still uses the old interface, but will be rewritten over the next few weeks to use the
338
new "RTSPClient" interface.
339
- Modified the "TaskScheduler" definition yet again, because it was too complicated. There's now just one virtual function
340
for setting/clearing socket handlers:
341
"virtual void setBackgroundHandling(int socketNum, int conditionSet, BackgroundHandlerProc* handlerProc, void* clientData) = 0;"
342
where "conditionSet" is a combination of SOCKET_READABLE, SOCKET_WRITABLE, and SOCKET_EXCEPTION.
343
For backwards compatibility, the existing "turnOnBackgroundReadHandling()" and "turnOffBackgroundReadHandling()" functions
344
are retained, but are now implemented using "setBackgroundHandling()".
345
See "UsageEnvironment/include/UsageEnvironment.hh" for details.
346
347
2010.05.28:
348
- Updated the previous revision of "TaskScheduler" to add two more new virtual functions
349
"turnOnBackgroundExceptionHandling()" and "turnOffBackgroundExceptionHandling()",
350
because it turns out that Windows needs them for checking on a failed remote "connect()"
351
(behaving differently from Posix, which requires only select()ing the socket for
352
writing, not an error).
353
354
2010.05.27:
355
- Updated "TaskScheduler" (and our supplied example subclass "BasicTaskScheduler") to include new virtual functions
356
"turnOnBackgroundWriteHandling()" and "turnOffBackgoundWriteHandling()". These are the same as the "Read" versions,
357
except that they are for checking when a socket becomes writable. (They will be used to implement the new, upcoming
358
'asynchronous' implementation of "RTSPClient".)
359
We also modified the signature of "setResultErrMsg()" to take an optional "err" parameter. (If non-zero, this will be used
360
instead of "getErrno()".)
361
- Added a "config.iphoneos" (for cross-compiling on a Mac for the iPhone). (Thanks to Mark Vasilkov.)
362
363
2010.04.09:
364
- Fixed a bug in the way that "AMRAudioRTPSource" reimplements "hasBeenSynchronizedUsingRTCP()".
365
(Thanks to Ralf Globisch for reporting this bug.)
366
- Increased "SegmentQueueSize" in "MP3ADU.cpp" from 10 to 20, to allow for some unusually-VBR MP3 files that neeed this.
367
(Thanks to Dirk Raffel for reporting this problem.)
368
- Changed the implementation of "parseRangeHeader()" in "RTSPCommon.cpp", in preparation for upcoming changes to "RTSPClient".
369
370
2010.04.01:
371
- Fixed the "openRTSP" code so that it no longer restricts the play time duration (using the "-d" option), because there is no
372
no longer any practical limit on the duration that gets passed to "TaskScheduler::scheduleDelayedTask()"
373
(because it is microseconds in 64 bits).
374
(Thanks to Brad Thomas for this suggestion.)
375
- Removed some obsolete (and unused) code from the "RTSPClient" implementation, in preparation for a major reworking of this code.
376
377
2010.03.16:
378
- Made more improvements to "QuickTimeFileSink". (Thanks to Wolfgang Breyha.)
379
380
2010.03.15:
381
- Fixed a bug in the Transport Stream file indexing mechanism that was preventing index files from properly being generated
382
for some Transport Stream files. (We sometimes weren't analyzing Program Association Tables correctly.)
383
- Removed the hack that we introduced in version 2009.11.27, because we have now fixed the bug that made that necessary.
384
- Removed the "RTPOverTCP_OK" hack from "RTPInterface.cpp", because it's no longer needed.
385
386
2010.03.14:
387
- Fixed the RTSP server implementation so that - when streaming via RTP-over-TCP - it can now handle RTSP commands after the
388
first "PLAY". (This fixes a long-standing bug.)
389
- Updated "QuickTimeFileSink" to support writing files larger than 2GB. Also fixed a bug involving "esds" atoms for MPEG-4.
390
(Thanks to Wolfgang Breyha for this patch.)
391
- Fixed a bug in the way that RTCP "SDES" items are constructed. (Thanks to Jeremy Norling for bringing this to our attention.)
392
- Added a sanity check to the string version of "BasicUsageEnvironment::operator<<()", to check for a NULL string input.
393
(Thanks to Paulo Rogerio Panhoto for this suggestion.)
394
395
2010.03.08:
396
- Fixed a rare bug that could sometimes cause RTSP clients to reuse the same (ephemeral) port number.
397
(Thanks to Andro Debevere for reporting this.)
398
- Made changes to "config.armlinux", suggested by Rafael Carre.
399
- Removed a "|| defined(__CYGWIN32__)" test from "groupsock/GroupsockHelper.cpp", because it's no longer needed.
400
(Cygwin has apparently now fixed the bug that made that necessary.)
401
(Thanks to Tatterdemalian Anzulovic for reporting this.)
402
403
2010.02.10:
404
- Fixed a possible 1-byte overflow in "RTSPClient::setupMediaSubsession()". (Thanks to Martin Bonnin for reporting this.)
405
- Make "parseCLine()" a bit more robust against certain technically illegal, but still parseable SDP "c=" lines.
406
(Thanks to Aurelien Nephtali for this suggestion.)
407
408
2010.02.09:
409
- Fixed the way that "RTSPClient" operations handle the "timeout" parameter.
410
We now make the socket blocking afterwards (having made it non-blocking beforehand).
411
(Thanks to Jeremy Noring for this patch.)
412
413
2010.01.22:
414
- Changed the implementation of "Socket::changePort()" once again, beause it was reported that the change made in version
415
2010.01.15 didn't work. Note, however, that this change also introduces a new function
416
virtual void moveSocketHandling(int oldSocketNum, int newSocketNum) = 0;
417
to the "TaskScheduler" API. We have implemented this for "BasicTaskScheduler". If you implement your own subclass of
418
"TaskScheduler", then you will need to implement this new function as well.
419
420
2010.01.16:
421
- Added ""#include <stdio.h>" to "groupsock/NetInterface.cpp". This was tripping up some people.
422
(Thanks to Ben Hutchings for noticing this.)
423
424
2010.01.15:
425
- Changed the implementation of "Socket::changePort()" to call "bind()" directly, rather than closing the socket and reopening a
426
new one. That old implementation sometimes caused the socket number to change, which messed up our event loop.
427
(Thanks to Rob Krakora for noticing this.)
428
- Improved the implementation of DV video streaming (introduced in the previous release) - in particular,
429
to implement "DVVideoRTPSource".
430
431
2010.01.13:
432
- Added support for streaming/receiving DV video via RTP (using the RTP payload format defined in RFC 3189.
433
(Thanks to Ben Hutchings for his help.)
434
435
2010.01.11:
436
- Increased the default "FileSink" buffer size in "openRTSP" from 20000 to 100000, because the previous limit was being bumped into
437
too many times.
438
- Added #include "GroupsockHelper.hh" to "DVVideoStreamFramer.cpp", because it defines "gettimeofday()".
439
440
2010.01.09:
441
- In the various demo applications (in "testProgs/"), we changed the calls to "abort()" back to "exit(1)", because we want
442
"abort()" to be used only for serious (unexpected) errors; not things like bad command-line arguments.
443
- Updated the RTSP server implementation to make session ids random (and 8 (hex) digits long), to conform to the RTSP specification.
444
(Thanks to Guy Bonneau for this suggestion.)
445
446
2010.01.07:
447
- Fixed a bug in "parseGeneralConfigStr()" (it was mistakenly returning an extra byte).
448
- A few places in the code we called "exit()" if we encountered an unexpected error. By request, these have now been changed to
449
"abort()".
450
- Made the "fSDPLines" member variable (in both "OnDemandServerMediaSubsession" and "PassiveServerMediaSubsession") "protected"
451
rather than "private". This allows subclasses to - if they wish - delete and NULL "fSDPLines" each time a client connects, in
452
case the stream's SDP parameters have changed.
453
454
2009.11.27:
455
- Temporarily hacked the RTSP server code to not include "GET_PARAMETER" as an available option in the response to the "OPTIONS"
456
command. This will stop VLC from using "GET_PARAMETER" as a client 'liveness' indicator. This is something that we don't
457
need, because we already use clients' RTCP "RR" packets as a 'liveness' indicator, and because sending "GET_PARAMETER" over a
458
RTP-over-TCP session causes problems with our current implementation. (This hack will be removed when we fix the problem with
459
RTP-over-TCP.)
460
461
2009.11.12:
462
- Made "BasicTaskScheduler::DelayQueue.cpp" more robust against an apparent compiler error on some platforms (e.g., Mac OS X)
463
that was leading to "select() fails: Invalid argument" errors.
464
- Added a new compilation configuration file: "config.avr32-linux". (Thanks to Jorge Munoz Castiner.)
465
- Made some minor changes to "groupsock/GroupsockHelper.cpp", "liveMedia/InputFile.cpp" and "liveMedia/OutputFile.cpp"
466
to make these files compile (or compile better) for WinCE. (Thanks to Pierre Ynard for these fixes.)
467
468
2009.09.28:
469
- Added an optional "timeout" parameter to "DarwinInjector::setDestination()". (Suggested by Jeremy Noring.)
470
- Added support for receiving the "text/T140" RTP payload format. (Suggested by Pierre Ynard.)
471
472
2009.09.21:
473
- Added patches proposed by Ben Hutchings to (i) improve the top-level Makefile; (ii) build better static libraries (on
474
Linux, FreeBSD, and Mac OS X); (iii) have RTSP servers set "b=AS:" lines in their SDP (and set an appropriate socket send buffer
475
size), and (iv) have RTSP (and other SDP) clients interpret the "b=AS:" line (if present) to set the socket receive buffer.
476
- Changed two source files in the "groupsock" project to use the (current standard) <sstream> #include file.
477
- Increased RTSP_PARAM_STRING_MAX to 200 (request by Stuart Rawling)
478
479
2009.09.04:
480
- Fixed "BasicTaskScheduler"s workaround to a Windows bug (thanks to Vityusha Vinokurov).
481
- Fixed "DelayQueue::synchronize()" to allow for the possibility of the system clock being reset back in time.
482
(Thanks to Sebastien Escudier for pointing out this issue.)
483
- Made "H264VideoRTPSink::auxSDPLine()" "protected:" rather than "private:" (following a request from Stuart Rawling)
484
485
2009.07.28:
486
- Updated "QuickTimeFileSink" to add a "stss" atom for video streams, following a suggestion by Gerardo Ares.
487
(At present we just 'guess' which video 'samples' (frames) are 'key frames', so this might not work properly on some
488
video streams.)
489
- Modified the "config.uClinux" configuration file, following a suggestion by Chetan Raj.
490
- Changed "RTSPClient"s implementation of the RTSP "TEARDOWN" command to always act as if the command succeeded, regardless of
491
the actual response from the server (because, from the client's point of view, the session has ended).
492
(This overcomes a potential memory leak, pointer out by Stuart Rawling.)
493
494
2009.07.09:
495
- Modified the RTSP server implementation to - for streams where there is a known duration - always include a range end time
496
in the RTSP "PLAY" response, even if the client did not specify one in the "PLAY" request. This allows VLC's client
497
'trick play' to (mostly) work.
498
- Updated "MediaSession::initiate()" to eliminate a possible memory leak if we get an error in socket creation.
499
(Thanks to Denis Charmet.)
500
- Made a minor change to "MultiFramedRTPSink" to make monitoring/debugging easier. (Thanks to Guy Bonneau.)
501
- Begun adding support for DV video. However, this implementation is still incomplete. DO NOT USE IT!
502
503
2009.06.02:
504
- Updated the MPEG Transport Stream multiplexor implementation to allow for H.264 video. (Thanks to Massimo Zito.)
505
- Updated "MultiFramedRTPSink" to allow for subclasses for RTP payload formats (such as DV, coming soon) that impose
506
a granularity on RTP fragment sizes.
507
508
2009.04.20:
509
- Fixed "BasicUsageEnvironment::getErrno()" to always (under Windows) return
510
"WSAGetLastError()" (and to just ignore the "errno" variable>.
511
Also fixed a few places in the code where we were still using "errno"
512
instead of calling "getErrno()"
513
514
2009.04.07:
515
- Changed many "char*" variables to "char const*" to eliminate possible compiler warnings.
516
(Thanks to Sebastien Escudier for pointing out this issue.)
517
518
2009.04.06:
519
- Modified our Windows-only version of "gettimeofday()" so that it now returns times based on the proper epoch.
520
(Thanks to Patrick White for this suggestion.)
521
- Created a new config file for 64-bit Solaris, and renamed the old "config.solaris" file to make it
522
clear that it's for 32-bit Solaris only. (Thanks to Michael Skaastrup.)
523
- Modified "config.mingw" to add "-DLOCALE_NOT_USED" to the "COMPILE_OPTS =" line. (The VLC folks seem to want
524
this.)
525
- Made a minor change to some win32-specific code in "RTSPClient.cpp" that the VLC folks seem to like.
526
(However, "RTSPClient" is about to undergo a major overhaul (for asynchronous I/O) anyway...)
527
- Made a small change to "mediaServer/DynamicRTSPServer.cpp" to eliminate compiler warnings on some platforms.
528
529
2009.03.22:
530
- Updated "MediaSession::initiate()" to make the selection of ephemeral client
531
port numbers (for RTP and RTCP) more robust, and to eliminate the possibility of
532
the same port numbers accidentally getting chosen more than once by different
533
clients running on the same host. (Thanks to Guido Marelli and others for helping
534
track down this issue.)
535
536
2009.02.23:
537
- Changed the way in which 'trick mode' transport streams are generated, so that each
538
video I-frame is included in the output Transport Stream no more than once.
539
This means that now - for low scale values - the output frame rate, and bit rate,
540
will be les than that of the original file. (Beforehand, we maintained the same
541
frame rate, which meant that - because each output frame is an I-frame - the output
542
stream's bit rate was always significantly larger than the original. This caused
543
problems for some clients.)
544
- Changed the 'client liveness' checking code in the "RTSPServer" implementation so that it deletes the
545
"RTSPClientSession" object even for multicast streams.
546
- Made a minor fix to an error report in "RTSPClient". (Thanks to Igor Milavec.)
547
548
2009.02.13:
549
- Changed calls to the "Locale()" constructor to use an explicit variable name (rather than an anonymous
550
declaration), because some compilers weren't handling the anonymous declaration properly.
551
(Thanks to Steven Kramer for noticing this.)
552
- Improved the "RTSPServer" definition and implementation to make it easier to subclass the
553
"RTSPServer::RTSPClientSession" class (e.g., to add a custom implementation of the "SET_PARAMETER" command).
554
Also added an iterator class for iterating over the "RTSPClientSession" objects within a "RTSPServer".
555
- Make "MediaSubsession::parseSDPAttribute_framerate()" a little more robust.
556
(Thanks to Shawn Van Every for the suggestion.)
557
- Improved "BasicUsageEnvironment0::reportBackgroundError()" (thanks to Matt Schuckmann)
558
- Fixed a bug in the "AVIFileSink" code (thanks to Pramod Bhadwat for reporting this).
559
560
2009.01.26:
561
- Updated the header file for "rtcp_from_spec.c" to make the call to "exit()" a noop.
562
(Thanks to Chris Silvers for raising this issue.)
563
- Changed the definition of "RTSPClientSession" (in "RTSPServer") to make it protected (and also to make its
564
command handler functions protected and virtual), to allow developers to subclass it (to change the
565
implementation of some commands).
566
(Thanks to Yedidia Amit for suggesting this.)
567
- Fixed a minor bug in "scheduleNextQOSMeasurement()" (in the "openRTSP" implementation).
568
(Thanks to Gabriele De Luca for noticing this.)
569
570
2008.12.20:
571
- Removed - from "MultiFramedRTPSource.cpp" - the historical sanity check for bizarrely delayed packets.
572
Accepting such bizarro packets causes problems in the code; it's best not to accept them at all.
573
- Added to "FramedFilter" a new public function "detachInputSource()" that sets the filter's input source
574
to NULL. This is useful if you want to close the filter independently of closing its input source.
575
(Thanks to Alex Cichowski for this suggestion.)
576
- Modified the header file for "MultiFramedRTPSink" to make its implementation of the "stopPlaying()" virtual
577
function public. (Thanks to Guy Bonneau for this suggestion.)
578
- Changed "MediaSession::initiate()" to make the port number selection mechanism (for unicast streams) more robust.
579
(Thanks to Pierre Ynard for this suggestion.0
580
581
2008.11.13:
582
- Fixed an obscure bug in "BasicTaskScheduler::SingleStep()" in which the call to "handleAlarm()" would
583
(on rare occasions) modify the set of read handlers in such a way as to be inconsistent with the result of
584
the earlier call to "select()". We fixed the bug by moving the call to "handleAlarm()" after the socket
585
handler call. (Thanks to Sigismondo Boschi for tracking down this bug.)
586
- Fixed a bug in "parseRTSPRequestString()" that could cause a crash when parsing certain weird, non-compliant
587
requests. (Thanks to Sebastien Escudier for reporting this.)
588
589
2008.11.04:
590
- Fixed a bug in "RTPInterface" that was sometimes causing sockets not to be reclaimed properly by a
591
RTSP server when streaming RTP/RTCP-over-TCP. (Thanks to Ralf Globisch for tracking this down.)
592
- Changed the RTSP 'start time' parameter from "float" to "double", to allow for
593
accurate 'start times' that are very large - e.g., Unix 'epoch' times.
594
(Thanks to Morgan Toervolt for the suggestion and patch.)
595
- Made some simplifications to the 'reception stats' code in "RTPSource".
596
(Thanks to Guy Bonneau for this suggestion.)
597
- Fixed a minor bug in "QuickTimeFileSink". (Thanks to Pramod Bhagwat.)
598
599
2008.10.07:
600
- Added an optional "timeout" parameter (in seconds) to the 'connecting' RTSP
601
client commands. (Thanks to Sebastien Escudier for this patch.)
602
- Increased the size of a "DummySink"s buffer in "MPEG1or2FileServerDemux", to make
603
it large enough for any PES packet.
604
- Fixed a minor memory leak in the "createNew()" functions for
605
"AVIFileSink" and "QuickTimeFileSink" if the output fid did not get created.
606
(Thanks to Mehmet Ozgul for noting this.)
607
- Fixed a couple of spelling erros, removed some unnecessary whitespace,
608
and updated the address of the FSF in the LGPL preamble (thanks to Erik Hovland).
609
610
2008.09.02:
611
- Fixed a minor bug in "RTSPServer". (Thanks to Renato Mauro.)
612
- Minor improvements fo "FileSink" and "MP3FileSource". (Thanks to Pramod Bhagwat.)
613
- Changed the default "reclamationTestSeconds" parameter (in "RTSPServer" and "DynamicRTSPServer") from 45 seconds
614
to 65 seconds, because 60 seconds is the default timeout value expected by (broken) clients that send
615
RTSP commands rather than RTCP "RR" reports to indicate liveness.
616
617
2008.07.25:
618
- Minor bug fix to "MPEG2TransportStreamFramer" (reset "fTSPCRCount" in "doStopGettingFrames()").
619
(Thanks to Qiujian Shu for reporting this bug.)
620
- Modified the previous changes to "QuickTimeFileSink" and "AVIFileSink" so that the
621
"createNew()" functions return NULL if the output file cannot be opened.
622
623
2008.07.24:
624
- Changed "MultiFramedRTPSource" to handle the very first packet that we receive as
625
if there were packet loss beforehand. This ensures that we correctly discard any
626
initial packets that we receive that occur after the start of a (multi-packet) frame.
627
- Fixed "QuickTimeFileSink" and "AVIFileSink" to close the output file (if it's not stdout or stderr) in the destructor.
628
629
2008.07.22:
630
- Fixed "MPEG2TransportStreamMultiplexor" to use an appropriate stream for our SCR, even if the input contained
631
its own Program Stream Map.
632
- More minor changes to the code to make Erik Hovland's code-checking tools happy.
633
634
2008.07.06:
635
- Corrected one of Erik Hovland's memory leak fixes made to the previous revision.
636
637
2008.07.05:
638
- Fixed some memory leaks - and several other mostly cosmetic fixes.
639
(Thanks to Erik Hovland for noticing these.)
640
641
2008.06.26:
642
- Fixed a bug in "openRTSP" that was sometimes causing an incorrect "Range:" header
643
to be sent in "PLAY" requests.
644
645
2008.06.25:
646
- Fixed a bug in the headers sent for the RTSP "GET_PARAMETER" and "SET_PARAMETER" commands.
647
(Thanks to "beilyzhang (at) hotmail" for this report.)
648
649
2008.06.05:
650
- Renamed the "ourSourceAddressForMulticast()" function to the less confusing and more explanatory
651
"ourIPAddress()".
652
- The "RTSPClient" change that was made in 2008.04.09 to accommodate multicast
653
streams apparently broke (some?) unicast streams. This has now been fixed.
654
- Updated "RTSPClient" to handle weird servers that include a "Content-Length:" header
655
in the response to the RTSP "SETUP" command. (If we see such a header, we skip over
656
the data referred to in the header.) (Thanks to Kristian Soerensen for this suggestion.)
657
- Changed the parsing of lines in "RTSPClient" so that it now accepts \r or \n alone
658
at the end of each line. (\r\n is preferred, but the standard also allows \r or \n)
659
(Thanks to David Schueler for this suggestion.)
660
661
2008.05.12:
662
- Made a change to "RTCPInterface" to ensure that "turnOffBackgroundReadHandling()" is called on a socket
663
as many times as "turnOnBackgroundReadHandling()". Apparently some versions of Windows get upset if this
664
doesn't happen. (Thanks to Ken Seo for the suggested fix.)
665
- Fixed a bug in "H263plusVideoStreamParser". (Thanks to Andrey Latin.)
666
- Added more sanity checking to "JPEGVideoRTPSink".
667
668
2008.04.09:
669
- Corrected a type-related bug in "RTPInterface::handleRead()". (Thanks to Brain Lai for noting this.)
670
- Fixed a bug in "RTSPClient" that would prevent RTCP "RR" reports from being sent to
671
the correct multicast address when we are receiving a multicast stream. (Thanks to Changjin Liu for noticing this.)
672
673
2008.04.03:
674
- Fixed a bug that was introduced in the "2007.12.27" release. The "timeout" parameter to the call to
675
"readSocket" in "SocketDescriptor::tcpReadHandler()" in "RTPInterface.cpp" needed to be initialized
676
(to zero) first. (Thanks to Lodewijk Loos for alerting us to this problem.)
677
- Added a new config file "config.bfin-linux-uclibc", and renamed "config.bfin_uclinux" as "config.bfin-uclinux".
678
(Thanks to Mike Frysinger.)
679
680
2008.02.08:
681
- Added a hack (suggested by "Romain") to "MPEG2TransportStreamFramer" to (perhaps)
682
produce more accurate per-transport-packet duration estimates for wildly VBR streams.
683
- Updated "MPEG2TransportStreamMultiplexor" to support the addition of MPEG-4 Audio or Video Elementary Streams.
684
- Updated "RTSPOverHTTPServer.cpp" (a work in progress) so that it complies properly for some versions of
685
Visual Studio on Windows. (Thanks to Eric Flickner for noting this.)
686
687
2008.01.19:
688
- Corrected the "getNormalPlayTime()" function - introduced in the previous release - to allow for 'trick play'
689
scale factors other than 1.
690
691
2008.01.18:
692
- Added a new member function
693
float MediaSubsession::getNormalPlayTime()
694
which - given a stream's current presentation time - returns the "Normal Play Time".
695
This function is useful for RTSP streams.
696
- Added support for a "a=control:" URL specified in the SDP description at the session level.
697
698
2008.01.04:
699
- Changed the "RTSPClient" timeout - introduced in the previous release - from
700
5s to 30s.
701
- Added support for setting and returning the RTSP session start time (as well as the end time).
702
(This eliminates the need for the "live-starttime.patch" file that VLC was using.)
703
- Updated some of the system-specific configuration files, to eliminate the need for many of the patches that
704
the VLC developers added to their code.
705
706
2007.12.27:
707
- Added a 5s timeout to the "RTSPClient" code that checks for RTSP responses.
708
This mirrors a change that was already being done to VLC's copy of the code.
709
(This is still a short-term fix, until the "RTSPClient" code is rewritten to
710
properly use asynchronous I/O, using the event loop.)
711
- Added a timeout to the "readSocket()" call in "SocketDescriptor::tcpReadHandler()" in "RTPInterface.cpp",
712
to handle reading RTP-over-TCP data. This allows for the possibility of non-cooperative RTSP clients.
713
(Thanks to Peter Leese for this suggestion.) This is probably not a complete solution;
714
more thought is needed...
715
716
2007.12.07:
717
- Fixed "H2633plusVideoFileServerMediaSubsession" to properly use a dynamic RTP payload type, rather than the
718
static type 34 (which is reserved for the now-obsolete old "video/H263" RTP payload format).
719
720
2007.12.06:
721
- Updated "JPEGVideoRTPSource" to take optional 'default width' and 'default height' parameters.
722
These parameters can be set by fields in the SDP description, and can be used to specifiy unusually
723
large frame widths and/or heights. (Thanks to Andrey Filippov.)
724
725
2007.11.18:
726
- Fixed a couple of memory leaks in "DarwinInjector". (Thanks to Eyal Beit-Halachmi for noting these.)
727
- Removed old 'backwards compatibility' stuff from "FramedSource". (Noone should be relying upon this any more.)
728
- Fixed a bounds-checking error in "parseRTSPRequestString()" caused by an int vs. unsigned problem.
729
(Thanks to Luigi Auriemma for noting this.)
730
- In "RTSPClient.cpp", fixed a couple of "unsigned" vs. "int" nits. (Thanks for Brain Lai for noting this.)
731
732
2007.11.01:
733
- Several of the options to "openRTSP" have now been changed, with two new options added:
734
-s <initial-seek-time>
735
-z <scale>
736
See the "openRTSP" documentation <http://www.live555.com/openRTSP/> for details.
737
- Fixed a bug in the way that "MPEG4VideoStreamDiscreteFramer" parses 'config' information (for inclusion in
738
the stream's SDP description). (Thanks to Nicola Bova for helping to identify this bug.)
739
- Eliminated a potential memory (and socket) leak when allocating server RTP,RTCP socket pairs.
740
(Thanks to David Pan for reporting this.)
741
- Updated "ByteStreamFileSource" to treat a 0-byte file read the same as EOF.
742
- Ensure that we have reasonable OS buffering for writes on non-blocking sockets.
743
744
2007.08.03a:
745
- Removed a debugging printf() that had been left in by mistake. (Thanks to Massimo Zito for noticing this.)
746
747
2007.08.03:
748
- Updated the "RTSPServer" implementation to work better on systems with more than one IP address.
749
The server will now include - in its RTSP responses - the IP address on which the corresponding incoming request
750
was received.
751
752
2007.07.25:
753
- Added some sanity checks to various "MediaSink" subclasses, in case "fSource" is NULL.
754
(Thanks to Andrey Kaminsky for noting one of these.)
755
756
2007.07.10:
757
- Made sure that "MPEG2TransportStreamFramer"s estimate of the average duration of each Transport Packet
758
gets updated correctly after each 'seek' operation. (Thanks to Massimo Zito for suggesting this.)
759
- Fixed a bug in "MPEG2TransportStreamFromESSource" that was causing presentation
760
timestamps to not be generated correctly. (Thanks to Massimo Zito for noticing this.)
761
762
2007.07.01:
763
- Fixed a bug in "RTSPServer" and "RTSPClient" that would cause problems when streaming
764
files whose names have spaces in them.
765
- Fixed a bug in "OnDemandServerMediaSubsession::deleteStream". (Thanks to Igor Bukanov.)
766
- Make the sockets for "RTPSource", "RTCPInstance" and "BasicUDPSource" non-blocking, even though they will be read
767
from only asynchronously, when packets arrive. The reason for this is that, in some OSs, reads on a blocking
768
socket can (allegedly) sometimes block, even if the socket was previously reported (e.g., by "select()") as
769
having data available. (This can supposedly happen if the UDP checksum fails, for example.)
770
(Thanks to Marc Neuberger for pointing this out.)
771
- Fixed a bug in "MPEG2TransportFileServerMediaSubsession.cpp" that was causing 2x
772
fast-forward to fail. (Some debugging code had been left in by mistake.)
773
774
2007.05.24:
775
- Modified "setupDatagramSocket()" to better handle setting "ReceivingInterfaceAddr" when creating a socket
776
to be used to send/receive multicast.
777
- Made a couple of minor changes to overcome some compilation errors that some people were apparently seeing.
778
779
2007.05.23:
780
- The RTSP server now includes the "source=" parameter in the response to a RTSP "SETUP" command.
781
This works around a bug in QuickTime Player that would cause it to not send RTCP "RR" packets
782
(when playing a unicast stream, and running on Mac OS X). (Thanks to Dave Singer et al at Apple for tracking
783
down this problem.)
784
- The RTSP server implementation no longer terminates the session if it returns 400 or 405 errors.
785
786
2007.04.24a:
787
- Fixed a problem in the new "RTSPOverHTTPServer" code that was causing some people compilation problems.
788
789
2007.04.24:
790
- Fixed a typo in "testOnDemandRTSPServer.cpp". (Thanks to Nils Grundback for noticing this.)
791
- Modified the signature of "RTSPServer::specialClientAccessCheck()" (defined in the previous revision) to add
792
a new "clientAddr" parameter (a "struct sockaddr_in"), to allow special access checking based on clients' IP
793
address.
794
- Make sure that the locale is set to "POSIX" when calling "toupper()" or "tolower()" on human-supplied strings.
795
(Thanks to Ismail Doenmez for noting this.)
796
797
2007.04.20:
798
- Modified "MPEG2TransportStreamMultiplexor" to set the "discontinuity_indicator" flag for the first
799
"adaptation_field" in the output Transport Stream.
800
- Changed "AMRAudioRTPSource" to more accurately report whether/when an interleaved frame's timestamp has
801
been synchronized using RTCP.
802
(Thanks to David Bertrand for this patch.)
803
- Made to a small fix to the previous revision's support for multicast streaming of raw UDP (nonstandard)
804
- Added a virtual function to "OnDemandServerMediaSubsession" for closing the stream source.
805
Subclasses can redefine this, if they wish, to do something smarter. (Thanks to Igor Bukanov for this patch.)
806
- Added support to "RTSPServer" for optionally performing special per-client access control, beyond the
807
standard Digest Authentication method. (Thanks to Igor Bukanov for this patch.)
808
- Made a minor optimization to "Groupsock.cpp". (Thanks to Maxim Petrov for this suggestion.)
809
- Added an initial implementation of RTSP-over-HTTP at the server level (it was already supported at the client level).
810
(Note: This code has not yet been completed, and doesn't yet work, so don't try to use it.)
811
812
2007.02.20:
813
- Updated "RTSPServer" to support multicast streaming of raw UDP streams (nonstandard).
814
(Thanks to Aesmund Grammeltvedt for this modification.)
815
- Made "RTSPClient" a little more robust in case the TCP connection fails.
816
- Made "RTPSink::rtpmapLine()" virtual (as requested by Andrew Voznytsa).
817
- Removed an archaic (no longer used) declaration in "groupsock/include/Groupsock.hh".
818
- Added an optional "allowKasennaProtocol" parameter to "RTSPClient::describeWithPassword()"
819
(similar to "RTSPClient::describeURL()"). (Thanks to Igor Bukanov for this suggestion.)s
820
821
2007.01.17:
822
- Fixed a bug that would cause the "MPEG2TransportStreamIndexer" application to fail when run on a big-endian
823
architecture.
824
- Added a new class "H264VideoFileSink", that prepends each incoming H.264 NAL unit with the prefix 0x000001,
825
before writing it to the file. Also updated the "openRTSP" code to use this, when receiving H.264/RTP streams.
826
(Thanks to Chris Kuiper for contributing this.)
827
- Added a temporary #ifdef to "GroupsockHelper.cpp" to work around a compliation problem when building
828
for Cygwin.
829
830
2007.01.11:
831
- Improved the "MPEG2IndexFromTransportStream" class to recogize Transport Stream
832
PAT and PMT (tables). This in turn makes the "MPEG2TransportStreamIndexer"
833
utility more robust.
834
- Fixed a minor bug in "MPEG2TransportStreamFromESSource".
835
836
2007.01.09:
837
- Added RTSP server support for 'trick play' operations on MPEG-2 Transport Stream
838
files. This requires the presence of a ".tsx" index file for each ".ts" file.
839
(This functionality will shortly be documented on the LIVE555 web site,
840
and announced on the "live-devel" mailing list.)
841
- Improved the performance of asynchronous file reading in "ByteStreamFileSource".
842
(Thanks to Aesmund Grammeltvedt for this suggestion.)
843
- Added "-D_FILE_OFFSET_BITS=64" to the "COMPILE_OPTS" line for each of the Linux config files, in order to
844
alleviate possible problems with I/O on large files.
845
846
2006.12.31:
847
- We now implement "ByteStreamFileSource" on Windows using synchronous file reads,
848
by default. I had thought that Windows XP had fixed the problem - present in
849
earlier versions of Windows - whereby open files are not treated as select()able
850
sockets. But apparently the problem is still there.
851
- Added code that will - probably in the next release, very soon - support server
852
'trick mode' operations on MPEG-2 Transport Stream files. At present, we have two
853
new applications - in the "testProgs" directory - that help support this:
854
"MPEG2TransportStreamIndexer" (to create a special index file for a Transport Stream
855
file), and "testMPEG2TransportStreamTrickPlay" (to generate a new Transport Stream
856
file that simulates a 'trick play' operation performed on the original Transport
857
Stream file). See my forthcoming post to the "live-devel" mailing list for more
858
details.
859
- Fixed a bug in the Base64 encoding routine. (Thanks to Sebastian Gracias for reporting this.)
860
861
2006.12.08:
862
- Made sure that each TCP socket used by a "RTSPserver" is non-blocking, so that a slow or hanging client
863
cannot hang a server. (Thanks to "jers (at) inwind.it" for this suggestion.)
864
865
2006.11.16a:
866
- Oops - fixed a problem with the packaging of the new "mediaServer" code.
867
868
2006.11.16:
869
- Included the code for the new "LIVE555 Media Server" application
870
(in the "mediaServer" subdirectory). This is a complete RTSP/RTP server, that
871
will serve any appropriately-formatted file that resides in the current directory.
872
(More documentation will follow.)
873
- Updated "QuickTimeFileSink" to support H.264 video in ".mov" or ".mp4" output files.
874
(Thanks to David Arnold for this.)
875
- Fixed a potential reference-count related bug in "OnDemandServerMediaSubsession". (Thanks to Jers.)
876
- Changed the "RTSPClient" constructor from "private:" to "protected:".
877
878
2006.10.27:
879
- "RTSPClient" now recognizes the "Content-Base:" header in RTSP "DESCRIBE" responses.
880
(Thanks to Derk-Jan Hartman for this suggestion.)
881
- Updated "MultiFramedRTPSource" to avoid excessive recursion (and thus potential
882
stack overflow) in some cases when receiving streams that have packet loss.
883
(Thanks to Erwin Beckers for raising this as an issue.)
884
- Updated "RTPSink" and "MultiFramedRTPSink" to ensure that a proper RTP timestamp
885
is set in the RTSP "RTP-Info" header that follows a "PAUSE", and that this timestamp
886
gets used in the next outgoing RTP packet. (Thanks to David Bertrand for this suggestion.)
887
- Changed the special implementation of "gettimeofday()" for Windows to return
888
more accurate results. (Thanks to David Arnold for this change.)
889
890
2006.10.18a:
891
- A minor update to the "MultiFramedRTPSink" change made in the previous release.
892
893
2006.10.18:
894
- Added support for adding optional RTP padding bytes to "MultiFramedRTPSink".
895
(Thanks to Victor Kozhuhov for this suggestion.)
896
897
2006.10.12a:
898
- Backed out the change that we made in the 2006.09.18 release: We now don't attempt
899
to setsockopt() SO_REUSEPORT and IP_MULTICAST_LOOP on Windows. (Dave Arnold reports
900
that doing so leads to UDP packets with TTL=1.)
901
902
2006.10.12:
903
- Fixed a rare memory leak in "MultiFramedRTPSource". (Thanks to David Bertrand for this fix.)
904
- Made "RTSPServer::lookupServerMediaSession()" virtual, to allow for future
905
subclasses of "RTSPServer" that - for example - create and add "ServerMediaSession"s
906
dynamically (depending on whether or not the named file exists).
907
- Added a "rtspURLPrefix()" member function to "RTSPServer". This returns the
908
"rtsp://" URL prefix that's common to all of the server's "rtsp://" URLs.
909
910
2006.10.07:
911
- The demo applications (in the "testProgs" directory) that stream MPEG-4
912
Elementary Stream video files now use a file name "test.m4e" rather than "test.m4v".
913
This is to avoid confusion, because Apple has coopted the ".m4v" suffix for
914
MPEG-4 (audio+video) files, which are different.
915
- Made "MPEG4VideoStreamFramer" more bullet proof against some non-standard MPEG-4 video data.
916
(Thanks to Maxim Petrov for this suggestion.)
917
918
2006.10.05:
919
- Fixed a minor bug in "MPEG2TransportStreamFromESSource" (thanks to "jeremy at electrosilk.net")
920
- Changed some class member function and variables from "private" to "protected", in response to a request
921
from David Bertrand.
922
- Made "DarwinInjector::createNew()" more bullet proof, by giving the "applicationName" parameter
923
a default value.
924
925
2006.09.20:
926
- Corrected the bug fix to "H264VideoRTPSink" that was made two revisions ago.
927
928
2006.09.18:
929
- Fixed a bug in the way that "RTPSource" records the maximum sequence number seen so far.
930
(The bug could be triggered by packets arriving out of order.) Thanks to Mallikharjuna Reddy
931
for pointing this out.
932
- When creating new datagram sockets, we now attempt to setsockopt() SO_REUSEPORT and IP_MULTICAST_LOOP,
933
even on Windows. (A version of Windows prior to XP had problems with this, but it's apparently no longer
934
a problem.)
935
936
2006.09.12:
937
- Fixed a minor bug in "H264VideoRTPSink". (Thanks to Emiliano Parasassi for noting this.)
938
- If the "totSessionBW" parameter to "RTCPInstance::RTCPInstance()" is zero, print out an error message,
939
and use a value of 1 (kbps) instead.
940
941
2006.09.09:
942
- Reenabled asynchronous file reading in "ByteStreamFileSource", after fixing a bug
943
that could lead to a 'race condition' in some circumstances. (The fix was to call
944
"FramedSource::afterGetting()" directly - rather than via the event loop - after
945
delivering data to the downstream object.)
946
- Updated "MPEG2TransportStreamFromESSource" again. Now, we set the
947
"PES_packet_length" field to zero if the input data was larger than 2^16 bytes
948
long. (This is in accordance with the MPEG specifications; thanks to "jeremy at electrosilk.net"
949
for noticing this..)
950
951
2006.09.08:
952
- Temporarily disabled asynchronous file reading in "ByteStreamFileSource" until we
953
fix an apparent bug that is causing MPEG streaming to fail.
954
- Updated "MPEG2TransportStreamFromESSource" to print a warning message if the input source delivers
955
data in chunks that are too big to make up a PES packet.
956
957
2006.09.07:
958
- Fixed a bug that was preventing the RTCP "RR" packet handler from being called
959
when we were streaming RTP/RTCP-over-TCP. (Thanks to "zhangzx at rcs-9000.com"
960
for noticing this.)
961
962
2006.08.26:
963
- Changed the implementation of "ByteStreamFileSource" so that reads from the
964
open file are now done asynchronously, when data becomes available. This matches
965
the code's event-driven execution model better than the previous implementation,
966
which read from files synchronously. It should also perform better in systems
967
that read from more than one file concurrently.
968
- Added Victor Kozhuhov's modifications to the WAV file support code, to allow for WAV files that contain
969
u-law or a-law content (instead of the usual raw PCM).
970
971
2006.08.24:
972
- Fixed the way in which "RTSPServer" handles requests that span more than one
973
TCP socket read. These reads are now all handled asynchronously, in accordance
974
with the library's event-driven execution model. (Thanks to Marc Neuberger for noting this.)
975
- Fixed a memory leak in "MultiFramedRTPSource" that would occur if we received
976
packets with duplicate sequence numbers, or if we received excessively delayed
977
packets. (Thanks to David Bertrand for noticing this.)
978
- Changed the order of statements in "~RTSPClient()" to fix a bug (noted by Brain Lai).
979
- Changed "base64Encode()" to take a 'length' parameter, so that it will work with input data that
980
contains '\0' characters. (Thanks to Derk-Jan Hartman for this suggestion.)
981
- Added support - in "RTSPServer" - for the (non-standard) "x-playNow:" header in RTSP requests.
982
(Thanks to Rob Casey for this patch.)
983
- Updated "MediaSession" to parse the (standard) SDP "framerate" attribute (in addition to "x-framerate", which
984
is non-standard).
985
- Changed the parent class of "H264VideoStreamFramer" to be "FramedFilter" (to be consistent with other
986
'Framer' classes) instead of "FramedSource". (Thanks to Jinfeng Zhang for noticing this.)
987
- Made the "FramedFilter" implementation more robust, in case the supplied input source parameter is NULL.
988
989
2006.08.07:
990
- Changed the way that "OnDemandServerMediaSubsession" creates server ports.
991
It now chooses server port numbers starting with a specific port number
992
(which is now an optional parameter to the "OnDemandServerMediaSubsession"
993
constructor). The default value of this initial port number parameter is 6970.
994
This matches the port number range used by other common RTSP server implementations,
995
including Darwin Streaming Server and Helix.
996
- Changed the criterion for whether to send out a RTCP "SR". (Thanks to David Bertrand.)
997
- Fixed an obscure bug in "OnDemandServerMediaSubsession::deleteStream()"
998
(reported by Scott Hayes)
999
- Removed some archaic code that was developed for a customer several years ago, but
1000
which is no longer used.
1001
1002
2006.07.04:
1003
- Another update to "H264VideoRTPSink" (requested by David Bertrand)
1004
1005
2006.06.28:
1006
- Another update to "H264VideoRTPSink". (Thanks to David Bertrand.)
1007
1008
2006.06.27:
1009
- Updated "H364VideoRTPSink"
1010
- Corrected the definition of MAX_PES_PACKET_SIZE in MPEG2TransportStreamFromPESSource.cpp.
1011
(Thanks to Jiri Pinkava for this fix.)
1012
1013
2006.06.23:
1014
- Fixed some minor issues with the previous addition of "H264VideoRTPSink"
1015
1016
2006.06.22:
1017
- Added "H264VideoRTPSink", for transmitting H.264/RTP streams. (Thanks to
1018
Benoit Quirynen and David Bertrand for funding this work.)
1019
- Changed the default definitions of IP_ADD_SOURCE_MEMBERSHIP and
1020
IP_DROP_SOURCE_MEMBERSHIP (for use if they're not already defined in header files),
1021
to make it more likely that SSM joins will properly fail if SSM is not actually
1022
implemented on the host OS.
1023
- Changed some "delete"s into "delete[]". (Thanks to Wojciech Matyjewicz
1024
and Mathur for reporting these bugs.)
1025
- Made "sapWatch a bit more robust. (Thanks to Jiri Pinkava for this fix.)
1026
1027
2006.05.17:
1028
- Fixed "OnDemandRTSPServer" so that it sets a RTCP "RR" handler,
1029
even if "reuseFirstStream" is True.
1030
- Changed "RTSPServer" (and the "testOnDemandRTSPServer" demo application)
1031
to use a 45-second client liveness timeout, by default. (Previously,
1032
no client liveness checking was being done by default.)
1033
(Note that client liveness timeouts are done only for unicast streams, not multicast.)
1034
- Fixed a bug in the implementation of "BasicHashTable" that arose when
1035
we were using hash tables with multi-word-sized keys.
1036
1037
2006.05.15:
1038
- No change from the previous release, but the installed ".tar.gz" file had
1039
accidentally been deleted.
1040
1041
2006.05.11:
1042
- Cleaned up some code in "BasicTaskScheduler" that was allegedly causing
1043
problems on a Zaurus.
1044
- Changed "TaskScheduler::rescheduleDelayedTask()" so that its "microseconds"
1045
parameter is a "int64_t" (to match "scheduleDelayedTask").
1046
(Thanks to David Bertrand for suggesting this.)
1047
- Updated "ServerMediaSession:::generateSDPDescription()" to change
1048
"a=rtcp: unicast-reflection" to "a=rtcp-unicast: reflection", to
1049
reflect the latest version of the IETF's "draft-ietf-avt-rtcpssm"
1050
Internet-Draft. (This is for Source-Specific Multicast sessions only.)
1051
- Cleaned up "H263plusVideoRTPSink" slightly, to remove an unnecessary
1052
member variable.
1053
- Removed support for the (experimental and non-standard) "X-MCT-TEXT"
1054
payload type.
1055
1056
2006.03.17:
1057
- Fixed a bug in "RTSPClient" (that had been introduced in the 2006.02.15
1058
release) that was stopping RTP-over-TCP reception from working.
1059
1060
2006.03.15:
1061
- Updated "MediaSession" to parse the "s=" and "i=" lines of input SDP
1062
descriptions, and added member functions for returning these string values.
1063
(Thanks to Scott Hays or this.)
1064
- Updated "MPEG2TransportStreamMultiplexor" to use the audio track for PCR
1065
iff there is no video track present.
1066
- Made a change to "liveMedia/include/H263plusVideoStreamFramer.hh" to overcome
1067
an error reported by some nit-picking compilers.
1068
- Fixed a minor bug in "MPEG2TransportStreamFromESSource" (in the way that it
1069
handles EOF on input).
1070
1071
2006.03.03:
1072
- Updated "MPEG4LATMAudioRTPSource" to allow the LATM data length field to
1073
be omitted from the start of each returned audio frame. (The "faad" decoder
1074
(used by VLC, for example) needed this.)
1075
- Renamed "SECOND" in the "BasicUsageEnvironment" library to "DELAY_SECOND"
1076
(and similarly for "ZERO", "MINUTE", "HOUR", "DAY"), to avoid an alleged
1077
name conflict with some other code used by VLC. (Thanks to
1078
Derk-Jan Hartman for this suggestion.)
1079
- Removed some unnecessary code from "testProgs/playCommon.cpp".
1080
1081
2006.02.25:
1082
- Updated the previous change to "MultiFramedRTPSource::doStopGettingFrames()",
1083
to also reset the object's fields. (Thanks to David Bertrand.)
1084
1085
2006.02.15:
1086
- Changed "GetFileSize()" (defined in "liveMedia/include/InputFile.hh") and
1087
"ByteStreamFileSource::fileSize()" to return a "u_int64_t", to allow for
1088
(potentially) large files.
1089
- Changed the "microseconds" parameter to "TaskScheduler::scheduleDelayedTask()"
1090
from "int" to "int64_t". This allows for durations greater than the previous
1091
~2000 second limit.
1092
- Updated "RTSPClient" to support handling RTSP requests sent by the server.
1093
(Some servers send periodic requests back to the client as a keep-alive test.)
1094
At present, we just respond to such requests with a "not allowed" error.
1095
(Thanks to Khanh Mai for this change.)
1096
- Updated "MultiFramedRTPSource::doStopGettingFrames()" to reset the
1097
"ReorderingPacketBuffer". (Thanks to David Bertrand for this fix.)
1098
- Corrected a small bug in the previous "RTSPClient" modification
1099
(noticed by Glen Gray).
1100
- Fixed a bug in "ADTSAudioFileSource" when parsing the optional "crc_check"
1101
field. (Thanks to Paul Li for noticing this.)
1102
1103
2006.01.27:
1104
- Updated "RTSPClient" to:
1105
- allow the "parameterName" parameter to "getMediaSessionParameter()" to be NULL
1106
- add a "setUserAgentString()" member function, to allow clients to
1107
specify an alternative string for "User-Agent:" headers
1108
- parse the optional "timeout" parameter in response "Session:" headers,
1109
and added a "sessionTimeoutParameter()" member function to retrieve it.
1110
(Thanks to Glen Gray for proposing these changes.)
1111
- Fixed "H263plusVideoRTPSource" to properly initialize two member variables
1112
in its constructor. (Thanks to David Bertrand for this fix.)
1113
- Added Bernhard Feiten's support for H.263plus parsing/framing
1114
1115
2006.01.24:
1116
- Corrected the maximum PES packet size (in "MPEG1or2DemuxedElementaryStream.cpp")
1117
to allow for a 6-byte header. (Thanks to Jiri Pinkava for this fix.)
1118
- Fixed "MPEG1or2AudioStreamFramer" to avoid a potential divide-by-zero when
1119
it's fed certain malformed MPEG audio data. (Thanks to Eric Peters for this.)
1120
- Updated the top-level "Makefile.tail" to make it clear that "testProgs" can't
1121
be built until after the 'library' directories are built. This ensures that
1122
parallelizing "make"s don't do the wrong thing.
1123
1124
2006.01.05:
1125
- Updated "MPEG4VideoStreamFramer" to make the parsing of MPEG-4 video a bit
1126
more robust. (Thanks to Khanh Mai for this suggestion.)
1127
1128
2006.01.04:
1129
- Updated "OnDemandServerMediaSubsession" to tear down the stream (thus sending
1130
a RTCP "BYE") when the input source ends, iff the stream does not have a known
1131
duration. (If the stream has a known duration, then we keep the stream alive,
1132
in case a client wants to seek backwards in it.)
1133
1134
2005.12.30:
1135
- Extended the previous release's fix to also work with the RTSP
1136
"OPTIONS" command.
1137
1138
2005.12.29:
1139
- Include (if necessary) authentication headers in the initial HTTP
1140
"GET" and "POST" commands, if we're setting up RTSP-over-HTTP tunneling.
1141
This allows "RTSPClient" to work properly with some Axis cameras, which
1142
require authentication on these HTTP commands.
1143
1144
2005.12.23:
1145
- Fixed the RTCP port number in the RTSP "Transport:" header "port=" part
1146
(for multicast streams).
1147
- Updated the change that we made in version 2005.11.02 so that it also
1148
sets the port number correctly.
1149
1150
2005.12.15:
1151
- Made calls to "select()" more robust, by checking for (and ignoring)
1152
EAGAIN or EINTR errors.
1153
- Fixed a bug in "MPEG4VideoFileServerMediaSubsession" that could occur if a
1154
bad MPEG-4 video file (not containing any initial 'config' data) is read.
1155
(Thanks to Trevor Pering for noticing this.)
1156
- Removed an undocumented, experimental and rarely-used option from "openRTSP".
1157
1158
2005.12.09:
1159
- Updated the RTCP implementation so that reception stats for a SSRC are now kept
1160
around even after a RTCP BYE is received, in case we want to use these stats
1161
for QOS reports. (However, if a SSRC is reaped due to inactivity, then the
1162
reception stats are deleted.)
1163
1164
2005.12.05:
1165
- On some systems (notably FreeBSD), "struct sockaddr_in" includes a "sin_len"
1166
field, which should be set before the struct is used. We now replace declarations
1167
of "struct sockaddr_in" with a macro MAKE_SOCKADDR_IN() (defined in
1168
"groupsock/include/GroupsockHelper.hh"). This macro sets the "sin_len" field
1169
iff "HAVE_SOCKADDR_LEN" is defined on the command line.
1170
(Thanks to Boris Nikolaus for noting this issue.)
1171
- Fixed a bug in the timestamp generation for certain rare MPEG-4 video streams.
1172
(Thanks to Bernhard Feiten for reporting this.)
1173
1174
2005.11.30a:
1175
- Improved the calculation of the per-Transport Packet duration in
1176
"MPEG2TransportStreamFramer", so that the overall transmit duration
1177
tries to match the client playout duration (as determined by PCRs).
1178
- Minor patch to avoid errors when compiling with GCC 4.1.
1179
(Patch contributed by Hanno Boeck.)
1180
- Patch to the special 'Kasenna'-specific support in "RTSPClient".
1181
(Patch contributed by Glen Gray.)
1182
1183
2005.11.11:
1184
- Modified "MPEG2TransportStreamFramer" to take the PCR "discontinuity_indicator"
1185
flag into account when updating the estimated duration of each TS packet.
1186
1187
2005.11.03:
1188
- Minor bug fix to the previous version's update to "RTSPClient".
1189
1190
2005.11.02a:
1191
- Updated the previous release to add a new (optional)
1192
"forceMulticastOnUnspecified" parameter to "RTSPClient::setupMediaSubsession()".
1193
This forces the client to request a multicast stream if the original SDP
1194
response address was unspecified (0.0.0.0). (Note that not all servers
1195
will be able to handle this.) We also handle the "port=" field in RTSP
1196
"SETUP" response "Transport:" headers.
1197
- Fixed "RTSPServer" to include a proper "port=" field in the "SETUP"
1198
"Transport:" response when streaming multicast.
1199
1200
2005.11.02:
1201
- Updated "RTSPClient" to use the "destination=" address in the "SETUP"
1202
response's "Transport:" header - for multicast streams. We do this because
1203
some weird servers (e.g., Axis cameras, reportedly) do not specify the
1204
multicast address earlier, in the "DESCRIBE" response's SDP.
1205
1206
2005.10.28b:
1207
- Added a "rtpTimestampFrequency" parameter (with default value 90000)
1208
to "H263plusVideoRTPSink", "MPEG4ESVideoRTPSink".
1209
1210
2005.10.28a:
1211
- Removed some unnecessary "delete"s, and changed some "delete"s to
1212
"Medium::close()"s. (Minor bug noted by Zhixue Zhang.)
1213
1214
2005.10.28:
1215
- Fixed a potential 'divide by zero' problem in "MP3Internals.cpp".
1216
(Thanks to Eric Peters for noting this.)
1217
1218
2005.10.27:
1219
- Added a "numEntries()" pure virtual function to "HashTable".
1220
(Thanks to David Bertrand for this suggestion.)
1221
1222
2005.10.23:
1223
- When creating a Transport Stream from AC-3 audio input, we now use a stream_id
1224
of 0x06 rather than 0x81.
1225
- Add support for receiving the various G.726 RTP payload formats, described
1226
in RFC 3551.
1227
- Added an implementation of the "doStopGettingFrames()" virtual function to
1228
"BasicUDPSource". (Thanks to Adrian Hornsby for this suggestion.)
1229
- Changed the reimplemented virtual functions in "BasicUsageEnvironment0" and
1230
"BasicTaskScheduler0" from "protected" to "public". (Thanks to David Bertrand
1231
for this suggestion.)
1232
- Added support to "RTSPClient" for the "GET_PARAMETER" RTSP command.
1233
(Thanks to Glen Gray for this.)
1234
- Added a Windows version of the "genWindowsMakefiles" script. This should
1235
make it easier for Windows users to unpack and build the code.
1236
(Thanks to Erwin Herzog for this script.)
1237
1238
2005.10.05:
1239
- Fixed a couple of bugs noticed by David Bertrand.
1240
1241
2005.09.23:
1242
- This software is now called "LIVE555 Streaming Media", and our preferred domain name
1243
is now "live555.com".
1244
1245
2005.09.20:
1246
- Updated "MPEG2TransportStreamMultiplexor" to increase the frequency of PMTs
1247
and PATs in the output Transport Stream.
1248
- More improvements to "MPEG2TransportStreamFromESSource".
1249
- Updated "RTSPServer" to allow for empty stream names from certain non-standard
1250
RTSP clients (such as Amino STBs).
1251
- Fixed "RTSPClient::tearDownMediaSession()" to delete each subsession's
1252
"sessionId" field.
1253
- Fixed a minor memory leak in "RTSPClient" (when implementing HTTP tunneling)
1254
1255
2005.09.09:
1256
- Made the destructors for "BasicUsageEnvironment" and "BasicUsageEnvironment0"
1257
protected rather than public, to match the base class "UsageEnvironment".
1258
- More improvements to "MPEG2TransportStreamFromPESSource" and
1259
"MPEG2TransportStreamFromESSource".
1260
1261
2005.09.06:
1262
- Modified "MPEG2TransportStreamMultiplexor", and added
1263
"MPEG2TransportStreamFromESSource".
1264
1265
2005.08.26:
1266
- Updated "MediaSession" to parse the SDP "a=type:" attribute. (Patch by
1267
Derk-Jan Hartman.)
1268
- Added support to "RTSPClient" for handling Microsoft servers' non-standard use
1269
of the RTSP/RTP protocol. Also, fixed the parsing and generation of floating
1270
point numbers in the RTSP "Range:" and "Scale:" headers to work correctly in
1271
non-POSIX locales. (Thanks to Derk-Jan Hartman for this suggestion.)
1272
- Fixed a memory leak in "MPEG2TransportStreamFromPESSource".
1273
- Changed "MP3StreamState::readFromStream()" from "private" to "protected", to
1274
satisfy a request by Pierre l'Hussiez.
1275
1276
2005.08.09:
1277
- Improved the Transport Stream generation software to (in the future) allow
1278
for generating Transport Streams from Elementary Stream data as well as
1279
from PES packet data.
1280
1281
2005.07.23:
1282
- Improved "H264VideoRTPSource" to properly handle 'aggregate' packets
1283
that contain more than one NAL unit.
1284
1285
2005.07.21:
1286
- We no longer set a RTCP "RR" handler when we're streaming, unicast on-demand,
1287
from a shared input source. (The reason for this is that, in this case,
1288
we also share a RTCP instance for all client sessions (streams).
1289
A better fix will eventually be needed.)
1290
1291
2005.07.19:
1292
- Updated H.264/RTP support.
1293
1294
2005.07.15:
1295
- Oops, DEBUG was not supposed to be defined in "RTSPServer.cpp".
1296
- Added "-D_LARGEFILE_SOURCE=1" to the "COMPILE_OPTS =" line of the various
1297
"config.*linux*" files, to ensure that code that uses "fseeko()" will
1298
compile properly for all Linux systems.
1299
1300
2005.07.13:
1301
- When handling a 'passive' session, we no longer set a RTCP "RR" handler,
1302
because (unlike unicast, on-demand sessions) the RTCP instance usually
1303
outlives RTSP client sessions. (Thanks to Jon Sheller for reporting
1304
this bug.)
1305
1306
2005.07.12:
1307
- Minor updates to the Base64 code for H.264/RTP receiving.
1308
1309
2005.07.10:
1310
- Removed a debugging version of "testOnDemandRTSPServer" that had mistakenly been
1311
left in the proevious revision. If you downloaded the previous revision, then
1312
please download this version instead!
1313
- Fixed "MPEG1or2VideoStreamFramer" to better handle MPEG video streams where the
1314
first GOP time code has a non-zero 'pictures' count.
1315
(Thanks to Eric Peters for reporting this problem.)
1316
- Some enhancements to the Base64 code, for eventual use by "H264VideoRTPSource".
1317
1318
2005.07.08:
1319
- Added - to "RTCPInstance" - the ability to assign 'handler' functions
1320
to be called on the arrival of RTCP "SR" or "RR" packets (as well as "BYE").
1321
We now use this mechanism (specifically, a RTCP "RR" handler) to improve the
1322
optional 'liveness' test for "RTSPServer". (Liveness is now indicated by
1323
either a RTSP command over the TCP connection, or the arrival of a RTCP
1324
"RR" packet.)
1325
- Moved routines for Base64 encoding and decoding into the "liveMedia"
1326
library. (Base64 encoding was already being used by "RTSPClient";
1327
Base64 decoding will soon be used by "H264VideoRTPSource".)
1328
1329
2005.07.01:
1330
- Updated "testOnDemandRTSPServer" to demonstrate AAC audio streaming (from an
1331
ADTS-format file)
1332
- Made some modifications to (supposedly) make the code compile better for
1333
WinCE.
1334
1335
2005.06.30:
1336
- Added support for reading and streaming from AAC audio files in ADTS format.
1337
(Thanks to Manthan Systems for funding this work.)
1338
- Removed duplicate code in "testOnDemandRTSPServer.cpp".
1339
- Removed duplication of a common error message from "RTSPClient.cpp".
1340
1341
2005.06.29:
1342
- Added support for Basic authentication (in addition to Digest authentication)
1343
to "RTSPClient".
1344
- Removed a minor memory leak in "PassiveServerMediaSubsession".
1345
- Improved "MPEG4ESVideoRTPSource" to better note when received RTP packets
1346
begin or end a MPEG-4 'frame'. (Thanks to Saumya Chandra for noting the
1347
limitations of the previous code.)
1348
- Changed some member functions in "PassiveServerMediaSubsession" from
1349
"private" to "protected", to allow subclassing. (Thanks to
1350
Fabrice Aeschbacher for this suggestion.)
1351
1352
2005.06.16:
1353
- Fixed a bug in the generic MPEG (1, 2 or 4) video parsing code that was causing some
1354
MPEG-4 streams not to be parsed correctly.
1355
- Updated "MPEG4VideoStreamFramer" to better handle MPEG-4 video streams that contain
1356
'B' frames. (Now, more accurate presentation times and frame durations are computed
1357
for such streams.)
1358
1359
2005.06.07:
1360
- Modified the Windows-specific code in "ByteStreamFileSource.cpp" to compile properly
1361
under MINGW.
1362
1363
2005.06.04:
1364
- Updated "MPEG2TransportStreamFramer::doStopGettingFrames()" to clear the PID status
1365
table. This makes it possible to handle PCR discontinuities when seeking (e.g.)
1366
within a stream.
1367
- Updated the "ByteStreamFileSource::seekToByte*()" operations to take 64-bit
1368
parameters, to allow for seeking within files that are >4 GB in size.
1369
1370
2005.05.26a:
1371
- Updated the 'seeking' operations in "ByteStreamFileSource" to handle files
1372
that are > 2^31 bytes in size.
1373
1374
2005.05.26:
1375
- Updated "RTCPInstance::setByeHandler()" to (by default) handle only "BYE"s that
1376
come from active participants. This means, for example, that a receiver of a
1377
multicast stream can now quit without its RTCP "BYE" being handled by other
1378
multicast receivers. (By default, multicast receivers will now handle only
1379
"BYE"s that come from the sender.)
1380
- "RTSPServer" now includes "rtptime" in the returned "RTPInfo:" header, because
1381
the bugfix in the previous release also happened to fix the problem that this was
1382
having with QuickTime Player.
1383
1384
2005.05.24:
1385
- Fixed "RTPSink" so that it now resets "fTimestampBase" only on the first time
1386
that a timestamp is ever computed; not on the first time after "startPlaying()"
1387
is called. (Thanks to David Bertrand for noting this.)
1388
1389
2005.05.23:
1390
- Added support to "RTSPServer" for (optionally) reclaiming client connection
1391
state (and stopping the stream) if no command has been received on the
1392
RTSP TCP connection within a specified period of time. This is useful for
1393
use in closed systems where it is known that the RTSP client always uses
1394
the "GET_PARAMETER" command as a periodic 'keep-alive'. It stops the
1395
stream from continuing indefinitely if the client suddenly dies.
1396
1397
2005.05.12:
1398
- Removed some unnecessary floating point code from "MP3Internals.cpp".
1399
(This was causing unnecessary slowness on some hardware without floating point.)
1400
1401
2005.05.09:
1402
- Modified "MPEG2TransportStreamFramer" to give greater weight (0.5) to more recent
1403
data when computing the estimate of per-transport-packet duration. (This causes
1404
it to respond more accurately to sudden changes in bitrate (i.e., in VBR streams).)
1405
- Added some (otherwise unnecessary) null destructors to stop gcc 4.0 from printing
1406
warning messages. (Thanks to Emiliano Parasassi for pointing this out.)
1407
1408
2005.05.05:
1409
- "RTSPServer" now uses separate buffers for requests and responses. (This fixes
1410
an issue that arose in the handling of requests from a set-top box.)
1411
1412
2005.05.04:
1413
- Updated "RTSPServer" to make the parsing of "CSeq:" headers in RTSP requests
1414
more robust.
1415
1416
2005.04.26:
1417
- Made sure that "MultiFramedRTPSource"s properly stop receiving incoming RTP
1418
packets, when they're asked to stop. (This fixes a bug that was being triggered
1419
by some streams that continued sending RTP packets after a RTCP "BYE". Thanks to
1420
Eberhardt Garner for helping track this down.)
1421
- Fixed a minor memory leak in "openRTSP".
1422
- Updated "FramedSource.hh" to no longer (by default) support the old form of
1423
the 'after getting' function.
1424
1425
2005.04.23:
1426
- Added "H264VideoRTPSource", for receiving H.264/RTP streams.
1427
(Thanks to Erik Hellerud for this.)
1428
- Made some minor modifications to "ServerMediaS(ubs)ession",
1429
to support a customer's project.
1430
1431
2005.04.22:
1432
- Improved "MPEG1or2VideoRTPSink" to allow more than one complete video 'slice'
1433
from the same picture to be packed into an outgoing RTP packet.
1434
- Eliminated a bogus "IP_ADD_MEMBERSHIP" error message that Windows (for some
1435
reason) sometimes triggers for no reason.
1436
1437
2005.04.20:
1438
- Changed the name of the (platform-independent) "_close()" function to
1439
"closeSocket()", to prevent an apparent function name conflict in Windows.
1440
1441
2005.04.13:
1442
- Modified "ourSourceAddressForMulticast()" to try the
1443
"gethostname()"/"gethostbyName()" method if the 'multicast loopback' method fails.
1444
- Made some modifications to "ServerMediaSubsession" to support "SIPServer"
1445
(whose implementation is currently in progress).
1446
1447
2005.04.07:
1448
- Fixed a bug in the "base64Encode()" routine in "RTSPClient.cpp".
1449
(Thanks to Raphael Rigo for noticing this.)
1450
- Updated "MPEG1or2VideoStreamDiscreteFramer" to handle the "iFramesOnly" and
1451
"vshPeriod" parameters (just as the original "MPEG1or2VideoStreamFramer"
1452
already does).
1453
1454
2005.03.31:
1455
- Removed some testing code that had accidentally been left in the previous
1456
release. If you use "openRTSP", then please use this release instead of the
1457
previous one.
1458
- Fixed a bug in "RTPServer" when handling streams without stream names.
1459
(The bug had been introduced in version 2005.03.28.)
1460
1461
2005.03.30:
1462
- Improved the support for seeking within RTSP/RTP-streamed MPEG-1 or 2
1463
Program Stream files. (A/V sync after a seek still isn't perfect, though.)
1464
1465
2005.03.28:
1466
- The "RTSPServer" implementation now supports raw-UDP streaming, for those
1467
clients that request it. (This is usually requested only by some specialized
1468
clients - such as set-top boxes - and only for data such as MPEG Transport
1469
Streams where audio/video is muxed together (and no RTP timestamps are needed).)
1470
- Updated the calculation of MP3 sampling frequencies to allow for 'MPEG2.5'
1471
(Thanks to Massimo Buffo for this fix.)
1472
1473
2005.03.23:
1474
- Changed "BasicTaskScheduler::SingleStep()" to call only one read handler during
1475
each iteration of the event loop. This prevents potential problems if
1476
the event loop is called reentrantly from within a read handler.
1477
- Added a new, alternative version of "ByteStreamFileSource::createNew()" that
1478
takes an open file (FILE*) as parameter, instead of a file name.
1479
(Thanks to Mike Yan for this suggestion.)
1480
- Updated the top-level Makefile to build the lower-level directories using
1481
"$(MAKE)" rather than "make". This allows a command other than "make"
1482
(e.g., "gmake") to be used. (Thanks to Sergio.Gelato for this fix.)
1483
- Minor changes to (apparently) make Sun's C++ compiler happy.
1484
(Thanks to Sergio.Gelato for these.)
1485
- Some changes to "RTSPServer" to make it more tolerant of some strange, non-standard
1486
clients.
1487
- Support seeking within RTSP/RTP-streamed MPEG-1 or 2 Program Stream files.
1488
1489
2005.03.11:
1490
Updated "MPEG2TransportStreamFromPESSource" once again to better handle
1491
Program Streams that include a "program_stream_map".
1492
1493
2005.03.10:
1494
- Modified "BasicUDPSource" to make its OS socket receive buffer at least 50 kBytes
1495
(the same as we do for "MultiFramedRTPSource").
1496
1497
2005.03.07:
1498
- Updated "MPEG2TransportStreamFromPESSource" (and thus also the
1499
"testMPEG1or2ProgramToTransportStream" demo application) to handle MPEG
1500
Program Streams that include MPEG-4 Elementary Stream data. (For this to work,
1501
the Program Stream must include a "program_stream_map".)
1502
1503
2005.03.05:
1504
- Modifying "ReceivingInterfaceAddr" now works before receiving
1505
unicast streams. (Previously, it worked only when receiving multicast
1506
streams.) Also, added a new option "-I <interface-ip-address>"
1507
to "openRTSP", to allow the user to specify which interface is used.
1508
(Thanks to Luca Abeni for this patch.)
1509
- Fixed a "delete[]" vs "delete" bug in "MPEG4VideoStreamFramer",
1510
1511
2005.02.28:
1512
- Fixed a bug (that had been introduced in the 2005.01.07 version)
1513
in the MP3 frame<->ADU conversion code.
1514
1515
2005.02.25:
1516
- Fixed some minor memory leaks.
1517
- Made some more changes to prepare for RTSP server seeking within MPEG-1 or 2
1518
Program Stream files. (This is still not done yet.)
1519
1520
2005.02.14:
1521
- Changed the generation of "rtptime" in "RTPInfo:" RTSP headers to use
1522
%u instead of %d. (Thanks to Regis Feneon for noting this.)
1523
- Made some changes to prepare for RTSP server seeking within MPEG-1 or 2
1524
Program Stream files. (This is still not done yet.)
1525
1526
2005.02.09:
1527
- Updated "MultiFramedRTPSink" to allow for frame-specific special headers to
1528
appear before each frame in RTP packets. (This in addition to the (possible)
1529
special header that may appear at the start of the packet.) This functionality
1530
is added using a new virtual function "frameSpecificHeaderSize()" (that,
1531
by default, returns 0.) Thanks to Matt Romaine for this.
1532
- Added a new "BufferedPacket" virtual member function
1533
"getNextEnclosedFrameParameters()", which will (eventually) replace the existing
1534
"nextEnclosedFrameSize()" virtual member function. This (plus a corresponding
1535
change to "MultiFramedRTPSource") now makes it possible to give correct
1536
presentation times to multiple frames within incoming RTP packets.
1537
1538
2005.02.07:
1539
- The "MultiFramedRTPSink::setPacketSizes()" function now applies just to one
1540
specific "MultiFramedRTPSink" object; not to all such objects.
1541
- Added a new version of "RTSPServer::removeServerMediaSession()" that takes
1542
the (string) stream name - rather than the "serverMediaSession" object
1543
- as argument.
1544
1545
2005.01.29:
1546
- We now remove reception and transmission statistics records (from each
1547
"RTPSource" and "RTPSink", respectively), whenever each RTCP SSRC membership
1548
gets 'reaped'. We also added more information to "RTPTransmissionStats".
1549
(Thanks to WIS Technologies for funding this work.)
1550
- Some minor fixes to "JPEGVideoRTPSource". (Thanks to Sergey Khlutchin for
1551
reporting this.)
1552
- Made the "ServerMediaSession" constructor "protected", to allow for
1553
subclassing. (This was requested by Eric Peters.)
1554
- Updated "win32config.Borland" and modified some header files, so that the
1555
code can be built using Borland's "C++ Builder 5.0".
1556
(Thanks to David Wu for this suggestion.)
1557
- Added a "setPacketSizes()" function to "MultiFramedRTPSink" to make it
1558
possible to change the 'maximum' and 'preferred' size of outgoing
1559
RTP packets. (Thanks to Christian Gerstner for this suggestion.)
1560
1561
2005.01.24:
1562
- Some MIME-type parameters in SDP "a=fmtp:" lines are Boolean, taking only values
1563
0 or 1. Sometimes these parameters are set (to 1), without an explicit "=1"
1564
being in the SDP "a=fmtp:" line. (This is not legal, but it sometimes occurs.)
1565
Our SDP parsing code (in "MediaSession.cpp") now checks for this.
1566
1567
2005.01.23:
1568
- More improvements to "AVIFileSink". MPEG-1, 2 or 4, JPEG and H.263 video is
1569
now supported, along with raw PCM or u-law audio. (However, audio is not
1570
yet working perfectly, and MPEG audio is currently not supported at all.)
1571
(Thanks to WIS Technologies for funding this work.)
1572
- Changed the (many) calls to "gettimeofday()" to pass NULL as the 'timezone'
1573
parameter, because this isn't used.
1574
1575
2005.01.13:
1576
- Fixed a bug in "liveMedia/OnDemandServerMediaSubsession.cpp" that was reportedly
1577
causing crashes on some systems. (Thanks to Brian Wang for finding this.)
1578
- Updated "MPEG1or2VideoStreamDiscreteFramer" and
1579
"MPEG4VideoStreamDiscreteFramer" to set appropriate presentation
1580
timestamps for B-frames. (Unlike I and P-frames, B-frames' timestamps are
1581
not monotonically increasing.) (Thanks to WIS Technologies for funding this work.)
1582
1583
2005.01.07:
1584
- Fixed a bug in "JPEGVideoRTPSink" that was causing incorrect packets to
1585
be generated when streaming using non-standard JPEG quantization tables
1586
(which must be included in the RTP packets).
1587
- Updated the handling of incoming MP3 ADUs to allow for the possibility of
1588
receiving ADUs that contain 'ancillary data' at the end. (For example,
1589
ADUs for "mp3Pro" frames are like this.) Note, however, that our
1590
MP3 frame-to-ADU generating code currently doesn't include 'ancillary
1591
data' at the end of the generated MP3 ADUs. This will need to be fixed
1592
in order to be able to correctly *transmit* ADUs for "mp3Pro" frames.
1593
- More work on "AVIFileSink". Recording of MPEG-4 video-only files now works.
1594
1595
2004.12.29:
1596
- Added a new liveMedia 'sink' class - "AVIFileSink" - for writing an AVI-format
1597
file. Note: This is not fully working yet, so don't try using it yet!
1598
(Thanks to WIS Technologies for funding this work.)
1599
1600
2004.12.23:
1601
- Fixed a bug in the previous release (when receiving MPEG-2 Transport RTP streams).
1602
1603
2004.12.22:
1604
- Updated "MPEG4GenericBufferedPacket::nextEnclosedFrameSize() to (i) allow
1605
for "generic" mode, and (ii) properly check for the absence of an
1606
"AU Header section". (Thanks to Erick van Rijk for this suggestion.)
1607
- When receiving a MPEG-2 Transport Stream (either RTP *or* raw-UDP), pass it
1608
through a "MPEG2TransportStreamFramer", so that "durationInMicroseconds" is
1609
set appropriately, based on the stream's embedded PCR values.
1610
(Thanks to Dermot McGahon for this suggestion.)
1611
- Changed the "num_packets_lost" statistics line (printed by "openRTSP -Q")
1612
to format as an int rather than as an unsigned. This is in case this value
1613
is negative (which can happen if duplicate packets are received).
1614
(Thanks to Norbert Donath for noting this.)
1615
1616
2004.12.15:
1617
- Changed the RTSP servers in the various test programs to use port 8554
1618
instead of port 7070 for RTSP (as an alternative to the standard port
1619
554). It turns out that port 8554 is the official IANA-reserved port
1620
number for RTSP (alternative).
1621
- Changed "RTSPClient" to include the "Scale:" header if the scale is being changed
1622
to 1.0 from something else. (Thanks to Matt Romaine for this suggestion.)
1623
1624
2004.12.09:
1625
- Fixed a bug in the handling of "audio/X-MP3-DRAFT-00" RTP streams.
1626
(Thanks to Dhananjay Deshpande for noticing this.)
1627
1628
2004.12.07:
1629
- Updated "RTSPClient" to parse the "Scale:" header (if any) in a response to
1630
a "PLAY" command, and set a corresponding field in the "MediaSession" or
1631
"MediaSubsession" structure.
1632
1633
2004.12.06:
1634
- Fixed a minor bug in "BasicTaskScheduler::SingleStep()" that would be triggered
1635
if the (optional) "maxDelayTime" parameter were unusually large.
1636
- The "RTSPServer" implementation of RTP/RTC-over-TCP streaming will now work even
1637
if the client's RTSP "SETUP" command doesn't include an "interleaved=" field.
1638
1639
2004.11.30:
1640
- Added "RTSPServer" support for the RTSP "Scale:" header, which is used to
1641
implement 'trick play': fast forward and reverse play. The actual implementation
1642
of these depends on the media type; it is currently implemented for MPEG-1 or 2
1643
(including MP3) audio (forward play only), and for WAV (PCM) audio (forward or
1644
reverse play).
1645
(Thanks to Sony Corporation for funding this work.)
1646
1647
2004.11.26:
1648
- Improved "H263plusVideoRTPSource" to better recognize which packets begin
1649
a frame. (This should improve its performance on lossy networks.)
1650
- Improved the parsing of MPEG-1 or 2 audio streams to ignore more bogus
1651
'syncwords'.
1652
- We now look for the 'Xing' VBR Table of Contents, and use this (if present)
1653
to implement seeking within VBR files.
1654
- Updated "ADUFromMP3Source" to allow the internal data buffers to be flushed
1655
(e.g., if there is a discontinuity in the MP3 input data).
1656
- When streaming a seekable MPEG audio stream on demand, insert filters that
1657
convert the input stream to ADU format, and then back to MP3. This allows
1658
us to seek within the stream without being tripped up by the MP3
1659
'bit reservoir' (back-pointer).
1660
1661
2004.11.20:
1662
- Fixed a bug in "MediaSession::initiateByMediaType()". (It was not allowing
1663
for the possibility that a subsession had already been initiated.)
1664
1665
2004.11.19:
1666
- For consistency (and ease of comparison), the "MIMEtype()"
1667
codec name substring for each "MediaSource" subsession is in upper case.
1668
1669
2004.11.18:
1670
- Added an optional "scale" parameter to the "RTSPClient" "play...()"
1671
methods, to allow a client to specify fast forward or rewind 'trick play'.
1672
(Thanks to Dermot McGahon for this suggestion.)
1673
1674
2004.11.16:
1675
- Fixed a bug in the way that "QuickTimeFileSink" records the duration of
1676
multi-channel audio tracks in ".mov" or ".mp4"-format files.
1677
(Thanks to Orban/CRL Inc. for funding this work.)
1678
1679
2004.11.11a:
1680
- Another minor update to "RTSPClient".
1681
1682
2004.11.11:
1683
- Updated the "RTSPServer" implementation to handle the case where a "PLAY"
1684
request does not contain a "Range:" header. (Suggestion by Brian Wang.)
1685
- Reinstated the "MPEG4LATMAudioRTPSource" fix from version "2004.08.24".
1686
(It had accidentally gotten deleted.)
1687
- Included Dermot McGahon's patch to "RTSPClient" to support the bogus
1688
non-standard 'Kasenna' variant of RTSP.
1689
1690
2004.11.09a:
1691
- Fixed the previous revision (RTSP seeking support) to work properly with VLC.
1692
- Fixed a bug that was causing receivers of SSM streams to not receive RTCP packets. (Thanks to Alessandro Gaiarin for reporting this.)
1693
1694
2004.11.09:
1695
- Added support for seeking within streams. This currently works only for
1696
WAV audio file streams, and MPEG audio (include MP3) file sources.
1697
(However, it doesn't yet work properly for VBR MP3 files; this will get fixed.
1698
Also, it doesn't yet work properly with VLC.)
1699
(Thanks to Sony Corporation for funding this work.)
1700
1701
2004.11.06:
1702
- Improved the way that we specify output buffers for "RTPSink" objects.
1703
We now do this using a "maxSize" static member variable (instead of
1704
using a 'number of packets' variable as we did before). We also limit
1705
the size of the output buffer used for RTCP packets, to save space.
1706
- When streaming a MPEG Transport Stream, don't set the RTP 'M' bit.
1707
- When recording a ".mov" or ".mp4" file using "QuickTimeFileSink.cpp",
1708
we no longer fill in the "width" and "height" fields for audio tracks.
1709
1710
2004.11.04:
1711
- When streaming MPEG audio or WAV audio files on demand, we now return the
1712
correct file duration (in the RTSP "Range:" header and the SDP "a=range:"
1713
attribute), so that media players will report the correct stream duration.
1714
(Thanks to Sony Corporation for funding this work.)
1715
- In "MultiFramedRTPSink", we now wait until we receive the first data before
1716
initializing "fNextSendTime" with the current wall-clock time.
1717
(Thanks to Eric Peters for suggesting this.)
1718
1719
2004.11.02:
1720
- Updated the RTSP "Range:" header (in a "PLAY" response) and the SDP "a=range:"
1721
attribute to support streaming from sources with finite durations.
1722
(Such sources can support seeking via RTSP.) The "ServerMediaSubsession"
1723
class now has a "duration()" virtual function. (In the future,
1724
"FileServerMediaSubsession" subclasses will redefine this, so that seeking
1725
within the file will work.)
1726
(Thanks to Sony Corporation for funding this work.)
1727
1728
2004.11.01:
1729
- Added support to "RTSPClient" for streaming RTSP/RTP over HTTP, using the technique
1730
described in Apple's document: <http://developer.apple.com/documentation/QuickTime/
1731
QTSS/Concepts/chapter_2_section_14.html>.
1732
This can be used for streaming from a Darwin Streaming Server from behind a
1733
HTTP-only firewall. (Note that our own RTSP server implementation doesn't yet
1734
implement RTSP-over-HTTP, but this is on the 'to do' list.)
1735
(Thanks to Orban/CRL Inc. and WIS Technologies for funding this work.)
1736
1737
2004.10.28a:
1738
- Fixed "OnDemandServerMediaSubsession" so that "PAUSE"/"PLAY" works properly on
1739
unicast streaming from files.
1740
1741
2004.10.28:
1742
- Removed (perhaps temporarily) the "rtptime=" parameter from the "RTP-Info:" header
1743
that's returned in response to the RTSP "PLAY" command. It appears that this may
1744
be messing up A/V sync in QuickTime Player.
1745
1746
2004.10.26:
1747
- Updated "JPEGVideoRTPSink" (and "JPEGVideoSource") to allow for the
1748
possibility of sending custom quantiziation tables in JPEG/RTP packets.
1749
- Fixed some compile warnings about unused named parameters. (Thanks to
1750
Thiago Correa for these suggestions.)
1751
1752
2004.10.22:
1753
- Added a new "MPEG1or2VideoStreamDiscreteFramer" class, similar to the existing
1754
"MPEG4VideoStreamDiscreteFramer".
1755
1756
2004.10.21:
1757
- Modified the order of SDP lines generated by a RTSP server
1758
(in "ServerMediaSession.cpp") to correspond to the exact order specified by
1759
the SDP RFC. JMIF clients are supposedly anal retentive about this.
1760
(Thanks to Fabrice Aeschbacher for noticing this.)
1761
1762
2004.10.19:
1763
- Updated "MPEG2TransportStreamFramer" to properly handle input data that
1764
doesn't begin with a 'sync' byte (0x47).
1765
1766
2004.10.18:
1767
- Added a new "removeServerMediaSession()" member function to "RTSPServer".
1768
- Updated the implementation of the RTSPServer "RTPInfo:" header to include a
1769
"rtptime=" field.
1770
- Improved the "WindowsAudioInputDevice" trick for making the microphone the
1771
first-listed device. (Thanks to Syncanph Xie for this suggestion.)
1772
1773
2004.10.14:
1774
- Added a new argument "-4" to "openRTSP" (with corresponding updates to
1775
"QuickTimeFileSink"), to generate a "MP4"-format file. (Currently, this
1776
works for MPEG-4 audio only.)
1777
(Thanks to Orban/CRL Inc. for funding this work.)
1778
1779
2004.10.13:
1780
- Fixed a typo that was causing the Windows version not to build.
1781
(Thanks to Thiago Correa for noticing this.)
1782
1783
2004.10.11:
1784
- Updates to "RTSPServer":
1785
- Include a "Date:" header in each response
1786
- Include a "Range:" header in each "PLAY" response.
1787
- Include "RTP-Info:" header in each "PLAY" response.
1788
- Made "SimpleRTPSink" more idiot-proof.
1789
1790
2004.10.07:
1791
- Improved the parser in "MPEG4VideoStreamFramer" to be more tolerant of
1792
bad/unexpected data.
1793
- Moved the code for opening input files by name (which includes a special-case
1794
hack for "stdin") to a single common file - "InputFile.cpp" - to get rid of
1795
duplicated code.
1796
1797
2004.10.04:
1798
- Fixed "UserAuthenticationDatabase::addUserRecord()" (in "RTSPServer.cpp") to
1799
make a copy of the "password" string, before adding it to the hash table.
1800
(The hash table already makes a copy of the "username" (key) string.)
1801
1802
2004.10.03:
1803
- Added support for receiving raw UDP streams (in addition to normal RTP/UDP streams)
1804
(Thanks to Derk-Jan Hartman)
1805
1806
2004.09.30:
1807
- Updated the RTSP server "UserAuthenticationDatabase" to (i) allow for it to
1808
be subclassed, and (ii) allow it to store passwords that are really
1809
md5(<username>:<realm>:<password>)
1810
1811
2004.09.24:
1812
Added support for access control (using digest authentication) to "RTSPServer".
1813
Also, added example code to the "testOnDemandRTSPServer" test program to illustrate
1814
how to use this. (Thanks to Orban/CRL Inc. and WIS Technologies for
1815
funding this work.)
1816
1817
2004.09.22:
1818
- Moved the digest authentication support out of "RTSPClient.cpp"
1819
(and "SIPClient.cpp") into a new file: "DigestAuthentication.cpp". There's also
1820
a corresponding new header file: "DigestAuthentication.hh". This is in preparation
1821
for adding digest authentication support to our RTSP server implementation also.
1822
1823
2004.09.20:
1824
- More improvements to the multi-unicast streaming support (from a single input
1825
source). RTP-over-TCP streaming is now supported in this case. Updated
1826
"testOnDemandRTSPServer" to add a variable "reuseFirstSource" (default: False)
1827
that can be used to implement this.
1828
1829
2004.09.09:
1830
- Made a minor improvement to the multi-unicast streaming support.
1831
1832
2004.09.08:
1833
- Added optional "author" and "copyright" parameters to "DarwinInjector::setDestination()".
1834
- Added an optional "miscSDPLines" parameter to "ServerMediaSession::createNew()",
1835
to allow the caller to add extra SDP lines to the session description.
1836
- Fixed a minor bug in the media tables reclamation code.
1837
- Added still more support for multi-unicast RTSP/RTP streaming from a
1838
single input source. (Thanks to Orban/CRL, Inc. and WIS Technologies for funding
1839
this work.)
1840
1841
2004.09.05:
1842
- We now more gracefully handle malformed "m=" SDP lines. (Thanks to
1843
Derk-Jan Hartman for noticing this problem.)
1844
- In "RTSPClient", we now make the "CSeq" number a static variable, to avoid
1845
potential problems if we connect to the same server with the same URL
1846
more than once. (Thanks to Keith Gurganus for the suggestion.)
1847
- Modified "RTSPServer" to use the destination interface IP address in
1848
its "rtsp://" URL.
1849
1850
2004.09.02:
1851
- Modified "GroupsockHelper.cpp" to allegedly support building for WinCE.
1852
1853
2004.08.26:
1854
- Fixed a bug that could cause "AMRAudioRTPSource"s to not get reclaimed.
1855
(Thanks to Chenglim Ear for reporting this.)
1856
- More support for multi-unicast RTSP/RTP streaming from a single input source.
1857
1858
2004.08.24:
1859
- Modified "LATMAudioRTPSource" to include the initial data length field
1860
in the data that's delivered to a client. (A decoder was needing to see this.)
1861
- Added a new "MPEG4VideoStreamDiscreteFramer" class, as a (more efficient)
1862
alternative to "MPEG4VideoStreamFramer" when the input source is a sequence of
1863
discrete MPEG-4 frames, rather than a byte stream.
1864
- Fixed a minor bug in "Media.cpp". (Thanks to Thiago Correa.)
1865
- Added more support for multi-unicast RTSP/RTP streaming from a single input
1866
source. (This now working, except for TCP connections - to be completed.)
1867
1868
2004.08.17:
1869
- Made the parsing of MPEG-1 or 2 video more robust, in case a Video Sequence Header
1870
doesn't appear exactly where it should.
1871
- Added initial support for multi-unicast RTSP/RTP streaming from a single input
1872
source. (This isn't fully working yet - more support needs to be added.)
1873
1874
2004.08.13:
1875
- Added a "numChannels" parameter to "MPEG4GenericRTPSink" (optional)
1876
and "MPEG4LATMAudioRTPSink".
1877
1878
2004.08.12:
1879
- Fixed a couple of small memory leaks (noticed by Gabriel Bouvigne).
1880
1881
2004.07.31:
1882
- Added support for MPEG-4 LATM audio RTP streaming. (MPEG-4 LATM audio RTP
1883
*receiving* had already been implemented.) (Thanks to Orban/CRL, Inc. for
1884
funding this work.)
1885
1886
2004.07.27:
1887
- Updated the MPEG Program-to-Transport Stream conversion mechanism to set the
1888
correct stream tags depending on whether the input data is MPEG-1 or 2.
1889
1890
2004.07.23:
1891
- Added a "-O" (upper-case letter 'oh') option to "openRTSP". This tells the
1892
program to not send an initial "OPTIONS" request prior to "DESCRIBE".
1893
- Modified "BasicTaskScheduler" to better allow subclassing.
1894
- Added an optional "maximum delay time" option to
1895
"BasicTaskScheduler0::SingleStep()". This allows subclasses to impose a
1896
limit on how long "select()" can delay, in case it wants to also do polling.
1897
1898
2004.07.22:
1899
- Fixed a serious bug that was causing some MPEG Program Stream files to be parsed
1900
incorrectly - especially if they have non-MPEG header data at the front.
1901
- Modified the way in which "Medium" objects are reclaimed, to overcome an
1902
obscure bug.
1903
1904
2004.07.20:
1905
- Added a comment to "DeviceSource.cpp" to clarify the purpose of "fTo", because
1906
several people have gotten this wrong.
1907
- Made ~BasicUsageEnvironment protected (just like ~UsageEnvironment)
1908
- Fixed "samplingFrequencyFromAudioSpecificConfig()" to remove a memory leak.
1909
1910
2004.07.16:
1911
- Fixed a bug in "AMRAudioRTPSource", in the way that it handled input RTP packets
1912
that contained more than one AMR frame.
1913
(Thanks to Gabriel Bouvigne for reporting this problem.)
1914
- We no automatically reclaim the memory that was allocated for the "UsageEnvironment"
1915
"liveMediaPriv" and "groupsockPriv" structures, once their tables become empty.
1916
1917
2004.07.14:
1918
- Updated "QuickTimeFileSink's" MPEG-4 audio recording mechanism again, this time
1919
to support aacPlus as well as regular AAC.
1920
1921
2004.07.13:
1922
- Updated "QuickTimeFileSink" to support recording MPEG-4 audio (including
1923
hint tracks).
1924
- Modified "MPEG4VideoStreamFramer" to allow simplified subclasses that take
1925
discrete frames as input (and therefore don't need a full parser).
1926
1927
2004.07.07:
1928
- Added the (rather bogus) "a=x-qt-text-nam:" and "a=x-qt-text-inf:" attributes
1929
to the SDP descriptions delivered by "RTSPServer" (in response to a "DESCRIBE"
1930
operation). These attributes get the same strings as the "s=" and "i=" lines
1931
(respectively). However, QuickTime Player doesn't do anything with those lines,
1932
but does recognize the "a=x-qt-*" lines.
1933
1934
2004.07.06:
1935
- Modified the code so that it will build for WinCE.
1936
(Thanks to Gabriel Bouvigne for these changes.)
1937
1938
2004.07.02:
1939
- Fixed a bug in HashTable::RemoveNext() (noted by Greg Bothe)
1940
- Added partial support for recording MPEG-4 audio in "QuickTimeFileSink".
1941
(Hinting is not yet working properly for this media type.)
1942
- Added an option to "MPEG1or2AudioStreamFramer" to allow its presentation times
1943
to be resynchronized by its input source.
1944
1945
2004.06.18:
1946
- Fixed a bug in "MPEG1or2AudioStreamFramer" (in the way it was checking for
1947
syncwords at the start of each frame).
1948
- Updated the "MPEGVideoStreamFramer" (base) class to report "fNumTruncatedBytes".
1949
- Increased "OutPacketBuffer::numPacketsLimit" from 20 to 30.
1950
1951
2004.06.17:
1952
- Another improvement to the "MPEG1or2Demux" parsing code.
1953
- Updated "QuickTimeFileSink" to support recording MPEG-4 video tracks into
1954
".mov" files. (There's also basic support for recording MPEG-4 audio, but
1955
this isn't quite working yet.)
1956
1957
2004.06.14:
1958
- Updated "MPEG1or2Demux" to make the checking for a PACK_START_CODE more
1959
robust if it's not immediately present where we expect to see it.
1960
- Fixed a bug in "JPEGVideoRTPSource" that could cause a problem on
1961
64-bit architectures.
1962
(Thanks to Andrey Filippov for noticing this.)
1963
1964
2004.06.11:
1965
- Removed an error from a error message in StreamParser.
1966
1967
2004.06.09:
1968
- Updated the implementation of the aggregate and non-aggregate RTSP "PLAY"
1969
operations to not include a "Range:" header if the 'start' parameter is < 0.
1970
(This is used when resuming from a "PAUSE", for example.)
1971
Also, removed an unnecessary "Range:" header from the "PAUSE" command.
1972
(Thanks to Gabriel Bouvigne for this suggestion.)
1973
- Reimplemented "MultiFramedRTPSource::doGetNextFrame1()" to use iteration
1974
rather than recursion, in the case where a large frame is fragmented over
1975
multiple incoming RTP packets. This avoids the possibility of stack overflow
1976
occurring if there are very large fragmented frames in the input data.
1977
1978
2004.06.07:
1979
- Added optional "start" and "end" parameters to the aggregate "PLAY" operation
1980
in "RTSPClient". (We had already done this for the non-aggregate "PLAY" operation.)
1981
- Made the input banks buffers in "StreamParser" heap-allocated, rather than making
1982
them member variables. This avoids any potential compiler problems with having
1983
such large structures as member variables.
1984
1985
2004.06.03:
1986
- Added the new 'liveMedia' class "MPEG2TransportFileServerMediaSubsession", for
1987
unicast on-demand streaming of MPEG-2 Transport Stream files.
1988
- Added the new test programs "testMPEG2TransportStreamer" and
1989
"testMPEG1or2ProgramToTransportStream", and added support for Transport File
1990
streaming to "testOnDemandRTSPServer".
1991
(Thanks to DVAgroup Inc. for funding this work.)
1992
1993
2004.06.02:
1994
- Fixed "MediaSession" to no longer apply the normal RTP 'M' bit rule
1995
when processing incoming "video/MP2T" (or "video/MP1S" or "video/MP2P")
1996
streams. (For such streams, the 'M' bit does not mean 'end of frame'.)
1997
1998
2004.06.01:
1999
- Updated "RTSPClient" to handle "Session:" headers that have a trailing
2000
";timeout=" part. (Thanks to Gabriel Bouvigne for suggesting this.)
2001
2002
2004.05.31:
2003
- We now handle SDP "m=" lines with an optional <number-or-ports> field
2004
(although we don't actually do anything with this value). Thanks to
2005
Derk-Jan Hartman for this suggestion.
2006
2007
2004.05.29a:
2008
- Made a correction to the previous change.
2009
2010
2004.05.29:
2011
- Added a call to "DarwinInjector" to set the TCP socket's send buffer to 100 kBytes.
2012
2013
2004.05.28:
2014
- Renamed some variables in "MP3Internals.cpp" (and made them static) to
2015
overcome a name conflict seen by the VLC developers. (Thanks to
2016
Derk-Jan Hartman for pointing this out.)
2017
2018
2004.05.26:
2019
- Fixed a bug (apparently introduced with recent header file changes) that
2020
could cause MP3 files to not be read correctly on Windows. (In particular,
2021
this could cause "testMP3Streamer" to not work correctly on Windows.)
2022
Thanks to David Skiba for the bug report.
2023
2024
2004.05.24:
2025
- Added a new member function "lastReceivedSSRC()" to "RTPSource". This makes it
2026
possible for a receiver to demultiplex incoming RTP data based on SSRC.
2027
(Later this functionality should perhaps be added to "(MultiFramed)RTPSource"
2028
instead.)
2029
- More updates to "DarwinInjector".
2030
2031
2004.05.19:
2032
- Another update to "openRTSP" for a customer job.
2033
2034
2004.05.17:
2035
- Added a new test program "testMPEG4VideoToDarwin.cpp" that is similar
2036
to "testMPEG4VideoStreamer", except that instead of transmitting the
2037
video RTP/RTCP packets via multicast, it transmits them - via a RTSP TCP
2038
connection - to a remote Darwin Streaming Server.
2039
2040
2004.05.12:
2041
- Added a new "liveMedia" class - "DarwinInjector" - that can be used to send an
2042
audio and/or video RTP/RTCP stream to a remote Apple 'Darwin' (aka. QuickTime)
2043
Streaming Server, for playing by (potentially multiple) RTSP clients.
2044
- Added a new test program "testMPEG1or2AudioVideoToDarwin.cpp" that is similar
2045
to "testMPEG1or2AudioVideoStreamer", except that instead of transmitting the
2046
audio/video RTP/RTCP packets via multicast, it transmits them - via a RTSP TCP
2047
connection - to a remote Darwin Streaming Server.
2048
2049
2004.05.09:
2050
- Removed a line of junk that had erroneously been left at the start of Makefile.tail.
2051
- The "testRelay" test program has been reprogrammed in the usual liveMedia
2052
'source->sink' style.
2053
2054
2004.05.07:
2055
- Another update to RTSPClient for a customer job.
2056
2057
2004.05.04:
2058
- Added an #include to "BasicUDPSink.cpp" to prevent a compilation problem on
2059
some platforms.
2060
2061
2004.05.02:
2062
- Some updates to RTSPClient and openRTSP for a customer job.
2063
2064
2004.04.27:
2065
- Fixed the round-trip time estimation routine in "RTPSink" to allow for
2066
the possibility of the computed round-trip time being negative. This can
2067
happen if there is clock drift between the sender and receiver, and if the
2068
actual round-trip time was quite small. If this happens, the returned
2069
round-trip time value is zero.
2070
(Thanks to Dixon Siu for alerting us to this issue.)
2071
2072
2004.04.23:
2073
- Updated some #ifdef's so that the code will compile with "mingw" on Windows.
2074
(Thanks to Joey Parrish for this.)
2075
- Added a "BasicUDPSink" class to "liveMedia", for UDP streaming without RTP.
2076
- Added new 'filter' classes to "liveMedia" for
2077
- converting MPEG Program Streams to Transport Streams.
2078
- 'framing' MPEG Transport Streams to return the 'duration' of each Transport
2079
packet (i.e., the inter-packet time gap).
2080
2081
2004.04.09:
2082
- Fixed a byte-ordering bug in the code for streaming from WAV audio files
2083
(used in "testWAVAudioStreamer" and "testOnDemandRTSPServer"). We were converting
2084
16-bit samples from host to network order before streaming them. That was wrong,
2085
because audio samples are always stored in WAV files in little-endian order.
2086
The correct thing to do was to convert from little-endian to big-endian order.
2087
2088
2004.03.27:
2089
- Fixed a minor bug in the top-level Makefile. (Thanks to Matteo Nastasi for
2090
noting this.)
2091
2092
2004.03.27:
2093
- Modified "H261VideoRTPSource" so that it returns individual packet payloads to
2094
the caller, rather than waiting to form complete frames. Also, added a member
2095
function "lastSpecialHeader()" that returns the 4-byte special header for the
2096
most recently-read payload.
2097
2098
2004.03.23:
2099
- Added support for unicast RTSP/RTP streaming from VOB files, and added an example
2100
of this to "testOnDemandRTSPServer".
2101
2102
2004.03.17:
2103
- Made a series of minor bug fixes and improvements suggested by Sony.
2104
2105
2004.03.15:
2106
- Fixed a bug in "OnDemandServerMediaSubsession" (the RTCP instance was being
2107
deleted at the wrong time). (Thanks to Clark Taylor for noticing this.)
2108
- Minor modifications to the 2004.02.26 "RTPSink" changes.
2109
- Updated the "AMRAudioRTPSource" implementation to support 'bandwidth-efficient'
2110
mode. (Warning: This has not yet been tested.)
2111
2112
2004.03.12:
2113
- Updated the "RTSPClient" class to support an aggregate "PAUSE" operation.
2114
2115
2004.03.11:
2116
- Added an implementation of AMR audio RTP receiving ("AMRAudioRTPSource"), to
2117
match the existing"AMRAudioRTPSink". Also, added a new class "AMRAudioFileSink"
2118
(a subclass of "FileSink") that outputs an AMR audio input stream to a file,
2119
including the file 'magic number' and frame headers. "openRTSP" was also updated
2120
to output received AMR audio streams using "AMRAudioFileSink"s.
2121
(Thanks to SIGOS Systemintegration GmbH for funding this work.)
2122
- Cleaned up the "RTPSource" changes that were made in version 2004.02.26.
2123
2124
2004.03.05:
2125
- Updated the "RTSPServer" implementation to properly handle aggregate
2126
operations for which the URL ends with a "/". Some clients, such as
2127
"gmp4player" do this.
2128
2129
2004.03.03a:
2130
- Fixed a bug in "MultiFramedRTPSource.cpp" where we were not properly
2131
skipping over "contributing source" fields, if they were present in the
2132
RTP header. (Thanks to Phillip Bruce for noticing this.)
2133
2134
2004.03.03:
2135
- Fixed the "testMP3Streamer" test program to keep the RTP sink, RTCP instance,
2136
Groupsocks, and RTSP server (if used) open across all iterations of the loop.
2137
(Thanks to Frank Xia for noticing this problem.)
2138
2139
2004.03.02a:
2140
- The previous version accidentally had the built-in RTSP server enabled in
2141
"testMP3Streamer". It should be disabled by default.
2142
2143
2004.03.02:
2144
- Fixed a few potential errors that were found by running "valgrind" on some of
2145
the test programs (on Linux).
2146
2147
2004.03.01:
2148
- Added two new options to "openRTSP" (and "playSIP"):
2149
"-E <max-inter-packet-gap-time>"
2150
Tells the program to close the stream if no new packets have been
2151
received in at least <max-inter-packet-gap-time> seconds.
2152
"-B <input-socket-buffer-size>"
2153
Tells the program to set the network socket input buffer (for each
2154
input stream) to <input-socket-buffer-size> bytes. (This can be useful
2155
when testing QOS for different input buffer sizes.)
2156
(Thanks to SIGOS Systemintegration GmbH for funding this work.)
2157
2158
2004.02.26:
2159
- Added - to "RTPSink" - a database of statistics from incoming RTCP
2160
"Reception Report" (RR) packets. (This mirrors the similar database
2161
for RTCP SR packets that was already part of "RTPSource".) (Thanks to
2162
Clark Taylor for contributing this code.)
2163
2164
2004.02.23:
2165
- Fixed a bug in "MP3ADUinterleaving.cpp" that was causing frame durations
2166
to not be set properly when handling interleaved MP3 ADUs.
2167
2168
2004.02.20a:
2169
- Corrected a typo in the previous "#ifdef"s
2170
2171
2004.02.20:
2172
- Added "#ifdef"s to the two files that #include <strstream.h>, so that they
2173
will compile OK with GCC v3.*. (Thanks to Goetz Waschk for this.)
2174
- Changed the stream parser debugging statements to make it clear that the
2175
use of C++ language exceptions by the stream parsing code is normal, and
2176
is not an error.
2177
2178
2004.02.19:
2179
- Updated the "RTSPServer" implementation to support RTP-over-TCP streaming
2180
(if requested by the client).
2181
2182
2004.02.13:
2183
- Changed the implementation of the "BasicUsageEnvironment" "operator<<"
2184
member functions so that they use "fprintf(stderr, ..." rather than
2185
"cerr << ...". People compiling in some environments were getting
2186
complaints about "cerr" being undefined (presumably because the right
2187
#include files weren't being found). However, everyone should have
2188
"stdio.h". (Thanks to Clark Taylor for this suggestion.)
2189
- Changed the "genMakefiles" script to complain if the user tries to
2190
run it without an "<os-target"> parameter.
2191
2192
2004.02.09:
2193
- Updated "RTSPServer" once again - this time to ensure that each incoming request
2194
is read completely (i.e., up until the trailing <CR><LF><CR><LF>).
2195
(Thanks to Regis Feneon for helping to fix this.)
2196
- Added a new "WAVAudioFileServerMediaSubsession" class to support on-demand
2197
streaming from WAV audio files. Also, updated the "testOnDemandRTSPServer"
2198
test program to illustrate this.
2199
2200
2004.02.05:
2201
- Updated the "WindowsAudioInputDevice" project to build two different versions
2202
of the library: One that uses Windows' built-in mixer; another that doesn't.
2203
2204
2004.02.04:
2205
- Fixed an obscure bug in "MPEG4ESVideoRTPSink" that could (very rarely)
2206
cause incorrect RTP timestamps to be set for the last fragmented packet
2207
of large MPEG-4 frames. This could cause QuickTime Player's video playback
2208
to freeze.
2209
2210
2004.02.03:
2211
- Added new "liveMedia" classes "MPEG1or2FileServerDemux" and
2212
"MPEG1or2DemuxedServerMediaSubsession" for supporting on-demand RTSP/RTP
2213
streaming of MPEG-1 or 2 Program Stream files. Also, updated the
2214
"testOnDemandRTSPServer" test program to support streaming of such
2215
a file.
2216
- We no longer set SO_REUSEPORT for stream (TCP) sockets, because it usually
2217
doesn't make sense to share TCP ports. (As a side effect, this means that it
2218
will no longer be possible to run more than one RTSP server (using the same
2219
TCP port) simultaneously on the same computer - something that should never have
2220
been possible in the first place.)
2221
- Fixed a minor RTSP server bug that was causing incorrect "destination"s to be set
2222
(for multicast streams) in the "SETUP" response "Transport:" header.
2223
2224
2004.01.28:
2225
- Yet another bug fix to "MPEG4VideoStreamFramer", to properly handle the
2226
case where MPEG-4 "GOV" headers don't occur on exact 'second' boundaries.
2227
(Thanks to Michael Niedermayer (via Michael Hess) for clarifying this.)
2228
2229
2004.01.27:
2230
- Fixed a bug in the previously added (but normally "#ifdef"d out)
2231
debugging code in "MultiFramedRTPSource.cpp".
2232
- Made a fix to the (normally "#ifdef"d out) debugging code in
2233
"AC3AudioStreamFramer.cpp". (Thanks to Yigal for noticing this.)
2234
2235
2004.01.24:
2236
- Changed "openRTSP" to use 20 kByte "FileSink" receive buffers by default,
2237
instead of 10 kBytes. (Some frames in MPEG-4 streams were exceeding the
2238
previous limit.)
2239
- Added code to "MultiFramedRTPSource.cpp" to easily let the developer
2240
simulate packet loss.
2241
2242
2004.01.23:
2243
- Changed "RTSPServer" to include a "Content-Base:" header in "DESCRIBE"
2244
responses. This overcomes a bug in QuickTime Player, which sends incorrect
2245
"SETUP" URLs otherwise.
2246
- Fixed a bug in "MPEG4VideoStreamFramer" that was causing some frames
2247
to erroneously be given a duration of 0.
2248
2249
2004.01.22:
2250
- Made another improvement to the "RTSPServer" implementation. It once again
2251
properly handles streams without a stream name (i.e., where the "streamName"
2252
parameter to "ServerMediaSession::createNew()" was NULL.
2253
- Updated the (little-used) "ByteStreamMultiFileSource" class to take
2254
"preferredFrameSize" and "playTimePerFrame" parameters, just like
2255
"ByteStreamFileSource". Also added a member function to ask whether
2256
a new file has just been read from.
2257
2258
2004.01.21:
2259
- Made several improvements/bugfixes to the "RTSPServer" implementation:
2260
- Worked around an apparent bug in QuickTime Player: It sometimes
2261
doesn't include a proper URL in RTSP "SETUP" requests.
2262
- Corrected the 'frame' (really tick) rate and frame duration that
2263
are computed for 'fixed_vop_rate' MPEG-4 video streams.
2264
- Compensated for some buggy MPEG-4 video streams that don't set
2265
timestamp information properly.
2266
- MPEG-4 video end codes will now be included in the outgoing RTP stream,
2267
and received properly by RTSP clients.
2268
- Fixed "RTSPClient" to be more tolerant of RTSP "Transport:" headers that
2269
contain more than one successive ';' character. (Darwin Streaming Server
2270
sometimes does this.)
2271
2272
2004.01.19:
2273
- Changed "RTSPServer" to not create per-session state when handling
2274
"DESCRIBE", but instead to wait until "SETUP". This fixes a problem
2275
that was causing the "VLC" media player to fail to work with our
2276
"RTSPServer" implementation, because VLC uses one RTSP TCP connection
2277
to do the "DESCRIBE", and then another to do "SETUP" and "PLAY".
2278
(Thanks to Emmanuel Dufour for pointing this out.)
2279
- Updated "MPEG4VideoStreamFramer" to include the VIDEO_SEQUENCE_END_CODE
2280
in the output stream if it sees it in the input.
2281
2282
2004.01.10:
2283
- Fixed the "RTSPServer" implementation to properly return a "server_port" field
2284
in the RTSP "SETUP" response for unicast streams. Also, the server ports
2285
(RTP and RTCP) are now chosen separately, and will no longer be the same
2286
as the client ports if the client and server are running on the same machine.
2287
(That did not work on some Linux systems.)
2288
- Fixed a bug in "MP3ADU" that was causing frame durations to not be set properly
2289
when translating between MP3 frames and ADU frames.
2290
2291
2004.01.09:
2292
- Modified "RTSPClient" to handle embedded NULL characters in a SDP
2293
description. (These are not legal, but they have been seen in some cases.)
2294
2295
2004.01.06:
2296
- Modified the FramedSource 'after getting' function signature to take two new
2297
parameters: (1) The number of bytes (if any) that were truncated from the
2298
delivered data, and (2) The duration (in microseconds) of the delivered frame.
2299
For backwards compatibility with old code, the old 'after getting' function
2300
signature is still supported, but will be removed in some future version of
2301
the code. (The "getPlayTime()" function was also removed.)
2302
2303
2003.12.26:
2304
- Made "FramedFilter" objects implement the "stopPlaying()" function by
2305
also calling "stopPlaying()" on their source object.
2306
- Fixed an obscure bug in "RTSPClient".
2307
2308
2003.12.20:
2309
- Made the "video/H263-2000" MIME type use the same RTP payload format as
2310
"video/H263-1998". (Thanks to Norbert Doneth for suggesting this.)
2311
2312
2003.12.19:
2313
- Fixed a minor bug in "RTSPServer" (some allocated memory wasn't being
2314
freed properly). (Thanks to Konstantin Lunin for finding this.)
2315
2316
2003.12.16:
2317
- Added "-DSOCKLEN_T=socklen_t" to the "COMPILE_OPTS =" line in
2318
the file "config.solaris", so that the code will compile
2319
correctly for 64-bit Solaris systems.
2320
2321
2003.11.25:
2322
- Put some error checks back into "WindowsAudioInputDevice".
2323
2324
2003.11.21:
2325
- Some case-insensitive string comparisons weren't working properly in Windows; fixed.
2326
2327
2003.11.19:
2328
- Added a global Boolean variable to flag when RTP I/O over a TCP connection fails.
2329
This hack allows higher-level code to check for this.
2330
2331
2003.11.16:
2332
- Fixed "RTPInterface" to not infinite loop when trying to read from a TCP
2333
connection that has closed.
2334
- Modified "BasicTaskScheduler" to overcome a bug in Windows that sometimes
2335
causes "select()" to fail.
2336
2337
2003.11.13:
2338
- Made "WindowsAudioInputDevice" a bit more robust against broken audio drivers.
2339
2340
2003.11.06:
2341
- Modified "groupsock/inet.c" to allow the system-supplied "random()" and "srandom()"
2342
functions to be used instead of our own "our_..." implementation.
2343
This is done if USE_SYSTEM_RANDOM is defined (e.g., in the "config.*" file).
2344
2345
2003.11.06:
2346
- Modified the "MPEGVideoStreamParser" constructor, in response to a complaint
2347
that some compilers would choke on the old code.
2348
2349
2003.10.30:
2350
- Added a warning output message to "MultiFramedRTPSink::afterGettingFrame1()"
2351
whenever the input frame appears to exceed the maximum buffer size. This
2352
maximum buffer size can be increased by changing
2353
"OutPacketBuffer::numPacketsLimit".
2354
2355
2003.10.27:
2356
- Changed the "MultiFramedRTPSource" error message (added in 2003.10.04) to apply
2357
only to frame sizes > 1000, so that (e.g.) QCELP RTP sources don't trigger it.
2358
2359
2003.10.24:
2360
- Fixed the RTSP server implementation to put SDP lines in the correct order
2361
(as defined by the SDP speecification). Also, added "Cseq:" lines that were
2362
missing from "404" error responses. (Thanks to Bill May for noting these bugs.)
2363
- Improved the implementation of MPEG-4 video framing and streaming.
2364
2365
2003.10.08:
2366
- Fixed a bug in the previous "FileSink" update that was causing "openRTSP"
2367
to crash when recording a MPEG-4 video stream (using the "-m" option).
2368
(Thanks to Jiangzhou Scu for noticing this bug.)
2369
2370
2003.10.07:
2371
- Updated the "FileSink" class to take an optional Boolean parameter
2372
"oneFilePerFrame". If set, a separate file will be output for each
2373
incoming frame. The frame's presentation time is used as a
2374
file name suffix, to distinguish the files.
2375
- Added a new option "-m" to "openRTSP" (and "playSIP"). This option
2376
causes a separate file to be written for each frame (using the
2377
above-mentioned new feature of "FileSink").
2378
2379
2003.10.05:
2380
- Renamed the new openRTSP/playSIP "-S" option to "-b".
2381
2382
2003.10.04:
2383
- Added an error message to "MultiFramedRTPSource" to report when
2384
the client's receive buffer is too small for an incoming frame.
2385
(This could happen with large JPEG frames, for example.)
2386
- Updated the signature to "FileSink" to take an optional 'buffer size'
2387
parameter as argument. (The default value is 10000.)
2388
- Added a "-S <file-sink-buffer-size>" option to "openRTSP" and "playSIP".
2389
2390
2003.09.30:
2391
Improved the default implementation of
2392
"RTPSink::hasBeenSynchronizedUsingRTCP()" to more accurately report
2393
whether or not the most recently-delivered packet's presentation time
2394
was synchronized using RTCP SRs. (Thanks to Luca Abeni for pointing
2395
out the possibility of a problem with the old implementation.)
2396
2397
2003.09.25:
2398
Improved the support for unicast RTSP/RTP streaming. Also, added a new
2399
test program "testOnDemandRTSPServer" that demonstrates how to use this.
2400
2401
2003.09.19:
2402
- Added support for unicast streaming from a "RTSPServer".
2403
(A test program that demonstrates this will be available shortly.)
2404
(Thanks to TNO Fysisch en Elektronisch Laboratorium (Netherlands)
2405
for funding this work.)
2406
- Modified the "strDup()" function to return NULL (instead of crashing)
2407
if passed a NULL parameter.
2408
2409
2003.09.11:
2410
- Another improvement/bugfix to the "MultiFramedRTPSink"
2411
implementation.
2412
- Changed the implementation of "RTSPServer" and "ServerMediaSession"
2413
in preparation for implementing unicast streaming from RTSP servers.
2414
(This is something that's not ready yet, but close...)
2415
2416
2003.09.05:
2417
Fixed the implementation of "JPEGVideoRTPSource" so that it prepends
2418
a proper JFIF JPEG header to the start of each incoming JPEG frame.
2419
This means that programs such as "openRTSP" and "MPlayer" will now
2420
receive/play JPEG/RTP streams correctly.
2421
2422
2003.09.03:
2423
Improved the implementation of "MultiFramedRTPSink" to more efficiently
2424
handle the case where input frames get broken up into multiple outgoing
2425
RTP packets. We now eliminate an uncessary "memmove()" for each
2426
fragment. In particular, this should make MPEG-1 or 2 and motion-JPEG
2427
video streaming more efficient.
2428
2429
2003.09.01:
2430
- Added support for reading and streaming AMR audio files (as defined in
2431
RFC 3267). Also added a new test program "testAMRAudioStreamer".
2432
(Thanks to TNO Fysisch en Elektronisch Laboratorium (Netherlands) for
2433
funding this work.)
2434
2435
2003.08.28a:
2436
- When "openRTSP" writes out a recorded MPEG-4 Elementary Stream video file,
2437
it now writes SDP 'config' information to the front of the file beforehand.
2438
This 'config' information contains VOL etc. headers that can be useful
2439
for playback.
2440
2441
2003.08.28:
2442
- Added 'framer' and RTP sink classes for MPEG-4 Elementary Stream video.
2443
(Thanks to TNO Fysisch en Elektronisch Laboratorium (Netherlands) for
2444
funding this work.)
2445
- Added a new test program "testMPEG4VideoStreamer".
2446
- Fixed a bug with RTP-over-TCP reading that could cause a crash if the
2447
same TCP socket number gets reused for a later stream. Also, made this
2448
code more thread-safe.
2449
2450
2003.08.21:
2451
Renamed all of the MPEG-1 or 2 class and program names from "MPEG*" to
2452
"MPEG1or2*". This is to distinguish these from the classes and programs
2453
that use MPEG-4.
2454
2455
2003.08.19:
2456
Made the maximum buffer size in "MediaSink.cpp" a parameter that can be
2457
set (changed) at runtime. (Reset the default back to 20* packet size)
2458
2459
2003.08.18:
2460
- Fixed "JPEGVideoRTPSink" to use the standard RTP payload format code
2461
(26) for JPEG RTP streams.
2462
- Updated "MediaSink.cpp" to increase the maximum buffer size for incoming
2463
data. This makes it possible to stream large JPEG frames (which are
2464
fragmented over multiple outgoing RTP packets).
2465
2466
2003.08.16:
2467
- Added new classes "AudioRTPSink" and "VideoRTPSink" as parent classes
2468
of the various audio and video RTP sink classes, respectively.
2469
- Added a new "JPEGVideoRTPSink" class, and a "JPEGVideoSource" class
2470
that can be used as an abstract base class for particular JPEG sources.
2471
2472
2003.08.07:
2473
Minor change to "MediaSink".
2474
2475
2003.07.29:
2476
Updated "RTSPClient" to include a "tearDownMediaSession()" operation,
2477
in addition to "tearDownMediaSubsession(). "openRTSP" now uses just
2478
the "tearDownMediaSession()" operation. (Darwin Streaming Server was
2479
barfing with "tearDownMediaSubsession()"). Thanks to Edward Estabrook
2480
for suggesting this.
2481
2482
2003.07.27:
2483
Added a new "-F <fileName-prefix>" option to "openRTSP" (and "playSIP").
2484
This can be useful if you are running "openRTSP" several times,
2485
in the same directory, to play several different RTSP streams
2486
(e.g., from a script). (Thanks to Norbert Donath for this suggestion.)
2487
2488
2003.07.14:
2489
Updated the "WAVAudioFileSource" implementation (and the
2490
"testWAVAudioStreamer" test program) to better report any reason for
2491
a WAV file to be invalid.
2492
2493
2003.07.13:
2494
- Added new filter classes for converting between 16-bit PCM and
2495
8-bit u-law audio, and between host and network order for 16-bit values.
2496
(See "liveMedia/include/uLawAudioFilter.hh" for details.)
2497
- Added a new class "WAVAudioFileSource" for reading/processing
2498
WAV audio files.
2499
- Added a new test program "testWAVAudioStreamer" that reads a WAV
2500
audio file - "test.wav" - and streams it via multicast (using a built-in
2501
RTSP server).
2502
- Updated "MediaSession" to recognize "L8" and "L16" RTP audio streams
2503
(to be handled by "SimpleRTPSource").
2504
2505
2003.07.07:
2506
- Fixed a bug that would cause "vobStreamer" to crash if (incorrectly)
2507
run with no arguments.
2508
- Updated the "test*Streamer" test programs to print out the "rtsp://"
2509
URL of the built-in RTSP server (if it's enabled).
2510
2511
2003.07.01a:
2512
Updated the "WindowsAudioInputDevice" subdirectory to:
2513
- Change the name of the library from "WindowsAudioInputDevice.lib" to
2514
"libWindowsAudioInputDevice.lib".
2515
- Added a console test program - "showAudioInputPorts" - that lists
2516
the audio input ports that are currently available.
2517
2518
2003.07.01:
2519
Added a new subdirectory "WindowsAudioInputDevice", which is a
2520
Windows-specific implementation of the "AudioInputDevice" class.
2521
This can be used by Windows applications to read PCM audio from
2522
a sound card.
2523
2524
2003.06.28:
2525
Added an optional parameter (default, True) to "SimpleRTPSource"
2526
that says whether to use the RTP "M" (marker) bit to indicate the
2527
last (or only) fragment of a video frame. (Suggested by
2528
Cezar Plesca.)
2529
2530
2003.06.27:
2531
Added a "AudioDeviceSource" class to the "liveMedia" library.
2532
This class is a generic audio input device (such as a microphone
2533
or a sound card) - to be subclassed for specific OS platforms.
2534
2535
2003.06.26:
2536
- Updated the "RTSPServer" implementation to respond to "PAUSE"
2537
requests. (It doesnt actually pause the stream; just returns "OK".
2538
This makes QuickTime Player happier.)
2539
- Added a "-o" option to "openRTSP" (and modified "RTSPClient"
2540
accordingly). This option causes openRTSP to send an "OPTIONS" command
2541
to the server, and prints out the response.
2542
2543
2003.06.17:
2544
Added support for MPEG-4 generic RTP sinks. (Currently, only the
2545
"AAC-hbr" audio mode is supported, and only one AAC frame is packed
2546
into each outgoing RTP packet.)
2547
2548
2003.06.13:
2549
- Fixed a bug in "ServerMediaSubsession" that could cause a memory leak.
2550
(Thanks to Frederik Bonte for finding this.)
2551
2552
2003.06.07:
2553
- Fixed a minor bug in "MPEGVideoRTPSink": The RTP "M" bit is now set
2554
only on the last fragment, if a frame is fragmented. (Thanks to
2555
Tym Altman for pointing this out.)
2556
- Improved support for AudioRTPSinks that have more than one audio channel.
2557
2558
2003.05.31:
2559
Fixed a bug in "SimpleRTPSink" that would cause it to not generate correct
2560
RTP timestamps on outgoing packets.
2561
2562
2003.05.29:
2563
Fixed a bug in "RTSPServer" that would cause it to get into an infinite
2564
loop if a client's connection was terminated unexpectedly.
2565
2566
2003.05.28:
2567
Fixed some typos in comments.
2568
2569
2003.05.23:
2570
Some minor changes to reduce the number of bogus warning messages
2571
displayed when compiling using Visual C++.
2572
2573
2003.05.22b:
2574
Fixed a bug in "SIPClient" (thanks to Reini Urban for helping track this
2575
down).
2576
2577
2003.05.22a:
2578
Fixed a couple more minor bugs that were causing "valgrind" to complain.
2579
2580
2003.05.22:
2581
Fixed a bug in "SIPClient" (a field was not getting initialized properly)
2582
2583
2003.05.21:
2584
- Because not all platforms define 'errno' the same way, 'errno' is now
2585
implemented as a pure virtual function "getErrno()" in
2586
"UsageEnvironment". "BasicUsageEnvironment" defines this function to
2587
just return "errno", but other subclasses could implement it in other
2588
ways.
2589
- Added support for setting and reading information in "RTP-Info:"
2590
headers in RTSP "PLAY" response. (Thanks to Romulus Grigoras for
2591
contributing this.)
2592
2593
2003.05.19:
2594
Fixed a bug in "SIPClient" that could cause a crash. (Thanks to
2595
Reini Urban for finding this.)
2596
2597
2003.05.16:
2598
- Removed all calls to "fprintf(stderr, ...)" and "cerr << ..." from
2599
the library code. Instead, we now use "operator<<" virtual functions
2600
that are defined on the "UsageEnvironment". "BasicUsageEnvironment"
2601
defines these by outputting to "cerr", but other subclasses of
2602
"UsageEnvironment" can define them to do console output whichever
2603
way they wish.
2604
2605
2003.05.15:
2606
- Moved the "select()" call in "readSocket()" (GroupsockHelper.cpp) into
2607
a separate function, to allow it to be easily reimplemented
2608
if desired.
2609
- More minor changes to "RTPSource" stats handling, and the "-Q" option
2610
to "openRTSP"/"playSIP".
2611
2612
2003.05.12:
2613
- Restructured "BasicTaskScheduler" as two hierarchical classes:
2614
"BasicTaskScheduler0" (an abstract base class), and
2615
"BasicTaskScheduler".
2616
This makes it easier to subclass (e.g., to reimplement "SingleStep").
2617
A subclass reimplementation would use "BasicTaskScheduler0".
2618
- Removed "our_bcopy()", and use "memmove()" instead, because everyone
2619
seems to implement that.
2620
- Fixed a bug in "RTPSource" that could cause packet loss stats to be
2621
reported incorrectly if the first RTP sequence number received was 0.
2622
2623
2003.05.06:
2624
Minor changes to the "openRTSP" QOS stats reports.
2625
2626
2003.05.05:
2627
Changed the "start" and "end" parameters to
2628
"RTSPClient::playMediaSubsession()" from int to float, for increased
2629
granularity. (Suggestion by Cezar Plesca.)
2630
2631
2003.05.03:
2632
- Added support for pausing/resuming to "RTSPClient".
2633
(Thanks to Romulus Grigoras for contributing this.)
2634
- Fixed a couple of bugs in "SIPClient".
2635
2636
2003.04.28:
2637
- Cleaned up and improved the "DelayQueue" implementation.
2638
(This time it works properly, I hope.)
2639
2640
2003.04.27:
2641
- Temporarily backed out the previous change to "DelayQueue", because it
2642
broke MPEG video streaming (causing it to play too slowly).
2643
2644
2003.04.26:
2645
- Made "DelayQueue" a little more accurate, by adjusting for the time
2646
that has elapsed since the last alarm, when adding a new entry to the queue.
2647
- Fixed a bug in "RTPSource" that could cause packet loss statistics to not
2648
be reported accurately (in RTCP) if incoming packets were misordered.
2649
- Updated "openRTSP" and "playSIP" to take a new "-Q" option, which
2650
prints out QOS data at the end of the session.
2651
2652
2003.04.24:
2653
- Added a mechanism for registering an optional, auxilliary read handler
2654
with a "RTPSource" or "RTCPInstance". Such a handler would get called
2655
after each new packet is read.
2656
- Changed "SimpleRTPSink" to (by default) set the RTP "M" bit on
2657
video streams iff the packet contains the last (or only) fragment of
2658
a frame.
2659
2660
2003.04.23:
2661
- More improvements/fixes to the handling of SSM sessions.
2662
- Fixed a bug in RTSPServer that could cause a crash if the client
2663
quit suddenly.
2664
2665
2003.04.20:
2666
- Updated "MediaSession" to recognize
2667
a=source-filter: incl ...
2668
lines in SDP descriptions (for SSM sessions), and to do the appropriate
2669
SSM-style multicast joins in this case (and also to send back RTCP via
2670
unicast).
2671
- Updated the RTCP implementation to reflect incoming unicast RTCP packets
2672
back to the multicast group in the case where we're a SSM source.
2673
- Update "vobStreamer" and the various "test*Streamer" test programs to
2674
properly behave as SSM sources, when we have specified this.
2675
2676
2003.04.18:
2677
- Updated the "*ServerMediaSession" classes to (optionally) output
2678
SSM-specific information in SDP descriptions.
2679
- Updated "vobStreamer" to choose a random multicast address in the SSM
2680
range.
2681
2682
2003.04.12:
2683
- Fixed "MPEGVideoStreamFramer" to allow for the possibility of
2684
the GOP "time_code" field remaining unchanged in the source stream.
2685
- Elimination of more unnecessary global variables.
2686
2687
2003.04.11:
2688
- Added support for an optional user name and password inside a RTSP
2689
or SIP URL.
2690
- The media lookup table (used in "Media.cpp") is now allocated
2691
dynamically, and stored in the "UsageEnvironment", rather than
2692
being a global variable.
2693
This makes it possible to have different threads, within the same
2694
address spaces, accessing the library code.
2695
(Each thread would need to have its own "UsageEnvironment" and
2696
"TaskScheduler", though.)
2697
2698
2003.04.09:
2699
Changed "BasicTaskScheduler::SingleStep()" to execute only one delay
2700
queue task (along with any data input events) during each iteration.
2701
This prevents a possible livelock if the delay queue always has events
2702
outstanding. (Thanks to Ruth Sadler for pointing this out.)
2703
2704
2003.04.04:
2705
- More improvements to "vobStreamer" (which has also been renamed
2706
from "VOBStreamer".
2707
2708
2003.04.02:
2709
- Made another change to the order that things are closed when exiting
2710
"openRTSP", to help avoid a potential race condition that can occur
2711
when using the "-t" option. (Thanks to Romulus Grigoras for reporting
2712
this.)
2713
- Updated "MPEGDemux" to properly handle the case where someone tries
2714
to read from it after its input source has already closed.
2715
- Several improvements to "VOBStreamer".
2716
- Added "ByteStreamMultiFileSource" to the "liveMedia" library.
2717
This generalizes "ByteStreamFileSource" to allow more than one input
2718
file to be read, in sequence.
2719
2720
2003.04.01:
2721
Fixed a bug in "openRTSP" that could cause it to crash when exiting
2722
(if the "-t" option was used).
2723
2724
2003.03.31:
2725
Added a new test program "VOBStreamer" to "testProgs".
2726
This program reads a "VOB" file (e.g., from a non-encrypted DVD),
2727
and streams the component video (MPEG) and audio (AC3) component streams
2728
using RTP multicast.
2729
(Online documentation to follow...)
2730
2731
2003.03.30:
2732
Added "AC3AudioRTPSource" and "AC3AudioRTPSink".
2733
2734
2003.03.28:
2735
- Fixed a bug in "MPEGVideoStreamFramer" that would cause it to generate
2736
incorrect presentation times if the MPEG video stream started out with
2737
a non-zero 'time_code'.
2738
- Updated "AC3AudioStreamFramer" to allow clients to get the stream's
2739
sampling rate before it reads the first frame.
2740
2741
2003.03.25:
2742
Began adding support for AC3 audio/RTP streaming.
2743
2744
2003.03.22:
2745
Added support for receiving H.261/RTP streams
2746
2747
2003.03.14:
2748
- Removed calls to "strdup()", because that's a C-library function whose
2749
result should not be deleted using "delete" (or "delete[]"). Instead,
2750
we now provide our own C++ equvalent, called "strDup()".
2751
- Also, changed several "delete"s to "delete[]".
2752
(Thanks to Bill Kain for noting the need for this fix.)
2753
2754
2003:03;11:
2755
Updated SIPClient to allow it to use an arbitrary source port number.
2756
This makes it possible to use it on the same host on which a SIP server
2757
is already running.
2758
2759
2003.03.09:
2760
- Made "MediaSession"s parsing of SDP descriptions more robust, to allow for
2761
blank lines in the SDP description. ("Be liberal in what you accept...")
2762
2763
2003.03.07:
2764
- Added an optional "MIME subtype" parameter to "SIPClient", to allow
2765
SIP "INVITE"s to use a dynamic RTP payload format. Updated "playSIP"
2766
accordingly, to add an optional "-D <mime-subtype-name>" argument.
2767
- Modified "FileSink" to close the source (and stop playing) if it gets
2768
an EOF when writing to the output file. (Thanks to Ruud Schramp.)
2769
2770
2003.03.03:
2771
Improved the implementation of "MPEG4GenericRTPSource".
2772
2773
2003.02.28:
2774
- Fixed a bug that would cause RTSP clients to not set the server port
2775
number (for RTCP) correctly in some situations. (Thanks to Alex Pollard.)
2776
- Fixed a bug in "RTSPServer" that would cause "Transport:" headers to not
2777
get generated correctly.
2778
2779
2003.02.27:
2780
- Improved the "MultiFramedRTPSource" implementation to more cleanly handle
2781
packet loss in the case where frames are split into multiple RTP packets.
2782
- Parsed the optional "/<num-channels>" parameter that can appear at the
2783
end of "a=rtpmap:" lines for audio sessions.
2784
2785
2003.02.17:
2786
More work on the experimental '-R <rtsp-url>' option to "playSIP"
2787
(and "openRTSP") that allows it to inject the incoming stream into
2788
a separate RTSP server. This code is now working, although
2789
currently only for a single PCMU or GSM audio stream. Also, RTCP
2790
packets are not yet relayed between the source and destination.
2791
2792
2003.02.16:
2793
Improved RTSPClient and SIPClient to check for (and discard)
2794
any '\r' or '\n' that appears at the start of a response message.
2795
(Some weirdo servers can do this.)
2796
2797
2003.02.10:
2798
Began adding a new option to "playSIP" (and "openRTSP") to allow the
2799
incoming media stream to be injected into a separate, destination
2800
RTSP server. This still needs lots of work...
2801
2802
2003.02.08:
2803
Fixed the "JPEGVideoRTPSource" implementation to properly prepend a
2804
synthesized JPEG header to each received frame of RTP data. This now
2805
makes it possible to receive and play motion-JPEG RTP streams.
2806
2807
2003.02.06a:
2808
- Fixed a bug in the SDP "config" attribute parsing. (This affected
2809
the use of "MPEG4LATMAudioRTPSource".
2810
- Cleaned up the "createNew()" routines in each of the *RTPSource classes.
2811
- Added two new RTPSource classes - "MPEG4ESVideoRTPSource" and
2812
"MPEG4GenericRTPSource", for MPEG-4. However, these have not been
2813
fully implemented yet.
2814
2815
2003.02.06:
2816
Fixed some code that was 64-bit-unsafe. (Thanks to Philipp Thomas for
2817
noticing this.)
2818
2819
2003.02.05:
2820
- Cleaned up "RTSPClient", and added a method for doing an aggregate
2821
"PLAY" operation (in addition to the existing method that does a
2822
"PLAY" on an individual subsession).
2823
- Modified the "openRTSP" test program so that it does a single
2824
aggregate "PLAY", rather than a series of non-aggregate "PLAY"s, one for
2825
each subsession. (RealNetworks' server doesn't support the latter.)
2826
- Added a new routine for parsing "AudioSpecificConfig" strings that
2827
can appear in SDP descriptions.
2828
- Added Morgan Multimedia's implementation of "JPEGVideoRTPSource"
2829
to the "liveMedia" library. (I haven't yet tested this.)
2830
2831
2003.02.04:
2832
Removed "-DUSE_OUR_BZERO=1" from "config.linux", because it no longer
2833
seems to be necessary, and it was breaking compilation for some people.
2834
2835
2003.02.03b:
2836
Added an #include to "BasicUsageEnvironment/Lock.cpp" to fix a problem
2837
that someone encountered with NULL not being defined.
2838
2839
2003.02.03a:
2840
Created a new header file "groupsock/include/NetCommon.h" that contains
2841
all networking-related #includes. This also does the correct #includes
2842
for Windows, allowing Windows code to use Winsock-2 rather than Winsock-1.
2843
Also, modified "win32config" to use a "TARGETOS" of WINNT rather than
2844
WIN95, to make this all work.
2845
2846
Thanks to Doug Kosovic for figuring out the magic incantations
2847
needed to get this all working.
2848
2849
2003.02.03:
2850
- Improved "SIPClient" (in the "liveMedia") library, so that "INVITE"
2851
requests are retransmitted, as necessary, for reliability.
2852
- Added a "-A <rtp-payload-format>" option to "playSIP". This allows the
2853
user to specify which audio RTP payload format should be received.
2854
(At present only static payload formats can be specified, and only
2855
audio codecs - not video.)
2856
2857
2003.01.28:
2858
- Added support (in the "liveMedia" library) for a basic SIP client
2859
- Added a new test program "playSIP", similar to "openRTSP". These two
2860
applications are now built from the same code base.
2861
2862
2003.01.17:
2863
Further improvements to the MPEG-4 audio support. We can now read
2864
(from the "MediaSubsession") the StreamMuxConfig "config" stream that
2865
was present in the SDP description. Also added a routine that parses
2866
such a string, producing binary "AudioSpecificConfig" data.
2867
(See "MPEG4LATMAudioRTPSource.cpp" for details.)
2868
2869
2003.01.16:
2870
Improved support for receiving MPEG-4 LATM audio. Note that currently,
2871
this works only for streams that do not have a StreamMuxConfig present
2872
in the stream.
2873
2874
2003.01.10:
2875
Added basic support for MPEG-4 LATM audio.
2876
2877
2002.12.21:
2878
Fixed a bug in the previous update to "QuickTimeFileSink"
2879
2880
2002.12.20:
2881
- Another change to "QuickTimeFileSink", again to change the way that track
2882
durations are computed for ".mov" files. Now, each track's duration is
2883
set to be the maximum of (i) the sum of the sample durations listed
2884
in the 'stts' atom, and (ii) the the sum of the durations listed in the
2885
track's 'edit list' (if any).
2886
- Updated the MP3 file parsing code to check for a 'Xing' VBR header in
2887
the first frame. ("liveCaster" can use this information to print more
2888
sensible information about each file that it streams.)
2889
2890
2002.12.10:
2891
Yet another change to "QuickTimeFileSink", this time to make sure that
2892
the duration of video tracks corresponds exactly to the sum of video
2893
sample durations listed in the 'stts' atom.
2894
2895
2002.11.30:
2896
Renamed "TaskScheduler::blockMyself()" to "doEventLoop()", to better
2897
describe what this member function actually does.
2898
2899
2002.11.25:
2900
Another change to "QuickTimeFileSink". Now, when synchronzed tracks
2901
are requested, the durations of video frame samples are adjusted so
2902
that they correspond to actual RTP presentation times. (This is not
2903
done for audio samples, however, because having audio samples vary
2904
in duration might break audio codecs.)
2905
2906
2002.11.22:
2907
Updated "QuickTimeFileSink" once again - this time to add more statistics
2908
to the 'udta'/'hinf' atom for each generated hint track.
2909
2910
2002.11.18:
2911
Modified the support for creating hint tracks in "QuickTimeFileSink" so
2912
that it it now works properly for H.263+ video sessions.
2913
2914
2002.11.15:
2915
- Made a small modification to "groupsock/GroupsockHelper.hh" to ensure that
2916
it compiles on all platforms.
2917
- Modified "MP3FileSource" so that it can handle layer I or layer II files,
2918
as well as layer III (MP3).
2919
2920
2002.11.14:
2921
Updated "QuickTimeFileSink" to support (optional) hint tracks in output
2922
QuickTime files. Also added a "-H" option to "openRTSP" that
2923
(when used with "-q") will add hint tracks to the output ".mov" file.
2924
(Note that the hint tracks currently don't work well for H.263+ video
2925
tracks, and currently don't work at all for QCELP.)
2926
2927
2002.11.04:
2928
Updated the expiration date in "openRTSP.cpp"
2929
2930
2002.10.22:
2931
- Undid the previous change. The top-level Unix Makefile now does
2932
cd <dir> ; make
2933
once again. Unfortunately "--directory" doesn't seem to work properly
2934
with the version of "make" that's installed with FreeBSD.
2935
- Changed the implementation of the "-n" option in "openRTSP". If "-y"
2936
is also specified, then the user will be notified only if (i) data has
2937
arrived for all subsessions, and (ii) all subsessions have been
2938
synchronized.
2939
2940
2002.10.21:
2941
Changed the top-level Unix Makefile to do
2942
make --directory=<dir>
2943
rather than
2944
cd <dir>; make
2945
as the latter apparently didn't work with cygwin.
2946
(Thanks to "Sycotic" Smith for the tip.)
2947
2948
2002.10.20:
2949
- Updated "QuickTimeFileSink" once again to improve the implementation of
2950
synchronized audio/video tracks in output QuickTime files.
2951
- Added a configuration file for "cygwin". (Thanks to "Sycotic" Smith
2952
for working on this.)
2953
2954
2002.10.19:
2955
Updated "QuickTimeFileSink" to use QuickTime Edit Lists to synchronize
2956
the media tracks. (It appears that this does not always produce playable
2957
QuickTime files, so this implementation may have to be changed later.)
2958
2959
2002.10.11:
2960
Fixed a bug in "MultiFramedRTPSource" that could cause a RTP receiver to
2961
hang if it received a malformed RTP packet with no data after a special,
2962
media-specific header.
2963
2964
2002.10.10:
2965
Fixed the "RTSPClient" implementation so that it now understands
2966
"Content-Length" as well as "Content-length". (This now allows it
2967
to work with our own RTSP server implementation once again!)
2968
2969
2002.10.07:
2970
Improved the implementation of RTP (and RTCP) reception to eliminate an
2971
unnecessary "memmove()" each time a packet is received.
2972
2973
2002.10.04:
2974
Updated the "liveMedia" library to support optionally sending and receiving
2975
RTP and RTCP packets over a TCP connection (e.g., the TCP connection used
2976
for a RTSP session). Also, updated the "openRTSP" test program to take
2977
an optional "-t" argument, meaning: stream over TCP.
2978
2979
2002.10.01:
2980
Fixed the modification to "MultiFramedRTPSource" that was made in the
2981
2002.08.29 release, and also made a corresponding change to
2982
"QuickTimeFileSink", so that it now correctly records H.263+/RTP streams
2983
once again.
2984
2985
2002.09.30:
2986
- Removed the "Media::addNew()" member function, because it was always
2987
called each time a new Media object was created. Instead, its
2988
function was just moved into the Media::Media() constructor.
2989
- Made another fix to "testMPEGAudioVideoStreamer".
2990
2991
2002.09.28:
2992
Fixed a bug in "testMPEGAudioVideoStreamer" that could cause a crash when
2993
its input file was being read for the 2nd or more time. (Also updated
2994
"liveMedia/FramedSource.cpp".)
2995
2996
2002.09.27:
2997
Updated "QCELPAudioRTPSource" so that "hasBeenSynchronizedUsingRTCP()"
2998
returns True only after a full interleave cycle of RTP packets has been
2999
received. This ensures that when it returns true, the receiver will
3000
be reading a frame that came from a synchronized RTP packet.
3001
3002
2002.09.26:
3003
- Fixed QCELPAudioRTPSource so that it now returns correct presentation
3004
timestamps on each frame that is read from it (even if the input data
3005
was interleaved).
3006
- Updated QuickTimeFileSink to correctly write ".mov" files for half-rate
3007
QCELP audio tracks.
3008
3009
2002.09.25:
3010
Added a new test program - "sapWatch" - that reads and prints SDP/SAP
3011
announcements (sent to the default SDP/SAP directory)
3012
3013
2002.09.24:
3014
- Fixed a bug in "QCELPAudioRTPSource"
3015
- The RTCP implementation now properly recognizes incoming RTCP
3016
reports from other processes on the same computer. (Previously, these
3017
would be rejected as being loop-back packets.)
3018
3019
2002.09.19:
3020
- Updated "RTPSource"s so that an accurate "presentationTime" variable
3021
is now returned whenever a client reads from such a source. These times
3022
are kept accurate by RTCP "Sender Report" packets sent by the sender.
3023
3024
2002.09.13:
3025
- Improved the "BasicHashTable" implementation so that it's
3026
no longer a quick-and-dirty hack.
3027
- Changed the parameter signature to "ByteStreamFileSource" so that the
3028
"playTimePerFrame" parameter is now an unsigned (microseconds) instead
3029
of a float. This eliminates a round-off problem.
3030
3031
2002.09.11:
3032
Modified "ByteStreamFileSource::doGetNextFrame()" so that - if the
3033
"playTimePerFrame" parameter was set - the presentation time gets set
3034
based on this, rather than the current 'wall clock' time.
3035
3036
2002.09.06:
3037
Updated "win32config.Borland" based on feedback by Vesselin Kostadinov.
3038
(Also updated an #ifdef in "liveMedia/include/Media.hh")
3039
3040
2002.09.05:
3041
Added code to ignore an "EAGAIN" error on a 'groupsock' read.
3042
(This can happen in Linux.)
3043
3044
2002.09.03:
3045
Fixed a bug in the RTSP server implementation that could
3046
have caused a memory smash.
3047
3048
2002.08.30:
3049
Added header files containing version strings (and corresponding integers)
3050
for each library. Client code can use these to print out version
3051
information, or check for version compatibility.
3052
3053
2002.08.29:
3054
Modified "MultiFramedRTPSource" and its subclasses to properly handle
3055
the case where a frame is fragmented over several successive incoming
3056
RTP packets. Each subclass's implementation of "processSpecialHeader()"
3057
can choose between having incomplete fragments returned immediately to
3058
the client (the default behavior), or waiting until all of the fragments
3059
have arrived. The implementation of "H263plusVideoRTPSource" was changed
3060
to do the latter (because the current "ffmpeg" H.263+ decoder relies upon
3061
getting complete frames for input).
3062
3063
Added an optional "applicationName" parameter to "RTSPClient::createNew()",
3064
and updated the RTSP client implementation to add a "User-Agent:" field,
3065
which will contain this "applicationName" string (if present).
3066
3067
2002.08.27:
3068
Added an optional Boolean parameter "iFramesOnly" to
3069
"MPEGVideoStreamFramer::createNew()". If this parameter is True,
3070
then the framer object will return only data from "I" frames.
3071
(By default, this parameter is False, meaning that all frames will
3072
be returned.) This parameter can be used to reduce the bandwidth
3073
of streamed MPEG (1 or 2) video.
3074
3075
2002.08.06:
3076
Changed "groupsock/GroupsockHelper.cpp" to do a "#include <errno.h>"
3077
rather than "extern int errno". The latter was apparently breaking in
3078
some versions of Linux.
3079
3080
2002.08.05:
3081
Added support for the video/MP2P MIME type (RFC 2250 MPEG Program Streams)
3082
3083
2002.06.25:
3084
Source file distribution copied from live.sourceforge.net
3085