From f8385dbc423a5dfb98e0505d300cddce8bff47a6 Mon Sep 17 00:00:00 2001 From: Artur Mukhamadiev Date: Mon, 13 Oct 2025 23:56:07 +0300 Subject: [PATCH] moved qa to logging instead of print --- latencyAnalysis.py | 2 +- qa.py | 38 +++++++++++++++++++++++--------------- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/latencyAnalysis.py b/latencyAnalysis.py index 273f11b..419cc5d 100644 --- a/latencyAnalysis.py +++ b/latencyAnalysis.py @@ -165,7 +165,7 @@ def plot_start_latency(df): plt.errorbar(r1, mean_values, yerr=y_error, - fmt='.-', + fmt='-', color='darkblue', ecolor='red', capsize=3, diff --git a/qa.py b/qa.py index 1a4c032..a83fcc1 100644 --- a/qa.py +++ b/qa.py @@ -1,31 +1,37 @@ #!/usr/bin/python3 import subprocess import pandas as pd +import logging + def run_psnr_check(original, encoded, video_info): out = "" # bad practice, but idgaf - # -f rawvideo {video_info} + # -f rawvideo {video_info} options = f"-f rawvideo {video_info} -i {original} -i {encoded} -filter_complex psnr -f null /dev/null" with open("ffmpeg-log.txt", "w") as f: - proc = subprocess.run(["ffmpeg", *options.split()], stdout=f, stderr=subprocess.STDOUT, text=True) - print(f"Return code: {proc.returncode}") + proc = subprocess.run(["ffmpeg", *options.split()], + stdout=f, stderr=subprocess.STDOUT, text=True) + logging.info(f"Return code: {proc.returncode}") with open("ffmpeg-log.txt", "r") as f: out = f.read() return out + def run_ssim_check(original, encoded, video_info): # bad practice, but idgaf # -f rawvideo {video_info} # we don't need additional information with h264 encoded files options = f"-f rawvideo {video_info} -i {original} -i {encoded} -filter_complex ssim -f null /dev/null" with open("ffmpeg-log.txt", "w") as f: - proc = subprocess.run(["ffmpeg", *options.split()], stdout=f, stderr=subprocess.STDOUT, text=True) - print(f"Return code: {proc.returncode}") + proc = subprocess.run(["ffmpeg", *options.split()], + stdout=f, stderr=subprocess.STDOUT, text=True) + logging.info(f"Return code: {proc.returncode}") with open("ffmpeg-log.txt", "r") as f: out = f.read() return out + def parse_psnr_output(output): for line in output.splitlines(): if "[Parsed_psnr" in line and "PSNR" in line: @@ -46,6 +52,7 @@ def parse_psnr_output(output): } return {} + def parse_ssim_output(output): for line in output.splitlines(): if "[Parsed_ssim" in line and "SSIM" in line: @@ -62,15 +69,17 @@ def parse_ssim_output(output): } return {} + def run_quality_check(original, encoded, option): psnr_result = run_psnr_check(original, encoded, option) ssim_result = run_ssim_check(original, encoded, option) psnr_metrics = parse_psnr_output(psnr_result) ssim_metrics = parse_ssim_output(ssim_result) - print ("PSNR Metrics:", psnr_metrics) - print ("SSIM Metrics:", ssim_metrics) + logging.info("PSNR Metrics:", psnr_metrics) + logging.info("SSIM Metrics:", ssim_metrics) return psnr_metrics, ssim_metrics + def parse_quality_report(psnr_metrics, ssim_metrics): psnrSeries = pd.Series(psnr_metrics) ssimSeries = pd.Series(ssim_metrics) @@ -82,10 +91,10 @@ def parse_quality_report(psnr_metrics, ssim_metrics): if __name__ == "__main__": psnr, ssim = run_quality_check( - "base-x264enc-kpop-test-10.yuv", - "encoded-x264enc-kpop-test-10.mp4", - "-pixel_format yuv420p -color_range tv -video_size 1920x1080 -framerate 23.98 " - ) + "base-x264enc-kpop-test-10.yuv", + "encoded-x264enc-kpop-test-10.mp4", + "-pixel_format yuv420p -color_range tv -video_size 1920x1080 -framerate 23.98 " + ) combined = parse_quality_report( psnr, @@ -97,8 +106,8 @@ if __name__ == "__main__": params = "bitrate=5000" columns = pd.MultiIndex.from_tuples( - [(encoder, profile, params, col) for col in combined.columns] - ) + [(encoder, profile, params, col) for col in combined.columns] + ) combined.columns = columns @@ -114,7 +123,6 @@ if __name__ == "__main__": ) combined2.columns = columns main_df = pd.concat([main_df, combined2], axis=1) - print(main_df) + logging.info(main_df) main_df.to_csv("quality_report.csv") -