Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6c2427aa authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "StagefrightRecoder: Use flag to enable or disable b-frame" into main am: 53501050

parents 67745d10 53501050
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ cc_defaults {
        "android.hardware.media.omx@1.0",
        "av-types-aidl-cpp",
        "framework-permission-aidl-cpp",
        "libaconfig_storage_read_api_cc",
        "libaudioclient_aidl_conversion",
        "libbase",
        "libbinder_ndk",
@@ -76,6 +77,7 @@ cc_defaults {
        "libstagefright_httplive",
        "libutils",
        "packagemanager_aidl-cpp",
        "server_configurable_flags",
    ],

    header_libs: [
@@ -86,6 +88,7 @@ cc_defaults {
    ],

    static_libs: [
        "com.android.media.flags.editing-aconfig-cc",
        "libplayerservice_datasource",
        "libstagefright_nuplayer",
        "libstagefright_rtsp",
+3 −1
Original line number Diff line number Diff line
@@ -68,6 +68,7 @@
#include <system/audio.h>

#include <media/stagefright/rtsp/ARTPWriter.h>
#include <com_android_media_editing_flags.h>

namespace android {

@@ -2121,7 +2122,8 @@ status_t StagefrightRecorder::setupVideoEncoder(
        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) {
        if (!com::android::media::editing::flags::stagefrightrecorder_enable_b_frames()
                && mAudioSource == AUDIO_SOURCE_MIC && mVideoSource == VIDEO_SOURCE_SURFACE) {
            bLayers = 0;
        }
        uint32_t pLayers = tsLayers - bLayers;
+1 −0
Original line number Diff line number Diff line
@@ -321,6 +321,7 @@ cc_library {

    static_libs: [
        "android.media.codec-aconfig-cc",
        "com.android.media.flags.editing-aconfig-cc",
        "libstagefright_esds",
        "libstagefright_color_conversion",
        "libyuv",
+13 −3
Original line number Diff line number Diff line
@@ -53,6 +53,8 @@
#include <media/esds/ESDS.h>
#include "include/HevcUtils.h"

#include <com_android_media_editing_flags.h>

#ifndef __predict_false
#define __predict_false(exp) __builtin_expect((exp) != 0, 0)
#endif
@@ -4944,6 +4946,8 @@ void MPEG4Writer::Track::writeEdtsBox() {
            // Track with start offset.
            ALOGV("Tracks starting > 0");
            int32_t editDurationTicks = 0;
            int32_t trackStartOffsetBFramesUs = getMinCttsOffsetTimeUs() - kMaxCttsOffsetTimeUs;
            ALOGV("trackStartOffsetBFramesUs:%" PRId32, trackStartOffsetBFramesUs);
            if (mMinCttsOffsetTicks == mMaxCttsOffsetTicks) {
                // Video with no B frame or non-video track.
                editDurationTicks =
@@ -4952,8 +4956,6 @@ void MPEG4Writer::Track::writeEdtsBox() {
                ALOGV("editDuration:%" PRId64 "us", (trackStartOffsetUs + movieStartOffsetBFramesUs));
            } else {
                // Track with B frame.
                int32_t trackStartOffsetBFramesUs = getMinCttsOffsetTimeUs() - kMaxCttsOffsetTimeUs;
                ALOGV("trackStartOffsetBFramesUs:%" PRId32, trackStartOffsetBFramesUs);
                editDurationTicks =
                        ((trackStartOffsetUs + movieStartOffsetBFramesUs +
                          trackStartOffsetBFramesUs) * mvhdTimeScale + 5E5) / 1E6;
@@ -4967,7 +4969,15 @@ void MPEG4Writer::Track::writeEdtsBox() {
            } else if (editDurationTicks < 0) {
                // Only video tracks with B Frames would hit this case.
                ALOGV("Edit list entry to negate start offset by B frames in other tracks");
                if (com::android::media::editing::flags::
                        stagefrightrecorder_enable_b_frames()) {
                    int32_t mediaTimeTicks =
                            ((trackStartOffsetUs + movieStartOffsetBFramesUs +
                              trackStartOffsetBFramesUs) * mTimeScale - 5E5) / 1E6;
                    addOneElstTableEntry(tkhdDurationTicks, std::abs(mediaTimeTicks), 1, 0);
                } else {
                    addOneElstTableEntry(tkhdDurationTicks, std::abs(editDurationTicks), 1, 0);
                }
            } else {
                ALOGV("No edit list entry needed for this track");
            }
+14 −10
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ package {
    // to get the below license kinds:
    //   SPDX-license-identifier-Apache-2.0
    default_applicable_licenses: ["frameworks_av_media_libstagefright_license"],
    default_team: "trendy_team_android_media_solutions_editing",
}

cc_defaults {
@@ -35,14 +36,17 @@ cc_defaults {
        "include",
    ],
    static_libs: [
        "com.android.media.flags.editing-aconfig-cc",
        "liblog",
        "libstagefright_foundation",
        "libstagefright",
        "libstagefright_foundation",
    ],
    shared_libs: [
        "libaconfig_storage_read_api_cc",
        "libbinder",
        "libcutils",
        "libutils",
        "server_configurable_flags",
    ],
}