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

Commit c4f251ff authored by Fyodor Kyslov's avatar Fyodor Kyslov
Browse files

Add APV support to MediaRecorder

Test: CtsMediaRecorderTestCases on raven and panther
Bug: 418815095
Bug: 419269318
Flag: android.media.mediarecorder.apv_recording_support
Change-Id: I982b569bfcefb4ffb38193f9be34d2fc913d783a
parent be067873
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -54,6 +54,7 @@ aconfig_declarations_group {
        "android.hardware.usb.flags-aconfig-java",
        "android.location.flags-aconfig-java",
        "android.media.codec-aconfig-java",
        "android.media.mediarecorder-aconfig-java",
        "android.media.tv.flags-aconfig-java",
        "android.multiuser.flags-aconfig-java",
        "android.net.platform.flags-aconfig-java",
@@ -112,7 +113,6 @@ aconfig_declarations_group {
        "com.android.window.flags.window-aconfig-java",
        "configinfra_framework_flags_java_exported_lib",
        "conscrypt_exported_aconfig_flags_lib",
        "sdk_sandbox_exported_flags_lib",
        "device_policy_aconfig_flags_lib",
        "display_flags_lib",
        "dropbox_flags_lib",
@@ -126,6 +126,7 @@ aconfig_declarations_group {
        "libcore_readonly_aconfig_flags_lib",
        "libgui_flags_java_lib",
        "power_flags_lib",
        "sdk_sandbox_exported_flags_lib",
        "surfaceflinger_flags_java_lib",
        "telecom_flags_core_java_lib",
        "telephony_flags_core_java_lib",
@@ -874,9 +875,9 @@ java_aconfig_library {
    min_sdk_version: "30",
    apex_available: [
        "//apex_available:platform",
        "com.android.extservices",
        "com.android.nfcservices",
        "com.android.permission",
        "com.android.extservices",
    ],
}

+1 −0
Original line number Diff line number Diff line
@@ -24940,6 +24940,7 @@ package android.media {
  }
  public final class MediaRecorder.VideoEncoder {
    field @FlaggedApi("android.media.mediarecorder.apv_recording_support") public static final int APV = 9; // 0x9
    field public static final int AV1 = 8; // 0x8
    field public static final int DEFAULT = 0; // 0x0
    field public static final int DOLBY_VISION = 7; // 0x7
+6 −0
Original line number Diff line number Diff line
@@ -16,6 +16,9 @@

package android.media;

import static android.media.codec.Flags.apvSupport;
import static android.media.mediarecorder.Flags.apvRecordingSupport;

import android.annotation.IntDef;
import android.annotation.NonNull;

@@ -106,6 +109,9 @@ public final class EncoderProfiles
                return MediaFormat.MIMETYPE_VIDEO_DOLBY_VISION;
            } else if (codec == MediaRecorder.VideoEncoder.AV1) {
                return MediaFormat.MIMETYPE_VIDEO_AV1;
            } else if (apvRecordingSupport() && apvSupport()
                        && codec == MediaRecorder.VideoEncoder.APV) {
                return MediaFormat.MIMETYPE_VIDEO_APV;
            }
            // we should never be here
            throw new RuntimeException("Unknown codec");
+14 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package android.media;

import static android.media.audio.Flags.FLAG_ROUTED_DEVICE_IDS;
import static android.media.mediarecorder.Flags.FLAG_APV_RECORDING_SUPPORT;

import android.annotation.CallbackExecutor;
import android.annotation.FlaggedApi;
@@ -703,15 +704,27 @@ public class MediaRecorder implements AudioRouting,
       * in include/media/mediarecorder.h!
       */
        private VideoEncoder() {}
        /** Default video codec */
        public static final int DEFAULT = 0;
        /** H.263 video codec */
        public static final int H263 = 1;
        /** H.264 video codec */
        public static final int H264 = 2;
        /** MPEG-4 SP video codec */
        public static final int MPEG_4_SP = 3;
        /** VP8 video codec */
        public static final int VP8 = 4;
        /** HEVC/H.265 video codec */
        public static final int HEVC = 5;
        /** VP9 video codec */
        public static final int VP9 = 6;
        /** Dolby Vision video codec */
        public static final int DOLBY_VISION = 7;
        /** AV1 video codec */
        public static final int AV1 = 8;
        /** APV video codec */
        @FlaggedApi(FLAG_APV_RECORDING_SUPPORT)
        public static final int APV = 9;
    }

    /**
@@ -727,6 +740,7 @@ public class MediaRecorder implements AudioRouting,
        VideoEncoder.VP9,
        VideoEncoder.DOLBY_VISION,
        VideoEncoder.AV1,
        VideoEncoder.APV,
    })
    @Retention(RetentionPolicy.SOURCE)
    public @interface VideoEncoderValues {}