MCPcopy Create free account
hub / github.com/BinomialLLC/basis_universal / transcode

Function transcode

webgl/gltf/BasisTextureLoader.js:440–516  ·  view source on GitHub ↗
( buffer )

Source from the content-addressed store, hash-verified

438 }
439
440 function transcode( buffer ) {
441
442 var basisFile = new _BasisFile( new Uint8Array( buffer ) );
443
444 var width = basisFile.getImageWidth( 0, 0 );
445 var height = basisFile.getImageHeight( 0, 0 );
446 var levels = basisFile.getNumLevels( 0 );
447 var hasAlpha = basisFile.getHasAlpha();
448
449 function cleanup() {
450
451 basisFile.close();
452 basisFile.delete();
453
454 }
455
456 if ( ! hasAlpha ) {
457
458 switch ( config.format ) {
459
460 case 9: // Hardcoded: THREE.BasisTextureLoader.BASIS_FORMAT.cTFPVRTC1_4_RGBA
461 config.format = 8; // Hardcoded: THREE.BasisTextureLoader.BASIS_FORMAT.cTFPVRTC1_4_RGB;
462 break;
463 default:
464 break;
465
466 }
467
468 }
469
470 if ( ! width || ! height || ! levels ) {
471
472 cleanup();
473 throw new Error( 'THREE.BasisTextureLoader: Invalid .basis file' );
474
475 }
476
477 if ( ! basisFile.startTranscoding() ) {
478
479 cleanup();
480 throw new Error( 'THREE.BasisTextureLoader: .startTranscoding failed' );
481
482 }
483
484 var mipmaps = [];
485
486 for ( var mip = 0; mip < levels; mip ++ ) {
487
488 var mipWidth = basisFile.getImageWidth( 0, mip );
489 var mipHeight = basisFile.getImageHeight( 0, mip );
490 var dst = new Uint8Array( basisFile.getImageTranscodedSizeInBytes( 0, mip, config.format ) );
491
492 var status = basisFile.transcodeImage(
493 dst,
494 0,
495 mip,
496 config.format,
497 0,

Callers 1

Calls 9

cleanupFunction · 0.85
getImageWidthMethod · 0.80
getImageHeightMethod · 0.80
getNumLevelsMethod · 0.80
pushMethod · 0.80
getHasAlphaMethod · 0.45
startTranscodingMethod · 0.45
transcodeImageMethod · 0.45

Tested by

no test coverage detected