From ec4fedf4164bb70794d5e8621ca1de8eef9e12c6 Mon Sep 17 00:00:00 2001
From: Moritz Bunkus <moritz@bunkus.org>
Date: Sat, 8 Dec 2012 19:10:55 +0100
Subject: [PATCH] Add more debugging options for appending

---
 src/merge/output_control.cpp | 23 ++++++++++++++++-------
 1 file changed, 16 insertions(+), 7 deletions(-)

diff --git a/src/merge/output_control.cpp b/src/merge/output_control.cpp
index 6d313c710..0e1604cb4 100644
--- a/src/merge/output_control.cpp
+++ b/src/merge/output_control.cpp
@@ -59,6 +59,7 @@
 #include <matroska/KaxVersion.h>
 
 #include "common/chapters/chapters.h"
+#include "common/debugging.h"
 #include "common/ebml.h"
 #include "common/fs_sys_helpers.h"
 #include "common/hacks.h"
@@ -189,6 +190,7 @@ int g_split_max_num_files                   = 65535;
 
 append_mode_e g_append_mode                 = APPEND_MODE_FILE_BASED;
 bool s_appending_files                      = false;
+bool s_debug_appending                      = false;
 
 bool g_stereo_mode_used                     = false;
 
@@ -624,7 +626,7 @@ set_timecode_scale() {
 
   bool debug = debugging_requested("set_timecode_scale|timecode_scale");
   mxdebug_if(debug,
-             boost::format("scale mode: %1% audio present: %2% video present: %3% highest sample rate: %4%\n")
+             boost::format("timecode_scale: %1% audio present: %2% video present: %3% highest sample rate: %4%\n")
              % (  TIMECODE_SCALE_MODE_NORMAL == g_timecode_scale_mode ? "normal"
                 : TIMECODE_SCALE_MODE_FIXED  == g_timecode_scale_mode ? "fixed"
                 : TIMECODE_SCALE_MODE_AUTO   == g_timecode_scale_mode ? "auto"
@@ -643,7 +645,7 @@ set_timecode_scale() {
 
   g_kax_cues->SetGlobalTimecodeScale(g_timecode_scale);
 
-  mxdebug_if(debug, boost::format("timecode scale: %1% max ns per cluster: %2%\n") % g_timecode_scale % g_max_ns_per_cluster);
+  mxdebug_if(debug, boost::format("timecode_scale: %1% max ns per cluster: %2%\n") % g_timecode_scale % g_max_ns_per_cluster);
 }
 
 static void
@@ -1471,7 +1473,7 @@ prepare_tags_for_rendering() {
 */
 void
 create_next_output_file() {
-  mxdebug_if(debugging_requested("splitting"), boost::format("Create next output file splitting? %1% discarding? %2%\n") % g_cluster_helper->splitting() % g_cluster_helper->discarding());
+  mxdebug_if(debugging_requested("splitting"), boost::format("splitting: Create next output file; splitting? %1% discarding? %2%\n") % g_cluster_helper->splitting() % g_cluster_helper->discarding());
 
   auto this_outfile   = g_cluster_helper->split_mode_produces_many_files() ? create_output_name() : g_outfile;
 
@@ -1783,6 +1785,13 @@ append_track(packetizer_t &ptzr,
     }
   }
 
+  if (s_debug_appending) {
+    mxdebug(boost::format("appending: reader m_max_timecode_seen %1% and ptzr to append is %2% ptzr appended to is %3% src_file.appending %4% src_file.appended_to %5% dst_file.appending %6% dst_file.appended_to %7%\n")
+            % dst_file.reader->m_max_timecode_seen % static_cast<void *>(*gptzr) % static_cast<void *>(ptzr.packetizer) % src_file.appending % src_file.appended_to % dst_file.appending % dst_file.appended_to);
+    for (auto &rep_ptzr : dst_file.reader->m_reader_packetizers)
+      mxdebug(boost::format("  ptzr @ %1% connected_to %2% max_timecode_seen %3%\n") % static_cast<void *>(rep_ptzr) % rep_ptzr->m_connected_to % rep_ptzr->m_max_timecode_seen);
+  }
+
   mxinfo(boost::format(Y("Appending track %1% from file no. %2% ('%3%') to track %4% from file no. %5% ('%6%').\n"))
          % (*gptzr)->m_ti.m_id % amap.src_file_id % (*gptzr)->m_ti.m_fname % ptzr.packetizer->m_ti.m_id % amap.dst_file_id % ptzr.packetizer->m_ti.m_fname);
 
@@ -1850,14 +1859,12 @@ append_track(packetizer_t &ptzr,
   }
 
   if ((APPEND_MODE_FILE_BASED == g_append_mode) || (ptzr.packetizer->get_track_type() == track_subtitle)) {
-    mxverb(2, boost::format("append_track: new timecode_adjustment for append_mode == FILE_BASED or subtitle track: %1% for %2%\n")
-           % format_timecode(timecode_adjustment) % ptzr.packetizer->m_ti.m_id);
+    mxdebug_if(s_debug_appending, boost::format("appending: new timecode_adjustment for append_mode == FILE_BASED or subtitle track: %1% for %2%\n") % format_timecode(timecode_adjustment) % ptzr.packetizer->m_ti.m_id);
     // The actual connection.
     ptzr.packetizer->connect(old_packetizer, timecode_adjustment);
 
   } else {
-    mxverb(2, boost::format("append_track: new timecode_adjustment for append_mode == TRACK_BASED and NON subtitle track: %1% for %2%\n")
-           % format_timecode(timecode_adjustment) % ptzr.packetizer->m_ti.m_id);
+    mxdebug_if(s_debug_appending, boost::format("appending: new timecode_adjustment for append_mode == TRACK_BASED and NON subtitle track: %1% for %2%\n") % format_timecode(timecode_adjustment) % ptzr.packetizer->m_ti.m_id);
     // The actual connection.
     ptzr.packetizer->connect(old_packetizer);
   }
@@ -2019,6 +2026,8 @@ discard_queued_packets() {
 */
 void
 main_loop() {
+  s_debug_appending = debugging_requested("append|appending");
+
   // Let's go!
   while (1) {
     debug_run_main_loop_hooks();