Thanks Brion! This is super useful. -mtr
-----Original Message----- From: "Brion Vibber" <[email protected]> Sent: 8/15/2015 5:53 AM To: "emscripten Mailing List" <[email protected]> Subject: Re: Marshalling Data From C++ to JS Efficiently If you declare your C++ function to return an emscripten::val, a memory view should correctly marshal out and return a Uint8Array (or whichever type you selected). Here's an example in a getter on a value object, but it should work fine on regular object methods too: #include <emscripten/bind.h> using namespace emscripten; ... struct H264Plane { unsigned char *data; int stride; int height; ... val data_getter() const; void data_setter(val v); }; ... val H264Plane::data_getter() const { return val(memory_view<unsigned char>(stride * height, (unsigned char *)data)); } ... EMSCRIPTEN_BINDINGS(h264_decoder) { value_object<H264Plane>("H264Plane") .field("data", &H264Plane::data_getter, &H264Plane::data_setter) ... ; ... } -- brion On Fri, Aug 14, 2015 at 11:22 PM, Matthew Tamayo <[email protected]> wrote: I've been looking around Emscripten to try and figure out how to marshall large binary objects from C++. We want to: pass binaryArray = (unsigned *)&bigObject as a Uint8Array Use XMLHttpRequest2 to send Uint8Array to server Read in binary data on server (BigObject*) binaryArray in C++ The problem we're having is figuring out the most efficient way to get a Uint8Array of emscripten using embind. I've seen some threads that recommend emscripten::memory_view(output_size, output_ptr), but I don't know if it requires passing in a JS function via emscripten::val or if returning a memory view will get correctly marshalled. Does this seem like sane approach? Any easier ways in the most recent version of emscripten? -mtr -- You received this message because you are subscribed to the Google Groups "emscripten-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to a topic in the Google Groups "emscripten-discuss" group. To unsubscribe from this topic, visit https://groups.google.com/d/topic/emscripten-discuss/l8GkOxZ79Ks/unsubscribe. To unsubscribe from this group and all its topics, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "emscripten-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
