#đ„€â Smoothie
1 messages · Page 2 of 1
honestly 50 mb isn't bad
50 was the size without upx?
ya thats not bad at all
ive also heard that upx'd executables can cause problems with some antiviruses but i dont have a source on that
both from av1 server community builds channel
that pretty much applies to any foss program that doesn't have signing
honestly i won't worry about it
well i havent heard of it happening with other executables so
Why wouldn't it be viable?
What do you mean by you need a good enough PC?
Also, does anyone have any smoothie settings that would be good for teamfights?
Or is this all just uncharted territory?
if your specs suck then interpolation will be too slow to be viable
me wen upx triggers peoples antiviruses
what if u interpolate for like 24 hours tho
cos ur a crazy man
i also spent some time trying to optimize vtrls msi bundle size
to save on bandwidth
but in the end i just made cloudflare cache it
not worth it
i wouldnt call this viable
i did that before
23h render i think
like 8k fps rife
2k res
not worth it
why not
surely if u upload only occasionally its worth it
anyways u guys can do what u want I was just asking before and now im waffling
you see
If anyone thinks they have good smoothie settings for teamfights lmk!
the quality to time spent ratio is very bad there
i made even greater renders after that
without spending sm time on rife
whats rife
better spend time learning to color grade and/or edit
so that your videos will be unique
holy
so much about this
I just wanna upload povs that dont look dogshit đ
is there any specific smoothie settings that everyone is using rn
no, find something that you like at #1104758683193319494 , ask people for configs
check out #âïœrender-hall-of-fame
dont listen to them, mess around with it đ
every1 called me weird when istarted doing flowframes
i once did a 3 day interp to 15360 fps using flowframes

