+static void dump_spherical(void *ctx, AVPacketSideData *sd)
+{
+ AVSphericalMapping *spherical = (AVSphericalMapping *)sd->data;
+ double yaw, pitch, roll;
+
+ if (sd->size < sizeof(*spherical)) {
+ av_log(ctx, AV_LOG_INFO, "invalid data");
+ return;
+ }
+
+ if (spherical->projection == AV_SPHERICAL_EQUIRECTANGULAR)
+ av_log(ctx, AV_LOG_INFO, "equirectangular ");
+ else if (spherical->projection == AV_SPHERICAL_CUBEMAP)
+ av_log(ctx, AV_LOG_INFO, "cubemap ");
+ else {
+ av_log(ctx, AV_LOG_WARNING, "unknown");
+ return;
+ }
+
+ yaw = ((double)spherical->yaw) / (1 << 16);
+ pitch = ((double)spherical->pitch) / (1 << 16);
+ roll = ((double)spherical->roll) / (1 << 16);
+ av_log(ctx, AV_LOG_INFO, "(%f/%f/%f) ", yaw, pitch, roll);
+}
+