UnityEngine.WWW massive rant and a desperate request for assistance.

I am trying to upload a movie user made in my web player app to a video hosting service (yes, it is a kind of online video editor). I cannot do it via sockets, since video hoster would not run a socket policy server for me, but they agreed to include my host in their crossdomain.xml, which makes me able to use UnityEngine.WWW for uploads.

But UnityEngine.WWW implementation is godawfully terrible. It can only work with a byte-array (which means I cannot just give it a stream and write there on demand, like I could do in C++), so I have to make sure the movie along with an upload request is located in the same byte[ ], which isn’t copied anywhere to avoid memory issues. When I achieved that, I realized that UnityEngine.WWW makes MULTIPLE COPIES inside it’s implementation and completely kills my attempts to upload movies larger than ~80MB due to inability of the 32 bit heap to allocate multiple one-piece copies of this size.

Is there anything I can do to avoid making a proxy server for video uploading? Because usability of proxy solution would be poor, multiple users running through it would receive pathetic bandwidth per user, and the $ cost of all those video files traffic is a kill.

Even asking Unity for a source code won’t work, because it’s a web player app, and web player is downloaded from unity3d every time.

Any suggestions?

Still need assistance here. Ideas, anyone?

Check out uLink; I believe they have a better implementation that supports streaming.

.

Sorry for the late answer. I checked out uLink, and it’s not gonna work for me, because:
a) Requires socket policy server. If I could do that, I’d just implement my own socket-based solution and never needed any assistance.
b) As far as I can tell by its manual, it’s an RPC library designed to work with its own server, and nothing more.