Skip to content

Commit 5b06eaf

Browse files
author
TTLequals0
committed
Version 2.0.55: Major refactoring and expanded format support
- Added comprehensive audio format support (MP3, FLAC, WAV, AAC, OGG, etc.) - Expanded video format support (HEVC/H.265, ProRes, DNxHD, etc.) - Enhanced image format support (HEIC/HEIF, RAW formats, etc.) - Major code refactoring to eliminate redundancy - Created utils.py with shared utilities (ProgressTracker, etc.) - Improved performance with optimized file discovery and hash calculation - Updated all documentation and version references
1 parent 6fdb1d1 commit 5b06eaf

9 files changed

Lines changed: 898 additions & 224 deletions

File tree

CHANGELOG.MD

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,61 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [2.0.55] - 2025-01-20
11+
12+
### Refactoring
13+
- **Eliminated Code Redundancy**:
14+
- Created `utils.py` module with shared utilities:
15+
- `ProgressTracker` class for unified progress calculation across all operations
16+
- `log_operation_status()` for consistent operation logging
17+
- `batch_process()` generator for consistent batch processing
18+
- Common state manipulation functions (`mark_operation_complete`, `mark_operation_error`)
19+
- Created `operation_handlers.py` with base classes for operations
20+
- Refactored state models to use shared `create_state_dict()` function
21+
- Replaced duplicate progress calculation code with centralized `ProgressTracker`
22+
- Standardized error handling patterns with decorators
23+
- Consolidated operation logging with `log_operation_status()`
24+
25+
### Added
26+
- **Complete Audio Format Support**:
27+
- Added support for all major audio formats (MP3, FLAC, WAV, AAC, OGG, Opus, WMA, etc.)
28+
- Implemented audio-specific corruption detection using FFmpeg
29+
- Added FLAC-specific validation for lossless integrity checking
30+
- Deep scan mode for audio files to detect timestamp issues and packet errors
31+
32+
- **Expanded Video Format Support**:
33+
- Added HEVC/H.265 support (.hevc, .h265 extensions)
34+
- Added professional formats: ProRes (.prores), DNxHD/DNxHR (.dnxhd, .dnxhr), MXF (.mxf)
35+
- Added broadcast formats: AVCHD (.mts, .m2ts, .avchd)
36+
- Added legacy and additional formats: MPEG (.mpg, .mpeg, .vob), RealMedia (.rm, .rmvb), and more
37+
38+
- **Enhanced Image Format Support**:
39+
- Added Apple HEIC/HEIF support (.heic, .heif)
40+
- Added comprehensive RAW format support:
41+
- Canon (CR2, CR3), Nikon (NEF, NRW), Sony (ARW, SRF, SR2)
42+
- Adobe DNG, Olympus ORF, Panasonic RW2, Pentax PEF/PTX
43+
- Fujifilm RAF, Sigma X3F, Kodak DCR/KDC, and more
44+
- Added professional formats: PSD, OpenEXR, HDR, SVG
45+
- Added scientific/specialized formats: FITS, Netpbm formats
46+
47+
### Performance Optimizations
48+
- **File Discovery Performance**:
49+
- Replaced os.walk() with os.scandir() for 3-5x faster directory traversal
50+
- Reduced file stat() calls by caching metadata during discovery
51+
- Files are now discovered with creation time pre-fetched for efficient sorting
52+
53+
- **Database Operations**:
54+
- Enhanced database write queue to process up to 100 items in a single transaction
55+
- Improved batch processing to group similar operations together
56+
- Added connection pooling with pool_size=10 and max_overflow=20 for better concurrency
57+
- Optimized SQLite pragmas for better write performance
58+
59+
- **Hash Calculation**:
60+
- Increased hash calculation chunk size from 4KB to 1MB (250x improvement in I/O operations)
61+
- Use 4MB chunks for files larger than 1GB
62+
- Added throughput metrics (MB/s) to hash progress logging
63+
- Reduced system calls significantly for large file processing
64+
1065
## [2.0.53] - 2025-01-20
1166

1267
### Fixed

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ ENV FLASK_APP=app.py
2222
ENV FLASK_ENV=production
2323

2424
# Set version as build argument
25-
ARG APP_VERSION=2.0.53
25+
ARG APP_VERSION=2.0.55
2626
ENV APP_VERSION=$APP_VERSION
2727

2828
CMD ["gunicorn", "--bind", "0.0.0.0:5000", "--workers", "4", "--timeout", "300", "app:app"]

README.md

