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

Commit 3eb57dc5 authored by hkuang's avatar hkuang Committed by Hangyu Kuang
Browse files

TranscodingAPI: Expose MediaTranscodeManager as System API.

Bug: 160260102
Test: Unit test
Change-Id: I38e9efc46e23fe1aafe65100bbc7f72eb200720f
parent a6ae5034
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -333,6 +333,7 @@ filegroup {
        ":installd_aidl",
        ":keystore_aidl",
        ":libaudioclient_aidl",
        ":mediatranscoding_aidl_interface-java-source",
        ":libbinder_aidl",
        ":libbluetooth-binder-aidl",
        ":libcamera_client_aidl",
@@ -576,7 +577,6 @@ java_library {
        // If MimeMap ever becomes its own APEX, then this dependency would need to be removed
        // in favor of an API stubs dependency in java_library "framework" below.
        "mimemap",
        "mediatranscoding_aidl_interface-java",
    ],
    // For backwards compatibility.
    stem: "framework",
@@ -623,7 +623,6 @@ java_library {
    static_libs: [
        "exoplayer2-extractor",
        "android.hardware.wifi-V1.0-java-constants",
        "mediatranscoding_aidl_interface-java",

        // Additional dependencies needed to build the ike API classes.
        "ike-internals",
+55 −0
Original line number Diff line number Diff line
@@ -1741,6 +1741,7 @@ package android.content {
    field public static final String ETHERNET_SERVICE = "ethernet";
    field public static final String EUICC_CARD_SERVICE = "euicc_card";
    field public static final String HDMI_CONTROL_SERVICE = "hdmi_control";
    field public static final String MEDIA_TRANSCODING_SERVICE = "media_transcoding";
    field public static final String NETD_SERVICE = "netd";
    field public static final String NETWORK_SCORE_SERVICE = "network_score";
    field public static final String OEM_LOCK_SERVICE = "oem_lock";
@@ -4333,6 +4334,60 @@ package android.media {
    field @RequiresPermission(android.Manifest.permission.CAPTURE_AUDIO_OUTPUT) public static final int RADIO_TUNER = 1998; // 0x7ce
  }
  public final class MediaTranscodeManager implements java.lang.AutoCloseable {
    method public void close();
    method @NonNull public android.media.MediaTranscodeManager.TranscodingJob enqueueRequest(@NonNull android.media.MediaTranscodeManager.TranscodingRequest, @NonNull java.util.concurrent.Executor, @NonNull android.media.MediaTranscodeManager.OnTranscodingFinishedListener) throws java.io.FileNotFoundException;
    method protected void finalize();
    field public static final int PRIORITY_OFFLINE = 2; // 0x2
    field public static final int PRIORITY_REALTIME = 1; // 0x1
    field public static final int TRANSCODING_TYPE_VIDEO = 1; // 0x1
  }
  @java.lang.FunctionalInterface public static interface MediaTranscodeManager.OnTranscodingFinishedListener {
    method public void onTranscodingFinished(@NonNull android.media.MediaTranscodeManager.TranscodingJob);
  }
  public static final class MediaTranscodeManager.TranscodingJob {
    method public void cancel();
    method public int getJobId();
    method @IntRange(from=0, to=100) public int getProgress();
    method public int getResult();
    method public int getStatus();
    method public boolean retry();
    method public void setOnProgressUpdateListener(@NonNull java.util.concurrent.Executor, @Nullable android.media.MediaTranscodeManager.TranscodingJob.OnProgressUpdateListener);
    method public void setOnProgressUpdateListener(int, @NonNull java.util.concurrent.Executor, @Nullable android.media.MediaTranscodeManager.TranscodingJob.OnProgressUpdateListener);
    field public static final int RESULT_CANCELED = 4; // 0x4
    field public static final int RESULT_ERROR = 3; // 0x3
    field public static final int RESULT_NONE = 1; // 0x1
    field public static final int RESULT_SUCCESS = 2; // 0x2
    field public static final int STATUS_FINISHED = 3; // 0x3
    field public static final int STATUS_PAUSED = 4; // 0x4
    field public static final int STATUS_PENDING = 1; // 0x1
    field public static final int STATUS_RUNNING = 2; // 0x2
  }
  @java.lang.FunctionalInterface public static interface MediaTranscodeManager.TranscodingJob.OnProgressUpdateListener {
    method public void onProgressUpdate(@IntRange(from=0, to=100) int);
  }
  public static final class MediaTranscodeManager.TranscodingRequest {
    method @NonNull public android.net.Uri getDestinationUri();
    method public int getPriority();
    method @NonNull public android.net.Uri getSourceUri();
    method public int getType();
    method @Nullable public android.media.MediaFormat getVideoTrackFormat();
  }
  public static final class MediaTranscodeManager.TranscodingRequest.Builder {
    ctor public MediaTranscodeManager.TranscodingRequest.Builder();
    method @NonNull public android.media.MediaTranscodeManager.TranscodingRequest build();
    method @NonNull public android.media.MediaTranscodeManager.TranscodingRequest.Builder setDestinationUri(@NonNull android.net.Uri);
    method @NonNull public android.media.MediaTranscodeManager.TranscodingRequest.Builder setPriority(int);
    method @NonNull public android.media.MediaTranscodeManager.TranscodingRequest.Builder setSourceUri(@NonNull android.net.Uri);
    method @NonNull public android.media.MediaTranscodeManager.TranscodingRequest.Builder setType(int);
    method @NonNull public android.media.MediaTranscodeManager.TranscodingRequest.Builder setVideoTrackFormat(@NonNull android.media.MediaFormat);
  }
  public class PlayerProxy {
    method public void pause();
    method public void setPan(float);
+54 −0
Original line number Diff line number Diff line
@@ -1819,6 +1819,60 @@ package android.media {
    method @NonNull public String getOriginalId();
  }

  public final class MediaTranscodeManager implements java.lang.AutoCloseable {
    method public void close();
    method @NonNull public android.media.MediaTranscodeManager.TranscodingJob enqueueRequest(@NonNull android.media.MediaTranscodeManager.TranscodingRequest, @NonNull java.util.concurrent.Executor, @NonNull android.media.MediaTranscodeManager.OnTranscodingFinishedListener) throws java.io.FileNotFoundException;
    method protected void finalize();
    field public static final int PRIORITY_OFFLINE = 2; // 0x2
    field public static final int PRIORITY_REALTIME = 1; // 0x1
    field public static final int TRANSCODING_TYPE_VIDEO = 1; // 0x1
  }

  @java.lang.FunctionalInterface public static interface MediaTranscodeManager.OnTranscodingFinishedListener {
    method public void onTranscodingFinished(@NonNull android.media.MediaTranscodeManager.TranscodingJob);
  }

  public static final class MediaTranscodeManager.TranscodingJob {
    method public void cancel();
    method public int getJobId();
    method @IntRange(from=0, to=100) public int getProgress();
    method public int getResult();
    method public int getStatus();
    method public boolean retry();
    method public void setOnProgressUpdateListener(@NonNull java.util.concurrent.Executor, @Nullable android.media.MediaTranscodeManager.TranscodingJob.OnProgressUpdateListener);
    method public void setOnProgressUpdateListener(int, @NonNull java.util.concurrent.Executor, @Nullable android.media.MediaTranscodeManager.TranscodingJob.OnProgressUpdateListener);
    field public static final int RESULT_CANCELED = 4; // 0x4
    field public static final int RESULT_ERROR = 3; // 0x3
    field public static final int RESULT_NONE = 1; // 0x1
    field public static final int RESULT_SUCCESS = 2; // 0x2
    field public static final int STATUS_FINISHED = 3; // 0x3
    field public static final int STATUS_PAUSED = 4; // 0x4
    field public static final int STATUS_PENDING = 1; // 0x1
    field public static final int STATUS_RUNNING = 2; // 0x2
  }

  @java.lang.FunctionalInterface public static interface MediaTranscodeManager.TranscodingJob.OnProgressUpdateListener {
    method public void onProgressUpdate(@IntRange(from=0, to=100) int);
  }

  public static final class MediaTranscodeManager.TranscodingRequest {
    method @NonNull public android.net.Uri getDestinationUri();
    method public int getPriority();
    method @NonNull public android.net.Uri getSourceUri();
    method public int getType();
    method @Nullable public android.media.MediaFormat getVideoTrackFormat();
  }

  public static final class MediaTranscodeManager.TranscodingRequest.Builder {
    ctor public MediaTranscodeManager.TranscodingRequest.Builder();
    method @NonNull public android.media.MediaTranscodeManager.TranscodingRequest build();
    method @NonNull public android.media.MediaTranscodeManager.TranscodingRequest.Builder setDestinationUri(@NonNull android.net.Uri);
    method @NonNull public android.media.MediaTranscodeManager.TranscodingRequest.Builder setPriority(int);
    method @NonNull public android.media.MediaTranscodeManager.TranscodingRequest.Builder setSourceUri(@NonNull android.net.Uri);
    method @NonNull public android.media.MediaTranscodeManager.TranscodingRequest.Builder setType(int);
    method @NonNull public android.media.MediaTranscodeManager.TranscodingRequest.Builder setVideoTrackFormat(@NonNull android.media.MediaFormat);
  }

  public final class PlaybackParams implements android.os.Parcelable {
    method public int getAudioStretchMode();
    method public android.media.PlaybackParams setAudioStretchMode(int);
+10 −0
Original line number Diff line number Diff line
@@ -103,6 +103,7 @@ import android.location.LocationManager;
import android.media.AudioManager;
import android.media.MediaFrameworkInitializer;
import android.media.MediaRouter;
import android.media.MediaTranscodeManager;
import android.media.midi.IMidiManager;
import android.media.midi.MidiManager;
import android.media.projection.MediaProjectionManager;
@@ -305,6 +306,15 @@ public final class SystemServiceRegistry {
                return new AudioManager(ctx);
            }});

        registerService(Context.MEDIA_TRANSCODING_SERVICE, MediaTranscodeManager.class,
                new CachedServiceFetcher<MediaTranscodeManager>() {
                    @Override
                    public MediaTranscodeManager createService(ContextImpl ctx)
                            throws ServiceNotFoundException {
                        return new MediaTranscodeManager(ctx);
                    }
                });

        registerService(Context.MEDIA_ROUTER_SERVICE, MediaRouter.class,
                new CachedServiceFetcher<MediaRouter>() {
            @Override
+11 −0
Original line number Diff line number Diff line
@@ -4194,6 +4194,17 @@ public abstract class Context {
     */
    public static final String AUDIO_SERVICE = "audio";

    /**
     * Use with {@link #getSystemService(String)} to retrieve a {@link
     * android.media.MediaTranscodeManager} for transcoding media.
     *
     * @hide
     * @see #getSystemService(String)
     * @see android.media.MediaTranscodeManager
     */
    @SystemApi
    public static final String MEDIA_TRANSCODING_SERVICE = "media_transcoding";

    /**
     * AuthService orchestrates biometric and PIN/pattern/password authentication.
     *
Loading