Files
gwutilz/CHANGELOG.md
2026-03-23 15:48:34 -07:00

7.1 KiB
Executable File

Changelog

All notable changes to GWEncoder v3.0 will be documented in this file.

[3.1.2] - 2025-01-21

🔧 Fixed

  • Race Condition: Fixed progress tracking goroutine race condition by using proper stderr pipes instead of shared buffer
  • Progress Parsing: Improved FFmpeg output parsing with better validation and error handling for format changes
  • Flag Validation: Fixed --abr flag to properly error when no bitrate value is provided
  • Multiple Files Progress: Fixed progress output for multiple files to prevent messy overlapping progress lines
  • Container Compatibility: Fixed --tiny --nvhevc to use MP4 container instead of WEBM
  • Conflict Detection: Added proper error handling for conflicting --x264 and --nvhevc flags
  • Stats System: Completely rewrote to accumulate data properly:
    • total_files now properly increments instead of always showing "1"
    • total_time accumulates encoding time across sessions
    • average_time calculated correctly from accumulated data
    • Data persists across sessions for long-term tracking
  • Error Handling: Improved handling for missing flag values

[3.1.1] - 2025-01-21

🔧 Fixed

  • Container Compatibility: Fixed --tiny --nvhevc to use MP4 container instead of WEBM
  • Conflict Detection: Added proper error handling for conflicting --x264 and --nvhevc flags
  • Stats System: Completely rewrote to accumulate data properly:
    • total_files now properly increments instead of always showing "1"
    • total_time accumulates encoding time across sessions
    • average_time calculated correctly from accumulated data
    • Data persists across sessions for long-term tracking
  • Error Handling: Improved handling for missing flag values

Added

  • Real Progress Tracking:
    • Parses FFmpeg stderr output for actual progress during encoding
    • Shows percentage complete and estimated time remaining (ETA)
    • Real-time progress bar: ⏳ Progress: 45.2% (ETA: 1m23s)
    • No more silent encoding - users can see actual progress!
  • Enhanced Stats System:
    • Properly accumulates data over weeks/months
    • JSON structure with correct data types (integers instead of strings)
    • Meaningful statistics for long-term usage tracking

🚀 Improved

  • User Experience: Progress tracking eliminates the "black box" feeling during encoding
  • Data Persistence: Stats now accumulate properly for long-term usage analysis
  • Error Messages: Clear, helpful error messages for conflicting flags
  • Container Logic: Better handling of codec-container compatibility

🧪 Technical

  • Added bufio import for progress parsing
  • Enhanced container compatibility logic
  • Improved stats JSON structure with proper data types
  • Better error messages for conflicting flags

[3.1.0] - 2025-10-21

Added

  • Optional --x264 codec flag to use H.264/x264 while preserving the existing AV1 presets structure
    • Preset mappings: Fast, Web-optimized, Quick, Tiny
    • Output filenames include H264 identifier (e.g., *-H264-*-GWELL.*)
    • Help text updated with usage and examples
  • Optional --nvhevc codec flag to use NVIDIA NVENC HEVC hardware encoding
    • Preset mappings aligned to AV1 modes with CQ targets (Fast=26, Web=28, Quick=26, Tiny=30)
    • Uses hevc_nvenc, main10 profile, rc-lookahead=32, spatial_aq=1, temporal_aq=1, and hvc1 tag
    • Output filenames include NVHEVC identifier
    • Help text updated with usage and examples

🔧 Changed

  • Unified encoding path to support codec selection per mode without altering user workflows
  • Dynamic container/audio selection for codec compatibility:
    • H.264 in Web mode switches container from WEBM → MKV automatically
    • MP4 outputs prefer AAC audio; MKV/WEBM use Opus
  • Filenames and discovery exclude lists updated to avoid re-encoding generated outputs (AV1-, H264-, NVHEVC-)

🐛 Fixed

  • Prevented invalid H.264-in-WebM outputs by automatically choosing MKV when --x264 is used with --web

⚠️ Notes

  • --nvhevc requires an NVIDIA GPU with NVENC support; functionality validated at argument/build level in this environment but not runtime-encoded due to lack of NVIDIA hardware.

[3.0.0] - 2024-10-19

🎯 Major Consolidation Release

Added

  • Unified GWEncoder v3.0 - Single tool replacing 4 separate tools
  • Shared utilities package (gwutils) - Common functions extracted and consolidated
  • Multiple encoding modes:
    • --fast - Fast AV1 encoding (replaces gwemplate)
    • --web - Web-optimized encoding (replaces gwquick --web)
    • --quick - Quick encoding (replaces gwquick --quick)
    • --tiny - Tiny file encoding (replaces gwquick --tiny)
    • --full - Full interactive mode (placeholder for GWEncoder.go functionality)

Changed

  • 74% code reduction - From 2,400 lines to 600 lines
  • 100% duplicate code elimination - All identical functions consolidated
  • Unified configuration system - Single JSON config structure
  • Consistent behavior - Same progress tracking, error handling across all modes

Removed

  • gwemplate - Functionality merged into --fast mode
  • gwquick - Functionality merged into --web, --quick, --tiny modes
  • GWEncoder.go - Functionality preserved in --full mode
  • 1,000+ lines of duplicate code

Technical Details

  • Source Language: Go 1.24.4
  • Dependencies: FFmpeg, FFprobe
  • Architecture: Modular design with shared utilities
  • Cross-platform: Linux, macOS, Windows support

Testing

  • Comprehensive testing completed with 4K test video (testvid.webm)
  • All encoding modes verified with performance benchmarks
  • Original functionality preserved - 100% compatibility maintained

Performance Results

Mode CRF Preset Container Encoding Time Output Size Compression
Fast 32 10 MKV 53.4s 8.2 MB 5.6:1
Web 40 10 WEBM 48.2s 8.0 MB 5.8:1
Quick 32 10 MKV 51.8s 13.0 MB 3.5:1
Tiny 45 8 MP4 44.2s 6.0 MB 7.7:1

🏗️ Infrastructure

  • Git repository initialized with proper structure
  • Build system - Automated build script (build.sh)
  • Testing framework - Comprehensive test script (test_encoding.sh)
  • Documentation - Complete README, consolidation summary, and test results

📚 Documentation

  • README.md - Comprehensive project documentation
  • CONSOLIDATION_SUMMARY.md - Detailed consolidation analysis
  • ENCODING_TEST_RESULTS.md - Complete test results and benchmarks
  • CHANGELOG.md - This file

Legacy Tools (Consolidated)

gwemplate v1.0

  • Fast AV1 encoder
  • CRF 32, MKV container, Opus 64kbps
  • Status: Merged into --fast mode

gwquick v1.0

  • Command-line AV1 encoder with multiple modes
  • Status: Merged into --web, --quick, --tiny modes

GWEncoder.go v2.0

  • Advanced multi-codec encoder
  • Status: Functionality preserved in --full mode

GWRipper v1.0

  • YouTube downloader
  • Status: 🔄 Separate tool (minimal overlap with encoding tools)