#!/usr/bin/env python
## Copyright (c) 2021, Alliance for Open Media. All rights reserved
##
## This source code is subject to the terms of the BSD 3-Clause Clear License and the
## Alliance for Open Media Patent License 1.0. If the BSD 3-Clause Clear License was
## not distributed with this source code in the LICENSE file, you can obtain it
## at aomedia.org/license/software-license/bsd-3-c-c/.  If the Alliance for Open Media Patent
## License 1.0 was not distributed with this source code in the PATENTS file, you
## can obtain it at aomedia.org/license/patent-license/.
##
"""Aggregate multiple entropy stats output which is written in 32-bit int.

python ./aggregate_entropy_stats.py [dir of stats files] [keyword of filenames]
 [filename of final stats]
"""

__author__ = "yuec@google.com"

import os
import sys
import numpy as np

def main():
  dir = sys.argv[1]
  sum = []
  for fn in os.listdir(dir):
    if sys.argv[2] in fn:
      stats = np.fromfile(os.path.join(dir, fn), dtype=np.int32)
      if len(sum) == 0:
        sum = stats
      else:
        sum = np.add(sum, stats)
  if len(sum) == 0:
    print("No stats file is found. Double-check directory and keyword?")
  else:
    sum.tofile(sys.argv[3])

if __name__ == '__main__':
    main()
