From 575c277d7f49ed2ae0a3033a4f2cac627e2c02e6 Mon Sep 17 00:00:00 2001 From: Daniel Bonnevier Date: Mon, 26 May 2014 11:42:41 +0200 Subject: [PATCH] Return bits per sample and sample rate as metadata Makes it possible to retrieve bits per sample and sample rate by metadata retriever. Bug: 112986969 Test: Check if sample rate and bits per sample can be retrieved Change-Id: Iaefb0ad51c08a5abb4ba60c5eed50697c78fa70b --- .../libmedia/include/media/mediametadataretriever.h | 2 ++ .../libstagefright/StagefrightMetadataRetriever.cpp | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/media/libmedia/include/media/mediametadataretriever.h b/media/libmedia/include/media/mediametadataretriever.h index 1e5fa07d38..d29e97da31 100644 --- a/media/libmedia/include/media/mediametadataretriever.h +++ b/media/libmedia/include/media/mediametadataretriever.h @@ -71,6 +71,8 @@ enum { METADATA_KEY_COLOR_STANDARD = 35, METADATA_KEY_COLOR_TRANSFER = 36, METADATA_KEY_COLOR_RANGE = 37, + METADATA_KEY_SAMPLERATE = 38, + METADATA_KEY_BITS_PER_SAMPLE = 39, // Add more here... }; diff --git a/media/libstagefright/StagefrightMetadataRetriever.cpp b/media/libstagefright/StagefrightMetadataRetriever.cpp index 20aa4def17..84a641fc1a 100644 --- a/media/libstagefright/StagefrightMetadataRetriever.cpp +++ b/media/libstagefright/StagefrightMetadataRetriever.cpp @@ -550,6 +550,19 @@ void StagefrightMetadataRetriever::parseMetaData() { if (!trackMeta->findInt32(kKeyBitRate, &audioBitrate)) { audioBitrate = -1; } + + int32_t bitsPerSample = -1; + int32_t sampleRate = -1; + trackMeta->findInt32(kKeyBitsPerSample, &bitsPerSample); + trackMeta->findInt32(kKeySampleRate, &sampleRate); + if (bitsPerSample >= 0) { + sprintf(tmp, "%d", bitsPerSample); + mMetaData.add(METADATA_KEY_BITS_PER_SAMPLE, String8(tmp)); + } + if (sampleRate >= 0) { + sprintf(tmp, "%d", sampleRate); + mMetaData.add(METADATA_KEY_SAMPLERATE, String8(tmp)); + } } else if (!hasVideo && !strncasecmp("video/", mime, 6)) { hasVideo = true;