Introduce mjpEncoder plugin architecture
Add a new mjpEncoder plugin type mirroring the existing mjpDecoder pattern. Encoders serialize an mjSpec + mjModel to an mjResource for a given format. New API functions: - mjp_registerEncoder: globally register an encoder - mjp_defaultEncoder: zero-initialize an encoder struct - mjp_findEncoder: look up an encoder by filename extension or content type The mjfEncode callback takes (mjSpec*, mjModel*, mjVFS*, mjResource*) and returns 0 on success. Writing to mjResource keeps symmetry with the decoder reading from mjResource and leaves the door open for writable resource providers. PiperOrigin-RevId: 889187898 Change-Id: I180771b2255b91dea188ac5e2cdc3a8f0fb85364
This commit is contained in:
committed by
Copybara-Service
parent
2d33b50243
commit
f5d3ce3451
@@ -46,15 +46,18 @@ _SKIPPED_PLUGIN_FUNCTIONS: tuple[str, ...] = (
|
||||
"mjc_getSDF",
|
||||
"mjc_gradient",
|
||||
"mjp_defaultDecoder",
|
||||
"mjp_defaultEncoder",
|
||||
"mjp_defaultPlugin",
|
||||
"mjp_defaultResourceProvider",
|
||||
"mjp_findDecoder",
|
||||
"mjp_findEncoder",
|
||||
"mjp_getPlugin",
|
||||
"mjp_getPluginAtSlot",
|
||||
"mjp_getResourceProvider",
|
||||
"mjp_getResourceProviderAtSlot",
|
||||
"mjp_pluginCount",
|
||||
"mjp_registerDecoder",
|
||||
"mjp_registerEncoder",
|
||||
"mjp_registerPlugin",
|
||||
"mjp_registerResourceProvider",
|
||||
"mjp_resourceProviderCount",
|
||||
@@ -74,6 +77,8 @@ _SKIPPED_CLASS_METHODS: tuple[str, ...] = (
|
||||
"mj_deleteModel",
|
||||
"mj_deleteSpec",
|
||||
"mj_deleteVFS",
|
||||
"mj_encode",
|
||||
"mj_parse", # TODO(manevi): Bind this function.
|
||||
"mj_loadModel",
|
||||
"mj_loadXML",
|
||||
"mj_makeData",
|
||||
|
||||
Reference in New Issue
Block a user