File size: 3,671 Bytes
7312c42
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
export type MultiTrackType = 'task' | 'video' | 'audio' | 'subtitle'

export type MultiTrackTaskMode = 'default' | 'l2v' | 'ref' | 'edit'

export type MultiTrackContinuityMode = 'shot' | 'context' | 'context_swap'

export type MultiTrackRefImageSize = 'match' | 'max'

export type MultiTrackUserPromptVariant = 'a' | 'b'

export type MultiTrackMediaType = 'image' | 'audio' | 'video' | 'subtitle' | 'none'

export type MultiTrackSourceType = 'preset' | 'input' | 'output' | 'local' | 'url' | 'slot'

export interface MultiTrackPanoramaView {
  version: 1
  projection: 'equirectangular'
  yaw: number
  pitch: number
  hfov: number
  aspect_ratio: number
}

export interface MultiTrackTaskImage {
  id: string
  source_type?: MultiTrackSourceType
  file_path?: string
  local_path?: string
  url?: string
  slot_name?: string
  file_name?: string
  panorama_view?: MultiTrackPanoramaView
  shared_reference?: boolean
  shared_reference_copy?: boolean
  muted?: boolean
}

export interface MultiTrackSegmentContent {
  media_type: MultiTrackMediaType
  source_type?: MultiTrackSourceType
  file_path?: string
  local_path?: string
  url?: string
  slot_name?: string
  file_name?: string
  text?: string
  user_prompt?: string
  user_prompt_b?: string
  user_prompt_variant?: MultiTrackUserPromptVariant
  system_prompt?: string
  task_mode?: MultiTrackTaskMode
  continuity_mode?: MultiTrackContinuityMode
  ref_image_size?: MultiTrackRefImageSize
  images?: MultiTrackTaskImage[]
  duration?: number
  volume_db?: number
  muted?: boolean
  speed?: number
  media_index?: number
  shared_reference?: boolean
  shared_media_index?: number
  /** @deprecated Migrated to shared_reference when legacy workflows are loaded. */
  speaker_reference?: boolean
  subtitle_style?: MultiTrackSubtitleStyle
  subtitle_speech?: MultiTrackSubtitleSpeechSettings
}

export interface MultiTrackSubtitleSpeechSettings {
  model: 'VoxCPM2'
  prompt: string
  cfg: number
  steps: number
  referenceAudio: string
  referenceAudioSourceType?: Extract<MultiTrackSourceType, 'input' | 'output' | 'local'>
}

export interface MultiTrackSubtitleStyle {
  font_size: number
  color: string
  outline_color?: string
  background_color: string
  background_opacity: number
  x: number
  y: number
  width: number
}

export interface MultiTrackSegment {
  id: string
  start_frame: number
  end_frame: number
  origin_start_frame?: number
  content: MultiTrackSegmentContent
  color: string
}

export interface MultiTrackTaskMarker {
  id: string
  frame: number
}

export interface MultiTrack {
  id: string
  name: string
  type: MultiTrackType
  task_mode?: MultiTrackTaskMode
  color: string
  muted: boolean
  solo?: boolean
  visible?: boolean
  volume_db?: number
  locked: boolean
  audio_locked?: boolean
  media_index?: number
  segments: MultiTrackSegment[]
}

export interface TrackData {
  tracks: MultiTrack[]
  total_length: number
  frame_rate: number
  task_markers?: MultiTrackTaskMarker[]
  task_overview?: boolean
  muted?: boolean
  volume_db?: number
}

export interface TracksInfoMediaItem {
  index: number
  track_id: string
  segment_id: string
  source_type?: MultiTrackSourceType
  file_path?: string
  local_path?: string
  url?: string
  slot_name?: string
  file_name?: string
  duration?: number
  panorama_view?: MultiTrackPanoramaView
}

export interface TracksInfo {
  total_length: number
  frame_rate: number
  task_markers?: MultiTrackTaskMarker[]
  muted?: boolean
  volume_db?: number
  width: number
  height: number
  tracks: MultiTrack[]
  media: {
    images: TracksInfoMediaItem[]
    audio: TracksInfoMediaItem[]
    video: TracksInfoMediaItem[]
  }
}