From e2d62a62a43f1b5e3328f843957f8e36650d5ac8 Mon Sep 17 00:00:00 2001 From: whatdoineed2do/Ray Date: Fri, 7 Jun 2019 09:54:11 +0100 Subject: [PATCH] [scan] extract 'channels' from (files) audio and type/bitrate/samplerate/channels from streams --- src/library/filescanner.c | 4 ++++ src/library/filescanner_ffmpeg.c | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/library/filescanner.c b/src/library/filescanner.c index 56896fb4..b808991b 100644 --- a/src/library/filescanner.c +++ b/src/library/filescanner.c @@ -1677,6 +1677,10 @@ map_media_file_to_queue_item(struct db_queue_item *queue_item, struct media_file queue_item->track = mfi->track; queue_item->disc = mfi->disc; //queue_item->artwork_url + queue_item->type = safe_strdup(mfi->type); + queue_item->channels = mfi->channels; + queue_item->samplerate = mfi->samplerate; + queue_item->bitrate = mfi->bitrate; } static int diff --git a/src/library/filescanner_ffmpeg.c b/src/library/filescanner_ffmpeg.c index 01540b9d..1ccb6914 100644 --- a/src/library/filescanner_ffmpeg.c +++ b/src/library/filescanner_ffmpeg.c @@ -373,6 +373,7 @@ scan_metadata_ffmpeg(const char *file, struct media_file_info *mfi) char *path; int mdcount; int sample_rate; + int channels; int i; int ret; @@ -442,6 +443,7 @@ scan_metadata_ffmpeg(const char *file, struct media_file_info *mfi) codec_id = ctx->streams[i]->codecpar->codec_id; sample_rate = ctx->streams[i]->codecpar->sample_rate; sample_fmt = ctx->streams[i]->codecpar->format; + channels = ctx->streams[i]->codecpar->channels; switch (codec_type) { case AVMEDIA_TYPE_VIDEO: @@ -478,6 +480,7 @@ scan_metadata_ffmpeg(const char *file, struct media_file_info *mfi) mfi->bits_per_sample = 8 * av_get_bytes_per_sample(sample_fmt); if (mfi->bits_per_sample == 0) mfi->bits_per_sample = av_get_bits_per_sample(codec_id); + mfi->channels = channels; } break; @@ -503,7 +506,7 @@ scan_metadata_ffmpeg(const char *file, struct media_file_info *mfi) else if (ctx->duration > AV_TIME_BASE) /* guesstimate */ mfi->bitrate = ((mfi->file_size * 8) / (ctx->duration / AV_TIME_BASE)) / 1000; - DPRINTF(E_DBG, L_SCAN, "Duration %d ms, bitrate %d kbps\n", mfi->song_length, mfi->bitrate); + DPRINTF(E_DBG, L_SCAN, "Duration %d ms, bitrate %d kbps, samplerate %d channels %d\n", mfi->song_length, mfi->bitrate, mfi->samplerate, mfi->channels); /* Try to extract ICY metadata if http stream */ if (mfi->data_kind == DATA_KIND_HTTP)