@@ -516,6 +516,70 @@ def gen_hevc_pict_lp_parameters(spec, profiles):
516
516
params = gen_hevc_pict_lp_variants (spec , profiles )
517
517
return keys , params
518
518
519
+ def gen_hevc_seek_variants (spec , profiles ):
520
+ for case , params in spec .items ():
521
+ for variant in copy .deepcopy (params .get ("variants" , dict ()).get ("seek" , [])):
522
+ uprofile = variant .get ("profile" , None )
523
+ cprofiles = [uprofile ] if uprofile else profiles
524
+ gop = variant .get ("gop" , None )
525
+ bframes = variant .get ("bframes" , None )
526
+ bitrate = variant .get ("bitrate" , None )
527
+ qp = variant .get ("qp" , None )
528
+ fps = variant .get ("fps" , 25 )
529
+ rcmode = variant ["rcmode" ]
530
+ seek = variant ["seek" ]
531
+ if "cqp" == rcmode :
532
+ assert bitrate == None , "We shouldn't set a value to bitrate for CQP."
533
+ variant .update (maxrate = None )
534
+ else :
535
+ assert qp == None , "We shouldn't set a value to qp for CBR/VBR."
536
+ if "cbr" == rcmode :
537
+ variant .update (maxrate = bitrate )
538
+ elif "vbr" == rcmode :
539
+ variant .update (maxrate = bitrate * 2 )
540
+ for profile in cprofiles :
541
+ yield [
542
+ case , gop , bframes , bitrate , qp , variant ["maxrate" ],
543
+ profile , rcmode , seek , fps ,
544
+ ]
545
+
546
+ def gen_hevc_seek_parameters (spec , profiles ):
547
+ keys = ("case" , "gop" , "bframes" , "bitrate" , "qp" , "maxrate" , "profile" , "rcmode" , "seek" , "fps" )
548
+ params = gen_hevc_seek_variants (spec , profiles )
549
+ return keys , params
550
+
551
+ def gen_hevc_seek_lp_variants (spec , profiles ):
552
+ for case , params in spec .items ():
553
+ for variant in copy .deepcopy (params .get ("variants" , dict ()).get ("seek_lp" , [])):
554
+ uprofile = variant .get ("profile" , None )
555
+ cprofiles = [uprofile ] if uprofile else profiles
556
+ gop = variant .get ("gop" , None )
557
+ bframes = variant .get ("bframes" , None )
558
+ bitrate = variant .get ("bitrate" , None )
559
+ qp = variant .get ("qp" , None )
560
+ fps = variant .get ("fps" , 25 )
561
+ rcmode = variant ["rcmode" ]
562
+ seek = variant ["seek" ]
563
+ if "cqp" == rcmode :
564
+ assert bitrate == None , "We shouldn't set a value to bitrate for CQP."
565
+ variant .update (maxrate = None )
566
+ else :
567
+ assert qp == None , "We shouldn't set a value to qp for CBR/VBR."
568
+ if "cbr" == rcmode :
569
+ variant .update (maxrate = bitrate )
570
+ elif "vbr" == rcmode :
571
+ variant .update (maxrate = bitrate * 2 )
572
+ for profile in cprofiles :
573
+ yield [
574
+ case , gop , bframes , bitrate , qp , variant ["maxrate" ],
575
+ profile , rcmode , seek , fps ,
576
+ ]
577
+
578
+ def gen_hevc_seek_lp_parameters (spec , profiles ):
579
+ keys = ("case" , "gop" , "bframes" , "bitrate" , "qp" , "maxrate" , "profile" , "rcmode" , "seek" , "fps" )
580
+ params = gen_hevc_seek_lp_variants (spec , profiles )
581
+ return keys , params
582
+
519
583
gen_hevc_cqp_parameters = gen_avc_cqp_parameters
520
584
gen_hevc_cbr_parameters = gen_avc_cbr_parameters
521
585
gen_hevc_vbr_parameters = gen_avc_vbr_parameters
0 commit comments