#include <stdio.h>#include <fcntl.h>#include <unistd.h>#include <stdlib.h>#include <string.h>#include <errno.h>#include <time.h>#include "avilib.h"#include "defs.h"
Go to the source code of this file.
| Defines | |
| #define | AVIF_COPYRIGHTED 0x00020000 | 
| #define | AVIF_COPYRIGHTED 0x00020000 | 
| #define | AVIF_HASINDEX 0x00000010 /* Index at end of file */ | 
| #define | AVIF_HASINDEX 0x00000010 /* Index at end of file */ | 
| #define | AVIF_ISINTERLEAVED 0x00000100 | 
| #define | AVIF_ISINTERLEAVED 0x00000100 | 
| #define | AVIF_MUSTUSEINDEX 0x00000020 | 
| #define | AVIF_MUSTUSEINDEX 0x00000020 | 
| #define | AVIF_TRUSTCKTYPE 0x00000800 /* Use CKType to find key frames */ | 
| #define | AVIF_TRUSTCKTYPE 0x00000800 /* Use CKType to find key frames */ | 
| #define | AVIF_WASCAPTUREFILE 0x00010000 | 
| #define | AVIF_WASCAPTUREFILE 0x00010000 | 
| #define | ERR_EXIT(x) | 
| #define | HEADERBYTES 2048 | 
| #define | INFO_LIST | 
| #define | MAX_INFO_STRLEN 64 | 
| #define | OUT4CC(s) if(nhb<=HEADERBYTES-4) memcpy(AVI_header+nhb,s,4); nhb += 4 | 
| #define | OUTCHR(n) | 
| #define | OUTLONG(n) if(nhb<=HEADERBYTES-4) long2str(AVI_header+nhb,n); nhb += 4 | 
| #define | OUTMEM(d, s) | 
| #define | OUTSHRT(n) | 
| #define | PACKAGE "guvcview" | 
| #define | PAD_EVEN(x) ( ((x)+1) & ~1 ) | 
| #define | S_IRGRP 00040 /* read permission: group */ | 
| #define | S_IROTH 00004 /* read permission: other */ | 
| #define | S_IRUSR 00400 /* read permission: owner */ | 
| #define | S_IRWXG 00070 /* read, write, execute: group */ | 
| #define | S_IRWXO 00007 /* read, write, execute: other */ | 
| #define | S_IRWXU 00700 /* read, write, execute: owner */ | 
| #define | S_IWGRP 00020 /* write permission: group */ | 
| #define | S_IWOTH 00002 /* write permission: other */ | 
| #define | S_IWUSR 00200 /* write permission: owner */ | 
| #define | S_IXGRP 00010 /* execute permission: group */ | 
| #define | S_IXOTH 00001 /* execute permission: other */ | 
| #define | S_IXUSR 00100 /* execute permission: owner */ | 
| #define | VERSION "0.9" | 
| Functions | |
| static int | avi_add_chunk (struct avi_t *AVI, BYTE *tag, BYTE *data, int length) | 
| static int | avi_add_index_entry (struct avi_t *AVI, BYTE *tag, long flags, long pos, long len) | 
| int | AVI_append_audio (struct avi_t *AVI, BYTE *data, long bytes) | 
| ULONG | AVI_bytes_remain (struct avi_t *AVI) | 
| ULONG | AVI_bytes_written (struct avi_t *AVI) | 
| int | AVI_close (struct avi_t *AVI) | 
| static int | avi_close_output_file (struct avi_t *AVI) | 
| int | AVI_dup_frame (struct avi_t *AVI) | 
| int | AVI_getErrno () | 
| int | AVI_open_output_file (struct avi_t *AVI, const char *filename) | 
| void | AVI_print_error (char *str) | 
| static int | avi_sampsize (struct avi_t *AVI, int j) | 
| void | AVI_set_audio (struct avi_t *AVI, int channels, long rate, int mpgrate, int bits, int format) | 
| int | AVI_set_audio_track (struct avi_t *AVI, int track) | 
| void | AVI_set_audio_vbr (struct avi_t *AVI, long is_vbr) | 
| ULONG | AVI_set_MAX_LEN (ULONG len) | 
| void | AVI_set_video (struct avi_t *AVI, int width, int height, double fps, char *compressor) | 
| char * | AVI_strerror () | 
| static int | avi_update_header (struct avi_t *AVI) | 
| static ssize_t | avi_write (int fd, BYTE *buf, size_t len) | 
| int | AVI_write_audio (struct avi_t *AVI, BYTE *data, long bytes) | 
| static int | avi_write_data (struct avi_t *AVI, BYTE *data, long length, int audio, int keyframe) | 
| int | AVI_write_frame (struct avi_t *AVI, BYTE *data, long bytes, int keyframe) | 
| static void | long2str (unsigned char *dst, int n) | 
| static unsigned long | str2ulong (BYTE *str) | 
| Variables | |
| long | AVI_errno = 0 | 
| char * | avi_errors [] | 
| ULONG | AVI_MAX_LEN = AVI_MAX_SIZE | 
| static char | error_string [4096] | 
| static char | id_str [MAX_INFO_STRLEN] | 
| static int | num_avi_errors = sizeof(avi_errors)/sizeof(char*) | 
| #define AVIF_COPYRIGHTED 0x00020000 | 
| #define AVIF_COPYRIGHTED 0x00020000 | 
| #define AVIF_HASINDEX 0x00000010 /* Index at end of file */ | 
| #define AVIF_HASINDEX 0x00000010 /* Index at end of file */ | 
| #define AVIF_ISINTERLEAVED 0x00000100 | 
| #define AVIF_ISINTERLEAVED 0x00000100 | 
| #define AVIF_MUSTUSEINDEX 0x00000020 | 
| #define AVIF_MUSTUSEINDEX 0x00000020 | 
| #define AVIF_TRUSTCKTYPE 0x00000800 /* Use CKType to find key frames */ | 
| #define AVIF_TRUSTCKTYPE 0x00000800 /* Use CKType to find key frames */ | 
| #define AVIF_WASCAPTUREFILE 0x00010000 | 
| #define AVIF_WASCAPTUREFILE 0x00010000 | 
| #define HEADERBYTES 2048 | 
| #define MAX_INFO_STRLEN 64 | 
| #define OUT4CC | ( | s | ) | if(nhb<=HEADERBYTES-4) memcpy(AVI_header+nhb,s,4); nhb += 4 | 
| #define OUTCHR | ( | n | ) | 
if(nhb<=HEADERBYTES-1) { \ AVI_header[nhb ] = (n )&0xff; \ } \ nhb += 1
| #define OUTLONG | ( | n | ) | if(nhb<=HEADERBYTES-4) long2str(AVI_header+nhb,n); nhb += 4 | 
{ \
     unsigned int s_ = (s); \
     if(nhb <= HEADERBYTES-s_) \
        memcpy(AVI_header+nhb, (d), s_); \
     nhb += s_; \
   }
