Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 1 addition & 47 deletions components/clips/ClipEditorBar.vue
Original file line number Diff line number Diff line change
Expand Up @@ -18,20 +18,12 @@ import { useNuxtApp } from "#app";
import { Button } from "~/components/ui/button";
import { Input } from "~/components/ui/input";
import { Label } from "~/components/ui/label";
import {
Select,
SelectContent,
SelectItem,
SelectTrigger,
SelectValue,
} from "~/components/ui/select";
import {
Popover,
PopoverContent,
PopoverTrigger,
} from "~/components/ui/popover";
import { useDemoPlaybackStore } from "~/stores/DemoPlaybackStore";
import { useApplicationSettingsStore } from "~/stores/ApplicationSettings";
import { useDemoPlayback } from "~/composables/useDemoPlayback";
import { useClipEditor, type EditorSegment } from "~/composables/useClipEditor";
import { useClipRenderActive } from "~/composables/useClipRenderActive";
Expand All @@ -45,32 +37,13 @@ const props = defineProps<{
}>();

const store = useDemoPlaybackStore();
const appSettings = useApplicationSettingsStore();

const clipFps = computed<30 | 60>(() => {
const raw = appSettings.settings.find(
(s) => s.name === "public.clip_fps",
)?.value;
return raw === "30" ? 30 : 60;
});

const clipResolutionDefault = computed<"720p" | "1080p">(() => {
const raw = appSettings.settings.find(
(s) => s.name === "public.clip_resolution",
)?.value;
return raw === "720p" ? "720p" : "1080p";
});
const { seek, setHudVisible } = useDemoPlayback();
const editor = useClipEditor();
const nuxtApp = useNuxtApp();
const { active: renderActive, trackJob: trackRenderJob } =
useClipRenderActive();

const title = ref("");
const resolution = ref<"720p" | "1080p">(clipResolutionDefault.value);
watch(clipResolutionDefault, (v) => {
resolution.value = v;
});
const submitting = ref(false);
const submitError = ref<string | null>(null);
const renderingJobId = ref<string | null>(null);
Expand Down Expand Up @@ -316,7 +289,6 @@ async function submit() {
end_tick: s.end_tick,
...(s.pov_steam_id ? { pov_steam_id: s.pov_steam_id } : {}),
})),
output: { format: "mp4", resolution: resolution.value, fps: clipFps.value },
destination: "library",
title: title.value || undefined,
};
Expand Down Expand Up @@ -637,9 +609,7 @@ function onRenderClose() {
</div>
</div>

<div
class="grid grid-cols-1 sm:grid-cols-[1fr_auto_auto] gap-2 items-end"
>
<div class="grid grid-cols-1 sm:grid-cols-[1fr_auto] gap-2 items-end">
<div class="space-y-1">
<Label
for="clip-editor-title"
Expand All @@ -655,22 +625,6 @@ function onRenderClose() {
maxlength="80"
/>
</div>
<div class="space-y-1">
<Label
class="text-[0.6rem] font-mono uppercase tracking-[0.16em] text-muted-foreground"
>
{{ $t("clips.editor.resolution") }}
</Label>
<Select v-model="resolution">
<SelectTrigger class="h-8 w-[6.5rem] text-xs">
<SelectValue />
</SelectTrigger>
<SelectContent>
<SelectItem value="720p">720p</SelectItem>
<SelectItem value="1080p">1080p</SelectItem>
</SelectContent>
</Select>
</div>
<Button
type="button"
class="h-8 self-end"
Expand Down
36 changes: 0 additions & 36 deletions components/clips/CreateClipDialog.vue
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ import {
} from "~/components/ui/select";
import { generateMutation } from "~/graphql/graphqlGen";
import { useDemoPlaybackStore } from "~/stores/DemoPlaybackStore";
import { useApplicationSettingsStore } from "~/stores/ApplicationSettings";
import ClipRenderProgress from "~/components/clips/ClipRenderProgress.vue";
import { useClipRenderActive } from "~/composables/useClipRenderActive";

Expand All @@ -44,23 +43,8 @@ const emit = defineEmits<{
}>();

const store = useDemoPlaybackStore();
const appSettings = useApplicationSettingsStore();
const nuxtApp = useNuxtApp();

const clipFps = computed<30 | 60>(() => {
const raw = appSettings.settings.find(
(s) => s.name === "public.clip_fps",
)?.value;
return raw === "30" ? 30 : 60;
});

const clipResolutionDefault = computed<"720p" | "1080p">(() => {
const raw = appSettings.settings.find(
(s) => s.name === "public.clip_resolution",
)?.value;
return raw === "720p" ? "720p" : "1080p";
});

type Preset = "knife" | "multikills" | "best_round" | "recap";
const presetTarget = ref<string | null>(null);
const presetChoice = ref<Preset>("multikills");
Expand Down Expand Up @@ -99,7 +83,6 @@ const PRESETS = computed<
]);

