From b4c6a2199c28753c49cabe668066f915fd22ad6c Mon Sep 17 00:00:00 2001
From: philippegorley <philippe.gorley@savoirfairelinux.com>
Date: Tue, 5 Jun 2018 14:24:43 -0400
Subject: [PATCH] encoder: add file metadata

Allows title and description to be specified when muxing to a file.

Change-Id: Ie48c185a0177e09872867520ab1aabfddeacbb8a
Reviewed-by: Sebastien Blin <sebastien.blin@savoirfairelinux.com>
---
 src/media/media_encoder.cpp                | 6 ++++++
 test/unitTest/media/test_media_encoder.cpp | 2 ++
 2 files changed, 8 insertions(+)

diff --git a/src/media/media_encoder.cpp b/src/media/media_encoder.cpp
index 56c4046aa7..91f3ab05e8 100644
--- a/src/media/media_encoder.cpp
+++ b/src/media/media_encoder.cpp
@@ -160,6 +160,12 @@ MediaEncoder::openFileOutput(const std::string& filename, std::map<std::string,
 {
     avformat_free_context(outputCtx_);
     avformat_alloc_output_context2(&outputCtx_, nullptr, nullptr, filename.c_str());
+
+    if (!options["title"].empty())
+        av_dict_set(&outputCtx_->metadata, "title", options["title"].c_str(), 0);
+    if (!options["description"].empty())
+        av_dict_set(&outputCtx_->metadata, "description", options["description"].c_str(), 0);
+
     auto bitrate = SystemCodecInfo::DEFAULT_MAX_BITRATE;
     auto quality = SystemCodecInfo::DEFAULT_CODEC_QUALITY;
     // ensure all options retrieved later on are in options_ (insert does nothing if key exists)
diff --git a/test/unitTest/media/test_media_encoder.cpp b/test/unitTest/media/test_media_encoder.cpp
index 2a1fb24eb5..a251b518a7 100644
--- a/test/unitTest/media/test_media_encoder.cpp
+++ b/test/unitTest/media/test_media_encoder.cpp
@@ -150,6 +150,8 @@ MediaEncoderTest::testMultiStream()
     const constexpr int width = 320;
     const constexpr int height = 240;
     std::map<std::string, std::string> options;
+    options["title"] = "Encoder Unit Test";
+    options["description"] = "Description goes here";
     options["sample_rate"] = std::to_string(sampleRate);
     options["channels"] = std::to_string(nbChannels);
     options["width"] = std::to_string(width);
-- 
GitLab