void resample(AVPicture srcPicture, AVPicture dstPicture) throws JavaAVException { sws_scale(convertContext, new PointerPointer(srcPicture), srcPicture.linesize(), 0, srcFormat.getHeight(), new PointerPointer(dstPicture), dstPicture.linesize()); }
@Override public void convertDataEx(DataBuffer.TypeEx typeSrc, Pointer source, DataBuffer.TypeEx typeDst, Pointer target, long length) { val stream = ((CudaContext) AtomicAllocator.getInstance().getDeviceContext().getContext()).getOldStream(); val p = new PointerPointer<>(new Pointer[]{null, stream}); nativeOps.convertTypes(p, typeSrc.ordinal(), source, length, typeDst.ordinal(), target); }
av_image_fill_arrays(new PointerPointer(image_frame), image_frame.linesize(), data, pixelFormat, width, height, 1); image_frame.linesize(0, step); image_frame.format(pixelFormat);
frame.imageChannels = (size + frame.imageWidth * frame.imageHeight - 1) / (frame.imageWidth * frame.imageHeight); ret = av_image_copy_to_buffer(new BytePointer((ByteBuffer) frame.image[0].position(0)), frame.image[0].capacity(), new PointerPointer(filt_frame), filt_frame.linesize(), filt_frame.format(), frame.imageWidth, frame.imageHeight, 1);
@Override public PointerPointer getExtraPointers() { PointerPointer ptr = new PointerPointer(4); CudaContext context = (CudaContext) AtomicAllocator.getInstance().getDeviceContext().getContext(); ptr.put(0, AtomicAllocator.getInstance().getHostPointer(stateBuffer)); ptr.put(1, context.getOldStream()); return ptr; } }
@Override public PointerPointer getExtraPointers() { PointerPointer ptr = new PointerPointer(4); CudaContext context = (CudaContext) AtomicAllocator.getInstance().getDeviceContext().getContext(); ptr.put(0, AtomicAllocator.getInstance().getHostPointer(stateBuffer)); ptr.put(1, context.getOldStream()); return ptr; } }
@Override public void execute(Context context) { LLVM.LLVMTypeRef returnType = FFIUtil.getRecodeArgumentNative(context, 0); LLVMTypeRef[] paramTypes = FFIUtil.getRecodeArrayArgumentNative(context, 1, LLVMTypeRef[]::new); PointerPointer<LLVMTypeRef> paramTypesWrapped = new PointerPointer<>(paramTypes); int paramCount = (int) context.getIntArgument(0); int isVarArg = (int) context.getIntArgument(1); LLVMTypeRef returnValue = LLVMFunctionType(returnType, paramTypesWrapped, paramCount, isVarArg); BMap<String, BValue> rerunWrapperRecode = FFIUtil.newRecord(context, "LLVMTypeRef"); FFIUtil.addNativeToRecode(returnValue, rerunWrapperRecode); context.setReturnValues(rerunWrapperRecode); } }
private void processImage(Frame frame) throws Exception { // Deinterlace Picture if (deinterlace) { AVPicture p = new AVPicture(picture); avpicture_deinterlace(p, p, _video_codec.pix_fmt(), _video_codec.width(), _video_codec.height()); } // Convert the image into BGR or GRAY format that OpenCV uses img_convert_ctx = sws_getCachedContext(img_convert_ctx, _video_codec.width(), _video_codec.height(), _video_codec.pix_fmt(), getImageWidth(), getImageHeight(), getPixelFormat(), SWS_BILINEAR, null, null, (DoublePointer) null); if (img_convert_ctx == null) { throw new Exception("sws_getCachedContext() error: Cannot initialize the conversion context."); } // Convert the image from its native format to RGB or GRAY sws_scale(img_convert_ctx, new PointerPointer(picture), picture.linesize(), 0, _video_codec.height(), new PointerPointer(picture_rgb), picture_rgb.linesize()); extractBytes(frame, picture_rgb.data(0)); }
@Override public void execute(Context context) { LLVM.LLVMBuilderRef arg0 = FFIUtil.getRecodeArgumentNative(context, 0); LLVM.LLVMValueRef fn = FFIUtil.getRecodeArgumentNative(context, 1); LLVMValueRef[] args = FFIUtil.getRecodeArrayArgumentNative(context, 2, LLVMValueRef[]::new); PointerPointer<LLVMValueRef> argsWrapped = new PointerPointer<>(args); int numArgs = (int) context.getIntArgument(0); String name = context.getStringArgument(0); LLVMValueRef returnValue = LLVMBuildCall(arg0, fn, argsWrapped, numArgs, name); BMap<String, BValue> rerunWrapperRecode = FFIUtil.newRecord(context, "LLVMValueRef"); FFIUtil.addNativeToRecode(returnValue, rerunWrapperRecode); context.setReturnValues(rerunWrapperRecode); } }
public TensorArray(long size) { PointerPointer p = new PointerPointer(size); p.deallocate(false); this.address = p.address(); this.limit = p.limit(); this.capacity = p.capacity(); cudnnTensorStruct t = new cudnnTensorStruct(); for (int i = 0; i < capacity; i++) { checkCudnn(cudnnCreateTensorDescriptor(t)); this.put(i, t); } deallocator(new Deallocator(this, p)); }
/** * Creates a new {@code AudioFrame} with descriptive format and allocates memory * for the specified amount of samples. * * @param format the format of the samples. * @param samples the amount of samples. */ public AudioFrame(AudioFormat format, int samples) { int channels = format.getChannels(); int sampleFormat = format.getSampleFormat().value(); int planes = av_sample_fmt_is_planar(sampleFormat) != 0 ? channels : 1; int planeLength = (samples * channels * av_get_bytes_per_sample(sampleFormat)) / planes; this.format = format; this.samples = samples; this.planePointers = new BytePointer[planes]; this.samplePointer = new PointerPointer(planes); for (int i = 0; i < planes; i++) { this.planePointers[i] = new BytePointer(av_malloc(planeLength)).capacity(planeLength); this.planePointers[i].limit(planeLength); this.samplePointer.put(i, planePointers[i]); } }
@Override public DataBuffer decompress(DataBuffer buffer) { if (buffer.dataType() != DataBuffer.Type.INT) throw new UnsupportedOperationException(); long compressedLength = buffer.getInt(0); long originalLength = buffer.getInt(1); DataBuffer result = Nd4j.createBuffer(originalLength); CudaContext context = (CudaContext) AtomicAllocator.getInstance().getDeviceContext().getContext(); PointerPointer extras = new PointerPointer(32).put(1, context.getOldStream()); //log.info("DEC Source length: {}", buffer.length()); //log.info("DEC Source: {}", Arrays.toString(buffer.asInt())); NativeOpsHolder.getInstance().getDeviceNativeOps().decodeThresholdFloat(extras, AtomicAllocator.getInstance().getPointer(buffer), compressedLength, (FloatPointer) AtomicAllocator.getInstance().getPointer(result)); AtomicAllocator.getInstance().getAllocationPoint(result).tickDeviceWrite(); //DataBuffer result = Nd4j.getNDArrayFactory().convertDataEx(DataBuffer.TypeEx.THRESHOLD, buffer, getGlobalTypeEx()); return result; }
@Override public DataBuffer decompress(DataBuffer buffer) { if (buffer.dataType() != DataBuffer.Type.INT) throw new UnsupportedOperationException(); long compressedLength = buffer.getInt(0); long originalLength = buffer.getInt(1); DataBuffer result = Nd4j.createBuffer(originalLength); CudaContext context = (CudaContext) AtomicAllocator.getInstance().getDeviceContext().getContext(); PointerPointer extras = new PointerPointer(32).put(1, context.getOldStream()); //log.info("DEC Source length: {}", buffer.length()); //log.info("DEC Source: {}", Arrays.toString(buffer.asInt())); NativeOpsHolder.getInstance().getDeviceNativeOps().decodeThresholdFloat(extras, AtomicAllocator.getInstance().getPointer(buffer), compressedLength, (FloatPointer) AtomicAllocator.getInstance().getPointer(result)); AtomicAllocator.getInstance().getAllocationPoint(result).tickDeviceWrite(); //DataBuffer result = Nd4j.getNDArrayFactory().convertDataEx(DataBuffer.TypeEx.THRESHOLD, buffer, getGlobalTypeEx()); return result; }
sws_scale(img_convert_ctx, new PointerPointer(picture), picture.linesize(), 0, video_c.height(), new PointerPointer(picture_rgb), picture_rgb.linesize()); frame.imageStride = picture_rgb.linesize(0); frame.image = image_buf;
@Override public INDArray thresholdDecode(INDArray encoded, INDArray target) { DataBuffer buffer = encoded.data(); if (buffer.dataType() != DataBuffer.Type.INT) throw new UnsupportedOperationException(); long compressedLength = buffer.getInt(0); long originalLength = buffer.getInt(1); if (target.lengthLong() != originalLength) throw new ND4JIllegalStateException("originalLength ["+ originalLength+"] stored in encoded array doesn't match target length ["+ target.lengthLong()+"]"); DataBuffer result = target.data(); CudaContext context = (CudaContext) AtomicAllocator.getInstance().getDeviceContext().getContext(); //nativeOps.memsetAsync(AtomicAllocator.getInstance().getPointer(result), 0,result.length(), 0, context.getOldStream()); if (extraz.get() == null) extraz.set(new PointerPointer(32)); PointerPointer extras = extraz.get().put(1, context.getOldStream()); //log.info("DEC Source length: {}", buffer.length()); //log.info("DEC Source: {}", Arrays.toString(buffer.asInt())); if (Nd4j.dataType() == DataBuffer.Type.FLOAT) { nativeOps.decodeThresholdFloat(extras, AtomicAllocator.getInstance().getPointer(buffer), compressedLength, (FloatPointer) AtomicAllocator.getInstance().getPointer(result)); } else if (Nd4j.dataType() == DataBuffer.Type.DOUBLE) { nativeOps.decodeThresholdDouble(extras, AtomicAllocator.getInstance().getPointer(buffer), compressedLength, (DoublePointer) AtomicAllocator.getInstance().getPointer(result)); } else if (Nd4j.dataType() == DataBuffer.Type.HALF) { nativeOps.decodeThresholdHalf(extras, AtomicAllocator.getInstance().getPointer(buffer), compressedLength, (ShortPointer) AtomicAllocator.getInstance().getPointer(result)); } AtomicAllocator.getInstance().getAllocationPoint(result).tickDeviceWrite(); //DataBuffer result = Nd4j.getNDArrayFactory().convertDataEx(DataBuffer.TypeEx.THRESHOLD, buffer, getGlobalTypeEx()); return target; }
@Override public INDArray thresholdDecode(INDArray encoded, INDArray target) { DataBuffer buffer = encoded.data(); if (buffer.dataType() != DataBuffer.Type.INT) throw new UnsupportedOperationException(); long compressedLength = buffer.getInt(0); long originalLength = buffer.getInt(1); if (target.lengthLong() != originalLength) throw new ND4JIllegalStateException("originalLength ["+ originalLength+"] stored in encoded array doesn't match target length ["+ target.lengthLong()+"]"); DataBuffer result = target.data(); CudaContext context = (CudaContext) AtomicAllocator.getInstance().getDeviceContext().getContext(); //nativeOps.memsetAsync(AtomicAllocator.getInstance().getPointer(result), 0,result.length(), 0, context.getOldStream()); if (extraz.get() == null) extraz.set(new PointerPointer(32)); PointerPointer extras = extraz.get().put(1, context.getOldStream()); //log.info("DEC Source length: {}", buffer.length()); //log.info("DEC Source: {}", Arrays.toString(buffer.asInt())); if (Nd4j.dataType() == DataBuffer.Type.FLOAT) { nativeOps.decodeThresholdFloat(extras, AtomicAllocator.getInstance().getPointer(buffer), compressedLength, (FloatPointer) AtomicAllocator.getInstance().getPointer(result)); } else if (Nd4j.dataType() == DataBuffer.Type.DOUBLE) { nativeOps.decodeThresholdDouble(extras, AtomicAllocator.getInstance().getPointer(buffer), compressedLength, (DoublePointer) AtomicAllocator.getInstance().getPointer(result)); } else if (Nd4j.dataType() == DataBuffer.Type.HALF) { nativeOps.decodeThresholdHalf(extras, AtomicAllocator.getInstance().getPointer(buffer), compressedLength, (ShortPointer) AtomicAllocator.getInstance().getPointer(result)); } AtomicAllocator.getInstance().getAllocationPoint(result).tickDeviceWrite(); //DataBuffer result = Nd4j.getNDArrayFactory().convertDataEx(DataBuffer.TypeEx.THRESHOLD, buffer, getGlobalTypeEx()); return target; }
av_image_fill_arrays(new PointerPointer(picture_rgb), picture_rgb.linesize(), image_ptr[0], fmt, width, height, 1); picture_rgb.format(fmt); picture_rgb.width(width);
@Override public INDArray bitmapDecode(INDArray encoded, INDArray target) { CudaContext context = AtomicAllocator.getInstance().getFlowController().prepareAction(target); if (extraz.get() == null) extraz.set(new PointerPointer(32)); PointerPointer extras = extraz.get().put( AtomicAllocator.getInstance().getHostPointer(target), context.getOldStream(), context.getBufferScalar(), context.getBufferReduction()); if (target.data().dataType() == DataBuffer.Type.FLOAT) { nativeOps.decodeBitmapFloat(extras, AtomicAllocator.getInstance().getPointer(encoded.data(), context), target.lengthLong(), (FloatPointer) AtomicAllocator.getInstance().getPointer(target, context)); } else if (target.data().dataType() == DataBuffer.Type.DOUBLE) { nativeOps.decodeBitmapDouble(extras, AtomicAllocator.getInstance().getPointer(encoded.data(), context), target.lengthLong(), (DoublePointer) AtomicAllocator.getInstance().getPointer(target, context)); } else if (target.data().dataType() == DataBuffer.Type.HALF) { nativeOps.decodeBitmapHalf(extras, AtomicAllocator.getInstance().getPointer(encoded.data(), context), target.lengthLong(), (ShortPointer) AtomicAllocator.getInstance().getPointer(target, context)); } else throw new ND4JIllegalStateException("Unknown dataType " + target.data().dataType()); AtomicAllocator.getInstance().getFlowController().registerAction(context, target); return target; }
@Override public INDArray bitmapDecode(INDArray encoded, INDArray target) { CudaContext context = AtomicAllocator.getInstance().getFlowController().prepareAction(target); if (extraz.get() == null) extraz.set(new PointerPointer(32)); PointerPointer extras = extraz.get().put( AtomicAllocator.getInstance().getHostPointer(target), context.getOldStream(), context.getBufferScalar(), context.getBufferReduction()); if (target.data().dataType() == DataBuffer.Type.FLOAT) { nativeOps.decodeBitmapFloat(extras, AtomicAllocator.getInstance().getPointer(encoded.data(), context), target.lengthLong(), (FloatPointer) AtomicAllocator.getInstance().getPointer(target, context)); } else if (target.data().dataType() == DataBuffer.Type.DOUBLE) { nativeOps.decodeBitmapDouble(extras, AtomicAllocator.getInstance().getPointer(encoded.data(), context), target.lengthLong(), (DoublePointer) AtomicAllocator.getInstance().getPointer(target, context)); } else if (target.data().dataType() == DataBuffer.Type.HALF) { nativeOps.decodeBitmapHalf(extras, AtomicAllocator.getInstance().getPointer(encoded.data(), context), target.lengthLong(), (ShortPointer) AtomicAllocator.getInstance().getPointer(target, context)); } else throw new ND4JIllegalStateException("Unknown dataType " + target.data().dataType()); AtomicAllocator.getInstance().getFlowController().registerAction(context, target); return target; } }
@Override public void createBlas() { blas = new CudaBlas(); PointerPointer functions = new PointerPointer(13); functions.put(0, Loader.addressof("cublasSgemv_v2")); functions.put(1, Loader.addressof("cublasDgemv_v2")); functions.put(2, Loader.addressof("cublasHgemm")); functions.put(3, Loader.addressof("cublasSgemm_v2")); functions.put(4, Loader.addressof("cublasDgemm_v2")); functions.put(5, Loader.addressof("cublasSgemmEx")); functions.put(6, Loader.addressof("cublasHgemmBatched")); functions.put(7, Loader.addressof("cublasSgemmBatched")); functions.put(8, Loader.addressof("cublasDgemmBatched")); functions.put(9, Loader.addressof("cusolverDnSgesvd_bufferSize")); functions.put(10, Loader.addressof("cusolverDnDgesvd_bufferSize")); functions.put(11, Loader.addressof("cusolverDnSgesvd")); functions.put(12, Loader.addressof("cusolverDnDgesvd")); nativeOps.initializeFunctions(functions); }