mirror of
https://github.com/Divested-Mobile/DivestOS-Build.git
synced 2024-10-01 01:35:54 -04:00
a4f9a76fb9
Gains 3 backports for 17.1 and an expat backport for 16.0 and 17.1 thanks to @flamefire Signed-off-by: Tavi <tavi@divested.dev>
39 lines
1.9 KiB
Diff
39 lines
1.9 KiB
Diff
From 539af09596393c3817545ee116c1a036f5c5d580 Mon Sep 17 00:00:00 2001
|
|
From: Rakesh Kumar <rakesh.kumar@ittiam.com>
|
|
Date: Thu, 30 May 2024 11:17:48 +0000
|
|
Subject: [PATCH] StagefrightRecoder: Disabling B-frame support
|
|
|
|
Disabling b-frame support from stagefright recorder in case of
|
|
audio source as mic and video source is surface use case only
|
|
because screen recorder with microphone doesn't play in sync
|
|
if b-frame is enabled.
|
|
If the audio source selected is INTERNAL (i.e. device) or
|
|
MIC_AND_INTERNAL with screen recorder then b frame is supported.
|
|
|
|
Bug: 288549440
|
|
Test: manually check screen recording with audio from mic has audio/video in synch
|
|
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:af685c66bab17b71fe1624f76b5d55628f79e6fa)
|
|
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:da3407f7688f35eb2dce79f1405feeb182241a3c)
|
|
Merged-In: I4098655eb9687fb633085333bc140634441566e6
|
|
Change-Id: I4098655eb9687fb633085333bc140634441566e6
|
|
---
|
|
media/libmediaplayerservice/StagefrightRecorder.cpp | 5 +++++
|
|
1 file changed, 5 insertions(+)
|
|
|
|
diff --git a/media/libmediaplayerservice/StagefrightRecorder.cpp b/media/libmediaplayerservice/StagefrightRecorder.cpp
|
|
index 71c79720fe7..e2a183e80c0 100644
|
|
--- a/media/libmediaplayerservice/StagefrightRecorder.cpp
|
|
+++ b/media/libmediaplayerservice/StagefrightRecorder.cpp
|
|
@@ -1797,6 +1797,11 @@ status_t StagefrightRecorder::setupVideoEncoder(
|
|
|
|
if (tsLayers > 1) {
|
|
uint32_t bLayers = std::min(2u, tsLayers - 1); // use up-to 2 B-layers
|
|
+ // TODO(b/341121900): Remove this once B frames are handled correctly in screen recorder
|
|
+ // use case in case of mic only
|
|
+ if (mAudioSource == AUDIO_SOURCE_MIC && mVideoSource == VIDEO_SOURCE_SURFACE) {
|
|
+ bLayers = 0;
|
|
+ }
|
|
uint32_t pLayers = tsLayers - bLayers;
|
|
format->setString(
|
|
"ts-schema", AStringPrintf("android.generic.%u+%u", pLayers, bLayers));
|