Implement out-of-band metadata images.
This saves a lot of HIDL bandwidth, by not including raw image data in
metadata vector.
Bug: b/63702941
Test: VTS
Change-Id: I73d5218095e4af34c58da8dcfc520abd4cb46c26
diff --git a/broadcastradio/1.1/default/VirtualProgram.cpp b/broadcastradio/1.1/default/VirtualProgram.cpp
index babf0d8..1f3b693 100644
--- a/broadcastradio/1.1/default/VirtualProgram.cpp
+++ b/broadcastradio/1.1/default/VirtualProgram.cpp
@@ -17,6 +17,8 @@
#include <Utils.h>
+#include "resources.h"
+
namespace android {
namespace hardware {
namespace broadcastradio {
@@ -27,6 +29,23 @@
using V1_0::MetadataKey;
using V1_0::MetadataType;
+// TODO (b/36864090): inject this data in a more elegant way
+static int gHalVersion = 2; // 1 = 1.0, 2 = 1.1
+
+void setCompatibilityLevel(int halversion) {
+ gHalVersion = halversion;
+}
+
+static MetaData createDemoBitmap(MetadataKey key) {
+ MetaData bmp = {MetadataType::INT, key, resources::demoPngId, {}, {}, {}};
+ if (gHalVersion < 2) {
+ bmp.type = MetadataType::RAW;
+ bmp.intValue = 0;
+ bmp.rawValue = std::vector<uint8_t>(resources::demoPng, std::end(resources::demoPng));
+ }
+ return bmp;
+}
+
VirtualProgram::operator ProgramInfo() const {
ProgramInfo info11 = {};
auto& info10 = info11.base;
@@ -42,6 +61,8 @@
{MetadataType::TEXT, MetadataKey::RDS_PS, {}, {}, programName, {}},
{MetadataType::TEXT, MetadataKey::TITLE, {}, {}, songTitle, {}},
{MetadataType::TEXT, MetadataKey::ARTIST, {}, {}, songArtist, {}},
+ createDemoBitmap(MetadataKey::ICON),
+ createDemoBitmap(MetadataKey::ART),
});
return info11;