#include <smpte.h>
|
||||||||||||
|
Definition at line 100 of file jdkmidi_smpte.cpp.
00104 : 00105 smpte_rate( smpte_rate_ ), 00106 sample_rate( sample_rate_ ), 00107 sample_number( 0 ), 00108 hours(0), 00109 minutes(0), 00110 seconds(0), 00111 frames(0), 00112 sub_frames(0), 00113 sample_number_dirty(false) 00114 { 00115 00116 } |
|
|
Definition at line 120 of file jdkmidi_smpte.cpp. References Copy().
00123 {
00124 Copy(s);
00125 }
|
|
|
Definition at line 384 of file jdkmidi_smpte.cpp. References GetSampleNumber(), SetSampleNumber(), and ulong.
00385 {
00386 ulong a=GetSampleNumber();
00387 ulong b=s.GetSampleNumber();
00388
00389 SetSampleNumber( a+b );
00390 }
|
|
|
Definition at line 164 of file jdkmidi_smpte.cpp. References AddSamples(), GetSampleRateLong(), and GetSMPTERateLong().
00165 {
00166 AddSamples(
00167 GetSampleRateLong() // samples per second times 10
00168 * f // number of frames
00169 * 10 // times 10
00170 / GetSMPTERateLong() // divide by smpte rate (frames per second) times 100
00171 );
00172 }
|
|
|
Definition at line 131 of file jdkmidi_smpte.cpp. References AddSamples(), and GetSampleRateLong().
00132 {
00133 AddSamples( GetSampleRateLong()// samples per second times 10
00134 * h *
00135 ( 60 // seconds per minute
00136 * 60 // minutes per hour
00137 / 10 // compensate for freq*10
00138 )
00139 );
00140 }
|
|
|
Definition at line 143 of file jdkmidi_smpte.cpp. References AddSamples(), and GetSampleRateLong().
00144 {
00145 AddSamples(
00146 GetSampleRateLong()
00147 * m * // samples per second times 10
00148 ( 60 // seconds per minute
00149 / 10 ) // compensate for freq*10
00150 );
00151 }
|
|
|
Definition at line 163 of file smpte.h. References GetSampleNumber(), sample_number, and SampleToTime().
00163 { sample_number=GetSampleNumber()+n; SampleToTime(); }
|
|
|
Definition at line 154 of file jdkmidi_smpte.cpp. References AddSamples(), and GetSampleRateLong().
00155 {
00156 AddSamples(
00157 GetSampleRateLong() // samples per second times 10
00158 * s // number of seconds
00159 / 10 // compensate for freq*10
00160 );
00161 }
|
|
|
Definition at line 175 of file jdkmidi_smpte.cpp. References AddSamples(), GetSampleRateLong(), and GetSMPTERateLong().
00176 {
00177 AddSamples(
00178 GetSampleRateLong() // samples per second times 10
00179 * sf // number of sub frames
00180 / GetSMPTERateLong() // divide by smpte rate (frames per second) times 100
00181 / 10 // divide by 10 to get hundredths of a frame
00182 );
00183 }
|
|
|
Definition at line 370 of file jdkmidi_smpte.cpp. References GetSampleNumber(), and ulong.
00371 {
00372 ulong a = GetSampleNumber();
00373 ulong b = s.GetSampleNumber();
00374
00375 if( a<b )
00376 return -1;
00377 if( a>b )
00378 return 1;
00379
00380 return 0;
00381 }
|
|
|
Definition at line 356 of file jdkmidi_smpte.cpp. References frames, hours, minutes, sample_number, sample_number_dirty, sample_rate, seconds, smpte_rate, and sub_frames.
00357 {
00358 smpte_rate=s.smpte_rate;
00359 sample_rate=s.sample_rate;
00360 sample_number=s.sample_number;
00361 hours=s.hours;
00362 minutes=s.minutes;
00363 seconds=s.seconds;
00364 frames=s.frames;
00365 sub_frames=s.sub_frames;
00366 sample_number_dirty=s.sample_number_dirty;
00367 }
|
|
|
Definition at line 175 of file smpte.h. References AddFrames().
00175 { AddFrames(-1); }
|
|
|
Definition at line 172 of file smpte.h. References AddHours().
00172 { AddHours(-1); }
|
|
|
Definition at line 173 of file smpte.h. References AddMinutes().
00173 { AddMinutes(-1); }
|
|
|
Definition at line 177 of file smpte.h. References AddSamples().
00177 { AddSamples(-1); }
|
|
|
Definition at line 174 of file smpte.h. References AddSeconds().
00174 { AddSeconds(-1); }
|
|
|
Definition at line 176 of file smpte.h. References AddSubFrames().
00176 { AddSubFrames(-1); }
|
|
|
Definition at line 149 of file smpte.h.
00149 { return frames; }
|
|
|
Definition at line 146 of file smpte.h.
00146 { return hours; }
|
|
|
Definition at line 147 of file smpte.h. References minutes, and uchar.
00147 { return minutes; }
|
|
|
Definition at line 141 of file smpte.h. References sample_number, sample_number_dirty, TimeToSample(), and ulong.
00141 { if( sample_number_dirty ) TimeToSample(); return sample_number; }
|
|
|
Definition at line 138 of file smpte.h. References sample_rate, and jdkmidi::SAMPLE_RATE.
00138 { return sample_rate; }
|
|
|
Definition at line 201 of file smpte.h. References jdkmidi::GetSampleRateFrequencyLong(), and sample_rate.
00202 { return GetSampleRateFrequencyLong( sample_rate ); }
|
|
|
Definition at line 148 of file smpte.h. References seconds, and uchar.
00148 { return seconds; }
|
|
|
Definition at line 135 of file smpte.h. References smpte_rate, and jdkmidi::SMPTE_RATE.
00135 { return smpte_rate; }
|
|
|
Definition at line 204 of file smpte.h. References jdkmidi::GetSMPTERateFrequencyLong(), and smpte_rate.
00205 { return GetSMPTERateFrequencyLong( smpte_rate ); }
|
|
|
Definition at line 150 of file smpte.h. References sub_frames, and uchar.
00150 { return sub_frames; }
|
|
|
Definition at line 168 of file smpte.h. References AddFrames().
00168 { AddFrames(1); }
|
|
|
Definition at line 165 of file smpte.h. References AddHours().
00165 { AddHours(1); }
|
|
|
Definition at line 166 of file smpte.h. References AddMinutes().
00166 { AddMinutes(1); }
|
|
|
Definition at line 170 of file smpte.h. References AddSamples().
00170 { AddSamples(1); }
|
|
|
Definition at line 167 of file smpte.h. References AddSeconds().
00167 { AddSeconds(1); }
|
|
|
Definition at line 169 of file smpte.h. References AddSubFrames().
00169 { AddSubFrames(1); }
|
|
|
Definition at line 183 of file smpte.h. References Compare().
00183 { return Compare(s)!=0; }
|
|
|
Definition at line 189 of file smpte.h. References Add().
00189 { Add( s ); return *this; }
|
|
|
Definition at line 190 of file smpte.h. References Subtract().
00190 { Subtract( s ); return *this; }
|
|
|
Definition at line 184 of file smpte.h. References Compare().
00184 { return Compare(s)<0; }
|
|
|
Definition at line 186 of file smpte.h. References Compare().
00186 { return Compare(s)<=0; }
|
|
|
Definition at line 181 of file smpte.h. References Copy().
00181 { Copy(s); return *this; }
|
|
|
Definition at line 182 of file smpte.h. References Compare().
00182 { return Compare(s)==0; }
|
|
|
Definition at line 185 of file smpte.h. References Compare().
00185 { return Compare(s)>0; }
|
|
|
Definition at line 187 of file smpte.h. References Compare().
00187 { return Compare(s)>=0; }
|
|
|
Definition at line 187 of file jdkmidi_smpte.cpp. References DBG, frames, hours, minutes, sample_number, sample_rate, seconds, jdkmidi::smpte_max_frames, smpte_rate, jdkmidi::SMPTE_RATE_2997DF, jdkmidi::SMPTE_RATE_30DF, jdkmidi::smpte_sample_rates, jdkmidi::smpte_smpte_rates, sub_frames, uchar, and ulong.
00188 {
00189 //
00190 // make a temporary copy of the sample number
00191 //
00192
00193 ulong tmp_sample=sample_number;
00194
00195
00196 //
00197 // keep track of the actual rates in use in doubles.
00198 //
00199
00200 double the_smpte_rate = smpte_smpte_rates[ smpte_rate ];
00201 double the_sample_rate = smpte_sample_rates[ sample_rate ];
00202
00203 //
00204 // keep track of the maximum frame number for this smpte format.
00205 //
00206
00207 uchar max_frame = smpte_max_frames[ smpte_rate ];
00208
00209 //
00210 // Calculate the number of samples per frame.
00211 //
00212
00213 double samples_per_frame=smpte_sample_rates[ sample_rate ] / smpte_smpte_rates[ smpte_rate ];
00214
00215 //
00216 // if the smpte rate is a drop frame type, calculate the number
00217 // of frames that must be dropped.
00218 //
00219
00220 if( smpte_rate==SMPTE_RATE_30DF || smpte_rate==SMPTE_RATE_2997DF )
00221 {
00222 //
00223 // Calculate number of minutes that have gone by
00224 //
00225
00226 // short num_minutes = (short)((double)tmp_sample/(smpte_sample_rates[sample_rate]))/60;
00227 int num_minutes = tmp_sample/(48000*60);
00228
00229 DBG( printf( "num_minutes=%d\n", (int)num_minutes ) );
00230
00231 //
00232 // Calculate the number of tens of minutes that have gone by, including minute 00
00233 //
00234
00235 int ten_minutes = num_minutes/10;
00236
00237 DBG( printf( "ten_minutes=%d\n", (int)ten_minutes) );
00238
00239 //
00240 // Calculate the number of frames that are dropped by this
00241 // time.
00242 //
00243
00244 int drops=(num_minutes - ten_minutes)*2;
00245
00246 DBG( printf( "drops=%d\n", (int)drops ) );
00247
00248 //
00249 // Offset the tmp_sample number by this amount of frames.
00250 //
00251
00252 DBG( printf( "tmp_sample before drops=%ld\n", (long)tmp_sample ) );
00253
00254 tmp_sample+=(ulong)(drops*samples_per_frame);
00255
00256 DBG( printf( "tmp_sample after drops=%ld\n", (long)tmp_sample ) );
00257 }
00258
00259 //
00260 // Calculate the time in sub frames, frames, seconds, minutes, hours
00261 //
00262
00263 ulong rounded_sub_frames= (ulong)((tmp_sample*the_smpte_rate * 100)/the_sample_rate +.5);
00264
00265 DBG( printf( "rounded_sub_frames = %ld\n", rounded_sub_frames ) );
00266
00267 sub_frames = (uchar) ((rounded_sub_frames)%100);
00268 frames = (uchar) ((rounded_sub_frames/100) % max_frame);
00269 seconds = (uchar) ((rounded_sub_frames/(100L*max_frame)) % 60 );
00270 minutes = (uchar) ((rounded_sub_frames/(100L*60L*max_frame)) % 60 );
00271 hours = (uchar) ((rounded_sub_frames/(100L*60L*24L*max_frame)) % 24 );
00272
00273 }
|
|
|
Definition at line 155 of file smpte.h. References frames, sample_number_dirty, and uchar.
00155 { frames=f; sample_number_dirty=true; }
|
|
|
Definition at line 152 of file smpte.h. References hours, sample_number_dirty, and uchar.
00152 { hours=h; sample_number_dirty=true; }
|
|
|
Definition at line 153 of file smpte.h. References minutes, sample_number_dirty, and uchar.
00153 { minutes=m; sample_number_dirty=true; }
|
|
|
Definition at line 140 of file smpte.h. References sample_number, SampleToTime(), and ulong.
00140 { sample_number=n; SampleToTime(); }
|
|
|
Definition at line 137 of file smpte.h. References sample_number_dirty, and sample_rate.
00137 { sample_rate=r; sample_number_dirty=true; }
|
|
|
Definition at line 154 of file smpte.h. References sample_number_dirty, seconds, and uchar.
00154 { seconds=s; sample_number_dirty=true; }
|
|
|
Definition at line 134 of file smpte.h. References sample_number_dirty, and smpte_rate.
00134 { smpte_rate=r; sample_number_dirty=true; }
|
|
|
Definition at line 156 of file smpte.h. References sample_number_dirty, sub_frames, and uchar.
00156 { sub_frames=sf; sample_number_dirty=true; }
|
|
||||||||||||||||||||||||
|
Definition at line 143 of file smpte.h. References frames, hours, minutes, sample_number_dirty, seconds, sub_frames, and uchar.
00144 { hours=h; minutes=m; seconds=s; frames=f; sub_frames=sf; sample_number_dirty=true; }
|
|
|
Definition at line 392 of file jdkmidi_smpte.cpp. References GetSampleNumber(), SetSampleNumber(), and ulong.
00393 {
00394 ulong a=GetSampleNumber();
00395 ulong b=s.GetSampleNumber();
00396
00397 SetSampleNumber( a-b );
00398 }
|
|
|
Definition at line 276 of file jdkmidi_smpte.cpp. References DBG, frames, hours, minutes, sample_number, sample_rate, seconds, smpte_rate, jdkmidi::SMPTE_RATE_2997DF, jdkmidi::SMPTE_RATE_30DF, jdkmidi::smpte_sample_rates, jdkmidi::smpte_smpte_rates, sub_frames, and ulong.
00277 {
00278
00279 //
00280 // keep track of the actual rates in use in doubles.
00281 //
00282
00283 double the_smpte_rate = smpte_smpte_rates[ smpte_rate ];
00284 double the_sample_rate = smpte_sample_rates[ sample_rate ];
00285
00286 //
00287 // optimize a coupla similiar double divides by calculating it once.
00288 //
00289
00290 double samples_per_frame=the_sample_rate / the_smpte_rate;
00291
00292 //
00293 // calculate the sample number
00294 //
00295
00296 double tmp_sample = (double) (
00297 ( (hours * the_sample_rate * (60 * 60) )
00298 + (minutes * the_sample_rate * 60 )
00299 + (seconds * the_sample_rate )
00300 + (frames * samples_per_frame )
00301 + (sub_frames * samples_per_frame * (1.0/100.0) ) +.5)
00302 );
00303
00304 //
00305 // Now compensate for Drop Frame mode if we are in drop frame mode.
00306 //
00307
00308 if( smpte_rate == SMPTE_RATE_30DF || smpte_rate==SMPTE_RATE_2997DF )
00309 {
00310 //
00311 // Calculate number of minutes that have gone by
00312 //
00313
00314 int num_minutes = (int)((double)tmp_sample/(smpte_sample_rates[sample_rate]*60));
00315
00316 DBG( printf( "num_minutes=%d\n", (int)num_minutes ) );
00317
00318 //
00319 // Calculate the number of tens of minutes that have gone by, including minute 00
00320 //
00321
00322 int ten_minutes = num_minutes/10;
00323
00324 DBG( printf( "ten_minutes=%d\n", (int)ten_minutes) );
00325
00326 //
00327 // Calculate the number of frames that are dropped by this
00328 // time.
00329 //
00330
00331 int drops=(num_minutes - ten_minutes)*2;
00332
00333 DBG( printf( "drops=%d\n", (int)drops ) );
00334
00335 //
00336 // Offset the tmp_sample number by this amount of frames.
00337 //
00338
00339 DBG( printf( "tmp_sample before drops=%ld\n", (long)tmp_sample ) );
00340
00341 tmp_sample-=drops*samples_per_frame;
00342
00343 DBG( printf( "tmp_sample after drops=%ld\n", (long)tmp_sample ) );
00344
00345 }
00346
00347 //
00348 // save the calculated sample number in self.
00349 //
00350
00351 sample_number=(ulong)tmp_sample;
00352 }
|
|
||||||||||||
|
Definition at line 224 of file smpte.h.
00225 {
00226 SMPTE c(a);
00227
00228 c+=b;
00229 return c;
00230 }
|
|
||||||||||||
|
Definition at line 232 of file smpte.h.
00233 {
00234 SMPTE c(a);
00235
00236 c-=b;
00237 return c;
00238 }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|