mirror of
https://github.com/LTTLabsOSS/markbench-tests.git
synced 2026-01-09 22:18:00 -05:00
initial commit
This commit is contained in:
127
handbrake/handbrake.py
Normal file
127
handbrake/handbrake.py
Normal file
@@ -0,0 +1,127 @@
|
||||
"""test script for handbrake encoding tests"""
|
||||
from argparse import ArgumentParser
|
||||
import os
|
||||
import re
|
||||
from handbrake_utils import HANDBRAKE_EXECUTABLE, current_time_ms, handbrake_present, is_video_source_present, copy_video_source, copy_handbrake_from_network_drive
|
||||
import logging
|
||||
import subprocess
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
sys.path.insert(1, os.path.join(sys.path[0], ".."))
|
||||
|
||||
from harness_utils.output import (
|
||||
DEFAULT_DATE_FORMAT,
|
||||
DEFAULT_LOGGING_FORMAT,
|
||||
write_report_json
|
||||
)
|
||||
|
||||
|
||||
SCRIPT_DIR = Path(__file__).resolve().parent
|
||||
LOG_DIR = SCRIPT_DIR.joinpath("run")
|
||||
LOG_DIR.mkdir(exist_ok=True)
|
||||
|
||||
LOG_FILE = LOG_DIR / "harness.log"
|
||||
logging.basicConfig(
|
||||
filename=LOG_FILE,
|
||||
format=DEFAULT_LOGGING_FORMAT,
|
||||
datefmt=DEFAULT_DATE_FORMAT,
|
||||
level=logging.DEBUG
|
||||
)
|
||||
|
||||
console = logging.StreamHandler()
|
||||
formatter = logging.Formatter(DEFAULT_LOGGING_FORMAT)
|
||||
console.setFormatter(formatter)
|
||||
logging.getLogger("").addHandler(console)
|
||||
|
||||
def main():
|
||||
"""entrypoint"""
|
||||
parser = ArgumentParser()
|
||||
parser.add_argument("-e", "--encoder", dest="encoder",
|
||||
help="encoder", metavar="encoder", required=True)
|
||||
args = parser.parse_args()
|
||||
|
||||
encoder_to_preset = {
|
||||
"h264": {
|
||||
"file": "./presets/h264_bigbuckbunny_1080p_cpu_test.json",
|
||||
"name": "CPU 1080p BBB H264"
|
||||
},
|
||||
"h265": {
|
||||
"file": "./presets/h265_bigbuckbunny_1080p_cpu_test.json",
|
||||
"name": "CPU 1080p BBB H265"
|
||||
},
|
||||
"av1": {
|
||||
"file": "./presets/av1-svt_bigbuckbunny_1080p_cpu_test.json",
|
||||
"name": "CPU 1080p BBB AV1"
|
||||
}
|
||||
}
|
||||
|
||||
if args.encoder not in list(encoder_to_preset.keys()):
|
||||
logging.error(f"Invalid encoder selection: {args.encoder}")
|
||||
sys.exit(1)
|
||||
|
||||
try:
|
||||
score = 0
|
||||
preset = encoder_to_preset[args.encoder]
|
||||
if handbrake_present() is False:
|
||||
logging.info("copying handbrake from network drive")
|
||||
copy_handbrake_from_network_drive()
|
||||
else:
|
||||
logging.info("detected handbrake")
|
||||
|
||||
if is_video_source_present() is False:
|
||||
logging.info("copying big buck bunny from network drive")
|
||||
copy_video_source()
|
||||
else:
|
||||
logging.info("detected big buck bunny source file")
|
||||
|
||||
logging.info("starting benchmark, this may take a few minutes")
|
||||
logging.info(
|
||||
"you can ensure the test is running by checking that cpu usage is 100% in task manager")
|
||||
command = f"{SCRIPT_DIR}\\{HANDBRAKE_EXECUTABLE}"
|
||||
start_time = current_time_ms()
|
||||
avgencoding_pattern = r'average encoding speed for job is (\d+\.\d+) fps'
|
||||
output = subprocess.check_output([
|
||||
command,
|
||||
"-i",
|
||||
"big_buck_bunny_1080p24.y4m",
|
||||
"-o",
|
||||
"bbboutput.mp4",
|
||||
"--preset-import-file",
|
||||
preset['file'],
|
||||
"--preset",
|
||||
preset['name']],
|
||||
text=True,
|
||||
stderr=subprocess.STDOUT)
|
||||
end_time = current_time_ms()
|
||||
|
||||
logging.getLogger("").removeHandler(console)
|
||||
logging.info(output)
|
||||
logging.getLogger("").addHandler(console)
|
||||
|
||||
match = re.search(avgencoding_pattern, output)
|
||||
if not match:
|
||||
raise Exception("score was not found in the process output!")
|
||||
score = match.group(1)
|
||||
logging.info(f"Average Encoding Speed: {score}")
|
||||
logging.info(f"Finished in: {(end_time - start_time) / 1000} seconds")
|
||||
|
||||
end_time = current_time_ms()
|
||||
|
||||
report = {
|
||||
"test": f"HandBrake Encoding BBB {args.encoder.upper()}",
|
||||
"score": score,
|
||||
"unit": "frames per second",
|
||||
"version": "1.8.1",
|
||||
"start_time": start_time,
|
||||
"end_time": end_time
|
||||
}
|
||||
|
||||
write_report_json(LOG_DIR, "report.json", report)
|
||||
except Exception as e:
|
||||
logging.error("Something went wrong running the benchmark!")
|
||||
logging.exception(e)
|
||||
sys.exit(1)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
41
handbrake/handbrake_utils.py
Normal file
41
handbrake/handbrake_utils.py
Normal file
@@ -0,0 +1,41 @@
|
||||
"""utility functions for running handbrake tests"""
|
||||
|
||||
import os
|
||||
from pathlib import Path
|
||||
import time
|
||||
import shutil
|
||||
|
||||
HANDBRAKE_EXECUTABLE = "HandBrakeCLI.exe"
|
||||
SOURCE_VIDEO_NAME = "big_buck_bunny_1080p24.y4m"
|
||||
SCRIPT_DIR = Path(os.path.dirname(os.path.realpath(__file__)))
|
||||
|
||||
|
||||
def handbrake_present() -> bool:
|
||||
"""Check if handbrake is present on the system"""
|
||||
return os.path.isfile(Path(SCRIPT_DIR / HANDBRAKE_EXECUTABLE))
|
||||
|
||||
|
||||
def copy_handbrake_from_network_drive():
|
||||
"""copy handbrake cli from network drive"""
|
||||
source = Path("\\\\Labs\\labs\\01_Installers_Utilities\\Handbrake\\X86\\HandBrakeCLI-1.8.1-win-x86_64\\")
|
||||
copy_souce = source / HANDBRAKE_EXECUTABLE
|
||||
destination = SCRIPT_DIR / HANDBRAKE_EXECUTABLE
|
||||
shutil.copyfile(copy_souce, destination)
|
||||
|
||||
|
||||
def is_video_source_present() -> bool:
|
||||
"""check if big buck bunny video source is present"""
|
||||
return os.path.isfile(Path(SCRIPT_DIR / SOURCE_VIDEO_NAME))
|
||||
|
||||
|
||||
def copy_video_source():
|
||||
"""copy big buck bunny source video to local from network drive"""
|
||||
source = r"\\Labs\labs\03_ProcessingFiles\Handbrake Test\big_buck_bunny_1080p24.y4m"
|
||||
root_dir = os.path.dirname(os.path.realpath(__file__))
|
||||
destination = os.path.join(root_dir, SOURCE_VIDEO_NAME)
|
||||
shutil.copyfile(source, destination)
|
||||
|
||||
|
||||
def current_time_ms():
|
||||
"""Get current timestamp in milliseconds since epoch"""
|
||||
return int(time.time() * 1000)
|
||||
13
handbrake/manifest.yaml
Normal file
13
handbrake/manifest.yaml
Normal file
@@ -0,0 +1,13 @@
|
||||
friendly_name: "Handbrake"
|
||||
executable: "handbrake.py"
|
||||
process_name: "HandBrakeCLI.exe"
|
||||
disable_presentmon: true
|
||||
output_dir: run
|
||||
options:
|
||||
- name: preset
|
||||
type: select
|
||||
values:
|
||||
- h264
|
||||
- h265
|
||||
- av1
|
||||
tooltip: Select which preset to use
|
||||
111
handbrake/presets/av1-svt_bigbuckbunny_1080p_cpu_test.json
Normal file
111
handbrake/presets/av1-svt_bigbuckbunny_1080p_cpu_test.json
Normal file
@@ -0,0 +1,111 @@
|
||||
{
|
||||
"PresetList": [
|
||||
{
|
||||
"AlignAVStart": true,
|
||||
"AudioCopyMask": [
|
||||
"copy:aac"
|
||||
],
|
||||
"AudioEncoderFallback": "av_aac",
|
||||
"AudioLanguageList": [],
|
||||
"AudioList": [
|
||||
{
|
||||
"AudioBitrate": 160,
|
||||
"AudioCompressionLevel": 0,
|
||||
"AudioEncoder": "av_aac",
|
||||
"AudioMixdown": "stereo",
|
||||
"AudioNormalizeMixLevel": false,
|
||||
"AudioSamplerate": "auto",
|
||||
"AudioTrackQualityEnable": false,
|
||||
"AudioTrackQuality": -1,
|
||||
"AudioTrackGainSlider": 0,
|
||||
"AudioTrackDRCSlider": 0
|
||||
}
|
||||
],
|
||||
"AudioSecondaryEncoderMode": true,
|
||||
"AudioTrackSelectionBehavior": "first",
|
||||
"ChapterMarkers": true,
|
||||
"ChildrenArray": [],
|
||||
"Default": false,
|
||||
"FileFormat": "av_mp4",
|
||||
"Folder": false,
|
||||
"FolderOpen": false,
|
||||
"Optimize": false,
|
||||
"Mp4iPodCompatible": false,
|
||||
"PictureCropMode": 0,
|
||||
"PictureBottomCrop": 0,
|
||||
"PictureLeftCrop": 0,
|
||||
"PictureRightCrop": 0,
|
||||
"PictureTopCrop": 0,
|
||||
"PictureDARWidth": 1920,
|
||||
"PictureDeblockPreset": "off",
|
||||
"PictureDeblockTune": "medium",
|
||||
"PictureDeblockCustom": "strength=strong:thresh=20:blocksize=8",
|
||||
"PictureDeinterlaceFilter": "decomb",
|
||||
"PictureCombDetectPreset": "default",
|
||||
"PictureCombDetectCustom": "",
|
||||
"PictureDeinterlacePreset": "default",
|
||||
"PictureDeinterlaceCustom": "",
|
||||
"PictureDenoiseCustom": "",
|
||||
"PictureDenoiseFilter": "off",
|
||||
"PictureSharpenCustom": "",
|
||||
"PictureSharpenFilter": "off",
|
||||
"PictureSharpenPreset": "medium",
|
||||
"PictureSharpenTune": "none",
|
||||
"PictureDetelecine": "off",
|
||||
"PictureDetelecineCustom": "",
|
||||
"PictureColorspacePreset": "off",
|
||||
"PictureColorspaceCustom": "",
|
||||
"PictureChromaSmoothPreset": "off",
|
||||
"PictureChromaSmoothTune": "none",
|
||||
"PictureChromaSmoothCustom": "",
|
||||
"PictureItuPAR": false,
|
||||
"PictureKeepRatio": true,
|
||||
"PicturePAR": "auto",
|
||||
"PicturePARWidth": 1,
|
||||
"PicturePARHeight": 1,
|
||||
"PictureWidth": 1920,
|
||||
"PictureHeight": 1080,
|
||||
"PictureUseMaximumSize": true,
|
||||
"PictureAllowUpscaling": false,
|
||||
"PictureForceHeight": 0,
|
||||
"PictureForceWidth": 0,
|
||||
"PicturePadMode": "none",
|
||||
"PicturePadTop": 0,
|
||||
"PicturePadBottom": 0,
|
||||
"PicturePadLeft": 0,
|
||||
"PicturePadRight": 0,
|
||||
"PresetDescription": "This is the standard preset for our CPU encoding test for AV1 Big Buck Bunny at 1080p",
|
||||
"PresetName": "CPU 1080p BBB AV1",
|
||||
"Type": 1,
|
||||
"SubtitleAddCC": false,
|
||||
"SubtitleAddForeignAudioSearch": true,
|
||||
"SubtitleAddForeignAudioSubtitle": false,
|
||||
"SubtitleBurnBehavior": "foreign",
|
||||
"SubtitleBurnBDSub": false,
|
||||
"SubtitleBurnDVDSub": false,
|
||||
"SubtitleLanguageList": [],
|
||||
"SubtitleTrackSelectionBehavior": "none",
|
||||
"VideoAvgBitrate": 0,
|
||||
"VideoColorMatrixCode": 0,
|
||||
"VideoEncoder": "svt_av1",
|
||||
"VideoFramerateMode": "cfr",
|
||||
"VideoGrayScale": false,
|
||||
"VideoScaler": "swscale",
|
||||
"VideoPreset": "7",
|
||||
"VideoTune": "",
|
||||
"VideoProfile": "main",
|
||||
"VideoLevel": "5.1",
|
||||
"VideoOptionExtra": "",
|
||||
"VideoQualityType": 2,
|
||||
"VideoQualitySlider": 20,
|
||||
"VideoMultiPass": true,
|
||||
"VideoTurboMultiPass": true,
|
||||
"x264UseAdvancedOptions": false,
|
||||
"PresetDisabled": false,
|
||||
"MetadataPassthrough": true
|
||||
}
|
||||
],
|
||||
"VersionMajor": 53,
|
||||
"VersionMicro": 0,
|
||||
"VersionMinor": 0
|
||||
}
|
||||
111
handbrake/presets/h264_bigbuckbunny_1080p_cpu_test.json
Normal file
111
handbrake/presets/h264_bigbuckbunny_1080p_cpu_test.json
Normal file
@@ -0,0 +1,111 @@
|
||||
{
|
||||
"PresetList": [
|
||||
{
|
||||
"AlignAVStart": true,
|
||||
"AudioCopyMask": [
|
||||
"copy:aac"
|
||||
],
|
||||
"AudioEncoderFallback": "av_aac",
|
||||
"AudioLanguageList": [],
|
||||
"AudioList": [
|
||||
{
|
||||
"AudioBitrate": 160,
|
||||
"AudioCompressionLevel": 0,
|
||||
"AudioEncoder": "av_aac",
|
||||
"AudioMixdown": "stereo",
|
||||
"AudioNormalizeMixLevel": false,
|
||||
"AudioSamplerate": "auto",
|
||||
"AudioTrackQualityEnable": false,
|
||||
"AudioTrackQuality": -1,
|
||||
"AudioTrackGainSlider": 0,
|
||||
"AudioTrackDRCSlider": 0
|
||||
}
|
||||
],
|
||||
"AudioSecondaryEncoderMode": true,
|
||||
"AudioTrackSelectionBehavior": "first",
|
||||
"ChapterMarkers": true,
|
||||
"ChildrenArray": [],
|
||||
"Default": false,
|
||||
"FileFormat": "av_mp4",
|
||||
"Folder": false,
|
||||
"FolderOpen": false,
|
||||
"Optimize": false,
|
||||
"Mp4iPodCompatible": false,
|
||||
"PictureCropMode": 0,
|
||||
"PictureBottomCrop": 0,
|
||||
"PictureLeftCrop": 0,
|
||||
"PictureRightCrop": 0,
|
||||
"PictureTopCrop": 0,
|
||||
"PictureDARWidth": 1920,
|
||||
"PictureDeblockPreset": "off",
|
||||
"PictureDeblockTune": "medium",
|
||||
"PictureDeblockCustom": "strength=strong:thresh=20:blocksize=8",
|
||||
"PictureDeinterlaceFilter": "decomb",
|
||||
"PictureCombDetectPreset": "default",
|
||||
"PictureCombDetectCustom": "",
|
||||
"PictureDeinterlacePreset": "default",
|
||||
"PictureDeinterlaceCustom": "",
|
||||
"PictureDenoiseCustom": "",
|
||||
"PictureDenoiseFilter": "off",
|
||||
"PictureSharpenCustom": "",
|
||||
"PictureSharpenFilter": "off",
|
||||
"PictureSharpenPreset": "medium",
|
||||
"PictureSharpenTune": "none",
|
||||
"PictureDetelecine": "off",
|
||||
"PictureDetelecineCustom": "",
|
||||
"PictureColorspacePreset": "off",
|
||||
"PictureColorspaceCustom": "",
|
||||
"PictureChromaSmoothPreset": "off",
|
||||
"PictureChromaSmoothTune": "none",
|
||||
"PictureChromaSmoothCustom": "",
|
||||
"PictureItuPAR": false,
|
||||
"PictureKeepRatio": true,
|
||||
"PicturePAR": "auto",
|
||||
"PicturePARWidth": 1,
|
||||
"PicturePARHeight": 1,
|
||||
"PictureWidth": 1920,
|
||||
"PictureHeight": 1080,
|
||||
"PictureUseMaximumSize": true,
|
||||
"PictureAllowUpscaling": false,
|
||||
"PictureForceHeight": 0,
|
||||
"PictureForceWidth": 0,
|
||||
"PicturePadMode": "none",
|
||||
"PicturePadTop": 0,
|
||||
"PicturePadBottom": 0,
|
||||
"PicturePadLeft": 0,
|
||||
"PicturePadRight": 0,
|
||||
"PresetDescription": "This is the standard preset for our CPU encoding test for H264 Big Buck Bunny at 1080p.",
|
||||
"PresetName": "CPU 1080p BBB H264",
|
||||
"Type": 1,
|
||||
"SubtitleAddCC": false,
|
||||
"SubtitleAddForeignAudioSearch": true,
|
||||
"SubtitleAddForeignAudioSubtitle": false,
|
||||
"SubtitleBurnBehavior": "foreign",
|
||||
"SubtitleBurnBDSub": false,
|
||||
"SubtitleBurnDVDSub": false,
|
||||
"SubtitleLanguageList": [],
|
||||
"SubtitleTrackSelectionBehavior": "none",
|
||||
"VideoAvgBitrate": 0,
|
||||
"VideoColorMatrixCode": 0,
|
||||
"VideoEncoder": "x264",
|
||||
"VideoFramerateMode": "cfr",
|
||||
"VideoGrayScale": false,
|
||||
"VideoScaler": "swscale",
|
||||
"VideoPreset": "slow",
|
||||
"VideoTune": "",
|
||||
"VideoProfile": "high",
|
||||
"VideoLevel": "5.1",
|
||||
"VideoOptionExtra": "",
|
||||
"VideoQualityType": 2,
|
||||
"VideoQualitySlider": 20,
|
||||
"VideoMultiPass": true,
|
||||
"VideoTurboMultiPass": true,
|
||||
"x264UseAdvancedOptions": false,
|
||||
"PresetDisabled": false,
|
||||
"MetadataPassthrough": true
|
||||
}
|
||||
],
|
||||
"VersionMajor": 53,
|
||||
"VersionMicro": 0,
|
||||
"VersionMinor": 0
|
||||
}
|
||||
111
handbrake/presets/h265_bigbuckbunny_1080p_cpu_test.json
Normal file
111
handbrake/presets/h265_bigbuckbunny_1080p_cpu_test.json
Normal file
@@ -0,0 +1,111 @@
|
||||
{
|
||||
"PresetList": [
|
||||
{
|
||||
"AlignAVStart": true,
|
||||
"AudioCopyMask": [
|
||||
"copy:aac"
|
||||
],
|
||||
"AudioEncoderFallback": "av_aac",
|
||||
"AudioLanguageList": [],
|
||||
"AudioList": [
|
||||
{
|
||||
"AudioBitrate": 160,
|
||||
"AudioCompressionLevel": 0,
|
||||
"AudioEncoder": "av_aac",
|
||||
"AudioMixdown": "stereo",
|
||||
"AudioNormalizeMixLevel": false,
|
||||
"AudioSamplerate": "auto",
|
||||
"AudioTrackQualityEnable": false,
|
||||
"AudioTrackQuality": -1,
|
||||
"AudioTrackGainSlider": 0,
|
||||
"AudioTrackDRCSlider": 0
|
||||
}
|
||||
],
|
||||
"AudioSecondaryEncoderMode": true,
|
||||
"AudioTrackSelectionBehavior": "first",
|
||||
"ChapterMarkers": true,
|
||||
"ChildrenArray": [],
|
||||
"Default": false,
|
||||
"FileFormat": "av_mp4",
|
||||
"Folder": false,
|
||||
"FolderOpen": false,
|
||||
"Optimize": false,
|
||||
"Mp4iPodCompatible": false,
|
||||
"PictureCropMode": 0,
|
||||
"PictureBottomCrop": 0,
|
||||
"PictureLeftCrop": 0,
|
||||
"PictureRightCrop": 0,
|
||||
"PictureTopCrop": 0,
|
||||
"PictureDARWidth": 1920,
|
||||
"PictureDeblockPreset": "off",
|
||||
"PictureDeblockTune": "medium",
|
||||
"PictureDeblockCustom": "strength=strong:thresh=20:blocksize=8",
|
||||
"PictureDeinterlaceFilter": "decomb",
|
||||
"PictureCombDetectPreset": "default",
|
||||
"PictureCombDetectCustom": "",
|
||||
"PictureDeinterlacePreset": "default",
|
||||
"PictureDeinterlaceCustom": "",
|
||||
"PictureDenoiseCustom": "",
|
||||
"PictureDenoiseFilter": "off",
|
||||
"PictureSharpenCustom": "",
|
||||
"PictureSharpenFilter": "off",
|
||||
"PictureSharpenPreset": "medium",
|
||||
"PictureSharpenTune": "none",
|
||||
"PictureDetelecine": "off",
|
||||
"PictureDetelecineCustom": "",
|
||||
"PictureColorspacePreset": "off",
|
||||
"PictureColorspaceCustom": "",
|
||||
"PictureChromaSmoothPreset": "off",
|
||||
"PictureChromaSmoothTune": "none",
|
||||
"PictureChromaSmoothCustom": "",
|
||||
"PictureItuPAR": false,
|
||||
"PictureKeepRatio": true,
|
||||
"PicturePAR": "auto",
|
||||
"PicturePARWidth": 1,
|
||||
"PicturePARHeight": 1,
|
||||
"PictureWidth": 1920,
|
||||
"PictureHeight": 1080,
|
||||
"PictureUseMaximumSize": true,
|
||||
"PictureAllowUpscaling": false,
|
||||
"PictureForceHeight": 0,
|
||||
"PictureForceWidth": 0,
|
||||
"PicturePadMode": "none",
|
||||
"PicturePadTop": 0,
|
||||
"PicturePadBottom": 0,
|
||||
"PicturePadLeft": 0,
|
||||
"PicturePadRight": 0,
|
||||
"PresetDescription": "This is the standard preset for our CPU encoding test for H265 Big Buck Bunny at 1080p",
|
||||
"PresetName": "CPU 1080p BBB H265",
|
||||
"Type": 1,
|
||||
"SubtitleAddCC": false,
|
||||
"SubtitleAddForeignAudioSearch": true,
|
||||
"SubtitleAddForeignAudioSubtitle": false,
|
||||
"SubtitleBurnBehavior": "foreign",
|
||||
"SubtitleBurnBDSub": false,
|
||||
"SubtitleBurnDVDSub": false,
|
||||
"SubtitleLanguageList": [],
|
||||
"SubtitleTrackSelectionBehavior": "none",
|
||||
"VideoAvgBitrate": 0,
|
||||
"VideoColorMatrixCode": 0,
|
||||
"VideoEncoder": "x265",
|
||||
"VideoFramerateMode": "cfr",
|
||||
"VideoGrayScale": false,
|
||||
"VideoScaler": "swscale",
|
||||
"VideoPreset": "slow",
|
||||
"VideoTune": "",
|
||||
"VideoProfile": "main",
|
||||
"VideoLevel": "5.1",
|
||||
"VideoOptionExtra": "",
|
||||
"VideoQualityType": 2,
|
||||
"VideoQualitySlider": 20,
|
||||
"VideoMultiPass": true,
|
||||
"VideoTurboMultiPass": true,
|
||||
"x264UseAdvancedOptions": false,
|
||||
"PresetDisabled": false,
|
||||
"MetadataPassthrough": true
|
||||
}
|
||||
],
|
||||
"VersionMajor": 53,
|
||||
"VersionMicro": 0,
|
||||
"VersionMinor": 0
|
||||
}
|
||||
Reference in New Issue
Block a user