Views
Documentation of the various IO APIs:
GStreamer
GStreamer uses a plugin system and is divided into 5 plugin modules:
- base: basis video/audio function (like colorspace conversion, video4linux, ...), see http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-plugins/html/
- good: well-maintained plugins which everyone can distribute without fear of potential legal issues, see http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-good-plugins/html/
- ugly: well-maintained plugins which may have legal issues of some form (like e.g. mp3 encoding ...), see http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-ugly-plugins/html/
- bad: an incubation area where new plugins mature before moving to good or ugly, see http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-plugins/html/
- ffmpeg: link to the ffmpeg lib, see http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-ffmpeg-plugins/html/
Some worth reading resources:
- small introduction: http://www-128.ibm.com/developerworks/aix/library/au-gstreamer.html?ca=dgr-lnxw07GStreamer
- features: http://gstreamer.freedesktop.org/documentation/gstreamer010.html
- gsteamer application development manual: http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/index.html
- overview of all plugins: http://gstreamer.freedesktop.org/documentation/plugins.html
FFmpeg
Supported formats
Access
Reading: Good documentation at: http://www.inb.uni-luebeck.de/~boehme/using_libavcodec.html
Quicktime4Linux
Supported Formats
Access
Reading:
-quicktime_check_sig("path");
Checks if it is a Quicktime-movie
-file = quicktime_open("test.mov", 1, 0));
Opens the file; 2nd argumet for read acces, 3rd for write access
-int quicktime_supported_video(quicktime_t *file, int track);
Checks if the data of the track can be decoded
-void quicktime_set_cmodel(quicktime_t *file, int colormodel);
Sets colormodel before decoding (default is BC_RGB888)
-long quicktime_decode_video(quicktime_t file, unsigned char *row_pointers, int track);
Decodes the video frame into a buffer (**row_pointers) and advances the current position.
-int quicktime_set_video_position(quicktime_t *file, long frame, int track);
Sets the position of the video track
-int quicktime_seek_end(quicktime_t *file);
Seeks all track to their end
-int quicktime_seek_start(quicktime_t *file);
Seeks all track to their start
-quicktime_close(quicktime_t *file);
Closes the file
Writing:
-quicktime_set_video(quicktime_t file, int tracks, int frame_w, int frame_h, float frame_rate, char compressor);
Sets up tracks to write to at an opened file; for the librarys build-in compressor you can specify a compressor #define from quicktime.h as this argument.
-int quicktime_supported_video(quicktime_t *file, int track);
After setting up tracks you should check if the codec of the track is in the library
-int quicktime_writes_cmodel(quicktime_t *file, int colormodel, int track);
Checks if it the colormodel requires downsampling
-quicktime_set_cmodel(quicktime_t *file, int colormodel);
If the colormodel doesn't require downsampling you can call this to set the colormodel of the framebuffer ???
-int quicktime_encode_video(quicktime_t file, unsigned char *row_pointers, int track);
Encodes the frame pointed to by **row_pointers, writes it down at the current position of the track and advances the current position; returns 0 for failure and 1 for success
libAVIfile
Supported formats
QuickTime
Supported formats
DirectShow
Supported formats
Access
Video 4 Linux 2