|
|
|
@ -29,6 +29,7 @@ |
|
|
|
|
#include "libavutil/mathematics.h" |
|
|
|
|
#include "libavutil/avstring.h" |
|
|
|
|
#include "libavutil/replaygain.h" |
|
|
|
|
#include "libavutil/stereo3d.h" |
|
|
|
|
|
|
|
|
|
#include "avformat.h" |
|
|
|
|
|
|
|
|
@ -244,6 +245,51 @@ static void dump_replaygain(void *ctx, AVPacketSideData *sd) |
|
|
|
|
print_peak(ctx, "album peak", rg->album_peak); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void dump_stereo3d(void *ctx, AVPacketSideData *sd) |
|
|
|
|
{ |
|
|
|
|
AVStereo3D *stereo; |
|
|
|
|
|
|
|
|
|
if (sd->size < sizeof(*stereo)) { |
|
|
|
|
av_log(ctx, AV_LOG_INFO, "invalid data"); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
stereo = (AVStereo3D *)sd->data; |
|
|
|
|
|
|
|
|
|
switch (stereo->type) { |
|
|
|
|
case AV_STEREO3D_2D: |
|
|
|
|
av_log(ctx, AV_LOG_INFO, "2D"); |
|
|
|
|
break; |
|
|
|
|
case AV_STEREO3D_SIDEBYSIDE: |
|
|
|
|
av_log(ctx, AV_LOG_INFO, "side by side"); |
|
|
|
|
break; |
|
|
|
|
case AV_STEREO3D_TOPBOTTOM: |
|
|
|
|
av_log(ctx, AV_LOG_INFO, "top and bottom"); |
|
|
|
|
break; |
|
|
|
|
case AV_STEREO3D_FRAMESEQUENCE: |
|
|
|
|
av_log(ctx, AV_LOG_INFO, "frame alternate"); |
|
|
|
|
break; |
|
|
|
|
case AV_STEREO3D_CHECKERBOARD: |
|
|
|
|
av_log(ctx, AV_LOG_INFO, "checkerboard"); |
|
|
|
|
break; |
|
|
|
|
case AV_STEREO3D_LINES: |
|
|
|
|
av_log(ctx, AV_LOG_INFO, "interleaved lines"); |
|
|
|
|
break; |
|
|
|
|
case AV_STEREO3D_COLUMNS: |
|
|
|
|
av_log(ctx, AV_LOG_INFO, "interleaved columns"); |
|
|
|
|
break; |
|
|
|
|
case AV_STEREO3D_SIDEBYSIDE_QUINCUNX: |
|
|
|
|
av_log(ctx, AV_LOG_INFO, "side by side (quincunx subsampling)"); |
|
|
|
|
break; |
|
|
|
|
default: |
|
|
|
|
av_log(ctx, AV_LOG_WARNING, "unknown"); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (stereo->flags & AV_STEREO3D_FLAG_INVERT) |
|
|
|
|
av_log(ctx, AV_LOG_INFO, " (inverted)"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void dump_sidedata(void *ctx, AVStream *st, const char *indent) |
|
|
|
|
{ |
|
|
|
|
int i; |
|
|
|
@ -277,6 +323,10 @@ static void dump_sidedata(void *ctx, AVStream *st, const char *indent) |
|
|
|
|
av_log(ctx, AV_LOG_INFO, "displaymatrix: rotation of %.2f degrees", |
|
|
|
|
av_display_rotation_get((int32_t *)sd.data)); |
|
|
|
|
break; |
|
|
|
|
case AV_PKT_DATA_STEREO3D: |
|
|
|
|
av_log(ctx, AV_LOG_INFO, "stereo3d: "); |
|
|
|
|
dump_stereo3d(ctx, &sd); |
|
|
|
|
break; |
|
|
|
|
default: |
|
|
|
|
av_log(ctx, AV_LOG_WARNING, |
|
|
|
|
"unknown side data type %d (%d bytes)", sd.type, sd.size); |
|
|
|
|