00001 #ifndef FUNCPROTOS_H
00002 #define FUNCPROTOS_H
00003
00004 #include "graphics.h"
00005 #include "qtprivate.h"
00006
00007
00008 int quicktime_atom_write_header(quicktime_t *file, quicktime_atom_t *atom, char *text);
00009 int quicktime_atom_write_header64(quicktime_t *file, quicktime_atom_t *atom, char *text);
00010 int64_t quicktime_byte_position(quicktime_t *file);
00011
00012 int64_t quicktime_ftell(quicktime_t *file);
00013 int quicktime_atom_is(quicktime_atom_t *atom, unsigned char *type);
00014
00015 quicktime_trak_t* quicktime_add_track(quicktime_t *file);
00016
00017
00018
00019 int quicktime_file_open(quicktime_t *file, char *path, int rd, int wr);
00020 int quicktime_file_close(quicktime_t *file);
00021 int64_t quicktime_get_file_length(char *path);
00022
00023
00024
00025 void quicktime_init_maps(quicktime_t *file);
00026
00027 int quicktime_read_char(quicktime_t *file);
00028 float quicktime_read_fixed32(quicktime_t *file);
00029 float quicktime_read_fixed16(quicktime_t *file);
00030 int64_t quicktime_read_int64(quicktime_t *file);
00031 int64_t quicktime_read_int64_le(quicktime_t *file);
00032 unsigned long quicktime_read_uint32(quicktime_t *file);
00033 long quicktime_read_int32(quicktime_t *file);
00034 long quicktime_read_int32_le(quicktime_t *file);
00035 long quicktime_read_int24(quicktime_t *file);
00036 int64_t quicktime_position(quicktime_t *file);
00037 int quicktime_set_position(quicktime_t *file, int64_t position);
00038 int quicktime_write_fixed32(quicktime_t *file, float number);
00039 int quicktime_write_char(quicktime_t *file, char x);
00040 int quicktime_write_int16(quicktime_t *file, int number);
00041 int quicktime_write_int16_le(quicktime_t *file, int number);
00042 int quicktime_write_int24(quicktime_t *file, long number);
00043 int quicktime_write_int32(quicktime_t *file, long value);
00044 int quicktime_write_int32_le(quicktime_t *file, long value);
00045 int quicktime_write_int64(quicktime_t *file, int64_t value);
00046 int quicktime_write_int64_le(quicktime_t *file, int64_t value);
00047 int quicktime_write_char32(quicktime_t *file, char *string);
00048 int quicktime_write_fixed16(quicktime_t *file, float number);
00049
00050
00051 int quicktime_write_data(quicktime_t *file, char *data, int size);
00052
00053 void quicktime_set_presave(quicktime_t *file, int value);
00054
00055 int quicktime_match_32(char *input, char *output);
00056 int quicktime_match_24(char *input, char *output);
00057 void quicktime_write_pascal(quicktime_t *file, char *data);
00058 int quicktime_read_data(quicktime_t *file, char *data, int64_t size);
00059
00060
00061 int quicktime_quantize16(int number);
00062 int quicktime_quantize32(int number);
00063
00064
00065
00066
00067 void quicktime_id_to_codec(char *result, int id);
00068
00069 int quicktime_find_vcodec(quicktime_video_map_t *vtrack);
00070 int quicktime_find_acodec(quicktime_audio_map_t *atrack);
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080 int64_t quicktime_samples_to_bytes(quicktime_trak_t *track, long samples);
00081
00082 char* quicktime_compressor(quicktime_trak_t *trak);
00083
00084
00085 int quicktime_sample_duration(quicktime_trak_t *trak);
00086
00087
00088 void quicktime_esds_samplerate(quicktime_stsd_table_t *table,
00089 quicktime_esds_t *esds);
00090
00091
00092
00093
00094 quicktime_scaletable_t* quicktime_new_scaletable(int input_w, int input_h, int output_w, int output_h);
00095
00096
00097
00098
00099
00100
00101
00102 int quicktime_update_positions(quicktime_t *file);
00103
00104
00105
00106
00107
00108
00109
00110
00111 void quicktime_read_strh(quicktime_t *file, quicktime_atom_t *parent_atom);
00112 void quicktime_write_strh(quicktime_t *file, int track);
00113
00114
00115
00116
00117
00118 quicktime_strl_t* quicktime_new_strl();
00119
00120 void quicktime_init_strl(quicktime_t *file,
00121 quicktime_audio_map_t *atrack,
00122 quicktime_video_map_t *vtrack,
00123 quicktime_trak_t *trak,
00124 quicktime_strl_t *strl);
00125 void quicktime_delete_strl(quicktime_strl_t *strl);
00126
00127 void quicktime_read_strl(quicktime_t *file,
00128 quicktime_strl_t *strl,
00129 quicktime_atom_t *parent_atom);
00130
00131
00132 void quicktime_delete_indx(quicktime_indx_t *indx);
00133 void quicktime_init_indx(quicktime_t *file,
00134 quicktime_indx_t *indx,
00135 quicktime_strl_t *strl);
00136 void quicktime_update_indx(quicktime_t *file,
00137 quicktime_indx_t *indx,
00138 quicktime_ix_t *ix);
00139 void quicktime_finalize_indx(quicktime_t *file);
00140
00141 void quicktime_read_indx(quicktime_t *file,
00142 quicktime_strl_t *strl,
00143 quicktime_atom_t *parent_atom);
00144
00145
00146
00147 void quicktime_delete_hdrl(quicktime_t *file, quicktime_hdrl_t *hdrl);
00148 void quicktime_read_hdrl(quicktime_t *file,
00149 quicktime_hdrl_t *hdrl,
00150 quicktime_atom_t *parent_atom);
00151 void quicktime_init_hdrl(quicktime_t *file, quicktime_hdrl_t *hdrl);
00152 void quicktime_finalize_hdrl(quicktime_t *file, quicktime_hdrl_t *hdrl);
00153
00154
00155 void quicktime_delete_esds(quicktime_esds_t *esds);
00156 void quicktime_read_esds(quicktime_t *file,
00157 quicktime_atom_t *parent_atom,
00158 quicktime_esds_t *esds);
00159 void quicktime_write_esds(quicktime_t *file,
00160 quicktime_esds_t *esds,
00161 int do_video,
00162 int do_audio);
00163
00164 void quicktime_set_mpeg4_header(quicktime_stsd_table_t *table,
00165 unsigned char *data,
00166 int size);
00167 void quicktime_esds_dump(quicktime_esds_t *esds);
00168
00169
00170 void quicktime_delete_avcc(quicktime_avcc_t *avcc);
00171 int quicktime_read_avcc(quicktime_t *file,
00172 quicktime_atom_t *parent_atom,
00173 quicktime_avcc_t *avcc);
00174 void quicktime_avcc_dump(quicktime_avcc_t *avcc);
00175 void quicktime_set_avcc_header(quicktime_avcc_t *avcc,
00176 unsigned char *data,
00177 int size);
00178
00179
00180
00181
00182
00183 void quicktime_delete_movi(quicktime_t *file, quicktime_movi_t *movi);
00184 void quicktime_read_movi(quicktime_t *file,
00185 quicktime_atom_t *parent_atom,
00186 quicktime_movi_t *movi);
00187
00188 void quicktime_init_movi(quicktime_t *file, quicktime_riff_t *riff);
00189 void quicktime_finalize_movi(quicktime_t *file, quicktime_movi_t *movi);
00190
00191
00192
00193
00194
00195
00196 void quicktime_delete_idx1(quicktime_idx1_t *idx1);
00197 void quicktime_read_idx1(quicktime_t *file,
00198 quicktime_riff_t *riff,
00199 quicktime_atom_t *parent_atom);
00200 void quicktime_write_idx1(quicktime_t *file,
00201 quicktime_idx1_t *idx1);
00202
00203
00204 void quicktime_set_idx1_keyframe(quicktime_t *file,
00205 quicktime_trak_t *trak,
00206 int new_keyframe);
00207
00208 void quicktime_update_idx1table(quicktime_t *file,
00209 quicktime_trak_t *trak,
00210 int offset,
00211 int size);
00212
00213
00214
00215
00216 void quicktime_read_odml(quicktime_t *file, quicktime_atom_t *parent_atom);
00217 void quicktime_finalize_odml(quicktime_t *file, quicktime_hdrl_t *hdrl);
00218 void quicktime_init_odml(quicktime_t *file, quicktime_hdrl_t *hdrl);
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228 quicktime_riff_t* quicktime_new_riff(quicktime_t *file);
00229 void quicktime_delete_riff(quicktime_t *file, quicktime_riff_t *riff);
00230 void quicktime_read_riff(quicktime_t *file, quicktime_atom_t *parent_atom);
00231
00232
00233
00234 void quicktime_init_riff(quicktime_t *file);
00235 void quicktime_finalize_riff(quicktime_t *file, quicktime_riff_t *riff);
00236
00237
00238
00239 quicktime_ix_t* quicktime_new_ix(quicktime_t *file,
00240 quicktime_trak_t *trak,
00241 quicktime_strl_t *strl);
00242 void quicktime_delete_ix(quicktime_ix_t *ix);
00243 void quicktime_update_ixtable(quicktime_t *file,
00244 quicktime_trak_t *trak,
00245 int64_t offset,
00246 int size);
00247 void quicktime_write_ix(quicktime_t *file,
00248 quicktime_ix_t *ix,
00249 int track);
00250
00251
00252 void quicktime_read_ix(quicktime_t *file,
00253 quicktime_ix_t *ix);
00254
00255
00256
00257
00258 int quicktime_trak_init_audio(quicktime_t *file,
00259 quicktime_trak_t *trak,
00260 int channels,
00261 int sample_rate,
00262 int bits,
00263 char *compressor);
00264 int quicktime_trak_init_video(quicktime_t *file,
00265 quicktime_trak_t *trak,
00266 int frame_w,
00267 int frame_h,
00268 float frame_rate,
00269 char *compressor);
00270 int quicktime_trak_delete(quicktime_trak_t *trak);
00271 int quicktime_trak_dump(quicktime_trak_t *trak);
00272 int quicktime_delete_trak(quicktime_moov_t *moov);
00273 int quicktime_read_trak(quicktime_t *file, quicktime_trak_t *trak, quicktime_atom_t *trak_atom);
00274 int quicktime_write_trak(quicktime_t *file, quicktime_trak_t *trak, long moov_time_scale);
00275 int64_t quicktime_track_end(quicktime_trak_t *trak);
00276
00277
00278
00279 long quicktime_track_samples(quicktime_t *file, quicktime_trak_t *trak);
00280
00281
00282
00283
00284 long quicktime_sample_of_chunk(quicktime_trak_t *trak, long chunk);
00285
00286
00287
00288 int64_t quicktime_chunk_to_offset(quicktime_t *file, quicktime_trak_t *trak, long chunk);
00289
00290
00291
00292 long quicktime_offset_to_chunk(int64_t *chunk_offset,
00293 quicktime_trak_t *trak,
00294 int64_t offset);
00295
00296
00297
00298
00299
00300
00301 int quicktime_chunk_bytes(quicktime_t *file,
00302 int64_t *chunk_offset,
00303 int chunk,
00304 quicktime_trak_t *trak);
00305
00306
00307
00308 int64_t quicktime_sample_range_size(quicktime_trak_t *trak, int64_t chunk_sample, int64_t sample);
00309
00310
00311 int quicktime_chunk_of_sample(int64_t *chunk_sample,
00312 int64_t *chunk,
00313 quicktime_trak_t *trak,
00314 long sample);
00315
00316
00317
00318
00319 int64_t quicktime_sample_to_offset(quicktime_t *file, quicktime_trak_t *trak, int64_t sample);
00320 long quicktime_offset_to_sample(quicktime_trak_t *trak, int64_t offset);
00321 quicktime_trak_t* quicktime_add_trak(quicktime_t *file);
00322
00323
00324 int quicktime_time_to_sample(quicktime_stts_t *stts,
00325 int64_t *start_time);
00326
00327
00328
00329 void quicktime_stts_append_audio(quicktime_t *file,
00330 quicktime_stts_t *stts,
00331 int sample_duration);
00332
00333 int64_t quicktime_stts_total_samples(quicktime_t *file,
00334 quicktime_stts_t *stts);
00335
00336
00337 void quicktime_write_chunk_header(quicktime_t *file,
00338 quicktime_trak_t *trak,
00339 quicktime_atom_t *chunk);
00340 void quicktime_write_chunk_footer(quicktime_t *file,
00341 quicktime_trak_t *trak,
00342 int current_chunk,
00343 quicktime_atom_t *chunk,
00344 int samples);
00345
00346 int quicktime_write_vbr_frame(quicktime_t *file,
00347 int track,
00348 char *data,
00349 int data_size,
00350 int samples);
00351
00352
00353
00354
00355
00356
00357
00358
00359
00360
00361
00362 void quicktime_update_stco(quicktime_stco_t *stco, long chunk, int64_t offset);
00363 void quicktime_update_stsz(quicktime_stsz_t *stsz, long sample, long sample_size);
00364 int quicktime_update_stsc(quicktime_stsc_t *stsc, long chunk, long samples);
00365 int quicktime_trak_duration(quicktime_trak_t *trak, long *duration, long *timescale);
00366 int quicktime_trak_fix_counts(quicktime_t *file, quicktime_trak_t *trak);
00367 int quicktime_sample_size(quicktime_trak_t *trak, int sample);
00368
00369
00370 long quicktime_chunk_samples(quicktime_trak_t *trak, long chunk);
00371 int quicktime_trak_shift_offsets(quicktime_trak_t *trak, int64_t offset);
00372 void quicktime_mhvd_init_video(quicktime_t *file,
00373 quicktime_mvhd_t *mvhd,
00374 double frame_rate);
00375
00376
00377 void quicktime_stsd_init_video(quicktime_t *file,
00378 quicktime_stsd_t *stsd,
00379 int frame_w,
00380 int frame_h,
00381 float frame_rate,
00382 char *compression);
00383 void quicktime_stsd_init_audio(quicktime_t *file,
00384 quicktime_stsd_t *stsd,
00385 int channels,
00386 int sample_rate,
00387 int bits,
00388 char *compressor);
00389 void quicktime_stts_init_video(quicktime_t *file,
00390 quicktime_stts_t *stts,
00391 int time_scale,
00392 float frame_rate);
00393 void quicktime_stbl_init_video(quicktime_t *file,
00394 quicktime_stbl_t *stbl,
00395 int frame_w,
00396 int frame_h,
00397 int time_scale,
00398 float frame_rate,
00399 char *compressor);
00400 void quicktime_stbl_init_audio(quicktime_t *file,
00401 quicktime_stbl_t *stbl,
00402 int channels,
00403 int sample_rate,
00404 int bits,
00405 char *compressor);
00406 void quicktime_minf_init_video(quicktime_t *file,
00407 quicktime_minf_t *minf,
00408 int frame_w,
00409 int frame_h,
00410 int time_scale,
00411 float frame_rate,
00412 char *compressor);
00413 void quicktime_mdhd_init_video(quicktime_t *file,
00414 quicktime_mdhd_t *mdhd,
00415 int frame_w,
00416 int frame_h,
00417 float frame_rate);
00418 void quicktime_mdhd_init_audio(quicktime_mdhd_t *mdhd,
00419 int sample_rate);
00420 void quicktime_minf_init_audio(quicktime_t *file,
00421 quicktime_minf_t *minf,
00422 int channels,
00423 int sample_rate,
00424 int bits,
00425 char *compressor);
00426 void quicktime_mdia_init_video(quicktime_t *file,
00427 quicktime_mdia_t *mdia,
00428 int frame_w,
00429 int frame_h,
00430 float frame_rate,
00431 char *compressor);
00432 void quicktime_mdia_init_audio(quicktime_t *file,
00433 quicktime_mdia_t *mdia,
00434 int channels,
00435 int sample_rate,
00436 int bits,
00437 char *compressor);
00438 void quicktime_tkhd_init_video(quicktime_t *file,
00439 quicktime_tkhd_t *tkhd,
00440 int frame_w,
00441 int frame_h);
00442 int quicktime_get_timescale(double frame_rate);
00443
00444 unsigned long quicktime_current_time(void);
00445
00446
00447
00448
00449
00450
00451
00452
00453
00454
00455
00456
00457
00458 void quicktime_clear_vbr(quicktime_vbr_t *ptr);
00459 void quicktime_vbr_set_channels(quicktime_vbr_t *ptr, int channels);
00460 void quicktime_init_vbr(quicktime_vbr_t *ptr, int channels);
00461
00462
00463
00464 int quicktime_align_vbr(quicktime_audio_map_t *atrack,
00465 int samples);
00466
00467
00468 int64_t quicktime_vbr_end(quicktime_vbr_t *ptr);
00469 unsigned char* quicktime_vbr_input(quicktime_vbr_t *ptr);
00470 int quicktime_vbr_input_size(quicktime_vbr_t *ptr);
00471
00472
00473
00474 int quicktime_read_vbr(quicktime_t *file,
00475 quicktime_audio_map_t *atrack);
00476
00477
00478 void quicktime_shift_vbr(quicktime_audio_map_t *atrack, int bytes);
00479
00480
00481
00482 void quicktime_store_vbr_float(quicktime_audio_map_t *atrack,
00483 float *samples,
00484 int sample_count);
00485
00486 void quicktime_copy_vbr_float(quicktime_vbr_t *vbr,
00487 int64_t start_position,
00488 int samples,
00489 float *output,
00490 int channel);
00491
00492
00493
00494
00495 quicktime_cache_t* quicktime_new_cache();
00496 void quicktime_delete_cache(quicktime_cache_t *ptr);
00497 void quicktime_reset_cache(quicktime_cache_t *ptr);
00498 void quicktime_put_frame(quicktime_cache_t *ptr,
00499 int64_t frame_number,
00500 unsigned char *y,
00501 unsigned char *u,
00502 unsigned char *v,
00503 int y_size,
00504 int u_size,
00505 int v_size);
00506
00507 int quicktime_get_frame(quicktime_cache_t *ptr,
00508 int64_t frame_number,
00509 unsigned char **y,
00510 unsigned char **u,
00511 unsigned char **v);
00512 int quicktime_has_frame(quicktime_cache_t *ptr,
00513 int64_t frame_number);
00514 int64_t quicktime_cache_usage(quicktime_cache_t *ptr);
00515
00516
00517
00518
00519
00520 #endif