// Signature format: 2.0
package android.media {

  public final class MediaTranscodingManager {
    method @Nullable public android.media.MediaTranscodingManager.TranscodingSession enqueueRequest(@NonNull android.media.MediaTranscodingManager.TranscodingRequest, @NonNull java.util.concurrent.Executor, @NonNull android.media.MediaTranscodingManager.OnTranscodingFinishedListener);
  }

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

  public abstract static class MediaTranscodingManager.TranscodingRequest {
    method public int getClientPid();
    method public int getClientUid();
    method @Nullable public android.os.ParcelFileDescriptor getDestinationFileDescriptor();
    method @NonNull public android.net.Uri getDestinationUri();
    method @Nullable public android.os.ParcelFileDescriptor getSourceFileDescriptor();
    method @NonNull public android.net.Uri getSourceUri();
  }

  public static class MediaTranscodingManager.TranscodingRequest.VideoFormatResolver {
    ctor public MediaTranscodingManager.TranscodingRequest.VideoFormatResolver(@NonNull android.media.ApplicationMediaCapabilities, @NonNull android.media.MediaFormat);
    method @Nullable public android.media.MediaFormat resolveVideoFormat();
    method public boolean shouldTranscode();
  }

  public static final class MediaTranscodingManager.TranscodingSession {
    method public boolean addClientUid(int);
    method public void cancel();
    method @NonNull public java.util.List<java.lang.Integer> getClientUids();
    method public int getErrorCode();
    method @IntRange(from=0, to=100) public int getProgress();
    method public int getResult();
    method public int getSessionId();
    method public int getStatus();
    method public void setOnProgressUpdateListener(@NonNull java.util.concurrent.Executor, @Nullable android.media.MediaTranscodingManager.TranscodingSession.OnProgressUpdateListener);
    field public static final int ERROR_DROPPED_BY_SERVICE = 1; // 0x1
    field public static final int ERROR_NONE = 0; // 0x0
    field public static final int ERROR_SERVICE_DIED = 2; // 0x2
    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 MediaTranscodingManager.TranscodingSession.OnProgressUpdateListener {
    method public void onProgressUpdate(@NonNull android.media.MediaTranscodingManager.TranscodingSession, @IntRange(from=0, to=100) int);
  }

  public static final class MediaTranscodingManager.VideoTranscodingRequest extends android.media.MediaTranscodingManager.TranscodingRequest {
    method @NonNull public android.media.MediaFormat getVideoTrackFormat();
  }

  public static final class MediaTranscodingManager.VideoTranscodingRequest.Builder {
    ctor public MediaTranscodingManager.VideoTranscodingRequest.Builder(@NonNull android.net.Uri, @NonNull android.net.Uri, @NonNull android.media.MediaFormat);
    method @NonNull public android.media.MediaTranscodingManager.VideoTranscodingRequest build();
    method @NonNull public android.media.MediaTranscodingManager.VideoTranscodingRequest.Builder setClientPid(int);
    method @NonNull public android.media.MediaTranscodingManager.VideoTranscodingRequest.Builder setClientUid(int);
    method @NonNull public android.media.MediaTranscodingManager.VideoTranscodingRequest.Builder setDestinationFileDescriptor(@NonNull android.os.ParcelFileDescriptor);
    method @NonNull public android.media.MediaTranscodingManager.VideoTranscodingRequest.Builder setSourceFileDescriptor(@NonNull android.os.ParcelFileDescriptor);
  }

}

