using TeleWave.Domain.Media;

namespace TeleWave.Application.Common.Interfaces;

/// <summary>Итог нормализации и нарезки исходника в HLS-сегменты.</summary>
public sealed record MediaProcessingResult(
    TimeSpan Duration,
    int SegmentSeconds,
    int SegmentCount,
    int Width,
    int Height,
    string VideoCodec,
    string AudioCodec,
    string RelativePath
);

/// <summary>
/// Порт обработки медиа (ffprobe + ffmpeg). Реализация читает исходник по <paramref name="assetId"/>
/// и <paramref name="extension"/> из хранилища, нормализует в H.264/AAC и режет на сегменты
/// фиксированной длины, добивая длительность до кратности сегменту.
/// </summary>
public interface IMediaProcessor
{
    Task<MediaProcessingResult> ProcessAsync(
        Guid assetId,
        string extension,
        CancellationToken cancellationToken
    );
}
