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