Architecture of FFVCL
Architecture
- Add-ons are used for input and/or output of FFEncoder, FFPlayer, FFDecoder.
- FFEncoder provides audio/video formats transcoding: intput -> decoding(decompression) -> encoding(compression) -> output.
- FFPlayer plays audio and video files.
- FFDecoder provides media file information and decoding video frames or audio samples.
- FFLogger catchs the log generated by (Add-ons, FFEncoder, FFPlayer, FFDecoder and FFmpeg libraries).
- FFLoader provides loading DLLs in run-time dynamic linking.
- DLLs includes FFmpeg libraries, SDL library, SoundTouch library, and libmfx library.
Add-ons
- MemoryAccessAdapter provides memory access for intput and output (open, read/write, seek, close).
- FrameInputAdapter provides directly video frames input (Bitmap canvas, Bitmap data, Bitmap DeviceContext, YUV).
- FrameOutputAdapter provides directly video frames output (RGB, MJPEG, H.263, H.264, YUV).
- PacketInputAdapter provides directly video packets input (H.263, H.264, MJPEG, M4V, MPEGVideo, VC1).
- WaveInputAdapter provides directly PCM wave data input.
- WaveOutputAdapter provides directly PCM wave data output.
- GDICapture provides screen capturing for video input and wave recording for audio input.
- DShowCapture(built in ffmpeg libraries) provides webcam capturing for video input and wave recording for audio input.
- Please refer the demos for more information.
FFEncoder
- FFEncoder is powerful and a little complex, please refer to the encoder document and demos.
- DLLs needed: AVCodec, AVDevice, AVFilter, AVFormat, AVUtil, SwResample, SwScale and libmfx(optional).
FFPlayer
- FFPlayer is easy to use and still not powerful enough, please refer to the demo application.
- DLLs needed: AVCodec, AVDevice, AVFilter, AVFormat, AVUtil, SwResample, SwScale, SDL and SoundTouch(optional).
FFDecoder
- FFDecoder is easy to use, please refer to the demo application.
- DLLs needed: AVCodec, AVFilter, AVFormat, AVUtil, SwResample, SwScale.
FFLogger
- FFLogger is an assistant component, it will be automatically created as a global instance when necessary, and only one instance is allowed.
FFLoader
- FFLoader is an assistant class, it will be automatically created as a global instance at startup. Please forget it.
FFmpeg Libraries
- FFmpeg libraries with GPL/LGPL: AVCodec, AVDevice, AVFilter, AVFormat, AVUtil, SwResample, SwScale.
- AVCodec provides decoders and encoders of audio/video stream.
- AVDevice provides VFW capturing and DirectShow capturing.
- AVFilter provides video filter for special effects.
- AVFormat provides demuxers and muxers of containers.
- AVUtil provides common utilities.
- SwResample provides audio resampling.
- SwScale provides video frames resampling.
SDL Library
- SDL provides audio playback and video rendering.
SoundTouch Library
- SoundTouch provides resampling audio for changing tempo(speed).
libmfx Library
- libmfx provides Intel QSV dispatcher.