| #define OUTSHRT | ( | n | ) | 
if(nhb<=HEADERBYTES-2) { \ AVI_header[nhb ] = (n )&0xff; \ AVI_header[nhb+1] = (n>>8)&0xff; \ } \ nhb += 2
| static int avi_add_chunk | ( | struct avi_t * | AVI, | 
| BYTE * | tag, | ||
| BYTE * | data, | ||
| int | length | ||
| ) |  [static] | 
| static int avi_add_index_entry | ( | struct avi_t * | AVI, | 
| BYTE * | tag, | ||
| long | flags, | ||
| long | pos, | ||
| long | len | ||
| ) |  [static] | 
| int AVI_append_audio | ( | struct avi_t * | AVI, | 
| BYTE * | data, | ||
| long | bytes | ||
| ) | 
| ULONG AVI_bytes_remain | ( | struct avi_t * | AVI | ) | 
| ULONG AVI_bytes_written | ( | struct avi_t * | AVI | ) | 
| static int avi_close_output_file | ( | struct avi_t * | AVI | ) |  [static] | 
| int AVI_dup_frame | ( | struct avi_t * | AVI | ) | 
| int AVI_getErrno | ( | ) | 
| int AVI_open_output_file | ( | struct avi_t * | AVI, | 
| const char * | filename | ||
| ) | 
| void AVI_print_error | ( | char * | str | ) | 
| static int avi_sampsize | ( | struct avi_t * | AVI, | 
| int | j | ||
| ) |  [static] | 
| void AVI_set_audio | ( | struct avi_t * | AVI, | 
| int | channels, | ||
| long | rate, | ||
| int | mpgrate, | ||
| int | bits, | ||
| int | format | ||
| ) | 
| int AVI_set_audio_track | ( | struct avi_t * | AVI, | 
| int | track | ||
| ) | 
| void AVI_set_audio_vbr | ( | struct avi_t * | AVI, | 
| long | is_vbr | ||
| ) | 
| ULONG AVI_set_MAX_LEN | ( | ULONG | len | ) | 
| void AVI_set_video | ( | struct avi_t * | AVI, | 
| int | width, | ||
| int | height, | ||
| double | fps, | ||
| char * | compressor | ||
| ) | 
| char* AVI_strerror | ( | ) | 
| static int avi_update_header | ( | struct avi_t * | AVI | ) |  [static] | 
| int AVI_write_audio | ( | struct avi_t * | AVI, | 
| BYTE * | data, | ||
| long | bytes | ||
| ) | 
| static int avi_write_data | ( | struct avi_t * | AVI, | 
| BYTE * | data, | ||
| long | length, | ||
| int | audio, | ||
| int | keyframe | ||
| ) |  [static] | 
| int AVI_write_frame | ( | struct avi_t * | AVI, | 
| BYTE * | data, | ||
| long | bytes, | ||
| int | keyframe | ||
| ) | 
| static void long2str | ( | unsigned char * | dst, | 
| int | n | ||
| ) |  [static] | 
| char* avi_errors[] | 
{
   "avilib - No Error",
   "avilib - AVI file size limit reached",
   "avilib - Error opening AVI file",
   "avilib - Error reading from AVI file",
   "avilib - Error writing to AVI file",
   "avilib - Error writing index (file may still be useable)",
   "avilib - Error closing AVI file",
   "avilib - Operation (read/write) not permitted",
   "avilib - Out of memory (malloc failed)",
   "avilib - Not an AVI file",
   "avilib - AVI file has no header list (corrupted?)",
   "avilib - AVI file has no MOVI list (corrupted?)",
   "avilib - AVI file has no video data",
   "avilib - operation needs an index",
   "avilib - Unkown Error"
}
| char error_string[4096]  [static] | 
| char id_str[MAX_INFO_STRLEN]  [static] | 
| int num_avi_errors = sizeof(avi_errors)/sizeof(char*)  [static] |