## schrocuda schrocuda |

## Synopsis

    typedef             SchroCUDAStream;
                        SchroGPUMotion;
    #define             SCHRO_FRAME_IS_CUDA                 (frame)
    void                schro_cuda_init                     (void);
    void                schro_gpumotion_copy                (SchroGPUMotion *self,
                                                             SchroMotion *motion);
    void                schro_gpumotion_free                (SchroGPUMotion *rv);
    void                schro_gpumotion_init                (SchroGPUMotion *self,
                                                             SchroMotion *motion);
    SchroGPUMotion *    schro_gpumotion_new                 (SchroCUDAStream stream);
    void                schro_gpumotion_render              (SchroGPUMotion *self,
                                                             SchroMotion *motion,
                                                             SchroFrame *gdest);
    void                schro_frame_to_gpu                  (SchroFrame *dest,
                                                             SchroFrame *src);
    void                schro_gpuframe_add                  (SchroFrame *dest,
                                                             SchroFrame *src);
    void                schro_gpuframe_compare              (SchroFrame *a,
                                                             SchroFrame *b);
    void                schro_gpuframe_convert              (SchroFrame *dest,
                                                             SchroFrame *src);
    void                schro_gpuframe_inverse_iwt_transform
                                                            (SchroFrame *frame,
                                                             SchroParams *params);
    void                schro_gpuframe_iwt_transform        (SchroFrame *frame,
                                                             SchroParams *params);
    void                schro_gpuframe_subtract             (SchroFrame *dest,
                                                             SchroFrame *src);
    void                schro_gpuframe_to_cpu               (SchroFrame *dest,
                                                             SchroFrame *src);
    void                schro_gpuframe_upsample             (SchroFrame *dst,
                                                             SchroFrame *src);
    void                schro_gpuframe_zero                 (SchroFrame *dest);
    void                schro_upsampled_gpuframe_free       (SchroUpsampledFrame *x);
    SchroUpsampledFrame * schro_upsampled_gpuframe_new      (SchroVideoFormat *fmt);
    void                schro_upsampled_gpuframe_upsample   (SchroUpsampledFrame *rv);

## Description

## Details

### SchroCUDAStream

    typedef int SchroCUDAStream;

### SchroGPUMotion

    typedef struct _SchroGPUMotion SchroGPUMotion;

### SCHRO_FRAME_IS_CUDA()

    #define SCHRO_FRAME_IS_CUDA(frame) ((frame)->domain && ((frame)->domain->flags & SCHRO_MEMORY_DOMAIN_CUDA))

### schro_cuda_init ()

    void                schro_cuda_init                     (void);

### schro_gpumotion_copy ()

    void                schro_gpumotion_copy                (SchroGPUMotion *self,
                                                             SchroMotion *motion);

### schro_gpumotion_free ()

    void                schro_gpumotion_free                (SchroGPUMotion *rv);

### schro_gpumotion_init ()

    void                schro_gpumotion_init                (SchroGPUMotion *self,
                                                             SchroMotion *motion);

### schro_gpumotion_new ()

    SchroGPUMotion *    schro_gpumotion_new                 (SchroCUDAStream stream);

### schro_gpumotion_render ()

    void                schro_gpumotion_render              (SchroGPUMotion *self,
                                                             SchroMotion *motion,
                                                             SchroFrame *gdest);

### schro_frame_to_gpu ()

    void                schro_frame_to_gpu                  (SchroFrame *dest,
                                                             SchroFrame *src);

### schro_gpuframe_add ()

    void                schro_gpuframe_add                  (SchroFrame *dest,
                                                             SchroFrame *src);

### schro_gpuframe_compare ()

    void                schro_gpuframe_compare              (SchroFrame *a,
                                                             SchroFrame *b);

### schro_gpuframe_convert ()

    void                schro_gpuframe_convert              (SchroFrame *dest,
                                                             SchroFrame *src);

### schro_gpuframe_inverse_iwt_transform ()

    void                schro_gpuframe_inverse_iwt_transform
                                                            (SchroFrame *frame,
                                                             SchroParams *params);

### schro_gpuframe_iwt_transform ()

    void                schro_gpuframe_iwt_transform        (SchroFrame *frame,
                                                             SchroParams *params);

### schro_gpuframe_subtract ()

    void                schro_gpuframe_subtract             (SchroFrame *dest,
                                                             SchroFrame *src);

### schro_gpuframe_to_cpu ()

    void                schro_gpuframe_to_cpu               (SchroFrame *dest,
                                                             SchroFrame *src);

### schro_gpuframe_upsample ()

    void                schro_gpuframe_upsample             (SchroFrame *dst,
                                                             SchroFrame *src);

### schro_gpuframe_zero ()

    void                schro_gpuframe_zero                 (SchroFrame *dest);

### schro_upsampled_gpuframe_free ()

    void                schro_upsampled_gpuframe_free       (SchroUpsampledFrame *x);

### schro_upsampled_gpuframe_new ()

    SchroUpsampledFrame * schro_upsampled_gpuframe_new      (SchroVideoFormat *fmt);

### schro_upsampled_gpuframe_upsample ()

    void                schro_upsampled_gpuframe_upsample   (SchroUpsampledFrame *rv);