def add_compression_stats(enc_stats, encoding=None): comp_ratios_pct = [] comp_times_ns = [] total_pixels = 0 total_time = 0.0 for _, _, pixels, bpp, compressed_size, compression_time in enc_stats: if compressed_size>0 and pixels>0: osize = pixels*bpp/8 comp_ratios_pct.append((100.0*compressed_size/osize, pixels)) comp_times_ns.append((1000.0*1000*1000*compression_time/pixels, pixels)) total_pixels += pixels total_time += compression_time einfo = info.setdefault("encoding", {}) if encoding: einfo = einfo.setdefault(encoding, {}) einfo["ratio_pct"] = get_weighted_list_stats(comp_ratios_pct) einfo["pixels_per_ns"] = get_weighted_list_stats(comp_times_ns) if total_time>0: einfo["pixels_encoded_per_second"] = int(total_pixels / total_time)