Say which placement strategy a title got
Whether a title was placed by the seam plan or fell back to inference is the single most useful fact about a branched rip, and it was invisible. The two looked identical in the output, so telling them apart meant rebuilding and re-ripping — which is exactly what it cost to find that most branched discs were silently on the inference path. Log both flags once at plan construction, and log each refusal with the reason that caused it.
This commit is contained in:
@@ -213,6 +213,11 @@ impl SeamPlan {
|
|||||||
let in_ns = mpls_ticks_to_ns(c.in_time);
|
let in_ns = mpls_ticks_to_ns(c.in_time);
|
||||||
let out_ns = mpls_ticks_to_ns(c.out_time);
|
let out_ns = mpls_ticks_to_ns(c.out_time);
|
||||||
if out_ns <= in_ns {
|
if out_ns <= in_ns {
|
||||||
|
tracing::info!(
|
||||||
|
target: "freemkv::mux",
|
||||||
|
in_ns, out_ns,
|
||||||
|
"no seam plan: a clip's marks are empty or inverted"
|
||||||
|
);
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
// Inferring a clip from a timestamp assumes the marks are points on
|
// Inferring a clip from a timestamp assumes the marks are points on
|
||||||
@@ -240,6 +245,11 @@ impl SeamPlan {
|
|||||||
&& in_ns <= prev.in_ns
|
&& in_ns <= prev.in_ns
|
||||||
{
|
{
|
||||||
if !spans_trusted {
|
if !spans_trusted {
|
||||||
|
tracing::info!(
|
||||||
|
target: "freemkv::mux",
|
||||||
|
"no seam plan: the clips restart their clock and the feed \
|
||||||
|
spans cannot be trusted, so nothing can place them"
|
||||||
|
);
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
marks_orderable = false;
|
marks_orderable = false;
|
||||||
@@ -252,6 +262,20 @@ impl SeamPlan {
|
|||||||
});
|
});
|
||||||
cum = cum.saturating_add(out_ns - in_ns);
|
cum = cum.saturating_add(out_ns - in_ns);
|
||||||
}
|
}
|
||||||
|
// Which of the two placement strategies a title got is the single most
|
||||||
|
// useful fact about a branched rip, and until now it was invisible: a
|
||||||
|
// title that fell back to inference looked exactly like one the plan
|
||||||
|
// handled, and telling them apart meant rebuilding and re-ripping.
|
||||||
|
// Both flags, once, at plan construction.
|
||||||
|
tracing::info!(
|
||||||
|
target: "freemkv::mux",
|
||||||
|
clips = out.len(),
|
||||||
|
spans_trusted,
|
||||||
|
marks_orderable,
|
||||||
|
total_ns = cum,
|
||||||
|
"seam plan built"
|
||||||
|
);
|
||||||
|
|
||||||
Some(Self {
|
Some(Self {
|
||||||
spans_trusted,
|
spans_trusted,
|
||||||
marks_orderable,
|
marks_orderable,
|
||||||
|
|||||||
Reference in New Issue
Block a user