lqt_codecinfo.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef _LQT_CODEC_INFO_H_
00033 #define _LQT_CODEC_INFO_H_
00034
00035 #pragma GCC visibility push(default)
00036
00037 #include <inttypes.h>
00038
00039
00040
00041 #ifdef __cplusplus
00042 extern "C" {
00043 #endif
00044
00078 typedef enum
00079 {
00080 LQT_PARAMETER_INT,
00081 LQT_PARAMETER_FLOAT,
00082 LQT_PARAMETER_STRING,
00083 LQT_PARAMETER_STRINGLIST,
00084
00085 LQT_PARAMETER_SECTION,
00086 } lqt_parameter_type_t;
00087
00094 typedef union
00095 {
00096 int val_int;
00097 char * val_string;
00098 float val_float;
00099 } lqt_parameter_value_t;
00100
00108 typedef struct
00109 {
00110 char * name;
00112 char * real_name;
00114 lqt_parameter_type_t type;
00116 lqt_parameter_value_t val_default;
00118
00119
00120
00121
00122
00123 lqt_parameter_value_t val_min;
00124 lqt_parameter_value_t val_max;
00126 int num_digits;
00128
00129
00130
00131
00132 int num_stringlist_options;
00133 char ** stringlist_options;
00134 char ** stringlist_labels;
00136 char * help_string;
00138 } lqt_parameter_info_t;
00139
00144 typedef enum
00145 {
00146 LQT_CODEC_AUDIO,
00147 LQT_CODEC_VIDEO
00148 } lqt_codec_type;
00149
00154 typedef enum
00155 {
00156 LQT_DIRECTION_ENCODE,
00157 LQT_DIRECTION_DECODE,
00158 LQT_DIRECTION_BOTH
00159 } lqt_codec_direction;
00160
00165 #define LQT_CODEC_OBSOLETE (1<<24)
00166
00171 typedef struct lqt_codec_info_s
00172 {
00173 int compatibility_flags;
00175
00176
00177 char * name;
00178 char * long_name;
00179 char * description;
00181 lqt_codec_type type;
00182 lqt_codec_direction direction;
00184 int num_fourccs;
00185 char ** fourccs;
00187 int num_wav_ids;
00188 int * wav_ids;
00191 int num_encoding_parameters;
00192 lqt_parameter_info_t * encoding_parameters;
00194 int num_decoding_parameters;
00195 lqt_parameter_info_t * decoding_parameters;
00197
00198
00199 char * module_filename;
00200 int module_index;
00202 uint32_t file_time;
00204 char * gettext_domain;
00205 char * gettext_directory;
00207 int num_encoding_colormodels;
00208 int * encoding_colormodels;
00210 struct lqt_codec_info_s * next;
00211 } lqt_codec_info_t;
00212
00213
00214
00215
00223 void lqt_registry_init();
00224
00233 void lqt_registry_destroy();
00234
00235
00236
00237
00238
00239
00240
00241 void lqt_registry_write();
00242
00243
00244
00245
00246
00247
00248
00249
00257 int lqt_get_num_audio_codecs();
00258
00266 int lqt_get_num_video_codecs();
00267
00276 const lqt_codec_info_t * lqt_get_audio_codec_info(int index);
00277
00286 const lqt_codec_info_t * lqt_get_video_codec_info(int index);
00287
00288
00289
00290
00291
00292
00293
00294
00307 lqt_codec_info_t ** lqt_query_registry(int audio, int video,
00308 int encode, int decode);
00309
00320 lqt_codec_info_t ** lqt_find_audio_codec(char * fourcc, int encode);
00321
00332 lqt_codec_info_t ** lqt_find_audio_codec_by_wav_id(int wav_id, int encode);
00333
00344 lqt_codec_info_t ** lqt_find_video_codec(char * fourcc, int encode);
00345
00346
00347
00348
00349
00350
00360 lqt_codec_info_t ** lqt_find_audio_codec_by_name(const char * name);
00361
00371 lqt_codec_info_t ** lqt_find_video_codec_by_name(const char * name);
00372
00383 lqt_codec_info_t ** lqt_audio_codec_from_file(quicktime_t * file, int track);
00384
00395 lqt_codec_info_t ** lqt_video_codec_from_file(quicktime_t * file, int track);
00396
00405 void lqt_destroy_codec_info(lqt_codec_info_t ** info);
00406
00418 void lqt_reorder_audio_codecs(lqt_codec_info_t ** codec_info);
00419
00431 void lqt_reorder_video_codecs(lqt_codec_info_t ** codec_info);
00432
00446 void lqt_set_default_parameter(lqt_codec_type type, int encode,
00447 const char * codec_name,
00448 const char * parameter_name,
00449 lqt_parameter_value_t * val);
00450
00461 void lqt_restore_default_parameters(lqt_codec_info_t * codec_info,
00462 int encode, int decode);
00463
00464
00473 void lqt_dump_codec_info(const lqt_codec_info_t * info);
00474
00475 #ifdef __cplusplus
00476 }
00477 #endif
00478
00479 #pragma GCC visibility pop
00480
00481 #endif