X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Fdump.c;h=d9aa3afe58c5911cde37113869f68cfc3f5ef040;hb=126e96533f4526fc84fa68f3023d991622e287d3;hp=cd14625f651f007af4a82baad5b97063e07047fe;hpb=cd70ffaac8b74d88ed1460e10c7e9c02d067e3ca;p=ffmpeg diff --git a/libavformat/dump.c b/libavformat/dump.c index cd14625f651..d9aa3afe58c 100644 --- a/libavformat/dump.c +++ b/libavformat/dump.c @@ -31,6 +31,7 @@ #include "libavutil/opt.h" #include "libavutil/avstring.h" #include "libavutil/replaygain.h" +#include "libavutil/spherical.h" #include "libavutil/stereo3d.h" #include "avformat.h" @@ -330,7 +331,7 @@ static void dump_mastering_display_metadata(void *ctx, AVPacketSideData* sd) { av_log(ctx, AV_LOG_INFO, "Mastering Display Metadata, " "has_primaries:%d has_luminance:%d " "r(%5.4f,%5.4f) g(%5.4f,%5.4f) b(%5.4f %5.4f) wp(%5.4f, %5.4f) " - "min_luminance=%f, max_luminance=%f\n", + "min_luminance=%f, max_luminance=%f", metadata->has_primaries, metadata->has_luminance, av_q2d(metadata->display_primaries[0][0]), av_q2d(metadata->display_primaries[0][1]), @@ -342,6 +343,31 @@ static void dump_mastering_display_metadata(void *ctx, AVPacketSideData* sd) { av_q2d(metadata->min_luminance), av_q2d(metadata->max_luminance)); } +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); +} + static void dump_sidedata(void *ctx, AVStream *st, const char *indent) { int i; @@ -393,6 +419,10 @@ static void dump_sidedata(void *ctx, AVStream *st, const char *indent) case AV_PKT_DATA_MASTERING_DISPLAY_METADATA: dump_mastering_display_metadata(ctx, &sd); break; + case AV_PKT_DATA_SPHERICAL: + av_log(ctx, AV_LOG_INFO, "spherical: "); + dump_spherical(ctx, &sd); + break; default: av_log(ctx, AV_LOG_INFO, "unknown side data type %d (%d bytes)", sd.type, sd.size);