diff --git a/src/api.rs b/src/api.rs
index 6579eb5c46107c29407cba4a96099e00d27cd49e..d8e2a7165e3d77617fe785fb4940417d572d7aa7 100644
--- a/src/api.rs
+++ b/src/api.rs
@@ -69,7 +69,14 @@ pub enum EncoderStatus {
 pub struct Packet {
   pub data: Vec<u8>,
   pub rec: Frame,
-  pub number: usize
+  pub number: usize,
+  pub frame_type: FrameType
+}
+
+impl fmt::Display for Packet {
+  fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+    write!(f, "Frame {} - {} - {} bytes", self.number, self.frame_type, self.data.len())
+  }
 }
 
 impl Context {
@@ -139,7 +146,7 @@ impl Context {
 
       update_rec_buffer(&mut self.fi, fs);
 
-      Ok(Packet { data, rec, number })
+      Ok(Packet { data, rec, number, frame_type: self.fi.frame_type })
     } else {
       unimplemented!("Flushing not implemented")
     }
diff --git a/src/bin/common.rs b/src/bin/common.rs
index d43038ab5c072a7d5b5f2b1ec377cc9348d18353..fa3739bd934f4ef1cbbc07ad71b3a96c54780fa6 100644
--- a/src/bin/common.rs
+++ b/src/bin/common.rs
@@ -126,10 +126,9 @@ pub fn process_frame(ctx: &mut Context,
                 _ => panic! ("unknown input bit depth!"),
             }
 
-            eprintln!("{}", ctx);
             let _ = ctx.send_frame(input);
-
             let pkt = ctx.receive_packet().unwrap();
+            eprintln!("{}", pkt);
             write_ivf_frame(output_file, pkt.number as u64, pkt.data.as_ref());
             if let Some(mut y4m_enc) = y4m_enc {
                 let pitch_y = if bit_depth > 8 {