"""
Custom exception hierarchy for video processors.

All processor-related exceptions inherit from ProcessorError.
This allows for better error handling and debugging.
"""


class ProcessorError(Exception):
    """Base exception for all processor errors."""


class VideoLoadError(ProcessorError):
    """Failed to load or read video file."""


class ImageOpenError(ProcessorError):
    """Failed to open image."""


class AudioExtractionError(ProcessorError):
    """Failed to extract audio from video."""


class ImageProcessingError(ProcessorError):
    """Failed to process image."""


class ModelInitError(ProcessorError):
    """Failed to initialize ML model or processor component."""


class InsufficientDataError(ProcessorError):
    """Insufficient data to complete processing (e.g., no audio track, no frames found)."""


class ProcessingError(ProcessorError):
    """Error during actual processing (OCR, detection, transcription, etc.)."""


class PipelineError(ProcessorError):
    """Error during pipeline execution."""
