ffmpeg-light 0.2.0

A small Rust crate that wraps a few common FFmpeg tasks
Documentation
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.2.0] - 2026-01-02

### Added
- **Video Filters**: Scale, Crop, Trim, Rotate, Flip, BrightnessContrast, Denoise (Light/Medium/Heavy), Deinterlace variants
- **Audio Filters**: Volume, Equalizer (3-band: bass/mid/treble), Normalization, HighPass, LowPass, Custom filter variants
- **Audio Filter Support**: New `add_audio_filter()` method on `TranscodeBuilder` for audio processing chains
- **Separate Filter Chains**: Distinct `video_filters` and `audio_filters` Vec fields enabling independent video/audio processing
- **Builder Accessors**: Public methods to inspect builder state:
  - `input_path()`, `output_path()` for I/O configuration
  - `video_codec_ref()`, `audio_codec_ref()` for codec selection
  - `video_bitrate_value()`, `audio_bitrate_value()`, `frame_rate_value()`, `preset_value()` for quality settings
  - `overwrite_enabled()` for overwrite flag status
  - `video_filters()`, `audio_filters()` to inspect filter chains
- **Granular Error Types**: Enhanced error enum with specific variants:
  - `FFmpegNotFound`: Binary detection failures with installation suggestions
  - `ProcessingError`: Command execution failures with FFmpeg diagnostics
  - `InvalidInput`: Parameter validation errors with contextual hints
  - `FilterError`: Filter configuration problems with suggestions
  - `TimeoutError`: Process timeout notifications
  - `error.suggestion()` method providing recovery hints for each error variant
- **Integration Tests**: 41 comprehensive tests covering:
  - 12 video filter tests (scale, crop, rotate, flip, denoise, deinterlace, etc.)
  - 10 audio filter tests (volume, equalizer, normalization, frequency filters)
  - 10 error handling tests (error types, suggestions, message formatting)
  - 9 builder composition tests (filter chaining, accessor methods, backward compatibility)
- **Documentation**: Inline doc examples for all public APIs
- **Examples**: Real-world workflows (advanced_filtering.rs, rotate_and_flip.rs, audio_processing.rs)

### Changed
- `TranscodeBuilder`: Replaced generic `add_filter()` with type-safe `add_video_filter()` and `add_audio_filter()`
- Error handling: `BinaryNotFound` variant renamed to `FFmpegNotFound` with optional suggestion field
- Filter validation: Enhanced `FilterError` with contextual messages for unsupported operations
- Config validation: `with_paths()` now provides specific error suggestions for missing binaries

### Deprecated
- `TranscodeBuilder::add_filter()`: Use `add_video_filter()` instead (still works for backward compatibility)

### Fixed
- Filter string generation: Proper quoting for FFmpeg filter chain syntax
- Error message clarity: Replaced generic strings with actionable recovery suggestions
- Path handling: Consistent behavior on Windows paths with spaces

### Verified
- ✅ Zero breaking changes: All v0.1.0 public APIs remain fully functional
- ✅ Builder compatibility: Deprecated `add_filter()` still works (issues deprecation warning)
- ✅ Cross-platform: Tested on Linux, macOS, Windows
- ✅ Compile warnings: Only documentation warnings (no unsafe code or logic errors)

## [0.1.0] - 2025-12-03

### Added
- Initial release of `ffmpeg-light` crate.
- `probe` function for media file inspection via `ffprobe` JSON output.
- `TranscodeBuilder` for transcoding with codec, bitrate, preset, size, and filter options.
- `generate_thumbnail` function with `ThumbnailOptions` for timestamp/size/format controls.
- `VideoFilter` enum for common filters (`Scale`, `Fps`, `Pad`, `Custom`).
- Typed structs for probe results (`ProbeResult`, `VideoStreamInfo`, `AudioStreamInfo`).
- `Time` type for duration and timestamp handling.
- Unified error handling via `Error` and `Result` types.
- Apache-2.0 license.
- README with quick-start examples.
- Showcase documentation for probe, transcode, and thumbnail workflows.