/* 
 * target codecs for ffmpeg
 */

#ifndef __CODECS_H__
#define __CODECS_H__

#ifdef HAVE_CONFIG_H
# include <config.h>
#endif

/* 
 * codecs used by xvidcap 
 */
enum tCodecIDs {
    CODEC_NONE,
#ifdef USE_FFMPEG
    CODEC_PGM,
    CODEC_PPM,
    CODEC_PNG,
    CODEC_JPEG,
    CODEC_MPEG1,
    CODEC_MJPEG,
    CODEC_MPEG4,
    CODEC_MSDIV2,
    CODEC_MSDIV3,
    CODEC_FLV,
    CODEC_DV,
    CODEC_MPEG2,
    CODEC_SVQ1,
#endif                          // USE_FFMPEG
    NUMCODECS
};
#ifdef USE_FFMPEG
#define CODEC_MF CODEC_MPEG1
#endif                          // USE_FFMPEG

typedef struct _xvCodec {
    char *name;
    char *longname;
    int id;
    int ffmpeg_id;
    int def_br;
    int def_fps;
    char *allowed_fps_ranges;
    char *allowed_fps;
} xvCodec;

/* 
 * audio codecs
 */
enum tAuCodecIDs {
    AU_CODEC_NONE,
#ifdef HAVE_FFMPEG_AUDIO
    AU_CODEC_MP2,
#ifdef HAVE_LIBMP3LAME
    AU_CODEC_MP3,
#endif                          // HAVE_LIBMP3LAME
    AU_CODEC_PCM16,
#endif                          // HAVE_FFMPEG_AUDIO
    NUMAUCODECS
};

typedef struct _xvAuCodec {
    char *name;
    char *longname;
    int id;
    int ffmpeg_id;
} xvAuCodec;

/* 
 * file formats
 */
/* 
 * capture output formats
 *
 */
enum tcap_formats {
    CAP_NONE,
    CAP_XWD,
#ifdef USE_FFMPEG
    CAP_PGM,
    CAP_PPM,
    CAP_PNG,
    CAP_JPG,
    CAP_AVI,
    CAP_DIVX,
    CAP_ASF,
    CAP_FLV,
    CAP_SWF,
    CAP_DV,
    CAP_MPG,
    CAP_SVCD,
    CAP_MOV,
#endif                          // USE_FFMPEG
    NUMCAPS
};

#ifdef USE_FFMPEG
#define CAP_FFM CAP_PGM
#define CAP_MF CAP_AVI
#endif                          // USE_FFMPEG



typedef struct _xvFFormat {
    char *name;
    char *longname;
    char *ffmpeg_name;
    char *extensions;
    int def_vid_codec;
    char *allowed_vid_codecs;
    int def_au_codec;
    char *allowed_au_codecs;
    // int (*init) (void);
} xvFFormat;



void xvc_codecs_init();
int xvc_trans_codec(int);
int xvc_is_element(char *xvList, char *xvElement);
char *xvc_next_element(char *list);
int xvc_codec_get_target_from_filename(char *file);
int xvc_codec_is_valid_fps(int fps, int codec);
int xvc_num_elements(char *list);


#endif                          // __CODECS_H__


syntax highlighted by Code2HTML, v. 0.9.1