On 11/15/2016 1:56 PM, Vittorio Giovara wrote: > Signed-off-by: Vittorio Giovara <vittorio.giov...@gmail.com> > --- > Updated to use int32 for rotation. > Please CC. > Vittorio [...]
> diff --git a/libavformat/dump.c b/libavformat/dump.c > index cd14625..2dd7a0a 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" > @@ -342,6 +343,37 @@ 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)) { sizeof(AVSphericalMapping) is explicitly not part of the ABI, and this file is in libavformat. i know Stereo3D, Mastering Display, and probably other side data types are doing the same, so maybe something like av_{stereo3d,spherical}_size() should be added to all of them in order to solve this. > + 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); > + > + if (spherical->left_offset || spherical->top_offset || > + spherical->right_offset || spherical->bottom_offset) > + av_log(ctx, AV_LOG_INFO, "[%d-%d-%d-%d] ", > + spherical->left_offset, spherical->top_offset, > + spherical->right_offset, spherical->bottom_offset); > +} > + > static void dump_sidedata(void *ctx, AVStream *st, const char *indent) > { > int i; > @@ -393,6 +425,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); > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel