Skip to content

Commit

Permalink
avoid access to internal interfaces
Browse files Browse the repository at this point in the history
  • Loading branch information
pedroSG94 committed Sep 26, 2023
1 parent 0552699 commit cc134a0
Show file tree
Hide file tree
Showing 7 changed files with 228 additions and 210 deletions.
101 changes: 51 additions & 50 deletions library/src/main/java/com/pedro/library/base/Camera1Base.java
Expand Up @@ -78,8 +78,7 @@
* Created by pedro on 7/07/17.
*/

public abstract class Camera1Base
implements GetAacData, GetCameraData, GetVideoData, GetMicrophoneData {
public abstract class Camera1Base {

private static final String TAG = "Camera1Base";

Expand All @@ -98,13 +97,13 @@ public abstract class Camera1Base

public Camera1Base(SurfaceView surfaceView) {
context = surfaceView.getContext();
cameraManager = new Camera1ApiManager(surfaceView, this);
cameraManager = new Camera1ApiManager(surfaceView, getCameraData);
init();
}

public Camera1Base(TextureView textureView) {
context = textureView.getContext();
cameraManager = new Camera1ApiManager(textureView, this);
cameraManager = new Camera1ApiManager(textureView, getCameraData);
init();
}

Expand Down Expand Up @@ -136,7 +135,7 @@ public Camera1Base(Context context) {
}

private void init() {
videoEncoder = new VideoEncoder(this);
videoEncoder = new VideoEncoder(getVideoData);
setMicrophoneMode(MicrophoneMode.ASYNC);
recordController = new AndroidMuxerRecordController();
}
Expand All @@ -152,18 +151,18 @@ public void setMicrophoneMode(MicrophoneMode microphoneMode) {
switch (microphoneMode) {
case SYNC:
microphoneManager = new MicrophoneManagerManual();
audioEncoder = new AudioEncoder(this);
audioEncoder = new AudioEncoder(getAacData);
audioEncoder.setGetFrame(((MicrophoneManagerManual) microphoneManager).getGetFrame());
audioEncoder.setTsModeBuffer(false);
break;
case ASYNC:
microphoneManager = new MicrophoneManager(this);
audioEncoder = new AudioEncoder(this);
microphoneManager = new MicrophoneManager(getMicrophoneData);
audioEncoder = new AudioEncoder(getAacData);
audioEncoder.setTsModeBuffer(false);
break;
case BUFFER:
microphoneManager = new MicrophoneManager(this);
audioEncoder = new AudioEncoder(this);
microphoneManager = new MicrophoneManager(getMicrophoneData);
audioEncoder = new AudioEncoder(getAacData);
audioEncoder.setTsModeBuffer(true);
break;
}
Expand Down Expand Up @@ -1010,57 +1009,59 @@ public RecordController.Status getRecordStatus() {

protected abstract void getAacDataRtp(ByteBuffer aacBuffer, MediaCodec.BufferInfo info);

@Override
public void getAacData(ByteBuffer aacBuffer, MediaCodec.BufferInfo info) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
recordController.recordAudio(aacBuffer, info);
}
if (streaming) getAacDataRtp(aacBuffer, info);
}

protected abstract void onSpsPpsVpsRtp(ByteBuffer sps, ByteBuffer pps, ByteBuffer vps);

@Override
public void onSpsPpsVps(ByteBuffer sps, ByteBuffer pps, ByteBuffer vps) {
onSpsPpsVpsRtp(sps.duplicate(), pps.duplicate(), vps != null ? vps.duplicate() : null);
}

protected abstract void getH264DataRtp(ByteBuffer h264Buffer, MediaCodec.BufferInfo info);

@Override
public void getVideoData(ByteBuffer h264Buffer, MediaCodec.BufferInfo info) {
fpsListener.calculateFps();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
recordController.recordVideo(h264Buffer, info);
}
if (streaming) getH264DataRtp(h264Buffer, info);
public void setRecordController(BaseRecordController recordController) {
if (!isRecording()) this.recordController = recordController;
}

@Override
public void inputPCMData(Frame frame) {
audioEncoder.inputPCMData(frame);
}
public abstract void setLogs(boolean enable);

public abstract void setCheckServerAlive(boolean enable);

@Override
public void inputYUVData(Frame frame) {
private final GetCameraData getCameraData = frame -> {
videoEncoder.inputYUVData(frame);
}
};

@Override
public void onVideoFormat(MediaFormat mediaFormat) {
recordController.setVideoFormat(mediaFormat, !audioInitialized);
}
private final GetMicrophoneData getMicrophoneData = frame -> {
audioEncoder.inputPCMData(frame);
};

@Override
public void onAudioFormat(MediaFormat mediaFormat) {
recordController.setAudioFormat(mediaFormat);
}
private final GetAacData getAacData = new GetAacData() {
@Override
public void getAacData(@NonNull ByteBuffer aacBuffer, @NonNull MediaCodec.BufferInfo info) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
recordController.recordAudio(aacBuffer, info);
}
if (streaming) getAacDataRtp(aacBuffer, info);
}

public void setRecordController(BaseRecordController recordController) {
if (!isRecording()) this.recordController = recordController;
}
@Override
public void onAudioFormat(@NonNull MediaFormat mediaFormat) {
recordController.setAudioFormat(mediaFormat);
}
};

public abstract void setLogs(boolean enable);
private final GetVideoData getVideoData = new GetVideoData() {
@Override
public void onSpsPpsVps(@NonNull ByteBuffer sps, @NonNull ByteBuffer pps, @Nullable ByteBuffer vps) {
onSpsPpsVpsRtp(sps.duplicate(), pps.duplicate(), vps != null ? vps.duplicate() : null);
}

public abstract void setCheckServerAlive(boolean enable);
@Override
public void getVideoData(@NonNull ByteBuffer h264Buffer, @NonNull MediaCodec.BufferInfo info) {
fpsListener.calculateFps();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
recordController.recordVideo(h264Buffer, info);
}
if (streaming) getH264DataRtp(h264Buffer, info);
}

