Commit graph

17 commits

Author SHA1 Message Date
Eidolon
98ce714614 hwr2: integrate avrecorder with RHI and legacy GL 2023-02-27 19:49:45 -06:00
James R
cea8a10007 media: fix incorrect usage of SRB2_ASSERT on functions with side effects 2023-02-24 19:21:01 -08:00
James R
bf8d90af8c Don't use C++20 designated initializer (since we target C++17)
growl
2023-02-24 19:21:01 -08:00
James R
aefc12e40e media/options: refactor cvar factory completely, ensure correct MIN/MAX order 2023-02-24 19:21:01 -08:00
James R
02fe7ec744 media: fix undefined behavior with options initialization order
Cvar vector was not guaranteed to initialize before
options for each encoder, potentially leading to no
encoder cvars being registered.
2023-02-24 19:21:01 -08:00
James R
860693936f media/avrecorder: bias size limit by 1% to account for muxing overhead 2023-02-24 19:21:01 -08:00
James R
304e57cbf0 Add user feedback for AVRecorder
- real time monitoring of duration and esimated file size
- estimated frame rate of final video (encoder speed)
- print brief details of audio and video tracks upon
  starting recording
- print exact file size and duration once recording is
  finished
2023-02-24 19:21:01 -08:00
James R
840c11577e Implement Software mode paletted screen conversion for AVRecorder
This is only necessary since HWR2's framebuffer is window
size (monitor resolution in fullscreen mode).

Once the framebuffer is changed to be native game
resolution, this commit should be reverted and a new
interface should be implemented to directly copy the
framebuffer's pixels into video frames.
2023-02-24 19:21:01 -08:00
James R
c65f4ff893 Add AVRecorder movie mode 2023-02-24 19:21:01 -08:00
James R
82251f6fb6 media: add core AVRecorder
Generic interface to audio and video encoders.
2023-02-24 19:21:00 -08:00
James R
654f97fa72 media: add WebM Vorbis and VP8 encoders 2023-02-24 19:21:00 -08:00
James R
60899133c1 media: add libwebm container 2023-02-24 19:21:00 -08:00
James R
b8015b4ad2 media: add libvpx VP8 encoder 2023-02-24 19:21:00 -08:00
James R
1415254131 media: add YUV420p module
Converts RGBA image to YUV420p, useful for most video
codecs.
2023-02-24 19:21:00 -08:00
James R
650264ea86 media: add libvorbis encoder 2023-02-24 19:21:00 -08:00
James R
e9f5a75d4a media: add "options" cvar abstraction 2023-02-24 19:21:00 -08:00
James R
3b5245f974 Add basic multimedia container and encoder interfaces
Adds the media subdirectory.
2023-02-24 19:21:00 -08:00