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 }