<?php

declare(strict_types=1);

namespace Drupal\ffmpeg_media\Plugin\FFmpegOutput;

use Drupal\ffmpeg_media\ValueObject\ConversionOptions;
use Drupal\ffmpeg_media\ValueObject\VideoInfo;

/**
 * Interface for output plugins that support adaptive streaming arguments.
 */
interface AdaptiveOutputInterface {

  /**
   * Builds FFmpeg arguments for adaptive streaming output.
   *
   * @param \Drupal\ffmpeg_media\ValueObject\ConversionOptions $options
   *   The conversion options.
   * @param \Drupal\ffmpeg_media\ValueObject\VideoInfo|null $videoInfo
   *   Source video info for per-title encoding.
   * @param array<\Drupal\ffmpeg_media\ValueObject\AudioTrack> $audioTracks
   *   Multi-language audio tracks.
   *
   * @return array<int, string>
   *   Array of FFmpeg command arguments.
   */
  #[\NoDiscard]
  public function buildAdaptiveArguments(
    ConversionOptions $options,
    ?VideoInfo $videoInfo = NULL,
    array $audioTracks = [],
  ): array;

}
