From 9739d859b7d55ed26cd3131842629ec0a1a37f0a Mon Sep 17 00:00:00 2001 From: Sergio Costas Date: Tue, 5 Aug 2014 11:59:10 +0200 Subject: [PATCH] Now makes an educated guess when the original audio or video bitrate can't be determined Now takes into account the number of audio streams when calculating the final size and adjusting the disc usage --- src/devede/file_movie.py | 14 +++++++++++--- src/devede/project.py | 4 ++-- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/devede/file_movie.py b/src/devede/file_movie.py index 0361f75..c906f95 100644 --- a/src/devede/file_movie.py +++ b/src/devede/file_movie.py @@ -135,9 +135,18 @@ class file_movie(devede.interface_manager.interface_manager): self.original_aspect_ratio = film_analizer.original_aspect_ratio self.original_videorate = film_analizer.original_videorate self.original_audiorate = film_analizer.original_audiorate + self.original_audiorate_uncompressed = film_analizer.original_audiorate_uncompressed self.original_fps = film_analizer.original_fps self.original_file_size = film_analizer.original_file_size + + if self.original_audiorate <= 0: + # just a guess, but usually correct + self.original_audiorate = 224 + if self.original_videorate <= 0: + # presume that there are only video and audio streams + self.original_videorate = ((8 * self.original_file_size) / self.original_length) - (self.original_audiorate * self.audio_streams) + self.error = False self.width_midle = -1 @@ -163,8 +172,7 @@ class file_movie(devede.interface_manager.interface_manager): else: # let's asume 8kbps for each subtitle sub_rate = 8 * len(self.subtitles_list) - estimated_size = ((self.video_rate_final + self.audio_rate_final + sub_rate) * self.original_length) / 8 - + estimated_size = ((self.video_rate_final + (self.audio_rate_final * self.audio_streams) + sub_rate) * self.original_length) / 8 return estimated_size @@ -180,7 +188,7 @@ class file_movie(devede.interface_manager.interface_manager): # let's asume 8kbps for each subtitle sub_rate = 8 * len(self.subtitles_list) - return estimated_size, videorate_fixed_size, self.audio_rate_final, sub_rate, self.width_final, self.height_final, self.original_length + return estimated_size, videorate_fixed_size, self.audio_rate_final, sub_rate, self.width_final, self.height_final, self.original_length, self.audio_streams def set_auto_video_rate(self, new_video_rate): diff --git a/src/devede/project.py b/src/devede/project.py index fa7c471..243dbb1 100644 --- a/src/devede/project.py +++ b/src/devede/project.py @@ -266,11 +266,11 @@ class devede_project: fixed_size = 0 to_adjust = [] for f in self.get_all_files(): - estimated_size, videorate_fixed_size, audio_rate, sub_rate, width, height, time_length = f.get_size_data() + estimated_size, videorate_fixed_size, audio_rate, sub_rate, width, height, time_length, n_audio_streams = f.get_size_data() if videorate_fixed_size: fixed_size += estimated_size else: - fixed_size += ((audio_rate + sub_rate) * time_length) / 8 + fixed_size += (((audio_rate * n_audio_streams) + sub_rate) * time_length) / 8 # 76800 = 320x240, which is the smallest resolution surface = ((width * height) / 76800.0) * time_length to_adjust.append( (f, surface, time_length) )