Rename content to metadataPayload as it is more descriptive, add clarifying comments
diff --git a/src/write.c b/src/write.c
index d804be3..adb4151 100644
--- a/src/write.c
+++ b/src/write.c
@@ -75,8 +75,8 @@
     uint16_t id;
     uint8_t type[4];
     avifCodec * codec;                    // only present on type==av01
-    avifCodecEncodeOutput * encodeOutput; // AV1 sample data for image sequences
-    avifRWData content;                   // OBU data on av01 items-based image, metadata payload for Exif/XMP
+    avifCodecEncodeOutput * encodeOutput; // AV1 sample data
+    avifRWData metadataPayload;           // Exif/XMP data
     avifBool alpha;
 
     const char * infeName;
@@ -146,7 +146,7 @@
             avifCodecDestroy(item->codec);
         }
         avifCodecEncodeOutputDestroy(item->encodeOutput);
-        avifRWDataFree(&item->content);
+        avifRWDataFree(&item->metadataPayload);
         avifArrayDestroy(&item->mdatFixups);
     }
     avifImageDestroy(data->imageMetadata);
@@ -292,20 +292,16 @@
     for (uint32_t trakItemIndex = 0; trakItemIndex < encoder->data->items.count; ++trakItemIndex) {
         avifEncoderItem * item = &encoder->data->items.item[trakItemIndex];
         if (memcmp(item->type, "av01", 4) == 0) {
+            // Skip over all non-metadata items
             continue;
         }
 
-        uint32_t contentSize = (uint32_t)item->content.size;
-        if (item->encodeOutput->samples.count > 0) {
-            contentSize = (uint32_t)item->encodeOutput->samples.sample[0].data.size;
-        }
-
-        avifRWStreamWriteU16(s, item->id);          // unsigned int(16) item_ID;
-        avifRWStreamWriteU16(s, 0);                 // unsigned int(16) data_reference_index;
-        avifRWStreamWriteU16(s, 1);                 // unsigned int(16) extent_count;
-        avifEncoderItemAddMdatFixup(item, s);       //
-        avifRWStreamWriteU32(s, 0 /* set later */); // unsigned int(offset_size*8) extent_offset;
-        avifRWStreamWriteU32(s, contentSize);       // unsigned int(length_size*8) extent_length;
+        avifRWStreamWriteU16(s, item->id);                             // unsigned int(16) item_ID;
+        avifRWStreamWriteU16(s, 0);                                    // unsigned int(16) data_reference_index;
+        avifRWStreamWriteU16(s, 1);                                    // unsigned int(16) extent_count;
+        avifEncoderItemAddMdatFixup(item, s);                          //
+        avifRWStreamWriteU32(s, 0 /* set later */);                    // unsigned int(offset_size*8) extent_offset;
+        avifRWStreamWriteU32(s, (uint32_t)item->metadataPayload.size); // unsigned int(length_size*8) extent_length;
     }
     avifRWStreamFinishBox(s, iloc);
 
@@ -412,10 +408,10 @@
             exifItem->irefToID = encoder->data->primaryItemID;
             exifItem->irefType = "cdsc";
 
-            avifRWDataRealloc(&exifItem->content, sizeof(uint32_t) + image->exif.size);
+            avifRWDataRealloc(&exifItem->metadataPayload, sizeof(uint32_t) + image->exif.size);
             exifTiffHeaderOffset = avifHTONL(exifTiffHeaderOffset);
-            memcpy(exifItem->content.data, &exifTiffHeaderOffset, sizeof(uint32_t));
-            memcpy(exifItem->content.data + sizeof(uint32_t), image->exif.data, image->exif.size);
+            memcpy(exifItem->metadataPayload.data, &exifTiffHeaderOffset, sizeof(uint32_t));
+            memcpy(exifItem->metadataPayload.data + sizeof(uint32_t), image->exif.data, image->exif.size);
         }
 
         if (image->xmp.size > 0) {
@@ -425,7 +421,7 @@
 
             xmpItem->infeContentType = xmpContentType;
             xmpItem->infeContentTypeSize = xmpContentTypeSize;
-            avifRWDataSet(&xmpItem->content, image->xmp.data, image->xmp.size);
+            avifRWDataSet(&xmpItem->metadataPayload, image->xmp.data, image->xmp.size);
         }
 
         // -----------------------------------------------------------------------
@@ -571,8 +567,16 @@
     for (uint32_t itemIndex = 0; itemIndex < encoder->data->items.count; ++itemIndex) {
         avifEncoderItem * item = &encoder->data->items.item[itemIndex];
 
-        uint32_t contentSize = (uint32_t)item->content.size;
+        uint32_t contentSize = (uint32_t)item->metadataPayload.size;
         if (item->encodeOutput->samples.count > 0) {
+            // This is choosing sample 0's size as there are two cases here:
+            // * This is a single image, in which this is correct
+            // * This is an image sequence, but this file should still be a valid single-image avif,
+            //   so there must still be a primary item pointing at a sync sample. Since the first
+            //   frame of the image sequence is guaranteed to be a sync sample, it is chosen here.
+            //
+            // TODO: Offer the ability for an user to specify which frame in the sequence should
+            //       become the primary item's image, and force that frame to be a keyframe.
             contentSize = (uint32_t)item->encodeOutput->samples.sample[0].data.size;
         }
 
@@ -922,7 +926,7 @@
     avifBoxMarker mdat = avifRWStreamWriteBox(&s, "mdat", AVIF_BOX_SIZE_TBD);
     for (uint32_t itemIndex = 0; itemIndex < encoder->data->items.count; ++itemIndex) {
         avifEncoderItem * item = &encoder->data->items.item[itemIndex];
-        if ((item->content.size == 0) && (item->encodeOutput->samples.count == 0)) {
+        if ((item->metadataPayload.size == 0) && (item->encodeOutput->samples.count == 0)) {
             continue;
         }
 
@@ -933,7 +937,7 @@
                 avifRWStreamWrite(&s, sample->data.data, sample->data.size);
             }
         } else {
-            avifRWStreamWrite(&s, item->content.data, item->content.size);
+            avifRWStreamWrite(&s, item->metadataPayload.data, item->metadataPayload.size);
         }
 
         for (uint32_t fixupIndex = 0; fixupIndex < item->mdatFixups.count; ++fixupIndex) {