static void intra_stats_ctx_combine(intra_stats_ctx *_a,intra_stats_ctx *_b){ if(_b->n==0){ return; } intra_stats_combine(&_a->gb_vp8,&_b->gb_vp8); intra_stats_combine(&_a->gb_od,&_b->gb_od); _a->n+=_b->n; }
static void cfl_stats_ctx_combine(cfl_stats_ctx *_a,cfl_stats_ctx *_b) { int i; if (_b->n==0) { return; } for (i=0;i<2;i++) { intra_stats_combine(&_a->gb_fdp[i],&_b->gb_fdp[i]); intra_stats_combine(&_a->gb_cfl[i],&_b->gb_cfl[i]); } _a->n+=_b->n; }
static int stats_finish(void *_ctx){ intra_stats_ctx *ctx; #if WRITE_IMAGES char name[8192]; int eos; #endif ctx=(intra_stats_ctx *)_ctx; #if WRITE_IMAGES strcpy(name,ctx->img.name); eos=strlen(name)-4; sprintf(&name[eos],"%s","-vp8"); image_files_write(&ctx->files_vp8,name,NULL); sprintf(&name[eos],"%s","-daala"); image_files_write(&ctx->files_od,name,NULL); #endif intra_stats_combine(&ctx->gb_vp8,&ctx->st_vp8); intra_stats_correct(&ctx->st_vp8); intra_stats_print(&ctx->st_vp8,"VP8 Intra Predictors",VP8_SCALE); intra_stats_combine(&ctx->gb_od,&ctx->st_od); intra_stats_correct(&ctx->st_od); intra_stats_print(&ctx->st_od,"Daala Intra Predictors",OD_SCALE); intra_stats_ctx_clear_image(ctx); return EXIT_SUCCESS; }
static int stats_finish(void *_ctx){ int i; cfl_stats_ctx *ctx; ctx=(cfl_stats_ctx *)_ctx; if (ctx->curr_pli==2) { 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_combine(&ctx->gb_fdp[i],&ctx->st_fdp[i]); intra_stats_correct(&ctx->st_fdp[i]); intra_stats_print(&ctx->st_fdp[i],label,od_scale); sprintf(label,"Chroma-from-Luma Predictors (plane %i)",i+1); intra_stats_combine(&ctx->gb_cfl[i],&ctx->st_cfl[i]); intra_stats_correct(&ctx->st_cfl[i]); intra_stats_print(&ctx->st_cfl[i],label,od_scale); } for (i=0;i<3;i++) { image_data_clear(&ctx->img[i]); } } return EXIT_SUCCESS; }