FrameSequencer:

- Extract out a (File)FrameSequencer class from Video to encapsulate
the generation of still frames.  This also makes Video easier to test.

- Fix FileFrameSequencer.frames() to correctly handle filenames
  containing '.'

- Temporarily switch to the BMP2DHR NTSC palette (#5) for evaluation.

Video:
- Temporarily hardcode DHGR decoding

- Optimize _heapify_priorities() by using numpy to vectorize the
  construction of the list of tuples.  This requires changing the
  random nonce to an int so the intermediate array has a uniform type.

- Use the efficient 28-bit representation of DHGR (aux, main, aux,
  main) tuples introduced in DHGRBitmap to evaluate diffs

- Switch to np.int type for accumulating diffs, and random.randint(0,
  10000) instead of float for nonce values.

- Fix/improve some of the error evaluation in _index_changes:
  - skip offsets whose diffs have already been cleared
  - hoist some stuff out of _compute_error into the parent

- Add some validation that when we run out of work to do with a frame,
  the source and target memory maps should be equal.  This isn't
  happening sometimes, i.e. there is a bug.
This commit is contained in:
kris
2019-06-14 00:12:26 +01:00
parent 4251c9938f
commit ec65684221
3 changed files with 289 additions and 156 deletions

View File

@@ -40,7 +40,7 @@ def main(args):
video_mode=video.Mode[args.video_mode]
)
print("Input frame rate = %f" % m.video.input_frame_rate)
print("Input frame rate = %f" % m.frame_sequencer.input_frame_rate)
if args.output:
out_filename = args.output