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() {
cameraView.set(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);
assertEquals(cameraView.get(AudioCodec.class), AudioCodec.AAC);
cameraView.set(AudioCodec.HE_AAC);
assertEquals(cameraView.get(AudioCodec.class), AudioCodec.HE_AAC);
cameraView.set(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}.
*
* @see AudioCodec#DEVICE_DEFAULT
* @see AudioCodec#AMR_NB
* @see AudioCodec#AMR_WB
* @see AudioCodec#AAC
* @see AudioCodec#HE_AAC
* @see AudioCodec#AAC_ELD
* @see AudioCodec#VORBIS
*
* @param codec requested audio codec
*/

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

@ -109,11 +109,7 @@ public abstract class FullVideoRecorder extends VideoRecorder {
mProfile.fileFormat = MediaRecorder.OutputFormat.MPEG_4; // should work
}
// Set audio codec if the user has specified a specific codec.
if (stub.audioCodec == AudioCodec.AMR_NB) {
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) {
if (stub.audioCodec == AudioCodec.AAC) {
mProfile.audioCodec = MediaRecorder.AudioEncoder.AAC;
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN
&& 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
&& stub.audioCodec == AudioCodec.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);

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

@ -143,12 +143,9 @@
<attr name="cameraAudioCodec" format="enum">
<enum name="deviceDefault" value="0" />
<enum name="amrNb" value="1" />
<enum name="amrWb" value="2" />
<enum name="aac" value="3" />
<enum name="heAac" value="4" />
<enum name="aacEld" value="5" />
<enum name="vorbis" value="6" />
<enum name="aac" value="1" />
<enum name="heAac" value="2" />
<enum name="aacEld" value="3" />
</attr>
<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.
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.
The library will safely fall back to device default if the min API requirements
@ -84,12 +83,9 @@ are not met.
```java
cameraView.setAudioCodec(AudioCodec.DEVICE_DEFAULT);
cameraView.setAudioCodec(AudioCodec.AMR_NB);
cameraView.setAudioCodec(AudioCodec.AMR_WB);
cameraView.setAudioCodec(AudioCodec.AAC);
cameraView.setAudioCodec(AudioCodec.HE_AAC);
cameraView.setAudioCodec(AudioCodec.AAC_ELD);
cameraView.setAudioCodec(AudioCodec.VORBIS);
```
##### cameraWhiteBalance

Loading…
Cancel
Save