/// <summary>
    /// Construct a recording encoder/decoder
    /// </summary>
    /// <param name="stream">The original stream to wrap</param>
    /// <param name="recordStream">The stream to be embedded with the playback metadata</param>
    public TWSPlaybackRecorderEncoding(Stream stream, Stream recordStream)
      : base(stream)
    {
      if (!recordStream.CanSeek)
        throw new ArgumentException("must be seekable", "recordStream");

      _recordStream = recordStream;

      _stream =
        new EchoStream(_stream, _recordStream, EchoStream.StreamOwnership.OwnPrimaryStream);

      _recordWriter = new BinaryWriter(_recordStream);
    }
        /// <summary>
        /// Construct a recording encoder/decoder
        /// </summary>
        /// <param name="stream">The original stream to wrap</param>
        /// <param name="recordStream">The stream to be embedded with the playback metadata</param>
        public TWSPlaybackRecorderEncoding(Stream stream, Stream recordStream)
            : base(stream)
        {
            if (!recordStream.CanSeek)
            {
                throw new ArgumentException("must be seekable", "recordStream");
            }

            _recordStream = recordStream;

            Stream = new EchoStream(Stream, _recordStream, EchoStream.StreamOwnership.OwnPrimaryStream);

            _recordWriter = new BinaryWriter(_recordStream);
        }