From 0f348a8f09d99e4c79462554535e77cd904fafac Mon Sep 17 00:00:00 2001
From: Kateryna Kostiuk <kateryna.kostiuk@savoirfairelinux.com>
Date: Fri, 8 Nov 2019 13:17:34 -0500
Subject: [PATCH] recording: enable on iOS

Change-Id: I3df37987a306dc604529bc93c0aabe6a10d8b0a2
---
 src/media/media_recorder.cpp                   | 7 +++++++
 src/media/media_recorder.h                     | 1 +
 src/media/system_codec_container.cpp           | 3 +--
 src/media/video/iosvideo/video_device_impl.cpp | 1 +
 4 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/src/media/media_recorder.cpp b/src/media/media_recorder.cpp
index ed0effb5df..273188f4ce 100644
--- a/src/media/media_recorder.cpp
+++ b/src/media/media_recorder.cpp
@@ -148,6 +148,7 @@ MediaRecorder::startRecording()
 {
     std::time_t t = std::time(nullptr);
     startTime_ = *std::localtime(&t);
+    startTimeStamp_ = av_gettime();
 
     encoder_.reset(new MediaEncoder);
 
@@ -232,7 +233,13 @@ MediaRecorder::onFrame(const std::string& name, const std::shared_ptr<MediaFrame
         clone = std::make_unique<MediaFrame>();
         clone->copyFrom(*frame);
     }
+#if (defined(TARGET_OS_IOS) && TARGET_OS_IOS)
+    clone->pointer()->pts = av_rescale_q_rnd(av_gettime() - startTimeStamp_,
+                                             {1, AV_TIME_BASE}, ms.timeBase,
+                                             static_cast<AVRounding>(AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX));
+#else
     clone->pointer()->pts -= ms.firstTimestamp;
+#endif
     if (ms.isVideo)
         videoFilter_->feedInput(clone->pointer(), name);
     else
diff --git a/src/media/media_recorder.h b/src/media/media_recorder.h
index f4cca5edf1..9c3bbf62ba 100644
--- a/src/media/media_recorder.h
+++ b/src/media/media_recorder.h
@@ -135,6 +135,7 @@ private:
 
     std::string path_;
     std::tm startTime_;
+    int64_t startTimeStamp_;
     std::string title_;
     std::string description_;
 
diff --git a/src/media/system_codec_container.cpp b/src/media/system_codec_container.cpp
index f2ce0069df..814bba42e7 100644
--- a/src/media/system_codec_container.cpp
+++ b/src/media/system_codec_container.cpp
@@ -64,14 +64,13 @@ SystemCodecContainer::initCodecConfig()
                                                defaultBitrate,
                                                minH264,
                                                maxH264),
-
-#if !(defined(TARGET_OS_IOS) && TARGET_OS_IOS)
         std::make_shared<SystemVideoCodecInfo>(AV_CODEC_ID_VP8,
                                                "VP8", "libvpx",
                                                CODEC_ENCODER_DECODER,
                                                defaultBitrate,
                                                minVP8,
                                                maxVP8),
+#if !(defined(TARGET_OS_IOS) && TARGET_OS_IOS)
         std::make_shared<SystemVideoCodecInfo>(AV_CODEC_ID_MPEG4,
                                                "MP4V-ES", "mpeg4",
                                                CODEC_ENCODER_DECODER,
diff --git a/src/media/video/iosvideo/video_device_impl.cpp b/src/media/video/iosvideo/video_device_impl.cpp
index be1acbf16a..96a71d3e99 100644
--- a/src/media/video/iosvideo/video_device_impl.cpp
+++ b/src/media/video/iosvideo/video_device_impl.cpp
@@ -161,6 +161,7 @@ VideoDeviceImpl::getDeviceParams() const
     params.name = name;
     params.input = name;
     params.channel =  0;
+    params.pixel_format = "nv12";
     params.width = size_.first;
     params.height = size_.second;
     params.framerate = rate_;
-- 
GitLab