diff --git a/packages/fakeyou.com/src/components/common/VideoFakeyou/VideoFakeyou.tsx b/packages/fakeyou.com/src/components/common/VideoFakeyou/VideoFakeyou.tsx index 68e3210db3..5ed1ab2590 100644 --- a/packages/fakeyou.com/src/components/common/VideoFakeyou/VideoFakeyou.tsx +++ b/packages/fakeyou.com/src/components/common/VideoFakeyou/VideoFakeyou.tsx @@ -1,11 +1,11 @@ import React, { useState, forwardRef } from "react"; import { useMedia } from "hooks"; -import { MediaFile } from "@storyteller/components/src/api/media_files/GetMediaFile"; +import { MediaFileType } from "@storyteller/components/src/api"; import { BucketConfig } from "@storyteller/components/src/api/BucketConfig"; import makeClass from "resources/makeClass"; -import { Label } from "components/common" - +import { Label } from "components/common"; +import './styles.scss'; interface Props { @@ -26,7 +26,7 @@ const VideoFromFakeyou = forwardRef(({ onResponse, ...rest }: Props, ref) => { - const [mediaFile, setMediaFile] = useState(); + const [mediaFile, setMediaFile] = useState(); useMedia({ mediaToken: mediaToken, onSuccess: (res: any) => { @@ -39,9 +39,15 @@ const VideoFromFakeyou = forwardRef(({ if (mediaLink){ return ( -
+
{label &&
diff --git a/packages/fakeyou.com/src/components/common/VideoFakeyou/styles.scss b/packages/fakeyou.com/src/components/common/VideoFakeyou/styles.scss new file mode 100644 index 0000000000..7a164c8bc1 --- /dev/null +++ b/packages/fakeyou.com/src/components/common/VideoFakeyou/styles.scss @@ -0,0 +1,57 @@ +@import "scss/colours.scss"; + +.fy-video { + overflow: hidden; + width: 100%; + margin: 0; + position: relative; + + &.fit-content { + height: fit-content; + } + &.vh50{ + height: 50vh; + } + video, .video-overlay { + border-radius: .5rem; + width: 100%; + height: 100%; + } + + video{ + object-fit: cover; + &.object-fit-cover {object-fit: cover;} + &.object-fit-contain {object-fit: contain;} + } + + .video-overlay { + background: linear-gradient(rgba($primary,0.5) 0%, rgba($secondary,0.75) 75%); + cursor: pointer; + padding: 2rem; + position: absolute; + top: 0px; + + h6, p { + color: #fff; + filter: drop-shadow(0 3px 3px rgba($primary-dark,.25)); + font-size: 1.5rem; + text-align: center; + } + + svg { + filter: drop-shadow(0 3px 7px rgba($primary-dark,.45)); + position: absolute; + width: 3rem; + height: 3rem; + inset: 50%; + transform: translate(-50%, -50%); + } + + .video-play-button { + background-color: green; + width: 4rem; + height: 4rem; + stroke: white; + } + } +}; \ No newline at end of file diff --git a/packages/fakeyou.com/src/components/common/index.tsx b/packages/fakeyou.com/src/components/common/index.tsx index 75144224f1..4bd2f8fa5a 100644 --- a/packages/fakeyou.com/src/components/common/index.tsx +++ b/packages/fakeyou.com/src/components/common/index.tsx @@ -29,7 +29,9 @@ import Radio from "./Radio"; import Searcher from "./Searcher"; import SegmentButtons from "./SegmentButtons"; import Select from "./Select"; -import SelectModal from "./SelectModal"; +import SelectModal, { SelectModalData } from "./SelectModal"; +import SelectModalVideoTabs from "./SelectModalVideoTabs"; +import SelectModalWeightsTabs from "./SelectModalWeightsTabs"; import Skeleton from "./Skeleton"; import Slider from "./Slider"; import Spinner from "./Spinner"; @@ -47,6 +49,10 @@ import VideoFakeyou from "./VideoFakeyou"; import VideoInput from "./VideoInput"; import SelectionBubbles from "./SelectionBubbles"; +export type{ + SelectModalData +}; + export { Accordion, AudioBlobPreview, @@ -85,6 +91,8 @@ export { Searcher, Select, SelectModal, + SelectModalVideoTabs, + SelectModalWeightsTabs, Skeleton, Slider, Spinner, diff --git a/packages/fakeyou.com/src/v2/view/pages/video_styletransfer/VideoStyleTransfer.tsx b/packages/fakeyou.com/src/v2/view/pages/video_styletransfer/VideoStyleTransfer.tsx index ea29b33241..e7795fe12e 100644 --- a/packages/fakeyou.com/src/v2/view/pages/video_styletransfer/VideoStyleTransfer.tsx +++ b/packages/fakeyou.com/src/v2/view/pages/video_styletransfer/VideoStyleTransfer.tsx @@ -20,7 +20,7 @@ export default function VideoStyleTransfer(props:{ inferenceJobsByCategory: Map>; sessionWrapper: SessionWrapper; }){ - const debug = false; + const debug = true; const {t} = useLocalize("VideoStyleTransfer"); const { NO_FILE } = states; const [pageState, dispatchPageState] = useReducer(reducer, { diff --git a/packages/fakeyou.com/src/v2/view/pages/video_styletransfer/commons.tsx b/packages/fakeyou.com/src/v2/view/pages/video_styletransfer/commons.tsx index 80c1e0cac0..48dc49454e 100644 --- a/packages/fakeyou.com/src/v2/view/pages/video_styletransfer/commons.tsx +++ b/packages/fakeyou.com/src/v2/view/pages/video_styletransfer/commons.tsx @@ -27,9 +27,12 @@ export function TableOfKeyValues( border: "1px solid white", borderTopLeftRadius: "1rem", borderBottomLeftRadius: "1rem", - }}>{ - Object.entries(keyValues).map(([key, val], index: number)=>{ - return {`${key}`}{`${val}`} - }) - }); + }}> + Debug of a certain Key-Values set + { + Object.entries(keyValues).map(([key, val], index: number)=>{ + return {`${key}`}{`${val}`} + }) + } + ); } \ No newline at end of file diff --git a/packages/fakeyou.com/src/v2/view/pages/video_styletransfer/components/pageVSTApp/defaultValues.tsx b/packages/fakeyou.com/src/v2/view/pages/video_styletransfer/components/pageVSTApp/defaultValues.tsx new file mode 100644 index 0000000000..45cff6f3e1 --- /dev/null +++ b/packages/fakeyou.com/src/v2/view/pages/video_styletransfer/components/pageVSTApp/defaultValues.tsx @@ -0,0 +1,49 @@ +export {initialValues, hiddenValues}; +const initialValues = { + //config + outputPath: "", + workflowConfig: "weight_f5qh4s1dtp266yv313p09tkpa", + + //video Settings + width: 544, + height: 544, + maxFrames: 17, + framesCap: 16, + skipFrames: 0, + everyNthFrame: 2, + inputFps: 24, + interpolationMultiplier: 2, + + //basics + seed: "", + sdModelToken: "weight_83xpresyjswy97ppk0fyct146", + loraModelToken: "", + posPrompt: "", + negPrompt: "", + + //advance + firstPass: 0, + upscalePass: 0, + motionScale:0, + upscaleMultiplier: 0, + useEmptyLatent: false, + useFaceDetailer: false, + denoiseFaceDetailer: 0, + useLCM: false, + lcmCFG: 0, + lcmSteps: 0, + + //Control Net + cnCanny: 0.7, + cnDepth: 0.7, + cnLinearAnime: 0.7, + cnLinearRealistic: 0.7, + cnOpenPose: 0.7, + cnPipeFace: 0.7, + cnSparse: 0.7, + cnTile: 0.7, +}; +const hiddenValues = { + posPrompt: "(masterpiece,detailed,highres:1.4), ", + negPrompt: "flare, lens flare, glare, naked, nsfw, text, logo, Shutterstock, watermark:1.3, embedding:easynegative, embedding:badhandv4,(worst quality, low quality:1.4), lowres, blurry, monochrome, ", +} diff --git a/packages/fakeyou.com/src/v2/view/pages/video_styletransfer/components/pageVSTApp/helpers.tsx b/packages/fakeyou.com/src/v2/view/pages/video_styletransfer/components/pageVSTApp/helpers.tsx index 9665276157..c2814757bd 100644 --- a/packages/fakeyou.com/src/v2/view/pages/video_styletransfer/components/pageVSTApp/helpers.tsx +++ b/packages/fakeyou.com/src/v2/view/pages/video_styletransfer/components/pageVSTApp/helpers.tsx @@ -1,4 +1,5 @@ import { v4 as uuidv4 } from "uuid"; +import { hiddenValues } from "./defaultValues"; export type WorkflowValuesType = { // File Settings @@ -60,8 +61,10 @@ export function mapRequest(workflowValues: WorkflowValuesType){ "maybe_input_file": workflowValues.fileToken, "maybe_output_path": workflowValues.outputPath, "maybe_json_modifications": { - "$.510.inputs.Text": workflowValues.posPrompt, - "$.8.inputs.text": workflowValues.negPrompt, + "$.510.inputs.Text": + hiddenValues.posPrompt + workflowValues.posPrompt, + "$.8.inputs.text": + hiddenValues.negPrompt+ workflowValues.negPrompt, "$.173.inputs.seed": workflowValues.seed, "$.401.inputs.Value": workflowValues.firstPass, "$.918.inputs.Value": workflowValues.motionScale, diff --git a/packages/fakeyou.com/src/v2/view/pages/video_styletransfer/components/pageVSTApp/initialValues.tsx b/packages/fakeyou.com/src/v2/view/pages/video_styletransfer/components/pageVSTApp/initialValues.tsx deleted file mode 100644 index 9d80945d9f..0000000000 --- a/packages/fakeyou.com/src/v2/view/pages/video_styletransfer/components/pageVSTApp/initialValues.tsx +++ /dev/null @@ -1,45 +0,0 @@ -const initialValues = { - //config - outputPath: "vid2vid/SparseUpscaleInterp_00001.mp4", - workflowConfig: "weight_q8sz47gmfw2zx02snrbz88ns9", - - //video Settings - width: 544, - height: 544, - maxFrames: 17, - framesCap: 16, - skipFrames: 0, - everyNthFrame: 2, - inputFps: 24, - interpolationMultiplier: 2, - - //basics - seed: "", - sdModelToken: "", - loraModelToken: "", - posPrompt: "", - negPrompt: "", - - //advance - firstPass: 1, - upscalePass: 0.42, - motionScale:1, - upscaleMultiplier: 1.5, - useEmptyLatent: false, - useFaceDetailer: false, - denoiseFaceDetailer: 0.45, - useLCM: false, - lcmCFG: 2, - lcmSteps: 8, - - //Control Net - cnCanny: 0, - cnDepth: 0, - cnLinearAnime: 0, - cnLinearRealistic: 0, - cnOpenPose: 0, - cnPipeFace: 0, - cnSparse: 0.7, - cnTile: 0, -}; -export default initialValues; \ No newline at end of file diff --git a/packages/fakeyou.com/src/v2/view/pages/video_styletransfer/components/pageVSTApp/pageVSTApp.tsx b/packages/fakeyou.com/src/v2/view/pages/video_styletransfer/components/pageVSTApp/pageVSTApp.tsx index 3fd7c7e1e4..7604563d53 100644 --- a/packages/fakeyou.com/src/v2/view/pages/video_styletransfer/components/pageVSTApp/pageVSTApp.tsx +++ b/packages/fakeyou.com/src/v2/view/pages/video_styletransfer/components/pageVSTApp/pageVSTApp.tsx @@ -2,26 +2,27 @@ import React, { useRef, useState } from "react"; import { NavLink } from 'react-router-dom'; import { useParams, useHistory } from "react-router-dom"; -import EnqueueVideoStyleTransfer from "@storyteller/components/src/api/video_styleTransfer"; -import { Action, State } from "../../reducer"; -import { TableOfKeyValues } from "../../commons"; -import ivs from "./initialValues"; -import { - isInputValid, - mapRequest, - WorkflowValuesType, -} from "./helpers"; - import { Button, Label, - NumberSliderV2, Panel, - SelectModal, + NumberSliderV2, TextArea, VideoFakeyou } from "components/common"; +import EnqueueVideoStyleTransfer from "@storyteller/components/src/api/video_styleTransfer"; +import { Action, State } from "../../reducer"; +import { TableOfKeyValues } from "../../commons"; +import { initialValues } from "./defaultValues"; +import { + mapRequest, + WorkflowValuesType, +} from "./helpers"; +import SectionAdvanceOptions from "./sectionAdvanceOptions"; + + + export default function PageVSTApp({ debug, t, pageState, dispatchPageState, parentPath }: { @@ -36,10 +37,9 @@ export default function PageVSTApp({ const [workflowValues, setWorkflowValues] = useState({ fileToken: pageState.mediaFileToken || mediaToken, - ...ivs + ...initialValues }); - const [styleStrength, setStyleStrength]= useState(8); if(videoRef?.current){ if(debug) console.log("set-up video element listeners"); @@ -69,44 +69,31 @@ export default function PageVSTApp({ } - const handleOnChange = (key: string, newValue:any,) => { - setWorkflowValues((curr)=>({...curr, [key]: newValue})); + const handleOnChange = (val:{[key: string]: number|string|boolean|undefined}) => { + setWorkflowValues((curr)=>({...curr, ...val})); } - const handleFramesCap = (newValue: number)=>{ - if(newValue - workflowValues.skipFrames >= 16) - setWorkflowValues((curr)=>({...curr, framesCap: newValue})); - } - const handleSkipFrames = (newValue: number)=>{ - if(workflowValues.framesCap - newValue >= 16) - setWorkflowValues((curr)=>({...curr, skipFrames: newValue})); - } - const handleStyleStrength = (value:number)=>{ - setStyleStrength(value); - }; + + const history = useHistory(); const handleGenerate = ()=>{ if(debug) console.log(workflowValues) - if (isInputValid(workflowValues)){ - const request = mapRequest(workflowValues); - if (debug) console.log(request); - EnqueueVideoStyleTransfer(request).then(res => { - if (res.success && res.inference_job_token) { - dispatchPageState({ - type: 'enqueueJobSuccess', - payload: { - inferenceJobToken: res.inference_job_token - } - }) - }else{ - console.log(res); - } - }) - dispatchPageState({type: 'enqueueJob'}) - history.push(`${parentPath}/jobs`); - }else{ - alert("you must pick an sd weight and input a prompt"); - } + const request = mapRequest(workflowValues); + if (debug) console.log(request); + EnqueueVideoStyleTransfer(request).then(res => { + if (res.success && res.inference_job_token) { + dispatchPageState({ + type: 'enqueueJobSuccess', + payload: { + inferenceJobToken: res.inference_job_token + } + }) + }else{ + console.log(res); + } + }) + dispatchPageState({type: 'enqueueJob'}) + history.push(`${parentPath}/jobs`); } return( @@ -131,87 +118,51 @@ export default function PageVSTApp({
- { - handleOnChange("sdModelToken", token); - }} - tabs={[ - { - label: "All Weights", - tabKey: "allWeights", - typeFilter: "sd_1.5", - searcher: true, - type: "weights", - }, - { - label: "Bookmarked", - tabKey: "bookmarkedWeights", - typeFilter: "sd_1.5", - searcher: false, - type: "weights", - }, - ]} +