Red5 Changelog
==============

This file contains informations about the changes between the different
versions of Red5.

Red5 0.6rc2 (2007-02-12)
------------------------
New features:
- Stream classes can be configured through red5-common.xml (Trac #223)
- RTMP network library supports client mode (Trac #94)
- source of VOD streams can be customized through IStreamFilenameGenerator
  (Trac #120)
- API: IStreamFilenameGenerator differs between playback and recording
- results of method calls can be deferred until they are available to free
  io threads
- transient fields will not be serialized any longer (Jira APPSERVER-27)
- Red5 compiles with Java6 now
- support for AMF3 incl. IExternalizable objects added (Jira APPSERVER-31)
- access to streams can be limited (Jira APPSERVER-25)
- (non-persistent) shared objects can be acquired by serverside code to
  prevent them from being released when the last client disconnects
  (Jira APPSERVER-48)

Bugfixes:
- serialize RecordSet objects (Trac #201)
- "NetConnection.Connect.Rejected" is sent for non-existing scopes to
  match result code of FCS/FMS
- RTMPT through Jetty working again (Trac #213)
- size of last frame is correctly written to .flv files
- errors during "connect" are reported back to client through RTMPT
- fixed NPE in FlowControlService thread (Trac #175)
- deserializing of mixed arrays now works in all cases (Trac #109, #195)
- "NetStream.Record.Start" and "NetStream.Record.Stop" are sent (Trac #127)
- "NetStream.Publish.BadName" is sent if two clients try to publish/record
  a stream with the same name
- streams stopped if bandwidth limit was set too high (Trac #165)
- fixed potential concurrency issue in FlowControlService (Trac #224)
- stream notification callbacks are invoked on reused connetions (Trac #133)
- the playlist is flushed by default (Jira APPSERVER-6)
- fixed ClassCastException in "pendingVideoMessages" (Jira APPSERVER-14)
- calling "pause" with null argument works again (Jira APPSERVER-12)
- "NetStream.Publish.BadName" is only sent if another client is already
  publishing a stream
- playing a stream while being recorded now works (Jira SN-4, SN-13)
- "IPendingServiceCall.isSuccess()" returns true when a result has been
  received (Jira APPSERVER-35)
- the "http.host" setting from "red5.properties" is evaluated
  (Jira APPSERVER-36)
- "IBroadcastStream" knows about the filename it is being recorded to
  (Jira APPSERVER-30)
- BufferOverflowException for empty RTMP packets fixed (Jira APPSERVER-37)
- flv files are no longer locked after playback (Jira APPSERVER-17)
- SharedObjects support "getAttributes" (Jira APPSERVER-45)
- mp3 files containing images can be played back (Jira APPSERVER-47)
- fixed parsing of long strings (Jira APPSERVER-44)
- fixed pausing and seeking audio-only flv files (Jira SN-17)
- number of streams is no longer limited (Jira SN-14)
- "NetStream.Play.Failed" is returned if a VOD stream can not be played
  due to IO errors (Jira APPSERVER-52)
- "NetStream.InvalidArg" is returned for invalid arguments
  (Jira APPSERVER-55)
- "NetConnection.Connect.InvalidApp" is returned for non-existing application
  scopes on the server
- "NetStream.Record.NoAccess" is returned if file could not be created
  or written to (Jira APPSERVER-53)
- error when setting SO attributes fixed (Jira APPSERVER-57)


Red5 0.6rc1 (2006-10-30)
------------------------
New features:
- Created WAR (Web Application Archive) version of Red5
  (Separate repository java/war)
- Enabled Tomcat or Jetty as J2EE container implementations
- FLV cache implementations (2 are included) (Trac #99)
- Scripting support (javascript, ruby, python, groovy, and bsh)
  based on Spring 2 and JSR223

Bugfixes:
- last frames aren't lost when reading .flv files (Trac #90)
- FileConsumer acted on all consumer pipe events (Trac #92)
- improved timestamps of live streams to be more in sync with FMS (Trac #93)
- FileConsumer modified position of incoming messages (Trac #91)
- Events should support reference counting (Trac #103)
- ServerStream playback jerky (Trac #77)
- "NetStream.send" events are properly recorded
- reusing streams works (Trac #123)
- fixed NPE if no bandwidth settings are available (Trac #129)
- "close" can be called on RTMPT connections multiple times (Trac #166)
- fixed synchronizing problem with clients publishing repeatedly (Trac #124)
- RTMPT connections can be closed from the serverside (Trac #179)


Red5 0.5    (2006-07-25)
------------------------
New features:
- frame dropping for live streams depending on available bandwidth
- added "receiveAudio", "receiveVideo" and "send" for streams
- destination of recorded streams can be customized (Trac #73)
- VOD stream flow control adapts bandwidth based on buffer time (Trac #63)
- up-/downstream bandwidth can be specified

Bugfixes:
- only the same instances are serialized as references (Trac #58)
- re-added JSP support in manifest file of red5.jar (Trac #59)
- "tagPosition" is updated in FLVReader when seeking (Trac #55)
- automatic subscopes of the host scope are disabled so only connections
  to existing applications are possible
- running "ant" after setup keeps wrapper configuration (Trac #76)
- mp3 files with unsupported sample rates are detected (Trac #66)
- timestamps of recorded .flv files were wrong sometimes (Trac #78)
- stream types could be reused leading to a ClassCastException (Trac #84)
- "ns.pause" working if no flag given (Trac #67)
- a keyframe is sent for paused streams when seeking


Red5 0.5rc1 (2006-07-11)
------------------------
New features:
- refactored streaming code
- refactored scope services
- refactored rtmp message de-/encoding
- enabled subscopes
- bandwidth control for on-demand streams
- experimental support for serverside streams
- added dynamic "onMetaData" for mp3 streams
- added persistence for scopes and shared objects
- added support for simple "directory-only" applications
- added remoting client support (sync / async)
- added deserializer for RecordSet remoting results
- arbitrary objects can be registered as service handlers
- IClientRegistry can be customized for each scope
- WEB-INF directories are added to the classpath (Trac #27)
- clients can be rejected with a custom error message
- basic "onMetaData" is generated dynamically for .flv files without any
  meta data (Trac #23)

Bugfixes:
- mp3 files that have their protection bit set
- mp3 files encoded MPEG 2, Layer III (Trac #15)
- mp3 files with incomplete last frame
- shared objects bugfixes (Trac #11, #22, #25)
- application handlers were not called on disconnect
- IConnection.close() now closes connection (Trac #19)
- connecting to non-existent applications returns correct error now
- Jetty correctly runs on all virtual hosts (Trac #26)
- Map objects are serialized correctly
- methods could be invoked with converted parameters before invoking them
  with the original parameters
- support invoking methods with "null" as parameter (Trac #29)
- directories for recorded files are created if they don't exist (Trac #20)
- "pause(java.lang.Object, int)" was reversed for streams (Trac #16)
- serialization of arbitrary objects uses reflect api to access fields,
  fixes various problems with inner classes and internal objects like
  IConnection / IClient
- invalid stream ids are handled in "deleteStream" (Trac #21)
- stream name prefixes and names without extensions supported (Trac #28)


Red5 0.4.1  (2006-05-01)
------------------------
- mp3 audio streams
- "seek" and "pause" for on-demand streams (Trac #4)
- "Address already in use" fixed after restart (Trac #5)
- bugfixes for shared objects (Trac #6)
- bugfixes for videoconference sample (Trac #7)
- connection strings without hostname supported (Trac #8)
- Flash7 version of the videoconference sample added


Red5 0.4    (2006-04-20)
------------------------
- public server-side api
- amf remoting
- rtmpt
- metadata api
- basic samples and documentation


Red5 0.3    (2006-02-21)
------------------------
- live streams
- shared objects


Red5 0.2    (2005-10-21)
------------------------
- first public release
- video streams
- echo service
