File size: 1,951 Bytes
d47b053 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | import { createLogger } from '../../../utils/logger'
import type { GenerationResult } from './analysis-step'
import type { OutputMode, VideoJobData } from '../../../types'
import { renderVideo } from './render-video'
import { renderImages } from './render-images'
import type { RenderResult } from './render-step-types'
const logger = createLogger('RenderStep')
export type { RenderResult } from './render-step-types'
export async function handlePreGeneratedCode(
jobId: string,
concept: string,
quality: string,
outputMode: OutputMode,
preGeneratedCode: string,
timings: Record<string, number>,
jobData: VideoJobData
): Promise<RenderResult> {
logger.info('Using pre-generated code from frontend', {
jobId,
outputMode,
codeLength: preGeneratedCode.length,
hasCustomApi: !!jobData.customApiConfig
})
const renderStart = Date.now()
const codeResult: GenerationResult = {
code: preGeneratedCode,
usedAI: false,
generationType: 'custom-api'
}
const renderResult =
outputMode === 'image'
? await renderImages(
jobId,
concept,
quality,
codeResult,
timings,
jobData.videoConfig,
jobData.customApiConfig,
jobData.promptOverrides,
undefined,
jobData.clientId,
jobData.workspaceDirectory,
jobData.renderCacheKey
)
: await renderVideo(
jobId,
concept,
quality,
codeResult,
timings,
jobData.customApiConfig,
jobData.videoConfig,
jobData.promptOverrides,
undefined,
jobData.clientId,
jobData.workspaceDirectory,
jobData.renderCacheKey
)
timings.render = Date.now() - renderStart
logger.info('Job completed (pre-generated code)', { jobId, outputMode, timings })
return renderResult
}
export { renderVideo, renderImages }
|