home *** CD-ROM | disk | FTP | other *** search
/ Geek 6 / Geek-006.iso / linux / video / xmovie-1.5.3.tar.gz / xmovie-1.5.3.tar / xmovie-1.5.3 / quicktime / stts.c < prev    next >
C/C++ Source or Header  |  2000-11-29  |  3KB  |  92 lines

  1. #include "quicktime.h"
  2.  
  3.  
  4.  
  5. void quicktime_stts_init(quicktime_stts_t *stts)
  6. {
  7.     stts->version = 0;
  8.     stts->flags = 0;
  9.     stts->total_entries = 0;
  10. }
  11.  
  12. void quicktime_stts_init_table(quicktime_stts_t *stts)
  13. {
  14.     if(!stts->total_entries)
  15.     {
  16.         stts->total_entries = 1;
  17.         stts->table = (quicktime_stts_table_t*)malloc(sizeof(quicktime_stts_table_t) * stts->total_entries);
  18.     }
  19. }
  20.  
  21. void quicktime_stts_init_video(quicktime_t *file, quicktime_stts_t *stts, int time_scale, float frame_rate)
  22. {
  23.     quicktime_stts_table_t *table;
  24.     quicktime_stts_init_table(stts);
  25.     table = &(stts->table[0]);
  26.  
  27.     table->sample_count = 0;      /* need to set this when closing */
  28.     table->sample_duration = time_scale / frame_rate;
  29. }
  30.  
  31. void quicktime_stts_init_audio(quicktime_t *file, quicktime_stts_t *stts, int sample_rate)
  32. {
  33.     quicktime_stts_table_t *table;
  34.     quicktime_stts_init_table(stts);
  35.     table = &(stts->table[0]);
  36.  
  37.     table->sample_count = 0;     /* need to set this when closing */
  38.     table->sample_duration = 1;
  39. }
  40.  
  41. void quicktime_stts_delete(quicktime_stts_t *stts)
  42. {
  43.     if(stts->total_entries) free(stts->table);
  44.     stts->total_entries = 0;
  45. }
  46.  
  47. void quicktime_stts_dump(quicktime_stts_t *stts)
  48. {
  49.     int i;
  50.     printf("     time to sample\n");
  51.     printf("      version %d\n", stts->version);
  52.     printf("      flags %d\n", stts->flags);
  53.     printf("      total_entries %d\n", stts->total_entries);
  54.     for(i = 0; i < stts->total_entries; i++)
  55.     {
  56.         printf("       count %ld duration %ld\n", stts->table[i].sample_count, stts->table[i].sample_duration);
  57.     }
  58. }
  59.  
  60. void quicktime_read_stts(quicktime_t *file, quicktime_stts_t *stts)
  61. {
  62.     int i;
  63.     stts->version = quicktime_read_char(file);
  64.     stts->flags = quicktime_read_int24(file);
  65.     stts->total_entries = quicktime_read_int32(file);
  66.  
  67.     stts->table = (quicktime_stts_table_t*)malloc(sizeof(quicktime_stts_table_t) * stts->total_entries);
  68.     for(i = 0; i < stts->total_entries; i++)
  69.     {
  70.         stts->table[i].sample_count = quicktime_read_int32(file);
  71.         stts->table[i].sample_duration = quicktime_read_int32(file);
  72.     }
  73. }
  74.  
  75. void quicktime_write_stts(quicktime_t *file, quicktime_stts_t *stts)
  76. {
  77.     int i;
  78.     quicktime_atom_t atom;
  79.     quicktime_atom_write_header(file, &atom, "stts");
  80.  
  81.     quicktime_write_char(file, stts->version);
  82.     quicktime_write_int24(file, stts->flags);
  83.     quicktime_write_int32(file, stts->total_entries);
  84.     for(i = 0; i < stts->total_entries; i++)
  85.     {
  86.         quicktime_write_int32(file, stts->table[i].sample_count);
  87.         quicktime_write_int32(file, stts->table[i].sample_duration);
  88.     }
  89.  
  90.     quicktime_atom_write_footer(file, &atom);
  91. }
  92.