diff --git a/y4menc.c b/y4menc.c
index 8321b43..8b1c95e 100644
--- a/y4menc.c
+++ b/y4menc.c
@@ -10,21 +10,18 @@
 
 #include "./y4menc.h"
 
-void y4m_write_file_header(FILE *file, int width, int height,
-                           const struct VpxRational *framerate,
-                           vpx_img_fmt_t fmt) {
-  const char *color = fmt == VPX_IMG_FMT_444A ? "C444alpha\n" :
-                      fmt == VPX_IMG_FMT_I444 ? "C444\n" :
-                      fmt == VPX_IMG_FMT_I422 ? "C422\n" :
-                      "C420jpeg\n";
+int y4m_write_file_header(char *buf, size_t len, int width, int height,
+                          const struct VpxRational *framerate,
+                          vpx_img_fmt_t fmt) {
+  const char *const color = fmt == VPX_IMG_FMT_444A ? "C444alpha\n" :
+                            fmt == VPX_IMG_FMT_I444 ? "C444\n" :
+                            fmt == VPX_IMG_FMT_I422 ? "C422\n" :
+                            "C420jpeg\n";
 
-  // Note: We can't output an aspect ratio here because IVF doesn't
-  // store one, and neither does VP8.
-  // That will have to wait until these tools support WebM natively.*/
-  fprintf(file, "YUV4MPEG2 W%u H%u F%u:%u I%c %s", width, height,
-          framerate->numerator, framerate->denominator, 'p', color);
+  return snprintf(buf, len, "YUV4MPEG2 W%u H%u F%u:%u I%c %s", width, height,
+                  framerate->numerator, framerate->denominator, 'p', color);
 }
 
-void y4m_write_frame_header(FILE *file) {
-  fprintf(file, "FRAME\n");
+int y4m_write_frame_header(char *buf, size_t len) {
+  return snprintf(buf, len, "FRAME\n");
 }
