Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
made min disk usage a thread class with resume features
Browse files Browse the repository at this point in the history
akai-katto committed Dec 28, 2019

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
1 parent b1f2342 commit f6f1ad5
Showing 1 changed file with 32 additions and 8 deletions.
40 changes: 32 additions & 8 deletions src/dandere2xlib/mindiskusage.py
Original file line number Diff line number Diff line change
@@ -7,9 +7,10 @@
from dandere2xlib.utils.dandere2x_utils import get_lexicon_value
# from wrappers.cv2.progress_frame_extractor_cv2 import ProgressiveFramesExtractorCV2
from wrappers.ffmpeg.progressive_frame_extractor_ffmpeg import ProgressiveFramesExtractorFFMPEG
from dandere2xlib.utils.thread_utils import CancellationToken


class MinDiskUsage:
class MinDiskUsage(threading.Thread):
"""
A class to facilitate the actions needed to operate min_disk_usage.
@@ -25,6 +26,27 @@ def __init__(self, context: Context):
self.max_frames_ahead = self.context.max_frames_ahead
self.frame_count = context.frame_count
self.progressive_frame_extractor = ProgressiveFramesExtractorFFMPEG(self.context, self.context.input_file)
self.start_frame = 1

self.progressive_frame_extractor.start_task()
# Threading Specific

self.alive = True
self.cancel_token = CancellationToken()
self._stopevent = threading.Event()
threading.Thread.__init__(self, name="ResidualThread")

def join(self, timeout=None):
threading.Thread.join(self, timeout)

def kill(self):
self.alive = False
self.progressive_frame_extractor.kill_task()
self.cancel_token.cancel()
self._stopevent.set()

def set_resume_frame(self, resume_frame: int):
self.start_frame = resume_frame

"""
todo:
@@ -39,12 +61,15 @@ def run(self):
When it does, delete the used files and extract the needed frame.
"""
logger = logging.getLogger(__name__)
for x in range(1, self.frame_count - self.context.max_frames_ahead + 1):
for x in range(self.start_frame, self.frame_count - self.context.max_frames_ahead + 1):
logger.info("on frame x: " + str(x))
# wait for signal to get ahead of MinDiskUsage
while x >= self.context.signal_merged_count:
while x >= self.context.signal_merged_count and self.alive:
time.sleep(.00001)

if not self.alive:
return

# when it does get ahead, extract the next frame
self.progressive_frame_extractor.next_frame()
self.__delete_used_files(x)
@@ -53,7 +78,7 @@ def extract_initial_frames(self):
"""
Extract 'max_frames_ahead' needed for Dandere2x to start with.
Author: Tremex.
Author: Tremex.
"""
max_frames_ahead = self.context.max_frames_ahead

@@ -101,18 +126,17 @@ def __delete_used_files(self, remove_before):
remove.append(upscaled_file_r)

# remove
threading.Thread(target=self.__delete_files_from_list, args=(remove,), daemon=True).start()
threading.Thread(target=self.__delete_files_from_list, args=(remove,), daemon=True, name="mindiskusage").start()

@staticmethod
def __delete_files_from_list(files):
def __delete_files_from_list(self, files):
"""
Delete all the files in a given list.
Author: Tremex.
"""
for item in files:
c = 0
while True:
while True and self.alive:
if os.path.isfile(item):
try:
os.remove(item)

0 comments on commit f6f1ad5

Please sign in to comment.