To be fair what I could to have the least amount of render time but still good results was record in the highest quality possible in my case 1080p 360 fps cqp 14, 2x pre interp, then 2x with regular interp, and blend to 60 in smoothie, cause Iâve tried up to 360 input interpâd to 6000 fps, (yes I know there are diminishing returns but even at 6000fps interp it still about 10fps for my system which goes by fast. And the 6000 svp interp with weak, medium, 12, block size 8, still had more artifacting then just 2x pre and 2x after down to 60
Just the results from my testing speed and artifact wise both better then just a high svp interp
Still testing more different settings till I find something faster with similar results without having to lose quality in the interp settings I donât like using faster or block size 16+ adds to the crosshair artifacting thus i donât use em
On he bright side smoothie runs really fast with just 2x rife and 2x svp with masking, just 17fps so clips render rather efficiently
yeah 17fps when rendering 60fps videos is about .25x
wait nvm more line .45x? whats ur pc??
3080 12gb, though I run it at almost 2.3-2.4 GHz depending on how cool I can keep it, itâs also shunt modded, and I have everything on smoothie set to use just gpu, gpu render, encode, gpu interp accelerated
Thereâs a reason I always complain about how slow cpu encoding be đ
It slows down the renders
Smoothie uses like 15% of my cpu and 75% of my gpu
Doesnât even tax my system at all
I posted a screenshot of it either here or in video-discussion
I got processing power to spare
This was like 30% rendered a 1 minute long video, cause I know when smoothie first starts rendering it has a ramp up till you get to your average render fps
This is also where the rife cuda accelerated interpolation stemmed from, in flowframes rife cuda renders were always a good 30% faster then Vulcan rife for me, thus why the conversation of cuda rife on smoothie began but at the time someone told me it was incompatible with smoothie at the time
std???!!???
late to the party lmao
yes you linked me this a while ago
đ
Buffoon.
z1xus
Sent From*
what would be a good way to all of the new users that get bound to ask "what is a good recipe for X?"
we get them asked a lot if it'd be a great TL;DR
tell them to look up from:computerdream [blur v1.9] and use the first one they see with the output fps they want
and if theres any problems they can describe their issue here and send the config they used (or figure it out themselves)
i am honored you think my renders are good :,)
also i think cooler is talking abt smoothie though
:')
oh yeah
no, both
mine does
link that
the fact is that configuring blur is shockingly simple for a VAST majority of cases
theres like 3 settings that people know how to touch and even make a difference
the rest just has to be somewhat reasonable ish and youll be fine
and in the rare case that its not good enough they can always ask
same goes for smoothie
jus give em smth basic like
[interpolation]
enabled: yes
fps: 5x
speed: medium
tuning: weak
algorithm: 23
use gpu: yes
[frame blending]
enabled: yes
fps: 60
intensity: 1.0
weighting: equal
[output]
process: ffmpeg
enc args: -c:v libx264 -preset slow -crf 17 -aq-mode 3 -pix_fmt yuv420p10le -c:a copy
file format: %FILENAME% ~ %FRUIT%
container: .mp4
they can just paste that in
and all the fancy stuff they prob wont use wont be in the way
sure yeah
that does mean they have to infer or have someone explain to them that not all settings need to be in the config
just yall wait for sm gui :3
and that youll have to provide another one for 30fps unless im out of the loop and this one is fine
prob explain
seamless integration into my whole cli/tui ecosystem, so proud of how it's planned out
ive given ppl configs like that and they didnt know if they had to paste just that or replace the sections
this is the minimum effort solution and will leave them less confused
so seems like a win to me?
cooler imo you should add COPY to the default encoding args
wat?
yeah but why not
if they dont care then they prob wont be messing with the encoding args
enc args are confusing enough
theres also no non-normies who care
theyre free to bloat it up then
its faster to type -c:a copy than to open up the github repo and search for the file with the macro definitions and learn that it exists
wher
as if i have this installed
đ§ââïž
also maybe output to 10 bit for those cpu presets
just open da file..
why
10B macro
that will break like everything
10B: -pix_fmt yuv420p10le
i dont ever have issues with it
^~^
ya cause u dont use random editing softwares that cant handle anything except the most common things
but a lot of people do
oh
c:a copying a mov file into mp4 may have incompatible audio codec
yeah EXCPET NOTHING DECODES H264 10BIT
only apple devices afaik
10bit in vegas might fuc up
ya
soo
thats so stupiud
but im not gonna shove 10BIT CA COPY to the normies i think
hevc/av1 go crazy go 10bit everything with support of those does do 10bit but h264 10bit is literally indecodable outside of apple silicon
i can make a nerd recipe config course to get them crispy diminishing of diminishing returns
ca copy is a must
i am convinced you don't have ears if you don't instantly notice it missing and listen to 128k ff aac
what if input is that pc16le audio codec
and output container mp4.
đȘŠ
yea that right there
ya u add the -c:a copy then
the ppl who dont hear it dont have to
obs wont let you do that outside of mkv
if they do hear it they will either know to add it or complain and have someone explain that they have to add it
but true that
havent seen a single mf complaining about audio sounding worse
alternatively add "HQAUDIO" that does "-b:a 384k -c:a aac"
thats literally longer man
when le macro longer than le real expanded arg
đ
i always read it as "audio no" in my mind lmao
same word if you trace it far enough
Yes
movflags=+empty_moov+frag_keyframe
git clone https://github.com/couleur-tweak-tips/smoothie-rs -b gui
I'm stuck trying to make a mutable reference to the hasmap which contains the recipe
if anyone is willing to contribute anything i'd really appreciate, struggling out here
whats the issue exactly?
u need more than 1?
im trynna make one work before diving into complexifying it
im tryna add text fields which need a value that can be set / retrieved as the user changes it
reactive?
and that value is nested inside of a hashmap so i gotta retrieve it
what
@devout crypt pushed a new version which should hopefully fix this
can you check https://github.com/couleur-tweak-tips/smoothie-rs in a few mins for a new version
nice, ill give it a go later
algo 13 already does this though
Doesnât hurt to have another for low fps input users :3
Automatic masking is insane
You could maybe do some sort of difference algorithm and assign a value to each pixel for how much it changes throughout the video
And set a threshold for pixels under that value to be masked
Idk if thatâd be easy to add but Iâm just throwing out ideas
so just increase area for stronger mask? or add the cover tag?
yes
also this is if cooler manages to make it fast enough
i mean better automasking will atleast be faster then rife?
also add it under the interpolation tab right?
is this fine the defaults values for them right?
iâm not sure if smoothie supports those
i mean if you want a dynamic mask it'll be slower
but if you just want a single static mask for the video it shouldn't be slowing down the rest of the rendering after it's been processed in comparison to how it's currently implemented
might need to do it per-scene tho since the ui changes a lot between loading/death screens and gameplay for example
oh are you making like hud mask
that looks nice
question, ik it's a dumb question but would omitting timescale, dedup, colorgrading, basically anything that isnt interpolation, blending, and masking speed up the render or any benefit to speed? and by removing not just disabling it cause I don't use them but entirely removing it from the code
just curiosity
removing from the source code or the config?
source code
simplifying it of sorts to just do interp and blend
like a lite version of the software with just the two main purpose of the program
i mean itâs basically an if setting enabled, do thing
so if itâs off then itâll skip it
removing some if statements would provide basically no benefit
short answer no
actually thats the long answer too
I understood that, was just wondering
like skippping the need to make checks, and settings that potentially u dont know if on or not, just a general simplification of the program if it has any speed benefit
but if the answer is no then no it is
like the original statement just curiosity fr
checking if a string is in a map is a very fast operation
I ain't as technically gifted when it comes to coding and stuff like that like everyone else
dw itâs fine
im a ask questions, test, fail, or whatever try again, type deal with figuring stuff out, but if it's coding just one fuck up and fuck shit up
just know that checking if something is on or off is like the least demanding thing smoothie is doing
thank yals for the info, fair warning I tend to poke brains with questions like that more often then not so if it bothers just let me know
try it yourself
open up jamba.vpy
delete this, no more color grading
me = fucks up code more often then likes to admit
couleur = go edit the code
I'll make attempts
lets see how fast I can break it
itâs okay itâs a good question
theres the same amount of checks in either case
just letting you know the question was based off of no knowledge on how the program even works only on what it does and if there was anyway to make it faster
if a setting isnt found in the config itll be set to the default value
and it proceeds as normal
so its the exact same as just having the default there
it works likethis for programmers too dw
basically, the cli, like typing smoothie-rs.exe --input video.mp4 etc and the config file parsing are implemented in rust, which is a quite fast language
This is so ugly wtf
Blud is broke if they flipping pumpkins tho
Get on my@level whoever made that
i need some like that for bitcoin, buy shares when value is below 66k sell shares when it's over 71k, free profit everytime it drips then climbs higher each time
ong
i am ngl
i thinjk rife is faster than the svp hack
@mint goblet another thing
if --peek and -o is being used, and you have encoding args set, it wont work
wont work as in its gonna encode the image with video encoding args
LOL
so i think warn about it
i was getting confused as to why the images wouldnt open
and then i ffprobed and realized.
- Logging system for ffmpeg / VapourSynth
- Progress bar?
what is a "pretty output"
like just show fps speed in a nice way
PROGRESS BAR đ
ohâŠ
I disagree honestly
Itâs a lot more practical for me to just glance at the window and immediately see the render is 1/3 complete
Instead of having to look at the seconds, remember how long the video is, then think âhmmm has about 30 seconds left, but how fast is it goingâŠâŠ hmmm thatâs 3 minutes left on the render?â
actually very real
you have to regex it and its annoying as hell
If only someone had taken the time to code a progress bar for ffmpeg in one of their programs
hmmm
fuck regex i managed to get the output % by ffprobe and just text splitting ffmpeg output
would not work for --peek
Thatâs what I did
ffmpeg output is not even good if you know what you're looking at
my ass is not remembering how long the input is
Thatâs why I love progress bars
Also ETA
That was a bit annoying to code
But it is so nice
I forgot to think through it first so I spent 15 minutes doing it
speed doesn't fluctuate at all if cpu speed doesn't change
30 sec at 4x speed = 7.5 sec left ez
And Iâm a fan of visually appealing stuff so I then spent 30 minutes writing a formatting function so the time would look nice
func getETA(startingTime time.Time, current float64, total float64) float64 {
return time.Since(startingTime).Seconds() * (total - current) / current
}```
That was mine I think
what is total and current
Total is the total length of the video
Current is the current time of the video completed (?)
Itâs what ffmpeg tells you in time
Let me read it and tell you because I forgot
if video is x seconds long and y seconds have been encoded you can't know the ETA if you don't know the speed or real time elapsed
actual time since starting * time left / current time
Uh�
Iâm not sure how it works but it works
Let me stare at it more
time.Sind(startingTime) is the time elapsed
real time?
elapsed time * video time remaining / current time in video
ah ic ic
it finds avg speed not current speed which is good
but ffmpeg's speed is stable enough to where I'd consider it okay
Yeah I think I planned on fixing that
I have that fixed for the fps display
why would you fix that
I have an average fps and fps from the past second
i'd say it's better to have an avg value
âfixingâ as in including a âpast 5 seconds ETAâ
ah ic
But yeah itâs stable enough
Iâm usually not doing something like interpolation or any fancy things
doesn't really matter
Iâm trying to think of something thatâd be very scene-dependent
usually if nothing changes speed stays constant for the entire encode except the start and maybe CPU PL2 running out
decoding, possibly frame deduplication
I think I scrapped deduplication but I canât remember
also actual usage of the pc, say you're running a game in the foreground that takes 40%
possibly thermals but that changes gradually over time
is that a way in Smoothie to change the res of the video? Like it has on blur?
Like strach a video from 1920x1080 to 1080x1920 for example?
I've read all the ctt website and was not able to find any info about it
just width and L of the console
oh yeah thats the size of the cmd window
that can be done with ffmpeg
add fucking discord RPC to smrs
user is rendering a video (2x RIFE, 1.2 blur amt). . .
69% complete. . .
Config?
1.0 30fps vegas weight 480input 1920interp
progress bar will be at vrersion 198381984 before we introduce such bloat
do it
do it yk you want to
add discord rpc so âprivateâ recipes get leaked
yess
sry confused chats with vtrl development
you were talking about smoothie though
oh yeah we stole your code to interpolate our code in real time
have you seen godzilla vs king kong the movie
progress bar? idk
support to say yes or no in 18408714087140897 ways? more r&d engeering than all big tech
add nuh uh
@mint goblet yk we cant sned msgs here right
lmk if it still dont work
should b fixed
rife is factor only
oh
err
another option? is it possible?
maybe make it selectable?
factor / custom
implemnt wat
factor OR slider
i mean interpolated fps should always be a multiple right
yes
ERRR
I have question, said question is my fps recorded always comes out awkward 119.9fps recorded, do I factor interpolate to keep the original fps and interpolate multiples of itself, or should I interpolate it to an exact multiple of 120fps like 12000, since it is being blended down to 60?
To simplify do I interpolate 10x (19,966) or directly to 12,000, by typing in the fps in
I canât control the recordings sent to me to render so they always gimmicky
ive done both and they always turn out fine
my recordings r like that too sometimes
never noticed an issue with interp
Either one, at such huge numbers it wonât make a difference
You shouldnât be interpolating above ~2.5k fps though
mightve added an extra zero i like just woke up
but yeah 1,996 or 1200
it was a 10x interp
original fps was 119.96
ik its a small difference was just wondering
It wonât matter
You wonât notice any difference whatsoever
I think I cooked the perfect CLI / GUI mixture in a single binary
All of the advantages with none of the inconveniences
nevermind an inconvenience is that people are gonna need to make their shortcuts start with conhost
except that its fine
talked too soon
đ
@mint goblet instead of this
let variables = vec![
("interpolation", "fps", "INTERP_FPS"),
("interpolation", "speed", "SPEED"),
("interpolation", "tuning", "TUNING"),
("interpolation", "algorithm", "ALGORITHM"),
("frame blending", "fps", "OUTPUT_FPS"),
("frame blending", "intensity", "BLUR_AMOUNT"),
("frame blending", "weighting", "WEIGHTING"),
("flowblur", "intensity", "FLOWBLUR_AMOUNT"),
("miscellaneous", "dedup threshold", "DEDUP"),
("pre-interp", "factor", "FACTOR"),
];
i think it would be better to follow the behaviour you did for --override and have people specify smth like: %FILENAME% %MISC.CONTAINER%
this way you dont need a huge vec of allat and people can specify whatever settings they want to include for output file name
also maybe simplify
if format.contains("%FRUITS%") || format.contains("%FRUIT") {
format = format.replace("%FRUIT%", "%FRUITS%").replace(
"%FRUITS%",
&format!(
" {}",
fruits
.choose(&mut rand::thread_rng())
.expect("Failed to select a random suffix")
),
);
}
to
if format.contains("%FRUIT%") {
format = format.replace(
"%FRUIT%",
fruits
.choose(&mut rand::thread_rng())
.expect("Failed to select a random suffix")
),
);
}
im gonna fork smoothie and make a âlightâ version if anyone is interested in that
war
gna use it for smblender ig
honestly i might remove the config file all together and have just cli
since its not that many options
can u rename gpl3 projects
why have a cli at all
vspipe has one already
just use that
didnât say i was gonna make my own
with gpl3 are you allowed to fork and remove a lot of it
i don't think u need to worry about gpl at all since it's like 20 loc and u don't even need to take them from smoothie
i don't think i see why u would fork at all
i like smoothies config and stuff but i donât use half the features
so just gonna remove allat
but i mean gpl just says u can take the code as long as u give credit and use the same license
whether it's a "fork" or not is irrelevant
maybe more if u use the same frame blending code that smoothie and blur use now
maybe but
idrk where that code is from or how it works
so id rather maybe write my own
i can explain if u want
im not sure the source matters too much
either way if u don't wanna use it then just take one of blur's temp files and replace the filenames and numbers with variable names
making sure u used all the features u want in the blur config
should be literally all u need to do i think
maybe provide some way to get the dependencies if you're feeling nice
cant you just do that by stripping the config
sure but itâs annoying to do that every time i reinstall it
plus i donât like the gui at all
you are very much welcome to make the lite version but i dont see the benefits aside from making the codebase simpler hopefully
the file dialog?
the egui
thats just optional
i mean invoking it
his choice though
not making it to benefit anyone else, making it for me
tbh only downsides i can see how development is handled with it
ofc
usablity wise i see none
thatâs why i will just maintain my own fork
well gl
whats so bad with including the gui if its optional to invoke
LOL i didnt even know it released
im am so out of this community now
i want one interface
oh fuck this is understandable lmao
i dont understand why he didnt go with the dyblib approach
i like the cli/config interface, not the gui
another problem with them being bundled together is that if you run smoothie with no args, itâll default to opening the gui, which is not standard behavior for cli apps, it should print the help message
nitpick but still
đż
thats like bad
really bad
tools like cmd and ps consider .com exes to be cli tools
just .exes to be gui programs
maybe some users will like having both together, but i think itâs very against standards and ambiguous
so as long as you dont provide an extension windows executes the correct version from the cli
i doubt that
Sounds like what I asked for one time and got shot down, everyone said to just comment out or leave empty what I donât want đ I even specified a lite version
why?
i can understand the gui part
should be decoupled
anything else, need reasons
i only ever use frame blending and interp so i just want some that matches my workflow better, smoothie has a lot of extras for me
you can just strip the config or that isnt an option
any timescale, color correction, etc i do in a video editor
i could, but im one of those ppl who abide by âdo one thing and do it goodâ
I only use smoothie or blur for a small 120-> 360 interp then 1.0-1.2 blend, and thatâs it, I have everything else disabled or commented out, cause I donât edit either Vegas so even my native 360 fps to 60 doesnât give me the affect I want similar to how Vegas has smart resample davinci donât
honestly there is no point of a lite version because it doesnt do anything lite, smoothie context
i would welcome the idea for a cleaner codebase
just interp + frameblend would be really easy to keep a clean codebase
i had this idea for a while
gave up since i couldnt figure out deps
just a python script and cli which is very easy with clap
Thereâs also another benefit to lite, less buttons to press for certain unintelectuals, or ppl like me for touch all the buttons and indecisive asf, if we limit it to just, encoding argument, interp, blending, no other settings so we can streamline ppl figuring stuff out on their own, thereâs multiple benefits in having a lighter version
good time for smoothie rewrite? 
i also think the gui should just be re thought out entirely itâs very cluttered
Less stuff to break, less stuff to rewrite, with a lite version, Atleast for my non coding head as perspective
if the gui atm is a glorified text editor then it should be its own thing
some choices by couleur dont make sense to me
like no auto generating config?
no automatic optimal settings detection? (for ffmpeg args mostly but could be optional)
i think this is a decent way to illustrate what june is talking abt: ```py
from vapoursynth import core
import vapoursynth as vs
import havsfunc as haf
import adjust
import weighting
interp_fps = int(interp_fps)
out_fps = int(out_fps)
blur_amt = float(blur_amt)
video = core.ffms2.Source(source=video, cache=False)
video = haf.InterFrame(video, GPU=True, NewNum=interp_fps, Preset="medium", tuning="weak", OverrideAlgo=23)
frame_gap = int(video.fps / out_fps)
blended_frames = int(frame_gap * blur_amt)
if blended_frames > 0:
if blended_frames % 2 == 0:
blended_frames += 1
weights = weighting.equal(blended_frames)
video = core.frameblender.FrameBlend(video, weights)
video = haf.ChangeFPS(video, out_fps)
video.set_output()
21 lines of code, vs. smoothie's ~2500
(almost verbatim copy of the temp files blur 1.8 generates)
is there any benefit to using temp files
i wouldnât mind writing the entire thing in python anyway just for consistency
cuz you just pass args vis vspipe
ironically i made the first proto sm in py
Iâm fine with a fork for glorified trial and error config with only 3 editable lines to the end user đ,
blur 1.8 didnt do that so they used a temp file
what was the reason for the rust switch anyway? all the actual video is still done in vapoursynth so itâs just the cli/config parsing in rust, which i doubt is much faster than python
cookers choice
iirc it was because rust was easier to integrate into animas rust vapoursynth thing
đ cookers choice, such a real statement
tbh that doesnt really benefit anyone aside from allowing one to use pure rust for vs
who knows what the benefits wouldve been
i am gonna assume in terms of speed, 0 benefit
You guys all sound like a fun development team to just sit back and listen to for hours.
because its just calling the c dynlib
tldr
switch to rust was pointless
messy code base
weird choices from a devs point of view
was pointful turned out to be pointless
rust is a bit faster for writing your own config parser id assume but thatâs about it, not like python would be too slow for that anyway
No, I get the gist been around long enough to pick up on the present disconnect in ideas and preferences, thus why a fork sounds like ya best solution instead of redoing the original code entirely
unnoticeable difference in this case
we're not even talking about milliseconds here
tbh id rather redo it from scratch than refactor the horrors of smoothie source code
use this chance
thereâs a lot of stuff in there that makes sense to no one but couleur
anyways just use this (or similar) if u care for minimalism
i would rather make it accessible to everyone
making it cli only isnt accessible to everyone in the first place
itâs either figure out the code couleur wrote, and think about how to refactor it
or just start over with a focus on keeping it maintainable and simple
2nd option
windows gives a gui abstraction via sendto
for linux i guess file dialogs could work
you have two options:
write "good" code that follows design patterns
write what works
both with lead to unmaintainable code
if i fork this, i personally will only be making a config file and cli interface, but i WILL code it in a way that allows anyone to make their own interface
dynlib pls
oh wait which language
i mean python is the most logical imo bc vapoursynth is already python
but idm rust either
just use py
As a non coder, even I know how to mess with some python :3 more common language
its english!
i can make a repo rn i suppose
I meant language in terms of rust, python, Java, c#
i think deploying this project to masses should be quick
before i start on it i wanna get the moderation bot base finished up a lil more
but that is almost done
also why is zixus been like that for hours
all things blocking me from making an innosetup installer for smoothie:
- option to include rife models
- option to include ffmpeg
- run some recipe merger code when the installer is ran on a system with smoothie already installed with an installer
- option to include CTTNet
just -h / --help
idk why y'all r shitting on smoothie-rs' source code so bad
please list them
so? that single convention divergence allowed me to seamlessly implement a gui into smoothie
looking forward to it
its just that whatever you're gonna redo from scratch can prob be done in smrs with minimal effort
idk man seems like stuff never gets done with smoothie and when it is, itâs not done very well
also the stuff i want canât be done with smoothie unless you are willing to remove half the features entirely
iâve been talking about how unpolished the terminal output and logging stuff is for a while but itâs never been updated
well look at the bright side, we can use a fork/ lite version to trial and error implementations and features faster that couleur can then apply to regular smoothie, and vice versa, anything that gets added to smoothie-rs can be used as inspo to test more shit on the fork/ lighter version, less trial and error for couleur and easier code to fuck around with for everyone else.
i see it as a net win accross the board
how the terminal is handled is all within these simple 55 lines of code,
the vspipe and ffmpeg command are stored in easy to use objects, feel free to improve upon it
https://github.com/couleur-tweak-tips/smoothie-rs/blob/main/src/render.rs
my roadmap for contributing to this:
- get basic features working
- refine how vspipe pipes into ffmpeg, (atm, i will just use the shell do to the heavy lifting, its cheap but current aim is to make something functional.)
- use smoothie's dependencies atm (i am not sure how packaging will be handled so will just use smrs' existing dependencies)
python poetry for deps prob
thatâs what i use for all projects besides scripts now
deps in the sense:
vspipe
- portable python
@mint escarp I would very much prefer if we reduce the amount of external packages we use unless absolutely needed
okie
play ding when?
it is a thing already no
wym
scoop install smoothie-rs
scoop install anderlli0053_DEV-tools/smoothie
or i can just use this?
where did you get this
Hey, I'd really appreciate someone could make my scoop bucket was included in scoop.sh, and listed before these unmaintained copies of my bucket which have old versions of my software outdated ...
đïžđïž
this will prob be intrusive but its for the best
automatically open up the troubleshooting page for smoothie
@mint goblet smoothie suggestion bc i will be doing this in miscela
đïžđïž
imo proper cli should be smoothie-rs interpolate âalgo 23 âblock-size 8 blend âfps 60 âintensity 1.0
where interpolate and blend are commands and the other args belong to them
producing an error since you didnt specify the interp fps?
idk how feasible this would be for smoothie since thereâs lot of settings, but mine will have less
I assume a pre-interp command would be included
how how i'd programmatically add extra clap arguments
since recipe is only known at runtime
Include recipe and overwrite with the arguments given
maybe, for me it would be --method or smth like that
and itâll just go in the order you provide it
#1177010848288493568 message
june has escaped the matrix....
when will the rest follow...
@mint goblet does ur encoding macros clash with actual ffmpeg args
like say i used a filter to add text to a video that said COPY or something would it replace that with the preset
just dont type in caps
does it try to resolve anything in caps as a macro?
no it'd ignore -c:a copy
stick to conventions:
lowercase for ffmpeg args
uppercase for sm macros
does --override count?
yes but i dont think its the cleanest solution
--ov interpolation;algorithm;23 interpolation;blocksize;8 frame blending;fps;60 frame blending;intensity;60
oh yea not intended much for human use
and if they were commands you could do help interpolate and itll show all the option for that
wat
meant --help
u can use the help flag on subcommands to see their options
with clap
Why not just do smrs -f "{ffmpeg args}" {smoothie args}
what r u offering an alternative to
pls separate words đđ»
âenc-args
smoothie cli is the most anti-cli app iâve ever used
u are torturing us cli mains
đ
the fuck?
nah you are a real hater
enumerate the points that make it a TORTURE to use
mf
mf
i use it ALL the time TFYM
okay so you specify all ur settings like --ov interpolation;algorithm;23 interpolation;blocksize;8 frame blending;fps;60 frame blending;intensity;60
the whole config
no mf i open a config file like any normal user should
see this is what i mean though
if ure that much of a cli elitist how come you're not using vim
oh its a "tui"?
its better than ffmpeg
actually i should check before i say anythign
okay but ffmpeg is infinitely more complex than smoothie
and yes their stuff can get messy but iâm sure itâs not like that for no reason
u know what june
just make ur own wrapper
that parses the recipe and declares argparser args on the fly
and then u use smoothie-rs override in the backend
that is part of the problem
which is how i designed override in mind for
make a wrapper for a wrapper

