Thanks jj,

I'll try to get you a minimal case ASAP.

On Thursday, March 8, 2018 at 1:05:04 AM UTC-8, jj wrote:
>
> The missing MIME application/wasm needs to be fixed to the web server 
> configuration that is hosting the site. If you are using e.g. python 
> SimpleHTTPServer for local development, try instead to switch to 
> emrun, which has the needed MIME Content-Type config. The message is 
> harmless in a sense that it's a performance warning. 
>
> As for the embind side, try reducing the code down to a minimal test 
> case. Not sure if there were any bits in embind that would not work in 
> wasm, iirc after embind was updated to asm.js semantics it should also 
> adhere to be used with wasm, but perhaps there is some bug. 
>
> 2018-03-07 20:17 GMT+02:00 Scott Watson <[email protected] <javascript:>>: 
>
> > Hi Guys, 
> > 
> > I have a project using embind that I have been able to compile to 
> javascript 
> > and test.  When I compile with -s WASM=1, and run in Chrome I'm getting 
> a 
> > strange binding error: 
> > 
> > BindingError {name: "BindingError", message: "No dynCall invoker for 
> > signature: ", stack: "BindingError: No dynCall invoker for signature: 
> > 
> > 
> > The callstack looks like this: 
> > 
> > throwBindingError @ ATPlayer.js:5953 
> > embind__requireFunction @ ATPlayer.js:6614 
> > __embind_register_value_object @ ATPlayer.js:7498 
> > __ZN46EmscriptenBindingInitializer_ATPlayer_BindingsC2Ev @ 
> > wasm-00a7c106-225:9 
> > __GLOBAL__sub_I_Bindings_cpp @ wasm-00a7c106-262:3 
> > Module.__GLOBAL__sub_I_Bindings_cpp @ ATPlayer.js:14777 
> > func @ ATPlayer.js:1864 
> > callRuntimeCallbacks @ ATPlayer.js:1313 
> > ensureInitRuntime @ ATPlayer.js:1347 
> > doRun @ ATPlayer.js:15104 
> > (anonymous) @ ATPlayer.js:15120 
> > setTimeout (async) 
> > run @ ATPlayer.js:15116 
> > runCaller @ ATPlayer.js:15076 
> > removeRunDependency @ ATPlayer.js:1507 
> > (anonymous) @ ATPlayer.js:1521 
> > worker.onmessage @ ATPlayer.js:2122 
> > 
> > 
> > The interesting thing I noticed here was that It's trying to register a 
> > value object.  If I move anything else to the front of my 
> > EMSCRIPTEN_BINDINGS it errors out there.  Why can't I bind when I build 
> > WASM, Javascript works just fine?  Here are my bindings if that helps: 
> > 
> > EMSCRIPTEN_BINDINGS(ATPlayer_Bindings) { 
> >    // register_vector<std::string>("VectorStrings"); 
> >    // register_vector<Arris::BPS>("VectorBitrates"); 
> > 
> >    value_object<Arris::VersionInfo>("VersionInfo") 
> >    .field("major", &Arris::VersionInfo::major) 
> >    .field("minor", &Arris::VersionInfo::minor) 
> >    .field("maintenance", &Arris::VersionInfo::maintenance) 
> >    .field("build", &Arris::VersionInfo::build); 
> > 
> >    class_<Arris::StatusInfo>("StatusInfo") 
> >    .property("bitrate", &Arris::StatusInfo::bitrate) 
> >    .property("networkthroughput", &Arris::StatusInfo::networkthroughput) 
> >    .property("optimalbitrate", &Arris::StatusInfo::optimalbitrate) 
> >    .property("droppedframes", &Arris::StatusInfo::droppedframes) 
> >    .property("stalls", &Arris::StatusInfo::stalls) 
> >    .property("decodeFPS", &Arris::StatusInfo::decodeFPS) 
> >    .property("renderFPS", &Arris::StatusInfo::renderFPS) 
> >    .property("audiosegments", &Arris::StatusInfo::audiosegments) 
> >    .property("videosegments", &Arris::StatusInfo::videosegments) 
> >    .property("h264frames", &Arris::StatusInfo::h264frames) 
> >    .property("rgbframes", &Arris::StatusInfo::rgbframes) 
> >    .property("pcmframes", &Arris::StatusInfo::pcmframes) 
> >    .property("seconds", &Arris::StatusInfo::seconds) 
> >    .property("duration", &Arris::StatusInfo::duration) 
> >    .property("cacheduration", &Arris::StatusInfo::cacheduration) 
> >    .property("playerstate", &Arris::StatusInfo::playerstate) 
> >    .property("frontendrunning", &Arris::StatusInfo::frontendrunning) 
> >    .property("audiodemuxerrunning", 
> &Arris::StatusInfo::audiodemuxerrunning) 
> >    .property("videodemuxerrunning", 
> &Arris::StatusInfo::videodemuxerrunning) 
> >    .property("decoderrunning", &Arris::StatusInfo::decoderrunning) 
> >    .property("audiorendererrunning", 
> > &Arris::StatusInfo::audiorendererrunning) 
> >    .property("videorendererrunning", 
> > &Arris::StatusInfo::videorendererrunning) 
> >    .property("lasterror", &Arris::StatusInfo::lasterror); 
> > 
> >    value_object<Arris::ProgramInfo>("ProgramInfo") 
> >    .field("duration", &Arris::ProgramInfo::duration) 
> >    .field("startposition", &Arris::ProgramInfo::startposition); 
> > 
> >    class_<Arris::Color>("Color") 
> >    .property("red", &Arris::Color::red) 
> >    .property("green", &Arris::Color::green) 
> >    .property("blue", &Arris::Color::blue) 
> >    .property("alpha", &Arris::Color::alpha); 
> > 
> >    enum_<Arris::PlayerState>("PlayerState") 
> >    .value("PlayerStateStopped", Arris::PlayerState::PlayerStateStopped) 
> >    .value("PlayerStateReadyToPlay", 
> > Arris::PlayerState::PlayerStateReadyToPlay) 
> >    .value("PlayerStatePlaying", Arris::PlayerState::PlayerStatePlaying) 
> >    .value("PlayerStatePaused", Arris::PlayerState::PlayerStatePaused) 
> >    .value("PlayerStateSeeking", Arris::PlayerState::PlayerStateSeeking) 
> >    .value("PlayerStateResetting", 
> Arris::PlayerState::PlayerStateResetting) 
> >    .value("PlayerStateChangingLanguage", 
> > Arris::PlayerState::PlayerStateChangingLanguage) 
> >    .value("PlayerStateBuffering", 
> Arris::PlayerState::PlayerStateBuffering) 
> >    .value("PlayerStateStopping", 
> Arris::PlayerState::PlayerStateStopping) 
> >    .value("PlayerStateEndOfMovie", 
> > Arris::PlayerState::PlayerStateEndOfMovie) 
> >    .value("PlayerStateError", Arris::PlayerState::PlayerStateError); 
> > 
> >    enum_<Arris::PlayerError>("PlayerError") 
> >    .value("PlayerErrorFontStorageFull", 
> > Arris::PlayerError::PlayerErrorFontStorageFull) 
> >    .value("PlayerErrorFontStorageFailed", 
> > Arris::PlayerError::PlayerErrorFontStorageFailed) 
> >    .value("PlayerErrorFontReadFailed", 
> > Arris::PlayerError::PlayerErrorFontReadFailed) 
> >    .value("PlayerErrorFontInstallFailed", 
> > Arris::PlayerError::PlayerErrorFontInstallFailed) 
> >    .value("PlayerErrorNoFontsInstalled", 
> > Arris::PlayerError::PlayerErrorNoFontsInstalled) 
> >    .value("PlayerErrorFontNotInstalled", 
> > Arris::PlayerError::PlayerErrorFontNotInstalled) 
> >    .value("PlayerErrorChunkDecryptionFailed", 
> > Arris::PlayerError::PlayerErrorChunkDecryptionFailed) 
> >    .value("PlayerErrorBitrateTooHigh", 
> > Arris::PlayerError::PlayerErrorBitrateTooHigh) 
> >    .value("PlayerErrorAudioBufferEmpty", 
> > Arris::PlayerError::PlayerErrorAudioBufferEmpty) 
> >    .value("PlayerErrorPlatformAudioAPIFailure", 
> > Arris::PlayerError::PlayerErrorPlatformAudioAPIFailure) 
> >    .value("PlayerErrorAudioRendererCouldNotStart", 
> > Arris::PlayerError::PlayerErrorAudioRendererCouldNotStart) 
> >    .value("PlayerErrorInvalidADTSFrequencyIndexOutOfRange", 
> > Arris::PlayerError::PlayerErrorInvalidADTSFrequencyIndexOutOfRange) 
> >    .value("PlayerErrorUnsupportedAudioFrequency", 
> > Arris::PlayerError::PlayerErrorUnsupportedAudioFrequency) 
> >    .value("PlayerErrorInvalidAudioDuration", 
> > Arris::PlayerError::PlayerErrorInvalidAudioDuration) 
> >    .value("PlayerErrorAudioDecoderError", 
> > Arris::PlayerError::PlayerErrorAudioDecoderError) 
> >    .value("PlayerErrorOutputFramesOutOfOrder", 
> > Arris::PlayerError::PlayerErrorOutputFramesOutOfOrder) 
> >    .value("PlayerErrorUnsupportedVideoProfile", 
> > Arris::PlayerError::PlayerErrorUnsupportedVideoProfile) 
> >    .value("PlayerErrorVideoDecodeError", 
> > Arris::PlayerError::PlayerErrorVideoDecodeError) 
> >    .value("PlayerErrorEmptyManifest", 
> > Arris::PlayerError::PlayerErrorEmptyManifest) 
> >    .value("PlayerErrorManifestSyntaxIncorrect", 
> > Arris::PlayerError::PlayerErrorManifestSyntaxIncorrect) 
> >    .value("PlayerErrorDuplicateLanguage", 
> > Arris::PlayerError::PlayerErrorDuplicateLanguage) 
> >    .value("PlayerErrorDuplicateName", 
> > Arris::PlayerError::PlayerErrorDuplicateName) 
> >    .value("PlayerErrorAmbiguousDefault", 
> > Arris::PlayerError::PlayerErrorAmbiguousDefault) 
> >    .value("PlayerErrorAmbiguousType", 
> > Arris::PlayerError::PlayerErrorAmbiguousType) 
> >    .value("PlayerErrorFileNotFound", 
> > Arris::PlayerError::PlayerErrorFileNotFound) 
> >    .value("PlayerErrorNetworkDown", 
> > Arris::PlayerError::PlayerErrorNetworkDown) 
> >    .value("PlayerErrorServerUnreachable", 
> > Arris::PlayerError::PlayerErrorServerUnreachable) 
> >    .value("PlayerErrorTimeout", Arris::PlayerError::PlayerErrorTimeout) 
> >    .value("PlayerErrorDemuxerStopped", 
> > Arris::PlayerError::PlayerErrorDemuxerStopped) 
> >    .value("PlayerErrorVideoRendererStopped", 
> > Arris::PlayerError::PlayerErrorVideoRendererStopped) 
> >    .value("PlayerErrorAudioRendererStopped", 
> > Arris::PlayerError::PlayerErrorAudioRendererStopped) 
> >    .value("PlayerErrorVideoDecoderStopped", 
> > Arris::PlayerError::PlayerErrorVideoDecoderStopped) 
> >    .value("PlayerErrorOutOfRange", 
> > Arris::PlayerError::PlayerErrorOutOfRange) 
> >    .value("PlayerErrorInternalInconsistency", 
> > Arris::PlayerError::PlayerErrorInternalInconsistency) 
> >    .value("PlayerErrorUnalignedFrameData", 
> > Arris::PlayerError::PlayerErrorUnalignedFrameData) 
> >    .value("PlayerErrorInvalidOperation", 
> > Arris::PlayerError::PlayerErrorInvalidOperation) 
> >    .value("PlayerErrorUnimplemented", 
> > Arris::PlayerError::PlayerErrorUnimplemented) 
> >    .value("PlayerErrorInvalidParameter", 
> > Arris::PlayerError::PlayerErrorInvalidParameter) 
> >    .value("PlayerErrorInternal", 
> Arris::PlayerError::PlayerErrorInternal) 
> >    .value("PlayerErrorInternalAllocationFailed", 
> > Arris::PlayerError::PlayerErrorInternalAllocationFailed) 
> >    .value("PlayerErrorAccessDenied", 
> > Arris::PlayerError::PlayerErrorAccessDenied) 
> >    .value("PlayerErrorUnrecognizedData", 
> > Arris::PlayerError::PlayerErrorUnrecognizedData) 
> >    .value("PlayerErrorConnectionFailure", 
> > Arris::PlayerError::PlayerErrorConnectionFailure) 
> >    .value("PlayerErrorNone", Arris::PlayerError::PlayerErrorNone) 
> >    .value("Success", Arris::PlayerError::Success); 
> > 
> >    enum_<Arris::MSC::MSC_RESULT>("MSC_RESULT") 
> >    .value("MSC_SUCCESSFUL", Arris::MSC::MSC_RESULT::MSC_SUCCESSFUL) 
> >    .value("MSC_SUCCESS", Arris::MSC::MSC_RESULT::MSC_SUCCESS) 
> >    .value("MSC_ERROR", Arris::MSC::MSC_RESULT::MSC_ERROR) 
> >    .value("MSC_INTERNAL_ERROR", 
> Arris::MSC::MSC_RESULT::MSC_INTERNAL_ERROR) 
> >    .value("MSCERR_INTERNAL_ERROR", 
> > Arris::MSC::MSC_RESULT::MSCERR_INTERNAL_ERROR) 
> >    .value("MSC_NOT_INITIALIZED", 
> > Arris::MSC::MSC_RESULT::MSC_NOT_INITIALIZED) 
> >    .value("MSC_COMMUNICATION_FAILURE", 
> > Arris::MSC::MSC_RESULT::MSC_COMMUNICATION_FAILURE) 
> >    .value("MSCERR_COMMUNICATION_FAILURE", 
> > Arris::MSC::MSC_RESULT::MSCERR_COMMUNICATION_FAILURE) 
> >    .value("MSC_INVALID_INPUT_PARAMETER", 
> > Arris::MSC::MSC_RESULT::MSC_INVALID_INPUT_PARAMETER) 
> >    .value("MSC_DUPLICATE_REGISTRATION", 
> > Arris::MSC::MSC_RESULT::MSC_DUPLICATE_REGISTRATION) 
> >    .value("MSC_NOT_REGISTERED", 
> Arris::MSC::MSC_RESULT::MSC_NOT_REGISTERED) 
> >    .value("MSC_INSUFFICIENT_RIGHTS", 
> > Arris::MSC::MSC_RESULT::MSC_INSUFFICIENT_RIGHTS) 
> >    .value("MSC_DEVICE_TIME_OUT_OF_SYNC_WITH_SERVER", 
> > Arris::MSC::MSC_RESULT::MSC_DEVICE_TIME_OUT_OF_SYNC_WITH_SERVER) 
> >    .value("MSCERR_MALFORMED_URL", 
> > Arris::MSC::MSC_RESULT::MSCERR_MALFORMED_URL) 
> >    .value("MSCERR_ROOTED_DEVICE", 
> > Arris::MSC::MSC_RESULT::MSCERR_ROOTED_DEVICE) 
> >    .value("MSC_REGISTERED", Arris::MSC::MSC_RESULT::MSC_REGISTERED) 
> >    .value("MSCERR_FileNotFound", 
> > Arris::MSC::MSC_RESULT::MSCERR_FileNotFound) 
> >    .value("MSC_INIT_ERROR", Arris::MSC::MSC_RESULT::MSC_INIT_ERROR); 
> > 
> >    class_<Arris::MediaPlayer>("MediaPlayer").constructor<>() 
> >    .function("setPlayerContext", &Arris::MediaPlayer::setPlayerContext, 
> > allow_raw_pointers()) 
> >    .function("play", &Arris::MediaPlayer::play) 
> >    .function("pause", &Arris::MediaPlayer::pause) 
> >    .function("paused", &Arris::MediaPlayer::paused) 
> >    .function("togglePlayback", &Arris::MediaPlayer::togglePlayback) 
> >    .function("resume", &Arris::MediaPlayer::resume) 
> >    .function("stop", &Arris::MediaPlayer::stop) 
> >    .function("getCurrentPosition", 
> &Arris::MediaPlayer::getCurrentPosition) 
> >    .function("getStatus", &Arris::MediaPlayer::getStatus) 
> >    .function("getPlaybackRate", &Arris::MediaPlayer::getPlaybackRate) 
> >    .function("setPlaybackRate", &Arris::MediaPlayer::setPlaybackRate) 
> >    .function("seek", &Arris::MediaPlayer::seek) 
> >    .function("areCaptionsEnabled", 
> &Arris::MediaPlayer::areCaptionsEnabled) 
> >    .function("enableClosedCaption", 
> > &Arris::MediaPlayer::enableClosedCaption) 
> >    .function("areSubtitlesEnabled", 
> > &Arris::MediaPlayer::areSubtitlesEnabled) 
> >    .function("enableSubtitle", &Arris::MediaPlayer::enableSubtitle) 
> >    .function("setVolume", &Arris::MediaPlayer::setVolume) 
> >    .function("muteVolume", &Arris::MediaPlayer::muteVolume) 
> >    .function("getVersion", &Arris::MediaPlayer::getVersion) 
> >    .function("getDuration", &Arris::MediaPlayer::getDuration) 
> >    .function("getAudioLanguages", 
> &Arris::MediaPlayer::getAudioLanguages) 
> >    .function("getSubtitlesLanguages", 
> > &Arris::MediaPlayer::getSubtitlesLanguages) 
> >    .function("setAudioLanguage", &Arris::MediaPlayer::setAudioLanguage) 
> >    .function("getCurrentAudioLanguage", 
> > &Arris::MediaPlayer::getCurrentAudioLanguage) 
> >    .function("getCurrentSubtitlesLanguage", 
> > &Arris::MediaPlayer::getCurrentSubtitlesLanguage) 
> >    .function("setCaptionsFont", &Arris::MediaPlayer::setCaptionsFont) 
> >    .function("getCaptionsFont", &Arris::MediaPlayer::getCaptionsFont) 
> >    .function("getCaptionsFontSize", 
> > &Arris::MediaPlayer::getCaptionsFontSize) 
> >    .function("setCaptionsFontSize", 
> > &Arris::MediaPlayer::setCaptionsFontSize) 
> >    .function("getCaptionsFontColor", 
> > &Arris::MediaPlayer::getCaptionsFontColor) 
> >    .function("setCaptionsFontColor", 
> > &Arris::MediaPlayer::setCaptionsFontColor) 
> >    .function("getCaptionsBackgroundColor", 
> > &Arris::MediaPlayer::getCaptionsBackgroundColor) 
> >    .function("setCaptionsBackgroundColor", 
> > &Arris::MediaPlayer::setCaptionsBackgroundColor) 
> >    .function("setSubtitlesLanguage", 
> > &Arris::MediaPlayer::setSubtitlesLanguage) 
> >    .function("setSubtitlesFont", &Arris::MediaPlayer::setSubtitlesFont) 
> >    .function("getSubtitlesFont", &Arris::MediaPlayer::getSubtitlesFont) 
> >    .function("getSubtitlesFontSize", 
> > &Arris::MediaPlayer::getSubtitlesFontSize) 
> >    .function("setSubtitlesFontSize", 
> > &Arris::MediaPlayer::setSubtitlesFontSize) 
> >    .function("getSubtitlesFontColor", 
> > &Arris::MediaPlayer::getSubtitlesFontColor) 
> >    .function("setSubtitlesFontColor", 
> > &Arris::MediaPlayer::setSubtitlesFontColor) 
> >    .function("getSubtitlesBackgroundColor", 
> > &Arris::MediaPlayer::getSubtitlesBackgroundColor) 
> >    .function("setSubtitlesBackgroundColor", 
> > &Arris::MediaPlayer::setSubtitlesBackgroundColor) 
> >    .function("installFont", &Arris::MediaPlayer::installFont) 
> >    .function("listFonts", &Arris::MediaPlayer::listFonts) 
> >    .function("setMaxBitrate", &Arris::MediaPlayer::setMaxBitrate) 
> >    .function("getAvailableBitrates", 
> > &Arris::MediaPlayer::getAvailableBitrates); 
> > 
> >    function("Init", &Arris::MSC::MSC::Init); 
> >    function("Close", &Arris::MSC::MSC::Close); 
> >    function("SDKInfo", &Arris::MSC::MSC::SDKInfo); 
> >    function("OTT_Register", &Arris::MSC::MSC::OTT_Register); 
> >    function("OTT_UnRegister", &Arris::MSC::MSC::OTT_UnRegister); 
> >    function("OTT_CheckRegistration", 
> > &Arris::MSC::MSC::OTT_CheckRegistration); 
> >    function("OTT_GetRegistrationInfo", 
> > &Arris::MSC::MSC::OTT_GetRegistrationInfo); 
> >    function("SetupNetworkPlayback", 
> &Arris::MSC::MSC::SetupNetworkPlayback); 
> >    function("OTT_Status", &Arris::MSC::MSC::OTT_Status); 
> > } 
> > 
> > 
> > 
> > Also, on a side note, I am getting an error compiling my WASM module: 
> > 
> > wasm streaming compile failed: TypeError: Failed to execute 'compile' on 
> > 'WebAssembly': Incorrect response MIME type. Expected 
> 'application/wasm'. 
> > falling back to ArrayBuffer instantiation 
> > 
> > 
> > The app continues on after this, until I get the BindingError, so I 
> don't 
> > know if this is normal or not. 
> > 
> > Help? 
> > 
> > -- 
> > 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] <javascript:>. 
> > 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.

Reply via email to