snes9x/win32/AVIOutput.h

50 lines
1.7 KiB
C

/*****************************************************************************\
Snes9x - Portable Super Nintendo Entertainment System (TM) emulator.
This file is licensed under the Snes9x License.
For further information, consult the LICENSE file in the root directory.
\*****************************************************************************/
/*
Win32 AVI Output module
(c) 2004 blip
*/
#ifndef __AVIOUTPUT_H_
#define __AVIOUTPUT_H_
#ifdef __cplusplus
extern "C" {
#endif
// create a new avi output object
void AVICreate(struct AVIFile** avi_out);
// set up avi output options
void AVISetFramerate(const int fps, const int frameskip, struct AVIFile* avi_out);
void AVISetVideoFormat(const BITMAPINFOHEADER* bitmap_format, struct AVIFile* avi_out);
void AVISetSoundFormat(const WAVEFORMATEX* wave_format, struct AVIFile* avi_out);
// after setting up output options, start writing with this
// returns 1 if successful, 0 otherwise
// check the return value!
int AVIBegin(const TCHAR* filename, struct AVIFile* avi_out);
// get the format in use from an already existing avi output object
// returns 1 if successful, 0 otherwise
int AVIGetVideoFormat(const struct AVIFile* avi_out, const BITMAPINFOHEADER** ppFormat);
int AVIGetSoundFormat(const struct AVIFile* avi_out, const WAVEFORMATEX** ppFormat);
// write video frames and sound samples to an avi output object
// that's been successfully Begun()
void AVIAddVideoFrame(void* bitmap_data, struct AVIFile* avi_out);
void AVIAddSoundSamples(void* sound_data, const int num_samples, struct AVIFile* avi_out);
// when done writing, close and delete the object with this
void AVIClose(struct AVIFile** avi_out);
#ifdef __cplusplus
}
#endif
#endif /* __AVIOUTPUT_H_ */