if (!handler) {
await moveToFailedTranscodingState(video)
+ await VideoJobInfoModel.decrease(video.uuid, 'pendingTranscode')
throw new Error('Cannot find transcoding handler for ' + payload.type)
}
} catch (error) {
await moveToFailedTranscodingState(video)
+ await VideoJobInfoModel.decrease(video.uuid, 'pendingTranscode')
+
throw error
}
return video
}
+// ---------------------------------------------------------------------------
+
+export {
+ processVideoTranscoding
+}
+
// ---------------------------------------------------------------------------
// Job handlers
// ---------------------------------------------------------------------------
logger.info('Merge audio transcoding job for %s ended.', video.uuid, lTags(video.uuid))
- await onVideoFileOptimizer(video, payload, 'video', user)
+ await onVideoFirstWebTorrentTranscoding(video, payload, 'video', user)
}
async function handleWebTorrentOptimizeJob (job: Job, payload: OptimizeTranscodingPayload, video: MVideoFullLight, user: MUserId) {
logger.info('Optimize transcoding job for %s ended.', video.uuid, lTags(video.uuid))
- await onVideoFileOptimizer(video, payload, transcodeType, user)
+ await onVideoFirstWebTorrentTranscoding(video, payload, transcodeType, user)
}
// ---------------------------------------------------------------------------
await retryTransactionWrapper(moveToNextState, video, payload.isNewVideo)
}
-async function onVideoFileOptimizer (
+async function onVideoFirstWebTorrentTranscoding (
videoArg: MVideoWithFile,
payload: OptimizeTranscodingPayload | MergeAudioTranscodingPayload,
transcodeType: TranscodeOptionsType,
await retryTransactionWrapper(moveToNextState, video, payload.isNewVideo)
}
+// ---------------------------------------------------------------------------
+
async function createHlsJobIfEnabled (user: MUserId, payload: {
videoUUID: string
resolution: number
return true
}
-// ---------------------------------------------------------------------------
-
-export {
- processVideoTranscoding,
- createHlsJobIfEnabled,
- onNewWebTorrentFileResolution
-}
-
-// ---------------------------------------------------------------------------
-
async function createLowerResolutionsJobs (options: {
video: MVideoFullLight
user: MUserId
import { AttributesOnly } from '@shared/core-utils'
import { VideoModel } from './video'
+export type VideoJobInfoColumnType = 'pendingMove' | 'pendingTranscode'
+
@Table({
tableName: 'videoJobInfo',
indexes: [
return VideoJobInfoModel.findOne({ where, transaction })
}
- static async increaseOrCreate (videoUUID: string, column: 'pendingMove' | 'pendingTranscode'): Promise<number> {
+ static async increaseOrCreate (videoUUID: string, column: VideoJobInfoColumnType): Promise<number> {
const options = { type: QueryTypes.SELECT as QueryTypes.SELECT, bind: { videoUUID } }
const [ { pendingMove } ] = await VideoJobInfoModel.sequelize.query<{ pendingMove: number }>(`
return pendingMove
}
- static async decrease (videoUUID: string, column: 'pendingMove' | 'pendingTranscode'): Promise<number> {
+ static async decrease (videoUUID: string, column: VideoJobInfoColumnType): Promise<number> {
const options = { type: QueryTypes.SELECT as QueryTypes.SELECT, bind: { videoUUID } }
const [ { pendingMove } ] = await VideoJobInfoModel.sequelize.query<{ pendingMove: number }>(`