+
+ switch (sd->type) {
+#if HAVE_BIGENDIAN
+ uint8_t bswap_buf[FFMAX(sizeof(AVCPBProperties),
+ sizeof(AVProducerReferenceTime))];
+ case AV_PKT_DATA_PALETTE:
+ case AV_PKT_DATA_REPLAYGAIN:
+ case AV_PKT_DATA_DISPLAYMATRIX:
+ case AV_PKT_DATA_STEREO3D:
+ case AV_PKT_DATA_AUDIO_SERVICE_TYPE:
+ case AV_PKT_DATA_FALLBACK_TRACK:
+ case AV_PKT_DATA_MASTERING_DISPLAY_METADATA:
+ case AV_PKT_DATA_SPHERICAL:
+ case AV_PKT_DATA_CONTENT_LIGHT_LEVEL:
+ case AV_PKT_DATA_S12M_TIMECODE:
+ for (int j = 0; j < sd->size / 4; j++) {
+ uint8_t buf[4];
+ AV_WL32(buf, AV_RB32(sd->data + 4 * j));
+ side_data_crc = av_adler32_update(side_data_crc, buf, 4);
+ }
+ break;
+ case AV_PKT_DATA_CPB_PROPERTIES:
+#define BSWAP(struct, field) bswap(bswap_buf, offsetof(struct, field), sizeof(((struct){0}).field))
+ if (sd->size == sizeof(AVCPBProperties)) {
+ memcpy(bswap_buf, sd->data, sizeof(AVCPBProperties));
+ data = bswap_buf;
+ BSWAP(AVCPBProperties, max_bitrate);
+ BSWAP(AVCPBProperties, min_bitrate);
+ BSWAP(AVCPBProperties, avg_bitrate);
+ BSWAP(AVCPBProperties, buffer_size);
+ BSWAP(AVCPBProperties, vbv_delay);
+ }
+ goto pod;
+ case AV_PKT_DATA_PRFT:
+ if (sd->size == sizeof(AVProducerReferenceTime)) {
+ memcpy(bswap_buf, sd->data, sizeof(AVProducerReferenceTime));
+ data = bswap_buf;
+ BSWAP(AVProducerReferenceTime, wallclock);
+ BSWAP(AVProducerReferenceTime, flags);