Yes, I get the same error in Firefox Nightly. On Wednesday, March 7, 2018 at 11:42:25 AM UTC-8, Alon Zakai wrote: > > Is this only on Chrome? Please try on some other browsers, that's a quick > way to see if it's a Chrome bug. > > The MIME error is because browsers require the proper MIME type for > streaming (I'm not sure why, precisely), see > https://github.com/kripken/emscripten/wiki/WebAssembly#web-server-setup > It's good to fix that, but things will work without it (but without the > benefits of streaming compilation). > > On Wed, Mar 7, 2018 at 10:17 AM, Scott Watson <[email protected] > <javascript:>> wrote: > >> 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.
