+async function handleNewWebTorrentResolutionJob (
+ job: Bull.Job,
+ payload: NewResolutionTranscodingPayload,
+ video: MVideoFullLight,
+ user: MUserId
+) {
+ await transcodeNewWebTorrentResolution(video, payload.resolution, payload.isPortraitMode || false, job)
+
+ await retryTransactionWrapper(onNewWebTorrentFileResolution, video, user, payload)
+}
+
+async function handleWebTorrentMergeAudioJob (job: Bull.Job, payload: MergeAudioTranscodingPayload, video: MVideoFullLight, user: MUserId) {
+ await mergeAudioVideofile(video, payload.resolution, job)
+
+ await retryTransactionWrapper(onVideoFileOptimizer, video, payload, 'video', user)
+}
+
+async function handleWebTorrentOptimizeJob (job: Bull.Job, payload: OptimizeTranscodingPayload, video: MVideoFullLight, user: MUserId) {
+ const transcodeType = await optimizeOriginalVideofile(video, video.getMaxQualityFile(), job)
+
+ await retryTransactionWrapper(onVideoFileOptimizer, video, payload, transcodeType, user)
+}
+
+// ---------------------------------------------------------------------------
+
+async function onHlsPlaylistGeneration (video: MVideoFullLight, user: MUser, payload: HLSTranscodingPayload) {