static gboolean
atoms_recov_write_ftyp_info (FILE * f, AtomFTYP * ftyp, GstBuffer * prefix)
{
  guint8 *data = NULL;
  guint64 offset = 0;
  guint64 size = 0;

  if (prefix) {
    GstMapInfo map;

    gst_buffer_map (prefix, &map, GST_MAP_READ);
    if (fwrite (map.data, 1, map.size, f) != map.size) {
      gst_buffer_unmap (prefix, &map);
      return FALSE;
    }
    gst_buffer_unmap (prefix, &map);
  }
  if (!atom_ftyp_copy_data (ftyp, &data, &size, &offset)) {
    return FALSE;
  }
  if (fwrite (data, 1, offset, f) != offset) {
    g_free (data);
    return FALSE;
  }
  g_free (data);
  return TRUE;
}
static gboolean
atoms_recov_write_ftyp_info (FILE * f, AtomFTYP * ftyp, GstBuffer * prefix)
{
  guint8 *data = NULL;
  guint64 offset = 0;
  guint64 size = 0;

  if (prefix) {
    if (fwrite (GST_BUFFER_DATA (prefix), 1, GST_BUFFER_SIZE (prefix), f) !=
        GST_BUFFER_SIZE (prefix)) {
      return FALSE;
    }
  }
  if (!atom_ftyp_copy_data (ftyp, &data, &size, &offset)) {
    return FALSE;
  }
  if (fwrite (data, 1, offset, f) != offset) {
    g_free (data);
    return FALSE;
  }
  g_free (data);
  return TRUE;
}