From e11a346ae2d50ea8211c875f2e175793828c0709 Mon Sep 17 00:00:00 2001
From: Andrew Randrianasulu <randrianasulu@gmail.com>
Date: Fri, 17 Dec 2021 02:56:49 +0300
Subject: [PATCH 10/20] EXPERIMENTAL: add variable chapter interval to bdwrite

---
 cinelerra-5.1/cinelerra/bdwrite.C | 21 +++++++++++++++------
 1 file changed, 15 insertions(+), 6 deletions(-)

diff --git a/cinelerra-5.1/cinelerra/bdwrite.C b/cinelerra-5.1/cinelerra/bdwrite.C
index b184e0c6..a2131251 100644
--- a/cinelerra-5.1/cinelerra/bdwrite.C
+++ b/cinelerra-5.1/cinelerra/bdwrite.C
@@ -1219,7 +1219,7 @@ public:
   ArrayList<mpls_pl *> pl;
 
   void add_movie(uint32_t *ops, int n);
-  int compose();
+  int compose(int ch_interval);
   int write(char *fn);
 
   Media() { path = 0;  filename[0] = 0; }
@@ -2805,7 +2805,7 @@ Media::add_movie(uint32_t *ops, int n)
 }
 
 int
-Media::compose()
+Media::compose(int ch_interval)
 {
 // movie
   bs.init();
@@ -2978,8 +2978,11 @@ Media::compose()
       }
       pp->play_item.append(pi);
     }
-// chapter marks every ch_duration ticks
-    int64_t ch_duration = 45000 * 60*5;
+// chapter marks every ch_duration ticks, default 5 min
+    int PCR_FREQ = 45000;
+    if (ch_interval == 0)
+    ch_interval = 60*5;
+    int64_t ch_duration = PCR_FREQ * ch_interval;
     int64_t mrktm = ch_duration;
     int64_t plytm = 0;
     int pmark = 0, pitem = 0;
@@ -3156,8 +3159,14 @@ main(int ac, char **av)
   //av_log_set_level(AV_LOG_DEBUG);
   Media media;
   media_info *mp = 0;
+  int start, chapter_every_n_sec;
+  
+  if (strcmp (av[2], "c")) {
+  chapter_every_n_sec = optarg[0]; start = 3; }
+  else
+  start = 2;
 
-  for( int ii=2; ii<ac; ++ii ) {
+  for( int ii=start; ii<ac; ++ii ) {
     char *ap = av[ii];
     // any dash seq followed by number sets curr title pgm_pid
     // single dash only sets title pgm_pid
@@ -3188,7 +3197,7 @@ main(int ac, char **av)
 
   if( mp ) mp->brk = 1;
 
-  if( media.compose() ) {
+  if( media.compose(chapter_every_n_sec) ) {
     fprintf(stderr, "cant compose media\n");
     return 1;
   }
-- 
2.34.1

