Skip to content

Commit

Permalink
DataSink, added fileDescriptor support (#88)
Browse files Browse the repository at this point in the history
  • Loading branch information
mudar authored May 16, 2020
1 parent e10f83d commit b4e82d7
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 0 deletions.
16 changes: 16 additions & 0 deletions lib/src/main/java/com/otaliastudios/transcoder/Transcoder.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
*/
package com.otaliastudios.transcoder;

import android.os.Build;
import android.os.Handler;

import com.otaliastudios.transcoder.engine.Engine;
Expand All @@ -24,6 +25,7 @@
import com.otaliastudios.transcoder.validator.Validator;
import com.otaliastudios.transcoder.internal.ValidatorException;

import java.io.FileDescriptor;
import java.util.concurrent.Callable;
import java.util.concurrent.Future;
import java.util.concurrent.LinkedBlockingQueue;
Expand All @@ -33,6 +35,7 @@
import java.util.concurrent.atomic.AtomicInteger;

import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;

public class Transcoder {
private static final String TAG = Transcoder.class.getSimpleName();
Expand Down Expand Up @@ -99,6 +102,19 @@ public static TranscoderOptions.Builder into(@NonNull String outPath) {
return new TranscoderOptions.Builder(outPath);
}

/**
* Starts building transcoder options.
* Requires a non null fileDescriptor to the output file or stream
*
* @param fileDescriptor descriptor of the output file or stream
* @return an options builder
*/
@RequiresApi(api = Build.VERSION_CODES.O)
@NonNull
public static TranscoderOptions.Builder into(@NonNull FileDescriptor fileDescriptor) {
return new TranscoderOptions.Builder(fileDescriptor);
}

/**
* Starts building transcoder options.
* Requires a non null sink.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import android.content.Context;
import android.net.Uri;
import android.os.Build;
import android.os.Handler;
import android.os.Looper;

Expand Down Expand Up @@ -33,6 +34,7 @@

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;

/**
* Collects transcoding options consumed by {@link Transcoder}.
Expand Down Expand Up @@ -122,6 +124,11 @@ public static class Builder {
this.dataSink = new DefaultDataSink(outPath);
}

@RequiresApi(api = Build.VERSION_CODES.O)
Builder(@NonNull FileDescriptor fileDescriptor) {
this.dataSink = new DefaultDataSink(fileDescriptor);
}

Builder(@NonNull DataSink dataSink) {
this.dataSink = dataSink;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,14 @@
import android.os.Build;

import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;

import com.otaliastudios.transcoder.engine.TrackStatus;
import com.otaliastudios.transcoder.engine.TrackType;
import com.otaliastudios.transcoder.internal.TrackTypeMap;
import com.otaliastudios.transcoder.internal.Logger;

import java.io.FileDescriptor;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
Expand Down Expand Up @@ -74,6 +76,21 @@ public DefaultDataSink(@NonNull String outputFilePath, int format) {
}
}

@RequiresApi(api = Build.VERSION_CODES.O)
public DefaultDataSink(@NonNull FileDescriptor fileDescriptor) {
this(fileDescriptor, MediaMuxer.OutputFormat.MUXER_OUTPUT_MPEG_4);
}

@RequiresApi(api = Build.VERSION_CODES.O)
@SuppressWarnings("WeakerAccess")
public DefaultDataSink(@NonNull FileDescriptor fileDescriptor, int format) {
try {
mMuxer = new MediaMuxer(fileDescriptor, format);
} catch (IOException e) {
throw new RuntimeException(e);
}
}

@Override
public void setOrientation(int rotation) {
mMuxer.setOrientationHint(rotation);
Expand Down

0 comments on commit b4e82d7

Please sign in to comment.