/normxcorr/trunk

To get this branch, use:
bzr branch http://suren.me/webbzr/normxcorr/trunk

« back to all changes in this revision

Viewing changes to dict_hw/src/dict_hw.cu

  • Committer: Suren A. Chilingaryan
  • Date: 2010-04-25 23:10:35 UTC
  • Revision ID: csa@dside.dyndns.org-20100425231035-ggdq59911gurvsu3
Preloading of images

Show diffs side-by-side

added added

removed removed

Lines of Context:
80
80
    if (ctx->image_buf) {
81
81
        dictImageFree(ctx);
82
82
    }
83
 
 
 
83
    
 
84
    if (ctx->preload_image) free(ctx->preload_image);
 
85
    if (ctx->preload_request) free(ctx->preload_request);
84
86
    if (ctx->base_image) free(ctx->base_image);
85
87
    if (ctx->points) cudaFreeHost(ctx->points);
86
88
 
811
813
        ctx->param_img = img;
812
814
    
813
815
        hw_sched_schedule_task(ctx->sched, ctx, dictLoadImageThread);
 
816
        
 
817
        if (ctx->preload&DICT_PRELOAD_REQUEST) {
 
818
            int preload_err = dictImageLoadImage(ctx, ctx->preload_request, ctx->image2);
 
819
            if (preload_err) {
 
820
                reportError("Failed to preload image %s, error %i. Ignoring and continuing...", ctx->preload_request, preload_err);
 
821
                ctx->preload = 0;
 
822
            } else {
 
823
                char *tmp_image_buf = ctx->preload_image;
 
824
                int tmp_image_size = ctx->preload_image_size;
 
825
                
 
826
                ctx->preload_image = ctx->preload_request;
 
827
                ctx->preload_image_size = ctx->preload_request_size;
 
828
                
 
829
                ctx->preload_request = tmp_image_buf;
 
830
                ctx->preload_request_size = tmp_image_size;
 
831
                
 
832
                ctx->preload = DICT_PRELOAD_READY;
 
833
            }
 
834
        }
 
835
        
814
836
        hw_sched_wait_task(ctx->sched);
815
837
 
816
838
        CHECK_ERROR(err)
850
872
    return err;
851
873
}
852
874
 
 
875
int dictPreloadImageFile(DICTContext ctx, const char *name) {
 
876
    size_t len = strlen(name) + 1;
 
877
    
 
878
    if (len > ctx->preload_request_size) {
 
879
        if (ctx->preload_request) free(ctx->preload_request);
 
880
        ctx->preload_request = (char*)malloc(2 * len * sizeof(char));
 
881
        if (!ctx->preload_request) {
 
882
            ctx->preload &= ~DICT_PRELOAD_REQUEST;
 
883
            ctx->preload_request_size = 0;
 
884
            return DICT_ERROR_MALLOC;
 
885
        }
 
886
    }
 
887
    
 
888
    memcpy(ctx->preload_request, name, len);
 
889
    ctx->preload |= DICT_PRELOAD_REQUEST;
 
890
 
 
891
    return 0;
 
892
}
 
893
 
853
894
int dictLoadTemplateImageFile(DICTContext ctx, const char *name) {
854
895
    int err = dictImageLoadTemplateImage(ctx, name);
855
896
    if (err) return err;
857
898
}
858
899
 
859
900
int dictLoadImageFile(DICTContext ctx, const char *name) {
860
 
    int err = dictImageLoadImage(ctx, name);
861
 
    if (err) return err;
 
901
    int err;
 
902
    unsigned char *tmp;
 
903
 
 
904
    if ((ctx->preload&DICT_PRELOAD_READY)&&(!strcmp(ctx->preload_image, name))) {
 
905
        tmp  = ctx->image2;
 
906
        ctx->image2 = ctx->image;
 
907
        ctx->image = tmp;
 
908
                
 
909
        ctx->preload &= ~DICT_PRELOAD_READY;
 
910
    } else {
 
911
        err = dictImageLoadImage(ctx, name, NULL);
 
912
        if (err) return err;
 
913
    }
 
914
    
862
915
    return dictLoadImage(ctx, ctx->image);
863
916
}
864
917