diff --git a/libavformat/dump.c b/libavformat/dump.c index 9a7035c323..6355b99f41 100644 --- a/libavformat/dump.c +++ b/libavformat/dump.c @@ -293,6 +293,49 @@ static void dump_stereo3d(void *ctx, AVPacketSideData *sd) av_log(ctx, AV_LOG_INFO, " (inverted)"); } +static void dump_audioservicetype(void *ctx, AVPacketSideData *sd) +{ + enum AVAudioServiceType *ast = (enum AVAudioServiceType *)sd->data; + + if (sd->size < sizeof(*ast)) { + av_log(ctx, AV_LOG_INFO, "invalid data"); + return; + } + + switch (*ast) { + case AV_AUDIO_SERVICE_TYPE_MAIN: + av_log(ctx, AV_LOG_INFO, "main"); + break; + case AV_AUDIO_SERVICE_TYPE_EFFECTS: + av_log(ctx, AV_LOG_INFO, "effects"); + break; + case AV_AUDIO_SERVICE_TYPE_VISUALLY_IMPAIRED: + av_log(ctx, AV_LOG_INFO, "visually impaired"); + break; + case AV_AUDIO_SERVICE_TYPE_HEARING_IMPAIRED: + av_log(ctx, AV_LOG_INFO, "hearing impaired"); + break; + case AV_AUDIO_SERVICE_TYPE_DIALOGUE: + av_log(ctx, AV_LOG_INFO, "dialogue"); + break; + case AV_AUDIO_SERVICE_TYPE_COMMENTARY: + av_log(ctx, AV_LOG_INFO, "comentary"); + break; + case AV_AUDIO_SERVICE_TYPE_EMERGENCY: + av_log(ctx, AV_LOG_INFO, "emergency"); + break; + case AV_AUDIO_SERVICE_TYPE_VOICE_OVER: + av_log(ctx, AV_LOG_INFO, "voice over"); + break; + case AV_AUDIO_SERVICE_TYPE_KARAOKE: + av_log(ctx, AV_LOG_INFO, "karaoke"); + break; + default: + av_log(ctx, AV_LOG_WARNING, "unknown"); + break; + } +} + static void dump_sidedata(void *ctx, AVStream *st, const char *indent) { int i; @@ -330,6 +373,10 @@ static void dump_sidedata(void *ctx, AVStream *st, const char *indent) av_log(ctx, AV_LOG_INFO, "stereo3d: "); dump_stereo3d(ctx, &sd); break; + case AV_PKT_DATA_AUDIO_SERVICE_TYPE: + av_log(ctx, AV_LOG_INFO, "audio service type: "); + dump_audioservicetype(ctx, &sd); + break; default: av_log(ctx, AV_LOG_WARNING, "unknown side data type %d (%d bytes)", sd.type, sd.size);