VapourSynth is technically a framework wrapper for its plugins?
a wrapper for a wrapper for a wrapper
iâm not trying to hate i seriously just think thereâs so many better design decisions for smoothie
like why have âoutput and âoutdir
because --output is for a single output filepath
u have a tui that doesnât tui
and --outdir is if you have multiple input files to put in a specific folder
okay so if the user gives a directory to output it can act as outdir
i couldnt bother making multiple --output, atp just make a loop
if they give a file path it can do that too
for example
âoutput users/june/videos will output everything to that path and keep the original file names
âoutput users/june/videos/cat.mp4 to specify a file output
one specifies a folder
one specis a filepath
and no im not gonna check if the child folder contains a dot that just crappy
you donât have to
thereâs a standard library for a reason
iâm rly just trying to get my point across that if you keep adding new features like the gui before addressing the root problem which is that smoothie is messy it will become so much worse
ie isfile(basename(path))
not super complicated
like you have so many redundant options
or just only treat it as a folder if theres multiple inputs (hehe)
âstrip_audio with an alias of âan
just use ffmpeg args?
u can use this too https://github.com/clap-rs/clap-verbosity-flag
please do and stop bitching about 3 lines of codes T_T
yeah and those lil bits of code that specify the cli structure are making it a pain to use
iâm trying to warn you that if you donât refactor any of this itâs gonna be harder and harder to maintain
âpeek conflicts with âencargs but it still uses encoding args from the config anyway
how does peek encode an image with video encoding arguments
i donât know but i was wondering why the images wouldnât open until i realized that it was using encoding args from the config
just checked yes that is a legitimate bug
imo all these interfaces should be completely decoupled from each other
let me know if you manage to find a way to programmatically append arguments to clap
so that could happen
enum Command {
/// Doc comment
#[command(CMD ATTRIBUTE)]
Variant1(Struct),
/// Doc comment
#[command(CMD ATTRIBUTE)]
Variant2 {
/// Doc comment
#[arg(ARG ATTRIBUTE)]
field: UserType,
}
}
i personally would just have the cli and recipe be their own things
you could have --recipe to specify a recipe but
idk if i would let ppl specify some settings from cli and the rest from their config
what will you do if somone doesnt have a recipe file
then it could fall back to defaults.ini i guess
how do i differentiate t he --fps for interp and --fps for frame blending
im pretty sure it would be accessed differently
liek you would do say cli.interpolate.fps and cli.blend.fps
enum SmoothieCommand {
/// Interpolate the video
#[command()]
Interpolate {
#[arg(long, short)]
fps: i32,
#[arg(long, short)]
algorithm: Algorithm,
#[arg(long, short)]
speed: Speed,
}
/// Frame blend the video
#[command()]
FrameBlend {
#[arg(long, short)]
fps: i32,
#[arg(long, short)]
weighting: Weighting,
#[arg(long, short)]
intensity: f64,
}
}
i do think pure python would be better because then you could import stuff like weightings and use that as a cli value instead of re-making those values in rust
what would do rust out of these
smoothie has no idea of the recipe that's being passed
it just feeds what it parses down to the python script
id say since rustsynth doesnt seem like an option anymore that youre just making it harder for yourself by writing it in rust
i guess you have the benefit of saying its blazingly fast and memory safe but python is abt the same for this use case
use mypy đ
i don't know much about it
how do i know if i need it then
well if you were getting tons of runtime errors with smoothie-py clearly you were not checking stuff properly
what i mean is that rust does not let that happen
and that's a clear bonus
yeah smoothie-py was my first approach at writing python
(no hate but i think you were just writing bad code)
runtime errors are caused by bad code yes!
what im saying is that if you had the type of cli structure i was suggesting, youd need to provide an enum of weightings that the user can choose, right? but since that part is done in python, youd have to remake the enum in rust, and if the script is updated you might forget to update the rust part
if this was all done in python you could just import all the weights from atzurs script and use that as the value
also smoothie already does have quite a bit of runtime errors even though being coded in rust
features < bugs
which are due to it's bad code?
yes ffmpeg not installed, python errors
no but they are still there
what runtime errors exactly was smpy giving you
i doubt its anything that cant be fixed easily
heh
bro was right this whole time
tf
llo
clap supports this
sm -i yipee.mp4 --tn -- and after that i can do whatever lolol it's been separated
so i could use that for mixcela style cli overriding
whatâs tn
tonull
i always use that for testing which is unrelated to encoding so i dont end up with a buncha 0.1s files
smoothie-rs -i input.mp4 -- interp fps=60 speed=med fra f=60 intens=1.5
would that b a cool syntax
yeah expected you to make this exact comment
thats kinda just like a hack instead of fixing the root problem of the cli
which is nono
it shouldn't be a problem if you don't use it
if the implementation affects other usecases then yeah to me it is
id say it is, because in a majority of cases most cli tools follow the same rules
it can be annoying for ppl to have to learn new syntax for stuff
definitely not posix compliant
ffmpeg has a "weird" non standard cli but i think its actually quite reasonable when you consider how complex ffmpeg is
do u know any1 else who uses sm from the cli
i think my original suggestion is the most elegant but i understand that it might be challenging to do overrides
not rly
true now that i look at this i know how that can be parsed
is separating smoothie cli args and miscela style overrides with a -- would be considered "standard"
honestly ive never seen that done before so.. i think no? i have no idea
iirc clap supports this
so that sounds like most feasible to implement
*To specify an argument for a long option, write --name=value. This syntax enables a long option to accept an argument that is itself optional. *
oh i thought you were referring to smoothie-rs -i input.mp4 -- <- this interp fps=60 speed=med fra f=60 intens=1.5
what
wdym by <- this
the -- is put as a separator
i was
what exactly is the separtor for
how can one do so mid VapourSynth
that, good sir, is where my knowledge ends and your journey begins.
mpdecimate is NOT a duplicate frame remover
It is a framerate reducer which removes the least unique frames
so basically it removes duplicates
is this a /j or a /srs
ofc it reduces frame rate you canât just remove frames and somehow stay at the same fps
flowframes uses mpdecimate i think
last i checked it used imagemagick to measure differences
it can do both apparently
error handling!
@hexed vortex do u have a clue whatever means "vost" in libav?
ffmpeg is gaslighting SO HARD
*The term "vost" appearing in your line of text is likely a typographical error or an artifact from a specific software's output. It does not correspond to a known technical term or standard output from popular multimedia libraries or software tools such as FFmpeg or other encoding frameworks.
It's possible that "vost" was mistakenly inserted due to an issue with text encoding or output formatting, particularly in a program or script involved with multimedia processing or encoding. The correct reference in this context should indeed be "libx264" for the H.264 (AVC) encoder library used in FFmpeg.
If you encounter this issue, it may be worth reviewing the context or the tool's documentation to clarify any ambiguities or errors in output messaging.*
holy shit this can be used as a copypasta if "vost" is replaced with something else lmao
e.g.:
The term "AI" appearing in just about every tech product you see is likely a buzz word from the industry, it does not correspond to a known technical term or standard specification from popular large language model manufacturers.
It's possible that "AI" was mistakenly inserted due to it being a buzz-word that attracts attention alike to sticking "it's on the blockchain" or "crypto" to anything in the precedent years. The correct term in this context should indeed be "LLM" (Large language model) with the marketing you get distributed.
If you are confused, it may be worth reviewing what actually are large language models to clarify any ambiguities or disinformation in marketing campaigns.
@ancient pawn im so proud of this 1 LOL
*Large Language Models (LLMs): Large language models like those developed by OpenAI, such as the GPT series (like myself), are specific types of AI systems that are trained on vast amounts of text data to understand and generate human-like language. LLMs are indeed a subset of AI technologies.
Marketing and Terminology: It's common for marketing materials to simplify or use catchphrases to describe complex technologies. While "AI" might be used broadly to encompass a variety of machine learning and deep learning applications, specifying "LLM" could be more accurate in certain contexts, particularly when referring to language-based AI systems like those used in natural language processing and understanding.*
video output stream
i think u should consider using an actual search engine
certain users here are experts on this topic
they can be consulted for advice
anyways do u see any flaw in smootihe progress bar!!
except i also need to add the speed=0.24x somewhere bc its a useful metric
the numbers mason what do they mean
also maybe dont default to unicode symbols
green: frame rendered
first blue: time elapsed
second blue: time remaining
orang??
ahh yes of course smoothie has rendered 1680 apples out of 3080 oranges âŒïž
Frames Rendered: someNumber out of someOtherMoreDifferentNumber
Time Elapsed: hours:minutes:seconds
Time Remaining (estimate): hours:minutes:seconds
Current Framerate: someNumber FPS
making it multiline would prolly help
or instead:
Completed: someNumber%
Time Elapsed: hours:minutes:seconds
Time Remaining (estimate): hours:minutes:seconds
Current Framerate: someNumber FPS
looks cleaner
how do you remove the "hotbar"
or 1680/3080 frames (00:10) - ETA: 00:09 - 161 FPS (0.24x speed)
i think the speed/fps bit is a little confusing but im not sure what to do about it without excessive verbosity
what is that (00:10)
honestly no idea
same as in ur pic
i think the best way to do this would be to use #ââ polls and use like 4 different designs people can vote on
and use ascii coloring like this
[2;34m[interpolation][0m
enabled[2;35m:[0m [2;36myes[0m
masking[2;35m:[0m [2;36mno[0m
fps[2;35m:[0m [2;36m1920[0m
speed[2;35m:[0m [2;36mmedium[0m
tuning[2;35m:[0m [2;36mweak[0m
algorithm[2;35m:[0m [2;36m23[0m
block size[2;35m:[0m [2;36mauto[0m
[2;34m[frame blending][0m
enabled[2;35m:[0m [2;36myes[0m
fps[2;35m:[0m [2;36m60[0m
intensity[2;35m:[0m [2;36m1.0[0m
weighting[2;35m:[0m [2;36mequal[0m
bright blend[2;35m:[0m [2;36mno[0m
it'd be appropriate in that case
âââââââââââžâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 9.09% âą 280/3080 âą 00:05 > 00:57 âą 53 FPS
here it is if you wanna mess w it
thanks!
[2;34mCompleted[0m: [1;2m9.09%[0m
[2;34mTime Elapsed[0m: [1;2m00:00:05 (hh:mm:ss)[0m
[2;34mTime Remaining [0m[2;31m(estimate)[0m: [1;2m00:00:57 (hh:mm:ss)[0m
[2;33m[2;34mCurrent Framerate[0m[2;33m[0m: [1;2m53 FPS[0m[2;36m
[2;35mââââââââââ[0m[2;36m[2;35mâž[0m[2;36m[2;30m[0m[2;36m[2;30mâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ[0m[2;36m
[0m
[2;36m[2;31mâââââââââââž[0m[2;36m[2;35m[0m[2;36m[2;30m[0m[2;36m[2;30mâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ[0m[2;36m [0m [2;35m9.09%[0m [1;2mâą[0m [2;32m280/3080[0m [1;2mâą[0m [2;34m00:05[0m [1;2m>[0m [2;34m00:57[0m [1;2mâą[0m [2;31m53 FPS[0m
1 is easier for most ppl, though I like how 2 is alot cleaner
i could make a dedicated mask path parsing function
that uses path.join and strips quotes
honestly you should just always resolve absolute paths for everything that is a path
@gentle basin where would non portable smoothie be located at
properly converting to raw pointer
also updated smgui widget because it was deprecated
basically just did what the compiler asked me to
how was it not properly converted before
idk how allat works lol
Easily build your rust project and codebase for Windows, Mac, Linux and other target architectures using GitHub Actions
i personaoly ahve experience with cross
can share you my workflow file
oh the articlwe mentionms it
hold up id onmt get it
is it mergef or not
/opt
what is\
the crate supdate
I'll look into why z1xus's patches break on Linux, ty for reminding.
oh so actually i hate linux so i made it so that it force quits on any archg install
is the workflow log still up
i could look into it rq
in his smrs?
oh the action is only for windows
couler should i make a workflow to cross compile w/ cross
yes i infiltrated his repository with malicious arch hater virus
link the line LOL
ye also make am m1 silicon for spritzer lol
add to releases n artifacts
spritzer?
Der âSpritzerâ ist einer der beliebtesten Drinks Ăsterreichs. Es handelt sich dabei um eine 1:1 Mischung aus Sodawasser und trokenem Weisswein. Vor allem im Sommer viel bestellt und getrunken, hat der Spritzer spĂ€testens durch den ehem. Wiener BĂŒrgermeister Michi HĂ€upl einen unangefochtenen Kultstatus erreicht.
m1 user
- run: cache rust stuffs
- uses: Swatinem/rust-cache@v2
also toss that in there to speed up
didnt know that exist
am kiddingo
u also suspicious of random vsc ext
looks legit enough
coule
should i also incorporate upx in thjere
smaller binaries
antivirus flags
ohhh it was a thng lol
so the vsgundler dlls are already upx'd r9ght
it takes time to decompress each tine u load vs plugins
not worth it
i think ima actually dont use cross
đïž
what nle u using
editor?
ye ide
why
leaking memory always
yup just did that
windows crate 0.58.0 is the version that broke smrs on linux, ill look into this
what is get
damn .60 is out
A value that is known not to equal zero.
so basically into allows it to be zero and compiler doesnt like it