Releases: whyb/HwCodecDetect
v0.2.8
New Features
✨ Custom ffmpeg Path Support
- Added a GUI option to specify a custom ffmpeg executable path
- The custom path is now used across all detection and test modules
- Improved ffmpeg discovery logic in utilities
✨ Automatic ffmpeg Installation (install_ffmpeg_if_needed)
- New module to automatically detect if ffmpeg is installed
- If missing, prompts and guides the user through installation
- Significantly improved installation logic with 306+ lines of enhancements
✨ Colorful Terminal Output
- Added vibrant color-coded output for bit depth and chroma detection results
- Enhanced test runner output with colorized status indicators
- Improved readability of console output across all modules
✨ Hardware Device Index Support
- Added device index configuration for hardware encoders/decoders
- New
codec_defs.pymodule defining available hardware devices and codecs - GUI now supports selecting hardware device indices
Bug Fixes
🐛 Vulkan hwupload Format Compatibility
- Fixed issue where Vulkan hwupload only accepted semi-planar HW-friendly pixel formats
- Added proper format validation for Vulkan hardware uploads
🐛 tkinter ImportError
- Fixed
ImportErrorwhen tkinter is not available in certain Python environments - Added graceful fallback when running in headless mode
🐛 Subprocess Timeout
- Set subprocess timeout to 10 seconds to prevent indefinite hangs
- Improved error handling for timed-out ffmpeg operations
Refactoring & Improvements
🔧 Major Codebase Restructuring
- Extracted hardware codec definitions into dedicated
codec_defs.pymodule - Extracted theme/color definitions into dedicated
theme.pymodule - Reduced
gui.pyby 873 lines through modularization - Overall: +499 lines added, -873 lines removed across 8 files
🔧 Improved Test Runner
- Refactored
run_tests.pyfor better code organization - Enhanced test output formatting
- Added support for custom ffmpeg path in test execution
🔧 Optimization
- Optimized GUI layout and logic
- Improved error handling and user feedback across all modules
v0.2.7
- The UI was redesigned.
- Merge branch 'ui'
Supported Platforms:
- Windows: x64, x86 (32-bit)
- macOS: Apple Silicon (ARM64), Intel (x64)
- Linux: x64, ARM64, x86
Note: Windows ARM users should use the Windows x86 or x64 binary.
v0.2.6
- Fix wrong stty config after tests on Linux ( @peasoft )
- Better table printing(markdown friendly) ( @peasoft )
- More Robust FFmpeg Installation Logic
- Update README
Supported Platforms:
- Windows: x64, x86 (32-bit)
- macOS: Apple Silicon (ARM64), Intel (x64)
- Linux: x64, ARM64, x86
Note: Windows ARM users should use the Windows x86 or x64 binary.
v0.2.5
Release Notes
- Add subprocess creationflags: CREATE_NO_WINDOW
- Add Apple VideoToolbox and D3D12VA decoders
- Fix Decoder definitions table(miss d3d12va)
- fix decoder_bitdepth_test miss d3d12va
Note: Windows ARM users should use the Windows x86 or x64 binary.
v0.2.4
HwCodecDetect v0.2.4 Release Notes
Release Overview
This release includes 1575 total lines changed across 9 files, combining improvements from both main and ui branches.
🔧 Core Engine Improvements (Main Branch)
New Features
- Added unified
get_temp_path()utility for consistent temporary file management - Added
--disable-windowed-tracebackcommand line flag for headless environments - Implemented pre-flight codec capability check before running detection tests
Enhancements
- Refactored bit-depth and chroma subsampling detection logic
- Improved error handling and exception reporting
- Updated GitHub Actions release workflow
- Cleaned up module import structure
Fixes
- Resolved PyInstaller console parameter handling issue
- Fixed edge cases in 10/12-bit codec detection
🎨 GUI Interface (UI Branch)
All items below marked with [GUI] are only available in UI branch builds
✅ [GUI] MAJOR: Complete graphical user interface added (1267 lines new gui.py module)
- Full desktop application with modern interface
- All codec detection features available via GUI
- Real-time test progress visualization
- Test result export capabilities
✅ [GUI] New Features:
- Bit-depth & Chroma sampling test interface
- Automatic FFmpeg environment validation on startup
- Built-in version check and update notification system
- Proper temporary file management for GUI sessions
- Windows GUI mode runs without console window
✅ [GUI] Fixes & Improvements:
- Fixed ProRes codec detection for MOV container format
- Added CI/CD pipeline for GUI executable builds
- Improved exception handling in GUI context
Build & Deployment
- Updated version number to v0.2.4
- PyInstaller spec file optimized for both CLI and GUI builds
- GitHub Actions workflow updated for dual release artifacts
v0.2.3
- Add Vulkan AV1 Encoder support.
- Add VideoToolbox ProRes Decoder/Encoder support.
v0.2.2
Release Notes
- Add Microsoft Hardware AV1 Encoder(MediaFoundation) support.
v0.2.1
Release Notes:
- Upgraded to FFmpeg 8.1: Core engine enhancement.
- D3D12 Hardware Encoding: New support for H.264 and AV1 via Direct3D 12(d3d12va).
Supported Platforms:
- Windows: x64, x86 (32-bit)
- macOS: Apple Silicon (ARM64), Intel (x64)
- Linux: x64, ARM64, x86
Note: Windows ARM users should use the Windows x86 or x64 binary.
v0.2.0
Release Notes: HwCodecDetect v1.2.0
-
Added Bit-depth & Chroma Detection: New support for testing 8/10/12-bit and YUV 4:2:0/4:2:2/4:4:4 compatibility at a fixed 1280x720 resolution.
-
Smart Encoding Fallback: Automatically uses software encoding to generate test vectors if hardware encoding fails, ensuring consistent decoding tests.
-
UI/Logic Refactoring: Decoupled UI rendering from run_tests.py into a standalone module for better stability and maintainability.
-
Enhanced Interface: Added two new UI notebooks specifically for Bit-depth and Chroma results, while renaming existing resolution-based tabs for clarity.
-
New CLI Argument: Added --no-bitdepth-chroma flag to run_tests to allow skipping extended color-space testing (enabled by default).
-
Bug Fixes: Resolved the execution exception occurring in run_tests.py when initializing the new detection scripts.
v0.1.10
Automated multi-platform build for CLI and GUI.
- CLI Version: main branch
- GUI Version: ui branch
Supported Platforms:
- Windows: x64, x86 (32-bit)
- macOS: Apple Silicon (ARM64), Intel (x64)
- Linux: x64, ARM64, x86
Note: Windows ARM users should use the Windows x86 or x64 binary.