const title = ref("");
const resolution = ref<"720p" | "1080p">(clipResolutionDefault.value);
const submitting = ref(false);
const submitError = ref<string | null>(null);
const renderingJobId = ref<string | null>(null);
Expand All @@ -111,7 +94,6 @@ watch(
(v) => {
if (!v) return;
title.value = "";
resolution.value = clipResolutionDefault.value;
submitting.value = false;
submitError.value = null;
renderingJobId.value = null;
Expand Down Expand Up @@ -195,8 +177,6 @@ async function submit() {
match_map_id: props.matchMapId,
target_steam_id: presetTarget.value,
preset: presetChoice.value,
resolution: resolution.value,
fps: clipFps.value,
title: title.value || undefined,
target_name: targetName,
},
Expand Down Expand Up @@ -362,22 +342,6 @@ function close(v: boolean) {
/>
</div>

<div class="space-y-2">
<Label
class="font-mono text-[0.7rem] uppercase tracking-[0.18em] text-muted-foreground"
>{{ $t("clips.create_dialog.resolution") }}</Label
>
<Select v-model="resolution">
<SelectTrigger>
<SelectValue />
</SelectTrigger>
<SelectContent>
<SelectItem value="720p">720p</SelectItem>
<SelectItem value="1080p">1080p</SelectItem>
</SelectContent>
</Select>
</div>

<p v-if="submitError" class="text-xs text-destructive">
{{ submitError }}
</p>
Expand Down
24 changes: 0 additions & 24 deletions components/match/RenderHighlightForPlayerDialog.vue
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,10 @@ import {
} from "~/components/ui/select";
import { generateMutation, generateQuery } from "~/graphql/graphqlGen";
import { useToast } from "~/components/ui/toast/use-toast";
import { useApplicationSettingsStore } from "~/stores/ApplicationSettings";

const { t } = useI18n();
const nuxtApp = useNuxtApp();
const { toast } = useToast();
const appSettings = useApplicationSettingsStore();

type MapWithDemo = {
id: string;
Expand Down Expand Up @@ -59,13 +57,6 @@ const PRESET_ORDER: Preset[] = ["multikills", "best_round", "knife", "recap"];

const selectedMatchMapId = ref<string | null>(null);
const presetChoice = ref<Preset>("multikills");
const clipResolutionDefault = computed<"720p" | "1080p">(() => {
const raw = appSettings.settings.find(
(s) => s.name === "public.clip_resolution",
)?.value;
return raw === "720p" ? "720p" : "1080p";
});
const resolution = ref<"720p" | "1080p">(clipResolutionDefault.value);
const submitting = ref(false);
const submitError = ref<string | null>(null);
const availability = ref<Availability | null>(null);
Expand All @@ -78,7 +69,6 @@ watch(
submitting.value = false;
submitError.value = null;
presetChoice.value = "multikills";
resolution.value = clipResolutionDefault.value;
availability.value = null;
selectedMatchMapId.value = props.matchMaps[0]?.id ?? null;
},
Expand Down Expand Up @@ -215,7 +205,6 @@ async function submit() {
match_map_id: selectedMatchMapId.value,
target_steam_id: props.targetSteamId,
preset: presetChoice.value,
resolution: resolution.value,
target_name: props.targetName ?? undefined,
},
{ success: true, job_id: true },
Expand Down Expand Up @@ -337,19 +326,6 @@ function close(v: boolean) {
</p>
</div>

<div class="space-y-2">
<SettingHeader>{{ $t("clips.create_dialog.resolution") }}</SettingHeader>
<Select v-model="resolution">
<SelectTrigger>
<SelectValue />
</SelectTrigger>
<SelectContent>
<SelectItem value="720p">720p</SelectItem>
<SelectItem value="1080p">1080p</SelectItem>
</SelectContent>
</Select>
</div>

<p v-if="submitError" class="text-xs text-destructive">
{{ submitError }}
</p>
Expand Down
8 changes: 4 additions & 4 deletions generated/zeus/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1024,7 +1024,7 @@ export type ValueTypes = {
audio?: ValueTypes["ClipAudioInput"] | undefined | null | Variable<any, string>,
destination: string | Variable<any, string>,
match_map_id: ValueTypes["uuid"] | Variable<any, string>,
output: ValueTypes["ClipOutputInput"] | Variable<any, string>,
output?: ValueTypes["ClipOutputInput"] | undefined | null | Variable<any, string>,
overlays?: Array<ValueTypes["ClipOverlayInput"]> | undefined | null | Variable<any, string>,
segments: Array<ValueTypes["ClipSegmentInput"]> | Variable<any, string>,
title?: string | undefined | null | Variable<any, string>
Expand Down Expand Up @@ -84117,7 +84117,7 @@ export type ResolverInputTypes = {
audio?: ResolverInputTypes["ClipAudioInput"] | undefined | null,
destination: string,
match_map_id: ResolverInputTypes["uuid"],
output: ResolverInputTypes["ClipOutputInput"],
output?: ResolverInputTypes["ClipOutputInput"] | undefined | null,
overlays?: Array<ResolverInputTypes["ClipOverlayInput"]> | undefined | null,
segments: Array<ResolverInputTypes["ClipSegmentInput"]>,
title?: string | undefined | null
Expand Down Expand Up @@ -167203,7 +167203,7 @@ export type ModelTypes = {
audio?: ModelTypes["ClipAudioInput"] | undefined | null,
destination: string,
match_map_id: ModelTypes["uuid"],
output: ModelTypes["ClipOutputInput"],
output?: ModelTypes["ClipOutputInput"] | undefined | null,
overlays?: Array<ModelTypes["ClipOverlayInput"]> | undefined | null,
segments: Array<ModelTypes["ClipSegmentInput"]>,
title?: string | undefined | null
Expand Down Expand Up @@ -240290,7 +240290,7 @@ export type GraphQLTypes = {
audio?: GraphQLTypes["ClipAudioInput"] | undefined | null,
destination: string,
match_map_id: GraphQLTypes["uuid"],
output: GraphQLTypes["ClipOutputInput"],
output?: GraphQLTypes["ClipOutputInput"] | undefined | null,
overlays?: Array<GraphQLTypes["ClipOverlayInput"]> | undefined | null,
segments: Array<GraphQLTypes["ClipSegmentInput"]>,
title?: string | undefined | null
Expand Down
5 changes: 0 additions & 5 deletions graphql/clipRenderJob.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,11 +56,6 @@ export type ClipSpec = {
fade_out_ms?: number;
duck_game_audio?: boolean;
};
output: {
format: "mp4";
resolution: "720p" | "1080p";
fps: 60;
};
destination: "download" | "library";
title?: string;
};
4 changes: 1 addition & 3 deletions i18n/locales/ar_SA.json
Original file line number Diff line number Diff line change
Expand Up @@ -2402,7 +2402,7 @@
"clip_fps": "FPS أبرز اللقطات",
"clip_fps_description": "معدل الإطارات للمخرجات المعالجة والمقاطع المحرّرة يدويًا. 60 FPS أكثر سلاسة لكنه يضاعف عبء الترميز وحجم الملف، و30 FPS هو الخيار الأخف.",
"clip_resolution": "دقة أبرز اللقطات",
"clip_resolution_description": "الدقة الافتراضية للمخرجات المعالجة والمقاطع المحرّرة يدويًا. يمكن للمستخدمين تجاوزها لكل مقطع من نافذة المعالجة. 1080p يوازن بين الجودة وحجم الملف، و720p ينتج ملفات أصغر بنحو 50%. كلاهما يستفيد عندما تعالج عقد GPU بدقة 1440p — إذ يقلّصها المشغّل إلى الدقة المختارة.",
"clip_resolution_description": "دقة الإخراج للمخرجات المعالجة والمقاطع المحرّرة يدويًا. 1080p يوازن بين الجودة وحجم الملف، و720p ينتج ملفات أصغر بنحو 50%. كلاهما يستفيد عندما تعالج عقد GPU بدقة 1440p — إذ يقلّصها المشغّل إلى الدقة المختارة.",
"codec_h265": "H.265 / HEVC",
"codec_h264": "H.264 (موصى به)",
"clip_bake_branding": "دمج بطاقة اللاعب والخاتمة داخل اللقطات",
Expand Down Expand Up @@ -8820,7 +8820,6 @@
"close": "إغلاق",
"segments": "المقاطع",
"title_label": "العنوان",
"resolution": "الدقة",
"render": "معالجة",
"add": "أضف",
"stop": "أوقف",
Expand Down Expand Up @@ -8893,7 +8892,6 @@
"preset": "قالب",
"title_label": "العنوان",
"title_placeholder": "يأخذ اسم القالب افتراضيًا",
"resolution": "الدقة",
"submit": "أنشئ أبرز اللقطات"
},
"presets": {
Expand Down
4 changes: 1 addition & 3 deletions i18n/locales/da_DK.json
Original file line number Diff line number Diff line change
Expand Up @@ -2402,7 +2402,7 @@
"clip_fps": "Highlight-FPS",
"clip_fps_description": "Billedhastighed for renderede highlights og manuelt redigerede klip. 60 FPS er mere flydende, men fordobler encode-arbejdet og filstørrelsen; 30 FPS er den lettere løsning.",
"clip_resolution": "Highlight-opløsning",
"clip_resolution_description": "Standardopløsning for renderede highlights og manuelt redigerede klip. Brugere kan stadig ændre den pr. klip i renderdialogen. 1080p balancerer kvalitet og filstørrelse; 720p giver ca. 50 % mindre filer. Begge får gavn af, at GPU-noder renderer i 1440p — streameren supersampler ned til den valgte opløsning.",
"clip_resolution_description": "Opløsning for renderede highlights og manuelt redigerede klip. 1080p balancerer kvalitet og filstørrelse; 720p giver ca. 50 % mindre filer. Begge får gavn af, at GPU-noder renderer i 1440p — streameren supersampler ned til den valgte opløsning.",
"codec_h265": "H.265 / HEVC",
"codec_h264": "H.264 (anbefales)",
"clip_bake_branding": "Indbrænd spillerchip og outro i highlights",
Expand Down Expand Up @@ -8820,7 +8820,6 @@
"close": "Luk",
"segments": "Segmenter",
"title_label": "Titel",
"resolution": "Opløsning",
"render": "Render",
"add": "Tilføj",
"stop": "Stop",
Expand Down Expand Up @@ -8893,7 +8892,6 @@
"preset": "Preset",
"title_label": "Titel",
"title_placeholder": "Bruger preset-navnet som standard",
"resolution": "Opløsning",
"submit": "Generér highlights"
},
"presets": {
Expand Down
4 changes: 1 addition & 3 deletions i18n/locales/de_DE.json
Original file line number Diff line number Diff line change
Expand Up @@ -2402,7 +2402,7 @@
"clip_fps": "Highlight-FPS",
"clip_fps_description": "Bildrate der Ausgabe für gerenderte Highlights und manuell geschnittene Clips. 60 FPS ist flüssiger, verdoppelt aber Encoding-Aufwand und Dateigröße; 30 FPS ist die leichtere Option.",
"clip_resolution": "Highlight-Auflösung",
"clip_resolution_description": "Standard-Ausgabeauflösung für gerenderte Highlights und manuell geschnittene Clips. Nutzer können sie im Render-Dialog pro Clip überschreiben. 1080p hält Qualität und Dateigröße in Balance; 720p erzeugt rund 50 % kleinere Dateien. Beide profitieren, wenn GPU-Nodes in 1440p rendern — der Streamer skaliert das auf die gewählte Ausgabeauflösung herunter.",
"clip_resolution_description": "Ausgabeauflösung für gerenderte Highlights und manuell geschnittene Clips. 1080p hält Qualität und Dateigröße in Balance; 720p erzeugt rund 50 % kleinere Dateien. Beide profitieren, wenn GPU-Nodes in 1440p rendern — der Streamer skaliert das auf die gewählte Ausgabeauflösung herunter.",
"codec_h265": "H.265 / HEVC",
"codec_h264": "H.264 (empfohlen)",
"clip_bake_branding": "Spieler-Chip + Outro in Highlights einbrennen",
Expand Down Expand Up @@ -8820,7 +8820,6 @@
"close": "Schließen",
"segments": "Segmente",
"title_label": "Titel",
"resolution": "Auflösung",
"render": "Rendern",
"add": "Hinzufügen",
"stop": "Stopp",
Expand Down Expand Up @@ -8893,7 +8892,6 @@
"preset": "Preset",
"title_label": "Titel",
"title_placeholder": "Standard ist der Preset-Name",
"resolution": "Auflösung",
"submit": "Highlights erzeugen"
},
"presets": {
Expand Down
4 changes: 1 addition & 3 deletions i18n/locales/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -2402,7 +2402,7 @@
"clip_fps": "Highlight FPS",
"clip_fps_description": "Output frame rate for rendered highlights and manually-edited clips. 60 FPS is smoother but doubles the encode work and file size; 30 FPS is the lighter option.",
"clip_resolution": "Highlight Resolution",
"clip_resolution_description": "Default output resolution for rendered highlights and manually-edited clips. Users can still override per-clip in the render dialog. 1080p balances quality and file size; 720p produces ~50% smaller files. Both benefit when GPU nodes render at 1440p — the streamer supersamples that down to the selected output resolution.",
"clip_resolution_description": "Output resolution for rendered highlights and manually-edited clips. 1080p balances quality and file size; 720p produces ~50% smaller files. Both benefit when GPU nodes render at 1440p — the streamer supersamples that down to the selected output resolution.",
"codec_h265": "H.265 / HEVC",
"codec_h264": "H.264 (recommended)",
"clip_bake_branding": "Bake player chip + outro into highlights",
Expand Down Expand Up @@ -8820,7 +8820,6 @@
"close": "Close",
"segments": "Segments",
"title_label": "Title",
"resolution": "Resolution",
"render": "Render",
"add": "Add",
"stop": "Stop",
Expand Down Expand Up @@ -8893,7 +8892,6 @@
"preset": "Preset",
"title_label": "Title",
"title_placeholder": "Defaults to preset name",
"resolution": "Resolution",
"submit": "Generate highlights"
},
"presets": {
Expand Down
Loading
Loading