Remove two AMR codecs and VORBIS, replace if with switch

pull/861/head
Ryan 5 years ago
parent 26a5e34c2c
commit 03e386bd5a
  1. 6
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/CameraViewTest.java
  2. 3
      cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java
  3. 22
      cameraview/src/main/java/com/otaliastudios/cameraview/controls/AudioCodec.java
  4. 9
      cameraview/src/main/java/com/otaliastudios/cameraview/video/FullVideoRecorder.java
  5. 19
      cameraview/src/main/java/com/otaliastudios/cameraview/video/SnapshotVideoRecorder.java
  6. 9
      cameraview/src/main/res/values/attrs.xml
  7. 4
      docs/_docs/controls.md

@ -779,18 +779,12 @@ public class CameraViewTest extends BaseTest {
public void testAudioCodec() { public void testAudioCodec() {
cameraView.set(AudioCodec.DEVICE_DEFAULT); cameraView.set(AudioCodec.DEVICE_DEFAULT);
assertEquals(cameraView.get(AudioCodec.class), AudioCodec.DEVICE_DEFAULT); assertEquals(cameraView.get(AudioCodec.class), AudioCodec.DEVICE_DEFAULT);
cameraView.set(AudioCodec.AMR_NB);
assertEquals(cameraView.get(AudioCodec.class), AudioCodec.AMR_NB);
cameraView.set(AudioCodec.AMR_WB);
assertEquals(cameraView.get(AudioCodec.class), AudioCodec.AMR_WB);
cameraView.set(AudioCodec.AAC); cameraView.set(AudioCodec.AAC);
assertEquals(cameraView.get(AudioCodec.class), AudioCodec.AAC); assertEquals(cameraView.get(AudioCodec.class), AudioCodec.AAC);
cameraView.set(AudioCodec.HE_AAC); cameraView.set(AudioCodec.HE_AAC);
assertEquals(cameraView.get(AudioCodec.class), AudioCodec.HE_AAC); assertEquals(cameraView.get(AudioCodec.class), AudioCodec.HE_AAC);
cameraView.set(AudioCodec.AAC_ELD); cameraView.set(AudioCodec.AAC_ELD);
assertEquals(cameraView.get(AudioCodec.class), AudioCodec.AAC_ELD); assertEquals(cameraView.get(AudioCodec.class), AudioCodec.AAC_ELD);
cameraView.set(AudioCodec.VORBIS);
assertEquals(cameraView.get(AudioCodec.class), AudioCodec.VORBIS);
} }

@ -1655,12 +1655,9 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
* Defaults to {@link AudioCodec#DEVICE_DEFAULT}. * Defaults to {@link AudioCodec#DEVICE_DEFAULT}.
* *
* @see AudioCodec#DEVICE_DEFAULT * @see AudioCodec#DEVICE_DEFAULT
* @see AudioCodec#AMR_NB
* @see AudioCodec#AMR_WB
* @see AudioCodec#AAC * @see AudioCodec#AAC
* @see AudioCodec#HE_AAC * @see AudioCodec#HE_AAC
* @see AudioCodec#AAC_ELD * @see AudioCodec#AAC_ELD
* @see AudioCodec#VORBIS
* *
* @param codec requested audio codec * @param codec requested audio codec
*/ */

@ -21,38 +21,22 @@ public enum AudioCodec implements Control {
*/ */
DEVICE_DEFAULT(0), DEVICE_DEFAULT(0),
/**
* The AMR_NB codec.
*/
AMR_NB(1),
/**
* The AMR_WB codec.
*/
AMR_WB(2),
/** /**
* The AAC codec. * The AAC codec.
*/ */
AAC(3), AAC(1),
/** /**
* The HE_AAC codec. * The HE_AAC codec.
*/ */
@RequiresApi(Build.VERSION_CODES.JELLY_BEAN) @RequiresApi(Build.VERSION_CODES.JELLY_BEAN)
HE_AAC(4), HE_AAC(2),
/** /**
* The AAC_ELD codec. * The AAC_ELD codec.
*/ */
@RequiresApi(Build.VERSION_CODES.JELLY_BEAN) @RequiresApi(Build.VERSION_CODES.JELLY_BEAN)
AAC_ELD(5), AAC_ELD(3);
/**
* The VORBIS codec.
*/
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
VORBIS(6);
static final AudioCodec DEFAULT = DEVICE_DEFAULT; static final AudioCodec DEFAULT = DEVICE_DEFAULT;

@ -109,11 +109,7 @@ public abstract class FullVideoRecorder extends VideoRecorder {
mProfile.fileFormat = MediaRecorder.OutputFormat.MPEG_4; // should work mProfile.fileFormat = MediaRecorder.OutputFormat.MPEG_4; // should work
} }
// Set audio codec if the user has specified a specific codec. // Set audio codec if the user has specified a specific codec.
if (stub.audioCodec == AudioCodec.AMR_NB) { if (stub.audioCodec == AudioCodec.AAC) {
mProfile.audioCodec = MediaRecorder.AudioEncoder.AMR_NB;
} else if (stub.audioCodec == AudioCodec.AMR_WB) {
mProfile.audioCodec = MediaRecorder.AudioEncoder.AMR_WB;
} else if (stub.audioCodec == AudioCodec.AAC) {
mProfile.audioCodec = MediaRecorder.AudioEncoder.AAC; mProfile.audioCodec = MediaRecorder.AudioEncoder.AAC;
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN
&& stub.audioCodec == AudioCodec.HE_AAC) { && stub.audioCodec == AudioCodec.HE_AAC) {
@ -121,9 +117,6 @@ public abstract class FullVideoRecorder extends VideoRecorder {
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN
&& stub.audioCodec == AudioCodec.AAC_ELD) { && stub.audioCodec == AudioCodec.AAC_ELD) {
mProfile.audioCodec = MediaRecorder.AudioEncoder.AAC_ELD; mProfile.audioCodec = MediaRecorder.AudioEncoder.AAC_ELD;
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP
&& stub.audioCodec == AudioCodec.VORBIS) {
mProfile.audioCodec = MediaRecorder.AudioEncoder.VORBIS;
} }
mMediaRecorder.setOutputFormat(mProfile.fileFormat); mMediaRecorder.setOutputFormat(mProfile.fileFormat);

@ -144,18 +144,13 @@ public class SnapshotVideoRecorder extends VideoRecorder implements RendererFram
case DEVICE_DEFAULT: videoType = "video/avc"; break; case DEVICE_DEFAULT: videoType = "video/avc"; break;
} }
String audioType = ""; String audioType = "";
if (mResult.audioCodec == AudioCodec.AMR_NB) { switch (mResult.audioCodec) {
audioType = "audio/3gpp"; case AAC:
} else if (mResult.audioCodec == AudioCodec.AMR_WB) { case HE_AAC:
audioType = "audio/amr-wb"; case AAC_ELD:
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP audioType = "audio/mp4a-latm"; break;
&& mResult.audioCodec == AudioCodec.VORBIS) { case DEVICE_DEFAULT:
audioType = "audio/vorbis"; audioType = "audio/3gpp";
} else if (mResult.audioCodec == AudioCodec.AAC
|| mResult.audioCodec == AudioCodec.HE_AAC
|| mResult.audioCodec == AudioCodec.AAC_ELD
|| mResult.audioCodec == AudioCodec.DEVICE_DEFAULT) {
audioType = "audio/mp4a-latm";
} }
TextureConfig videoConfig = new TextureConfig(); TextureConfig videoConfig = new TextureConfig();
AudioConfig audioConfig = new AudioConfig(); AudioConfig audioConfig = new AudioConfig();

@ -143,12 +143,9 @@
<attr name="cameraAudioCodec" format="enum"> <attr name="cameraAudioCodec" format="enum">
<enum name="deviceDefault" value="0" /> <enum name="deviceDefault" value="0" />
<enum name="amrNb" value="1" /> <enum name="aac" value="1" />
<enum name="amrWb" value="2" /> <enum name="heAac" value="2" />
<enum name="aac" value="3" /> <enum name="aacEld" value="3" />
<enum name="heAac" value="4" />
<enum name="aacEld" value="5" />
<enum name="vorbis" value="6" />
</attr> </attr>
<attr name="cameraAutoFocusResetDelay" format="integer|reference"/> <attr name="cameraAutoFocusResetDelay" format="integer|reference"/>

@ -76,7 +76,6 @@ Sets the audio encoder for video recordings. Defaults to `DEVICE_DEFAULT`,
which should typically be AAC. which should typically be AAC.
The available values are exposed through the `CameraOptions` object. The available values are exposed through the `CameraOptions` object.
`AudioCodec.VORBIS` is optionally supported on devices running Lolipop and above.
`AudioCodec.HE_AAC` and `AudioCodec.AAC_ELD` require at least JellyBean. `AudioCodec.HE_AAC` and `AudioCodec.AAC_ELD` require at least JellyBean.
The library will safely fall back to device default if the min API requirements The library will safely fall back to device default if the min API requirements
@ -84,12 +83,9 @@ are not met.
```java ```java
cameraView.setAudioCodec(AudioCodec.DEVICE_DEFAULT); cameraView.setAudioCodec(AudioCodec.DEVICE_DEFAULT);
cameraView.setAudioCodec(AudioCodec.AMR_NB);
cameraView.setAudioCodec(AudioCodec.AMR_WB);
cameraView.setAudioCodec(AudioCodec.AAC); cameraView.setAudioCodec(AudioCodec.AAC);
cameraView.setAudioCodec(AudioCodec.HE_AAC); cameraView.setAudioCodec(AudioCodec.HE_AAC);
cameraView.setAudioCodec(AudioCodec.AAC_ELD); cameraView.setAudioCodec(AudioCodec.AAC_ELD);
cameraView.setAudioCodec(AudioCodec.VORBIS);
``` ```
##### cameraWhiteBalance ##### cameraWhiteBalance

Loading…
Cancel
Save