Gap 13: BWF/INFO metadata cho WAV export — wav_bwf.patch_bwf_metadata chen bext + LIST/INFO (INAM/IART/ISRC/ICMT) truoc data chunk, giu nguyen PCM bits; render_project(metadata=) + RenderRequest.metadata + cloud render task; ExportModal Title/Artist/ISRC; test_66 (178 passed)
This commit is contained in:
@@ -616,6 +616,8 @@ class RenderRequest(BaseModel):
|
||||
normalize: Optional[bool] = False
|
||||
normalize_target: Optional[str] = "-1dbtp"
|
||||
mono_check: Optional[bool] = False
|
||||
# Gap 13: BWF/INFO metadata (title/artist/isrc/comment/description/...)
|
||||
metadata: Optional[dict] = None
|
||||
|
||||
|
||||
class FxGuiRequest(BaseModel):
|
||||
@@ -1212,6 +1214,7 @@ def render_project(
|
||||
dither=bool(req.dither),
|
||||
normalize=bool(req.normalize),
|
||||
normalize_target=req.normalize_target or "-1dbtp",
|
||||
metadata=req.metadata or None,
|
||||
)
|
||||
# EBU R128 loudness + true peak (D1) — trả kèm response để mastering
|
||||
# panel hiển thị LUFS/dBTP ngay sau export mà không cần đọc lại file.
|
||||
|
||||
@@ -546,6 +546,7 @@ async def cleanup_all_backups(req: CleanupBackupsRequest, current_user: dict = D
|
||||
|
||||
class RenderProjectRequest(BaseModel):
|
||||
sample_rate: Optional[int] = 44100
|
||||
metadata: Optional[dict] = None # Gap 13: BWF/INFO metadata (title/artist/isrc/...)
|
||||
|
||||
@router.post("/cloud/{project_id}/render")
|
||||
async def render_project_endpoint(project_id: str, req: RenderProjectRequest, current_user: dict = Depends(get_current_user)):
|
||||
@@ -568,7 +569,8 @@ async def render_project_endpoint(project_id: str, req: RenderProjectRequest, cu
|
||||
project_id=project_id,
|
||||
project_name=row["name"],
|
||||
project_json_str=row["data_json"],
|
||||
sample_rate=req.sample_rate or 44100
|
||||
sample_rate=req.sample_rate or 44100,
|
||||
metadata=req.metadata or None
|
||||
)
|
||||
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user