From 91ab6d2d1215c9acf449bcbbc92a88842edc83f9 Mon Sep 17 00:00:00 2001
From: Luca Barbato <lu_zero@gentoo.org>
Date: Tue, 9 Oct 2018 19:23:56 +0200
Subject: [PATCH] Check for the y4m encoder presence

Unbreak encoding without producing the reconstructed video.
---
 src/bin/common.rs | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/bin/common.rs b/src/bin/common.rs
index 033bb7fd..3651cda8 100644
--- a/src/bin/common.rs
+++ b/src/bin/common.rs
@@ -96,7 +96,7 @@ pub fn parse_cli() -> (EncoderIO, EncoderConfig, usize) {
 pub fn process_frame(
   ctx: &mut Context, output_file: &mut dyn Write,
   y4m_dec: &mut y4m::Decoder<'_, Box<dyn Read>>,
-  y4m_enc: Option<&mut y4m::Encoder<'_, Box<dyn Write>>>
+  mut y4m_enc: Option<&mut y4m::Encoder<'_, Box<dyn Write>>>
 ) -> bool {
   unsafe {
     av1_rtcd();
@@ -144,8 +144,6 @@ pub fn process_frame(
     }
   };
 
-  let y4m_enc_uw = y4m_enc.unwrap();
-
   let mut has_data = true;
   while has_data {
     let pkt_wrapped = ctx.receive_packet();
@@ -153,6 +151,7 @@ pub fn process_frame(
     Ok(pkt) => {
       eprintln!("{}", pkt);
       write_ivf_frame(output_file, pkt.number as u64, pkt.data.as_ref());
+      if let Some(y4m_enc_uw) = y4m_enc.as_mut() {
       if let Some(rec) = pkt.rec {
         let pitch_y = if bit_depth > 8 { width * 2 } else { width };
         let pitch_uv = pitch_y / 2;
@@ -227,6 +226,7 @@ pub fn process_frame(
         let rec_frame = y4m::Frame::new([&rec_y, &rec_u, &rec_v], None);
         y4m_enc_uw.write_frame(&rec_frame).unwrap();
       }
+      }
     },
     _ => { has_data = false; }
     }
-- 
GitLab