@Override
public void onVideoFormat(@NonNull MediaFormat mediaFormat) {
recordController.setVideoFormat(mediaFormat, !audioInitialized);
}
};
}
81 changes: 42 additions & 39 deletions library/src/main/java/com/pedro/library/base/Camera2Base.java
Expand Up @@ -78,7 +78,7 @@
* Created by pedro on 7/07/17.
*/
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public abstract class Camera2Base implements GetAacData, GetVideoData, GetMicrophoneData {
public abstract class Camera2Base {

private static final String TAG = "Camera2Base";

Expand Down Expand Up @@ -148,7 +148,7 @@ public Camera2Base(Context context, boolean useOpengl) {

private void init(Context context) {
cameraManager = new Camera2ApiManager(context);
videoEncoder = new VideoEncoder(this);
videoEncoder = new VideoEncoder(getVideoData);
setMicrophoneMode(MicrophoneMode.ASYNC);
recordController = new AndroidMuxerRecordController();
}
Expand All @@ -164,18 +164,18 @@ public void setMicrophoneMode(MicrophoneMode microphoneMode) {
switch (microphoneMode) {
case SYNC:
microphoneManager = new MicrophoneManagerManual();
audioEncoder = new AudioEncoder(this);
audioEncoder = new AudioEncoder(getAacData);
audioEncoder.setGetFrame(((MicrophoneManagerManual) microphoneManager).getGetFrame());
audioEncoder.setTsModeBuffer(false);
break;
case ASYNC:
microphoneManager = new MicrophoneManager(this);
audioEncoder = new AudioEncoder(this);
microphoneManager = new MicrophoneManager(getMicrophoneData);
audioEncoder = new AudioEncoder(getAacData);
audioEncoder.setTsModeBuffer(false);
break;
case BUFFER:
microphoneManager = new MicrophoneManager(this);
audioEncoder = new AudioEncoder(this);
microphoneManager = new MicrophoneManager(getMicrophoneData);
audioEncoder = new AudioEncoder(getAacData);
audioEncoder.setTsModeBuffer(true);
break;
}
Expand Down Expand Up @@ -1060,48 +1060,51 @@ public boolean isOnPreview() {

protected abstract void getAacDataRtp(ByteBuffer aacBuffer, MediaCodec.BufferInfo info);

@Override
public void getAacData(ByteBuffer aacBuffer, MediaCodec.BufferInfo info) {
recordController.recordAudio(aacBuffer, info);
if (streaming) getAacDataRtp(aacBuffer, info);
}

protected abstract void onSpsPpsVpsRtp(ByteBuffer sps, ByteBuffer pps, ByteBuffer vps);

@Override
public void onSpsPpsVps(ByteBuffer sps, ByteBuffer pps, ByteBuffer vps) {
onSpsPpsVpsRtp(sps.duplicate(), pps.duplicate(), vps != null ? vps.duplicate() : null);
}

protected abstract void getH264DataRtp(ByteBuffer h264Buffer, MediaCodec.BufferInfo info);

@Override
public void getVideoData(ByteBuffer h264Buffer, MediaCodec.BufferInfo info) {
fpsListener.calculateFps();
recordController.recordVideo(h264Buffer, info);
if (streaming) getH264DataRtp(h264Buffer, info);
public void setRecordController(BaseRecordController recordController) {
if (!isRecording()) this.recordController = recordController;
}

@Override
public void inputPCMData(Frame frame) {
public abstract void setLogs(boolean enable);

public abstract void setCheckServerAlive(boolean enable);

private final GetMicrophoneData getMicrophoneData = frame -> {
audioEncoder.inputPCMData(frame);
}
};

@Override
public void onVideoFormat(MediaFormat mediaFormat) {
recordController.setVideoFormat(mediaFormat, !audioInitialized);
}
private final GetAacData getAacData = new GetAacData() {
@Override
public void getAacData(@NonNull ByteBuffer aacBuffer, @NonNull MediaCodec.BufferInfo info) {
recordController.recordAudio(aacBuffer, info);
if (streaming) getAacDataRtp(aacBuffer, info);
}

@Override
public void onAudioFormat(MediaFormat mediaFormat) {
recordController.setAudioFormat(mediaFormat);
}
@Override
public void onAudioFormat(@NonNull MediaFormat mediaFormat) {
recordController.setAudioFormat(mediaFormat);
}
};

public void setRecordController(BaseRecordController recordController) {
if (!isRecording()) this.recordController = recordController;
}
private final GetVideoData getVideoData = new GetVideoData() {
@Override
public void onSpsPpsVps(@NonNull ByteBuffer sps, @NonNull ByteBuffer pps, @Nullable ByteBuffer vps) {
onSpsPpsVpsRtp(sps.duplicate(), pps.duplicate(), vps != null ? vps.duplicate() : null);
}

public abstract void setLogs(boolean enable);
@Override
public void getVideoData(@NonNull ByteBuffer h264Buffer, @NonNull MediaCodec.BufferInfo info) {
fpsListener.calculateFps();
recordController.recordVideo(h264Buffer, info);
if (streaming) getH264DataRtp(h264Buffer, info);
}

public abstract void setCheckServerAlive(boolean enable);
@Override
public void onVideoFormat(@NonNull MediaFormat mediaFormat) {
recordController.setVideoFormat(mediaFormat, !audioInitialized);
}
};
}

0 comments on commit cc134a0

Please sign in to comment.