1313import javaforce .awt .*;
1414import javaforce .service .*;
1515import javaforce .media .*;
16+ import javaforce .voip .*;
1617
1718public 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