At 9/19/09 07:43 PM, knugen wrote:
Your code might of course be inefficient, and I believe that is what you want help with to prevent, so show relevant snippets for us and you've got a bigger chance of getting help.
Ok, for one... I am using AS3.
And for two, here is all the code.
on sending swf...
import flash.display.Sprite;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.events.Event;
import flash.geom.Matrix;
import flash.geom.Rectangle;
import flash.media.Camera;
import flash.media.Video;
import flash.utils.ByteArray;
import flash.net.XMLSocket;
import com.dynamicflash.util.Base64;
var snapshot:BitmapData;
var output_vid:Video;
var ba:ByteArray;
var testImgSocket:XMLSocket=new XMLSocket();
testImgSocket.connect("127.0.0.1",8090);
var activeCamera:Camera=Camera.getCamera();
activeCamera.setMode(640,480,12);
output_vid=new Video(160,120);
output_vid.attachCamera(activeCamera);
addChild(output_vid);
var rectangle:Rectangle=new Rectangle(0,0,160,120);
snapshot=new BitmapData(output_vid.width,output_vid.height);
addEventListener(Event.ENTER_FRAME, onEnterFrame);
function onEnterFrame(evt:Event) {
snapshot.draw(output_vid, new Matrix());
ba=snapshot.getPixels(rectangle);
ba.compress();
var encoded:String=Base64.encodeByteArray(ba);
testImgSocket.send(";"+encoded);
}
and on receiving swf.
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.events.Event;
import flash.geom.Matrix;
import flash.geom.Rectangle;
import flash.utils.ByteArray;
import flash.net.XMLSocket;
import com.dynamicflash.util.Base64;
var dispshotDisplay:Bitmap;
var dispshot:BitmapData;
var testImgSocket:XMLSocket=new XMLSocket();
testImgSocket.connect("127.0.0.1",8090);
dispshot=new BitmapData(160,120);
dispshotDisplay=new Bitmap(dispshot);
dispshotDisplay.x=200;
dispshotDisplay.y=175;
addChild(dispshotDisplay);
var rectangle:Rectangle=new Rectangle(0,0,160,120);
testImgSocket.addEventListener(DataEvent.DATA, onIncomingData);
function onIncomingData(event:DataEvent):void {
var decoded:ByteArray=Base64.decodeToByteArray(event.data);
decoded.uncompress();
dispshot.setPixels(rectangle,decoded);
}