#include "libavutil/intreadwrite.h"
#include "libavutil/log.h"
#include "libavutil/mastering_display_metadata.h"
+#include "libavutil/dovi_meta.h"
#include "libavutil/mathematics.h"
#include "libavutil/opt.h"
#include "libavutil/avstring.h"
return;
fail:
- av_log(ctx, AV_LOG_INFO, "unknown param");
+ av_log(ctx, AV_LOG_ERROR, "unknown param");
}
/* replaygain side data*/
AVReplayGain *rg;
if (sd->size < sizeof(*rg)) {
- av_log(ctx, AV_LOG_INFO, "invalid data");
+ av_log(ctx, AV_LOG_ERROR, "invalid data");
return;
}
rg = (AVReplayGain*)sd->data;
AVStereo3D *stereo;
if (sd->size < sizeof(*stereo)) {
- av_log(ctx, AV_LOG_INFO, "invalid data");
+ av_log(ctx, AV_LOG_ERROR, "invalid data");
return;
}
enum AVAudioServiceType *ast = (enum AVAudioServiceType *)sd->data;
if (sd->size < sizeof(*ast)) {
- av_log(ctx, AV_LOG_INFO, "invalid data");
+ av_log(ctx, AV_LOG_ERROR, "invalid data");
return;
}
av_log(ctx, AV_LOG_INFO, "dialogue");
break;
case AV_AUDIO_SERVICE_TYPE_COMMENTARY:
- av_log(ctx, AV_LOG_INFO, "comentary");
+ av_log(ctx, AV_LOG_INFO, "commentary");
break;
case AV_AUDIO_SERVICE_TYPE_EMERGENCY:
av_log(ctx, AV_LOG_INFO, "emergency");
AVCPBProperties *cpb = (AVCPBProperties *)sd->data;
if (sd->size < sizeof(*cpb)) {
- av_log(ctx, AV_LOG_INFO, "invalid data");
+ av_log(ctx, AV_LOG_ERROR, "invalid data");
return;
}
av_log(ctx, AV_LOG_INFO,
- "bitrate max/min/avg: %d/%d/%d buffer size: %d vbv_delay: %"PRId64,
+#if FF_API_UNSANITIZED_BITRATES
+ "bitrate max/min/avg: %d/%d/%d buffer size: %d ",
+#else
+ "bitrate max/min/avg: %"PRId64"/%"PRId64"/%"PRId64" buffer size: %d ",
+#endif
cpb->max_bitrate, cpb->min_bitrate, cpb->avg_bitrate,
- cpb->buffer_size,
- cpb->vbv_delay);
+ cpb->buffer_size);
+ if (cpb->vbv_delay == UINT64_MAX)
+ av_log(ctx, AV_LOG_INFO, "vbv_delay: N/A");
+ else
+ av_log(ctx, AV_LOG_INFO, "vbv_delay: %"PRIu64"", cpb->vbv_delay);
}
static void dump_mastering_display_metadata(void *ctx, AVPacketSideData* sd) {
double yaw, pitch, roll;
if (sd->size < sizeof(*spherical)) {
- av_log(ctx, AV_LOG_INFO, "invalid data");
+ av_log(ctx, AV_LOG_ERROR, "invalid data");
return;
}
}
}
+static void dump_dovi_conf(void *ctx, AVPacketSideData* sd)
+{
+ AVDOVIDecoderConfigurationRecord *dovi = (AVDOVIDecoderConfigurationRecord *)sd->data;
+
+ av_log(ctx, AV_LOG_INFO, "version: %d.%d, profile: %d, level: %d, "
+ "rpu flag: %d, el flag: %d, bl flag: %d, compatibility id: %d",
+ dovi->dv_version_major, dovi->dv_version_minor,
+ dovi->dv_profile, dovi->dv_level,
+ dovi->rpu_present_flag,
+ dovi->el_present_flag,
+ dovi->bl_present_flag,
+ dovi->dv_bl_signal_compatibility_id);
+}
+
static void dump_sidedata(void *ctx, AVStream *st, const char *indent)
{
int i;
case AV_PKT_DATA_CONTENT_LIGHT_LEVEL:
dump_content_light_metadata(ctx, &sd);
break;
+ case AV_PKT_DATA_ICC_PROFILE:
+ av_log(ctx, AV_LOG_INFO, "ICC Profile");
+ break;
+ case AV_PKT_DATA_DOVI_CONF:
+ av_log(ctx, AV_LOG_INFO, "DOVI configuration record: ");
+ dump_dovi_conf(ctx, &sd);
+ break;
default:
av_log(ctx, AV_LOG_INFO,
"unknown side data type %d (%d bytes)", sd.type, sd.size);
av_log(NULL, AV_LOG_INFO, " (visual impaired)");
if (st->disposition & AV_DISPOSITION_CLEAN_EFFECTS)
av_log(NULL, AV_LOG_INFO, " (clean effects)");
+ if (st->disposition & AV_DISPOSITION_ATTACHED_PIC)
+ av_log(NULL, AV_LOG_INFO, " (attached pic)");
+ if (st->disposition & AV_DISPOSITION_TIMED_THUMBNAILS)
+ av_log(NULL, AV_LOG_INFO, " (timed thumbnails)");
+ if (st->disposition & AV_DISPOSITION_CAPTIONS)
+ av_log(NULL, AV_LOG_INFO, " (captions)");
if (st->disposition & AV_DISPOSITION_DESCRIPTIONS)
av_log(NULL, AV_LOG_INFO, " (descriptions)");
+ if (st->disposition & AV_DISPOSITION_METADATA)
+ av_log(NULL, AV_LOG_INFO, " (metadata)");
if (st->disposition & AV_DISPOSITION_DEPENDENT)
av_log(NULL, AV_LOG_INFO, " (dependent)");
if (st->disposition & AV_DISPOSITION_STILL_IMAGE)