libquicktime
lqt_codecinfo.h
1 /*******************************************************************************
2  lqt_codecinfo.h
3 
4  libquicktime - A library for reading and writing quicktime/avi/mp4 files.
5  http://libquicktime.sourceforge.net
6 
7  Copyright (C) 2002 Heroine Virtual Ltd.
8  Copyright (C) 2002-2011 Members of the libquicktime project.
9 
10  This library is free software; you can redistribute it and/or modify it under
11  the terms of the GNU Lesser General Public License as published by the Free
12  Software Foundation; either version 2.1 of the License, or (at your option)
13  any later version.
14 
15  This library is distributed in the hope that it will be useful, but WITHOUT
16  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17  FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
18  details.
19 
20  You should have received a copy of the GNU Lesser General Public License along
21  with this library; if not, write to the Free Software Foundation, Inc., 51
22  Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23 *******************************************************************************/
24 
25 /*
26  * Codec info structure for libquicktime
27  * (first approximation)
28  */
29 
30 /* Type of a codec parameter */
31 
32 #ifndef _LQT_CODEC_INFO_H_
33 #define _LQT_CODEC_INFO_H_
34 
35 #ifdef __GNUC__
36 #pragma GCC visibility push(default)
37 #endif
38 
39 #include <inttypes.h>
40 
41 
42 
43 #ifdef __cplusplus
44 extern "C" {
45 #endif /* __cplusplus */
46 
80 typedef enum
81  {
86  /* This dummy type is used to separate sections (real_name will be on tab-label) */
89 
96 typedef union
97  {
98  int val_int;
99  char * val_string;
100  float val_float;
102 
110 typedef struct
111  {
112  char * name;
114  char * real_name;
120  /*
121  * Minimum and maximum values:
122  * These are only valid for numeric types and if val_min < val_max
123  */
124 
130  /*
131  * Possible options (only valid for LQT_STRINGLIST)
132  */
133 
138  char * help_string;
141 
146 typedef enum
147  {
148  LQT_CODEC_AUDIO,
149  LQT_CODEC_VIDEO
150  } lqt_codec_type;
151 
156 typedef enum
157  {
158  LQT_DIRECTION_ENCODE,
159  LQT_DIRECTION_DECODE,
160  LQT_DIRECTION_BOTH
162 
172 typedef struct
173  {
174  int width;
175  int height;
177 
178 
183 #define LQT_CODEC_OBSOLETE (1<<24)
184 
190  {
193  /* These are set by the plugins */
194 
195  char * name;
196  char * long_name;
197  char * description;
203  char ** fourccs;
206  int * wav_ids;
215  /* The following members are set by libquicktime */
216 
220  uint32_t file_time;
222  char * gettext_domain;
232  lqt_compression_id_t compression_id;
235  };
236 
237 
238 /* Global Entry points */
239 
247 void lqt_registry_init();
248 
257 void lqt_registry_destroy();
258 
259 /* \ingroup codec_registry
260  *
261  * Save the registry file $HOME/.libquicktime_codecs.
262  * Under normal circumstances, you never need to call this function
263  */
264 
265 void lqt_registry_write();
266 
267 
268 /******************************************************
269  * Non thread save functions for querying the
270  * codec registry. Suitable for single threaded
271  * applications (might become obsolete)
272  ******************************************************/
273 
282 
291 
300 const lqt_codec_info_t * lqt_get_audio_codec_info(int index);
301 
310 const lqt_codec_info_t * lqt_get_video_codec_info(int index);
311 
312 /********************************************************************
313  * Thread save function for getting codec parameters
314  * All these functions return a NULL terminated array of local
315  * copies of the codec data which must be freed using
316  * lqt_destroy_codec_info(lqt_codec_info_t ** info) declared below
317  ********************************************************************/
318 
331 lqt_codec_info_t ** lqt_query_registry(int audio, int video,
332  int encode, int decode);
333 
344 lqt_codec_info_t ** lqt_find_audio_codec(char * fourcc, int encode);
345 
356 lqt_codec_info_t ** lqt_find_audio_codec_by_wav_id(int wav_id, int encode);
357 
368 lqt_codec_info_t ** lqt_find_video_codec(char * fourcc, int encode);
369 
370 
371 
372 
373 
374 
385 
396 
408 
420 
430 
442 void lqt_reorder_audio_codecs(lqt_codec_info_t ** codec_info);
443 
455 void lqt_reorder_video_codecs(lqt_codec_info_t ** codec_info);
456 
471  const char * codec_name,
472  const char * parameter_name,
473  lqt_parameter_value_t * val);
474 
486  int encode, int decode);
487 
488 
497 void lqt_dump_codec_info(const lqt_codec_info_t * info);
498 
499 #ifdef __cplusplus
500 }
501 #endif /* __cplusplus */
502 
503 #ifdef __GNUC__
504 #pragma GCC visibility pop
505 #endif
506 
507 #endif /* _LQT_CODEC_INFO_H_ */
int num_decoding_parameters
Definition: lqt_codecinfo.h:212
char ** fourccs
Definition: lqt_codecinfo.h:203
uint32_t file_time
Definition: lqt_codecinfo.h:220
struct lqt_codec_info_s * next
Definition: lqt_codecinfo.h:234
char * module_filename
Definition: lqt_codecinfo.h:217
lqt_parameter_type_t type
Definition: lqt_codecinfo.h:116
char * long_name
Definition: lqt_codecinfo.h:196
const lqt_codec_info_t * lqt_get_video_codec_info(int index)
Return a video codec.
int lqt_get_num_video_codecs()
Return the number of installed video codecs.
int num_wav_ids
Definition: lqt_codecinfo.h:205
lqt_codec_info_t ** lqt_find_audio_codec_by_name(const char *name)
Find an audio codec by its name.
lqt_codec_info_t ** lqt_audio_codec_from_file(quicktime_t *file, int track)
Get an audio codec from an open file.
int num_encoding_colormodels
Definition: lqt_codecinfo.h:225
Definition: lqt_codecinfo.h:85
lqt_codec_info_t ** lqt_find_video_codec(char *fourcc, int encode)
Find a video codec for a given fourcc.
lqt_codec_direction direction
Definition: lqt_codecinfo.h:200
int * encoding_colormodels
Definition: lqt_codecinfo.h:226
lqt_codec_direction
Direction of the codec.
Definition: lqt_codecinfo.h:156
int num_image_sizes
Definition: lqt_codecinfo.h:228
float val_float
Definition: lqt_codecinfo.h:100
Image size.
Definition: lqt_codecinfo.h:172
const lqt_codec_info_t * lqt_get_audio_codec_info(int index)
Return an audio codec.
int num_digits
Definition: lqt_codecinfo.h:128
char * description
Definition: lqt_codecinfo.h:197
char ** stringlist_options
Definition: lqt_codecinfo.h:135
void lqt_dump_codec_info(const lqt_codec_info_t *info)
Dump a codec info to stderr.
lqt_parameter_value_t val_max
Definition: lqt_codecinfo.h:126
Definition: lqt_codecinfo.h:84
lqt_codec_info_t ** lqt_query_registry(int audio, int video, int encode, int decode)
Return an array of any combination of audio/video en/decoders.
int num_encoding_parameters
Definition: lqt_codecinfo.h:209
Structure describing a parameter.
Definition: lqt_codecinfo.h:110
char * gettext_directory
Definition: lqt_codecinfo.h:223
lqt_parameter_info_t * decoding_parameters
Definition: lqt_codecinfo.h:213
char * help_string
Definition: lqt_codecinfo.h:138
Structure describing a codec.
Definition: lqt_codecinfo.h:189
char * val_string
Definition: lqt_codecinfo.h:99
char ** stringlist_labels
Definition: lqt_codecinfo.h:136
int compatibility_flags
Definition: lqt_codecinfo.h:191
void lqt_set_default_parameter(lqt_codec_type type, int encode, const char *codec_name, const char *parameter_name, lqt_parameter_value_t *val)
Change a default value for a codec parameter.
void lqt_registry_destroy()
Destroy the codec registry.
int * wav_ids
Definition: lqt_codecinfo.h:206
char * real_name
Definition: lqt_codecinfo.h:114
lqt_codec_info_t ** lqt_video_codec_from_file(quicktime_t *file, int track)
Get a video codec from an open file.
void lqt_registry_init()
Initialize the codec registry.
lqt_codec_type type
Definition: lqt_codecinfo.h:199
int num_stringlist_options
Definition: lqt_codecinfo.h:134
char * gettext_domain
Definition: lqt_codecinfo.h:222
lqt_parameter_type_t
Parameter types.
Definition: lqt_codecinfo.h:80
Definition: lqt_codecinfo.h:87
lqt_codec_info_t ** lqt_find_audio_codec_by_wav_id(int wav_id, int encode)
Find an audio codec for a given WAV ID.
int lqt_get_num_audio_codecs()
Return the number of installed audio codecs.
lqt_compression_id_t compression_id
Definition: lqt_codecinfo.h:232
void lqt_reorder_audio_codecs(lqt_codec_info_t **codec_info)
Reorder audio codecs.
lqt_image_size_t * image_sizes
Definition: lqt_codecinfo.h:230
char * name
Definition: lqt_codecinfo.h:195
int module_index
Definition: lqt_codecinfo.h:218
void lqt_restore_default_parameters(lqt_codec_info_t *codec_info, int encode, int decode)
Restore a default parameter from the codec module.
Union for holding parameter values.
Definition: lqt_codecinfo.h:96
struct quicktime_s quicktime_t
Quicktime handle.
Definition: quicktime.h:308
lqt_parameter_info_t * encoding_parameters
Definition: lqt_codecinfo.h:210
char * name
Definition: lqt_codecinfo.h:112
Definition: lqt_codecinfo.h:82
int val_int
Definition: lqt_codecinfo.h:98
lqt_parameter_value_t val_min
Definition: lqt_codecinfo.h:125
lqt_parameter_value_t val_default
Definition: lqt_codecinfo.h:118
lqt_codec_type
Type of a codec (Audio or video)
Definition: lqt_codecinfo.h:146
void lqt_destroy_codec_info(lqt_codec_info_t **info)
Destroy a codec info array.
lqt_codec_info_t ** lqt_find_video_codec_by_name(const char *name)
Find a video codec by its name.
lqt_codec_info_t ** lqt_find_audio_codec(char *fourcc, int encode)
Find an audio codec for a given fourcc.
int num_fourccs
Definition: lqt_codecinfo.h:202
Definition: lqt_codecinfo.h:83
void lqt_reorder_video_codecs(lqt_codec_info_t **codec_info)
Reorder video codecs.