Changeset 1570
- Timestamp:
- 2005-10-07 02:02:14 (3 years ago)
- Files:
-
- libannodex/trunk/src/libannodex/anx_write.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
libannodex/trunk/src/libannodex/anx_write.c
r1205 r1570 775 775 776 776 static anx_int64_t 777 anx_writer_cmml_granulepos_calc (ANNODEX * annodex, double timestamp) 778 { 779 AnxWriter * writer = &annodex->x.writer; 780 AnxTrack * track = &writer->cmml_track; 781 anx_int64_t granule, granulepos; 782 783 granule = (anx_int64_t)(timestamp * track->granule_rate_n / 784 track->granule_rate_d); 785 786 granulepos = 787 (writer->cmml_prev_granule << CMML_GRANULESHIFT) | 788 (granule - writer->cmml_prev_granule); 789 790 #ifdef DEBUG 791 printf ("anx_writer_cmml_granulepos_calc: prev_granule %llx, granule %llx, granulepos %llx\n", 792 writer->cmml_prev_granule, granule, granulepos); 793 #endif 794 795 writer->cmml_prev_granule = granule; 796 797 return granulepos; 798 } 799 800 static anx_int64_t 777 801 anx_writer_cmml_granulepos (ANNODEX * annodex) 778 802 { 779 AnxWriter * writer = &annodex->x.writer;780 AnxTrack * track = &writer->cmml_track;781 803 AnxCommand command; 782 804 AnxCommandData data; 783 805 double command_time; 784 anx_int64_t granule, granulepos;785 806 786 807 command = annodex->pending_command; … … 789 810 data = anx_command_get_data (annodex, command); 790 811 command_time = anx_command_get_time_offset (annodex, command); 791 granule = (anx_int64_t)(command_time * track->granule_rate_n / 792 track->granule_rate_d); 793 794 granulepos = 795 (writer->cmml_prev_granule << CMML_GRANULESHIFT) | 796 (granule - writer->cmml_prev_granule); 797 798 #ifdef DEBUG 799 printf ("anx_writer_cmml_granulepos: prev_granule %llx, granule %llx, granulepos %llx\n", 800 writer->cmml_prev_granule, granule, granulepos); 801 #endif 802 803 writer->cmml_prev_granule = granule; 804 805 return granulepos; 812 813 return anx_writer_cmml_granulepos_calc (annodex, command_time); 806 814 } 807 815 … … 1040 1048 anx_init_clip_eos_packet (ANNODEX * annodex) 1041 1049 { 1042 AnxWriter * writer = &annodex->x.writer;1043 AnxTrack * track = &writer->cmml_track;1044 1050 anx_int64_t granulepos; 1045 1051 1046 granulepos = (anx_int64_t)(anx_tell_time (annodex) * 1047 track->granule_rate_n / 1048 track->granule_rate_d); 1052 granulepos = 1053 anx_writer_cmml_granulepos_calc (annodex, anx_tell_time (annodex)); 1049 1054 1050 1055 return anx_init_eos_packet (annodex, annodex->cmml_serialno, granulepos);