Skip to content

Commit e2e2746

Browse files
committed
jfRecordCamera : convert Media*Coder -> MediaInput/Output
1 parent f61df49 commit e2e2746

1 file changed

Lines changed: 24 additions & 9 deletions

File tree

projects/jfrecordcamera/src/MainPanel.java

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import javaforce.awt.*;
1414
import javaforce.service.*;
1515
import javaforce.media.*;
16+
import javaforce.voip.*;
1617

1718
public class MainPanel extends javax.swing.JPanel implements MediaIO, WebHandler {
1819

@@ -512,7 +513,9 @@ private void broadcastActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIR
512513
private Camera camera;
513514
private AudioInput mic;
514515
private RandomAccessFile raf;
515-
private MediaEncoder encoder;
516+
private MediaOutput encoder;
517+
private MediaAudioEncoder audio_encoder;
518+
private MediaVideoEncoder video_encoder;
516519
private WebServer broadcaster;
517520
private ArrayList<String> tempFiles = new ArrayList<>();
518521
private boolean active = false;
@@ -654,10 +657,22 @@ public void swapEndian(byte in[], short out[]) {
654657
private byte[] image;
655658
private byte[] mpd;
656659
private boolean encoder_start() {
657-
return encoder.start(this, width, height, frameRate, chs, audioRate, selected_codec.codec, true, doAudio);
660+
encoder = new MediaOutput();
661+
boolean res = encoder.create(this, selected_codec.codec);
662+
if (res) {
663+
CodecInfo info = new CodecInfo();
664+
info.chs = chs;
665+
info.freq = audioRate;
666+
audio_encoder = encoder.createAudioEncoder(info);
667+
info.width = width;
668+
info.height = height;
669+
info.fps = frameRate;
670+
video_encoder = encoder.createVideoEncoder(info);
671+
}
672+
return res;
658673
}
659674
private void encoder_stop() {
660-
encoder.stop();
675+
encoder.close();
661676
}
662677
private boolean create_file() {
663678
try {
@@ -778,10 +793,6 @@ public String toString() {
778793
JFLog.log("audioRate=" + audioRate + ",chs=" + chs);
779794

780795
if (!doImage) {
781-
encoder = new MediaEncoder();
782-
encoder.setAudioBitRate(getAudioBitRate());
783-
encoder.setVideoBitRate(getVideoBitRate());
784-
encoder.setFramesPerKeyFrame(frameRate);
785796
if (!encoder_start())
786797
{
787798
failed("Unable to start encoder");
@@ -844,6 +855,8 @@ public String toString() {
844855
broadcaster_start();
845856
}
846857

858+
Packet packet;
859+
847860
while (active) {
848861
if (!skip_frame) {
849862
px = camera.getFrame();
@@ -870,7 +883,8 @@ public String toString() {
870883
}
871884
if (!doImage) {
872885
long start = System.currentTimeMillis();
873-
encoder.addVideo(px);
886+
packet = video_encoder.encode(px, 0, px.length);
887+
encoder.writePacket(packet);
874888
long stop = System.currentTimeMillis();
875889
long delta = stop - start;
876890
if (!doRecord) {
@@ -883,7 +897,8 @@ public String toString() {
883897
if (doAudio) {
884898
while (mic.read(sams8)) {
885899
swapEndian(sams8, sams16);
886-
encoder.addAudio(sams16);
900+
packet = audio_encoder.encode(sams16, 0, sams16.length);
901+
encoder.writePacket(packet);
887902
if (doPreview) {
888903
previewAudio.setValue(amplitude(sams16));
889904
}

0 commit comments

Comments
 (0)