int main(int _argc,const char *_argv[]){ intra_stats_ctx ctx[NUM_PROCS]; int i; ne_filter_params_init(); vp8_scale_init(VP8_SCALE[B_SZ_LOG-OD_LOG_BSIZE0],B_SZ_LOG); od_scale_init(OD_SCALE[B_SZ_LOG-OD_LOG_BSIZE0],B_SZ_LOG); #if WRITE_IMAGES intra_map_colors(COLORS,OD_INTRA_NMODES); #endif for(i=0;i<NUM_PROCS;i++){ intra_stats_ctx_init(&ctx[i]); } od_intra_init(); OD_OMP_SET_THREADS(NUM_PROCS); ne_apply_to_blocks(ctx,sizeof(*ctx),0x1,PADDING,stats_start,NBLOCKS,BLOCKS, stats_finish,_argc,_argv); for(i=1;i<NUM_PROCS;i++){ intra_stats_ctx_combine(&ctx[0],&ctx[i]); } printf("Processed %i image(s)\n",ctx[0].n); if(ctx[0].n>0){ intra_stats_correct(&ctx[0].gb_vp8); intra_stats_print(&ctx[0].gb_vp8,"VP8 Intra Predictors", VP8_SCALE[B_SZ_LOG-OD_LOG_BSIZE0]); intra_stats_correct(&ctx[0].gb_od); intra_stats_print(&ctx[0].gb_od,"Daala Intra Predictors", OD_SCALE[B_SZ_LOG-OD_LOG_BSIZE0]); } for(i=0;i<NUM_PROCS;i++){ intra_stats_ctx_clear(&ctx[i]); } od_intra_clear(); return EXIT_SUCCESS; }
int main(int _argc,const char *_argv[]) { cfl_stats_ctx ctx[NUM_PROCS]; int i; ne_filter_params_init(); for (i=0;i<OD_NBSIZES;i++) { od_scale_init(OD_SCALE[i],OD_LOG_BSIZE0+i); } for (i=0;i<NUM_PROCS;i++) { cfl_stats_ctx_init(&ctx[i]); } od_intra_init(); OD_OMP_SET_THREADS(NUM_PROCS); cfl_apply_to_blocks(ctx,sizeof(*ctx),0x7,PADDING,stats_start,NBLOCKS,BLOCKS, stats_finish,_argc,_argv); for (i=1;i<NUM_PROCS;i++) { cfl_stats_ctx_combine(&ctx[0],&ctx[i]); } printf("Processed %i image(s)\n",ctx[0].n); if (ctx[0].n>0) { double *od_scale; od_scale=OD_SCALE[B_SZ_LOG-1-OD_LOG_BSIZE0]; for (i=0;i<2;i++) { char label[128]; sprintf(label,"Frequency-Domain Predictors (plane %i)",i+1); intra_stats_correct(&ctx[0].gb_fdp[i]); intra_stats_print(&ctx[0].gb_fdp[i],label,od_scale); sprintf(label,"Chroma-from-Luma Predictors (plane %i)",i+1); intra_stats_correct(&ctx[0].gb_cfl[i]); intra_stats_print(&ctx[0].gb_cfl[i],label,od_scale); } } for (i=0;i<NUM_PROCS;i++) { cfl_stats_ctx_clear(&ctx[i]); } od_intra_clear(); return EXIT_SUCCESS; }
int main(int _argc,const char *_argv[]){ cov_state cvs[NUM_PROCS]; #if COMPUTE_NATHAN trans_ctx ctx[NUM_PROCS]; double r[SUPPORT*SUPPORT]; /* maximum for 2d */ #else trans_ctx *ctx=NULL; #endif int i; #if BLOCKSIZE==4 f=OD_FILTER_PARAMS4; #elif BLOCKSIZE==8 f=OD_FILTER_PARAMS8; #elif BLOCKSIZE==16 f=OD_FILTER_PARAMS16; #else # error "Need filter params for this block size." #endif for(i=0;i<NUM_PROCS;i++){ #if USE_2D cov_init(&cvs[i],SUPPORT*SUPPORT); #else cov_init(&cvs[i],SUPPORT); #endif } #if COMPUTE_NATHAN for(i=0;i<NUM_PROCS;i++){ #if USE_2D trans_data_init(&ctx[i].td,SUPPORT*SUPPORT); #else trans_data_init(&ctx[i].td,SUPPORT); #endif } #endif OD_OMP_SET_THREADS(NUM_PROCS); process_files(ctx,cvs,_argc,_argv); for(i=1;i<NUM_PROCS;i++) cov_combine(&cvs[0],&cvs[i]); cov_compute(&cvs[0]); #if COMPUTE_NATHAN for(i=1;i<NUM_PROCS;i++) trans_data_combine(&ctx[0].td,&ctx[i].td); trans_data_normalize(&ctx[0].td); #endif #if PRINT_COV { int i,j; fprintf(stdout,"collapsed_cov=\n"); for(j=0;j<cvs[0].sz/SUPPORT;j++){ for(i=0;i<SUPPORT;i++){ fprintf(stdout,"%s %- 12.6G",i>0?",":"",cvs[0].cov[j*SUPPORT+i]); } fprintf(stdout,"\n"); } } #endif #if USE_2D #if COMPUTE_NATHAN fprintf(stdout,"original cg=%-24.16G\n", cg_2d((double(*)[SUPPORT][SUPPORT][SUPPORT])ctx[0].td.cov,f)); trans_data_collapse(&ctx[0].td,SUPPORT,r); fprintf(stdout,"collapse cg=%-24.16G\n", cg_2d_collapsed((double(*)[SUPPORT])r,f)); #endif fprintf(stdout,"monty cg=%-24.16G\n", cg_2d_collapsed((double(*)[SUPPORT])cvs[0].cov,f)); #else #if COMPUTE_NATHAN fprintf(stdout,"original cg=%-24.16G\n", cg_1d((double (*)[SUPPORT])ctx[0].td.cov,f)); trans_data_collapse(&ctx[0].td,1,r); fprintf(stdout,"collapse cg=%-24.16G\n", cg_1d_collapsed(r,f)); #endif fprintf(stdout,"monty cg=%-24.16G\n", cg_1d_collapsed(cvs[0].cov,f)); #endif for(i=0;i<NUM_PROCS;i++) cov_clear(&cvs[i]); #if COMPUTE_NATHAN for(i=0;i<NUM_PROCS;i++) trans_data_clear(&ctx[i].td); #endif return EXIT_SUCCESS; }