Lines changed: 40 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -149,19 +149,15 @@ Interactive exclusion management with modern UI:
149149
PixelProbe is available on Docker Hub as `ttlequals0/pixelprobe`. Check the [Docker Hub page](https://hub.docker.com/r/ttlequals0/pixelprobe/tags) for all available versions.
150150

151151
**Current stable versions:**
152-
- **`ttlequals0/pixelprobe:latest`** - Latest stable release (v2.0.53)
152+
- **`ttlequals0/pixelprobe:latest`** - Latest stable release (v2.0.55)
153+
- **`ttlequals0/pixelprobe:2.0.55`** - Major refactoring for code quality, added comprehensive audio/video/image format support
153154
- **`ttlequals0/pixelprobe:2.0.53`** - Fixed file-changes progress tracking with async updates
154-
- **`ttlequals0/pixelprobe:2.0`** - Complete UI overhaul with modern responsive design
155-
- **`ttlequals0/pixelprobe:1.26`** - UI improvements and ImageMagick UTF-8 fixes
156-
- **`ttlequals0/pixelprobe:1.25`** - Database resilience for long-running scans
157-
- **`ttlequals0/pixelprobe:1.24`** - UI color visibility fixes
158-
- **`ttlequals0/pixelprobe:1.23`** - SQLite WAL mode and connection improvements
159155

160156
You can specify a specific version in your `docker-compose.yml`:
161157
```yaml
162158
services:
163159
pixelprobe:
164-
image: ttlequals0/pixelprobe:2.0.53 # or :latest for newest
160+
image: ttlequals0/pixelprobe:2.0.55 # or :latest for newest
165161
```
166162
167163
### Development Setup
@@ -344,12 +340,24 @@ PixelProbe uses multiple methods to detect file corruption:
344340
- **Frame Validation**: Attempts to decode video frames to detect corruption
345341
- **Quick Scan**: Fast check of first 10 seconds for immediate feedback
346342
- **Stream Validation**: Verifies video and audio stream integrity
343+
- **HEVC/ProRes Support**: Specialized detection for modern codecs
347344

348345
### Image Files
349346
- **PIL Verification**: Uses Python Imaging Library for basic corruption detection
350347
- **ImageMagick**: Advanced image analysis and validation
351348
- **Dimension Checks**: Validates image dimensions and properties
352349
- **Format Validation**: Ensures files match their declared format
350+
- **RAW/HEIC Support**: Handles camera RAW files and Apple's HEIC format
351+
352+
### Audio Files
353+
- **FFmpeg Audio Analysis**: Comprehensive audio stream validation
354+
- **Decode Testing**: Attempts to decode audio to detect corruption
355+
- **Header Validation**: Checks for missing or corrupted headers
356+
- **Format-Specific Tests**:
357+
- FLAC: CRC validation and built-in integrity checking
358+
- MP3: Frame header validation
359+
- Lossless formats: Bit-perfect verification
360+
- **Deep Scan Mode**: Full file analysis for timestamp and packet errors
353361

354362
### Detection Accuracy
355363
- **High Confidence**: 100% detection of files with broken headers, truncated files, and I/O errors
@@ -359,10 +367,33 @@ PixelProbe uses multiple methods to detect file corruption:
359367
## Supported File Formats
360368

361369
### Video Formats
362-
- MP4, MKV, AVI, MOV, WMV, FLV, WebM, M4V
370+
- **Common**: MP4, MKV, AVI, MOV, WMV, FLV, WebM, M4V
371+
- **HEVC/H.265**: HEVC, H265
372+
- **Professional**: ProRes, MXF, DNxHD, DNxHR
373+
- **Broadcast**: MTS, M2TS, AVCHD
374+
- **Legacy**: MPG, MPEG, VOB, RM, RMVB
375+
- **Other**: 3GP, 3G2, F4V, F4P, OGV, ASF, AMV, M2V, SVI
363376

364377
### Image Formats
365-
- JPEG, PNG, GIF, BMP, TIFF, WebP
378+
- **Common**: JPEG, PNG, GIF, BMP, TIFF, WebP
379+
- **Apple**: HEIC, HEIF
380+
- **RAW Formats**:
381+
- Canon: CR2, CR3
382+
- Nikon: NEF, NRW
383+
- Sony: ARW, SRF, SR2
384+
- Adobe: DNG
385+
- Others: ORF (Olympus), RW2 (Panasonic), PEF/PTX (Pentax), RAF (Fujifilm), X3F (Sigma), DCR/KDC (Kodak), MOS (Leaf)
386+
- **Professional**: PSD, EXR, HDR, SVG
387+
- **Other**: ICO, PBM, PGM, PPM, PNM, FITS
388+
389+
### Audio Formats (NEW!)
390+
- **Lossy**: MP3, AAC, M4A, WMA, OGG, OGA, Opus, AMR
391+
- **Lossless**: FLAC, WAV, AIFF, APE, WV (WavPack), TTA, CAF
392+
- **Uncompressed**: WAV, AIFF, AU, SND, VOC
393+
- **High-Resolution**: DSF, DFF (DSD)
394+
- **Dolby/DTS**: AC3, DTS
395+
- **Container**: MKA (Matroska Audio), M4B (Audiobook)
396+
- **Legacy**: RA, RAM (RealAudio), GSM, MIDI
366397

367398
## Performance Considerations
368399

0 commit comments

Comments
 (0)