@@ -359,6 +359,7 @@ impl Format {
359
359
_ => bail ! ( err_invalid!( "invalid smf format" ) ) ,
360
360
} )
361
361
}
362
+
362
363
pub ( crate ) fn encode ( & self ) -> [ u8 ; 2 ] {
363
364
let code: u16 = match self {
364
365
Format :: SingleTrack => 0 ,
@@ -399,6 +400,7 @@ impl Timing {
399
400
Ok ( Timing :: Metrical ( u15:: from ( raw) ) )
400
401
}
401
402
}
403
+
402
404
pub ( crate ) fn encode ( & self ) -> [ u8 ; 2 ] {
403
405
match self {
404
406
Timing :: Metrical ( ticksperbeat) => ticksperbeat. as_int ( ) . to_be_bytes ( ) ,
@@ -457,24 +459,31 @@ impl SmpteTime {
457
459
fps,
458
460
} )
459
461
}
462
+
460
463
pub fn hour ( & self ) -> u8 {
461
464
self . hour
462
465
}
466
+
463
467
pub fn minute ( & self ) -> u8 {
464
468
self . minute
465
469
}
470
+
466
471
pub fn second ( & self ) -> u8 {
467
472
self . second
468
473
}
474
+
469
475
pub fn frame ( & self ) -> u8 {
470
476
self . frame
471
477
}
478
+
472
479
pub fn subframe ( & self ) -> u8 {
473
480
self . subframe
474
481
}
482
+
475
483
pub fn fps ( & self ) -> Fps {
476
484
self . fps
477
485
}
486
+
478
487
pub fn second_f32 ( & self ) -> f32 {
479
488
self . second as f32
480
489
+ ( ( self . frame as f32 + self . subframe as f32 / 100.0 ) / self . fps . as_f32 ( ) )
@@ -494,6 +503,7 @@ impl SmpteTime {
494
503
Ok ( SmpteTime :: new ( hour, minute, second, frame, subframe, fps)
495
504
. ok_or ( err_invalid ! ( "invalid smpte time" ) ) ?)
496
505
}
506
+
497
507
pub ( crate ) fn encode ( & self ) -> [ u8 ; 5 ] {
498
508
let hour_fps = self . hour ( ) | self . fps ( ) . as_code ( ) . as_int ( ) << 5 ;
499
509
[
@@ -531,6 +541,7 @@ impl Fps {
531
541
_ => unreachable ! ( ) ,
532
542
}
533
543
}
544
+
534
545
/// Does the conversion to a 2-bit fps code.
535
546
pub ( crate ) fn as_code ( self ) -> u2 {
536
547
u2:: from ( match self {
@@ -540,6 +551,7 @@ impl Fps {
540
551
Fps :: Fps30 => 3 ,
541
552
} )
542
553
}
554
+
543
555
/// Converts an integer representing the semantic fps to an `Fps` value (ie. `24` -> `Fps24`).
544
556
pub fn from_int ( raw : u8 ) -> Option < Fps > {
545
557
Some ( match raw {
@@ -550,6 +562,7 @@ impl Fps {
550
562
_ => return None ,
551
563
} )
552
564
}
565
+
553
566
/// Get the integral approximate fps out.
554
567
pub fn as_int ( self ) -> u8 {
555
568
match self {
@@ -559,6 +572,7 @@ impl Fps {
559
572
Fps :: Fps30 => 30 ,
560
573
}
561
574
}
575
+
562
576
/// Get the actual `f32` fps out.
563
577
pub fn as_f32 ( self ) -> f32 {
564
578
match self . as_int ( ) {
0 commit comments