diff options
Diffstat (limited to 'apex/media/framework/java/android/media/MediaTranscodingManager.java')
-rw-r--r-- | apex/media/framework/java/android/media/MediaTranscodingManager.java | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/apex/media/framework/java/android/media/MediaTranscodingManager.java b/apex/media/framework/java/android/media/MediaTranscodingManager.java index 7e4799cb477a..aff320401061 100644 --- a/apex/media/framework/java/android/media/MediaTranscodingManager.java +++ b/apex/media/framework/java/android/media/MediaTranscodingManager.java @@ -33,6 +33,8 @@ import android.os.ServiceSpecificException; import android.system.Os; import android.util.Log; +import androidx.annotation.RequiresApi; + import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.modules.annotation.MinSdk; @@ -85,6 +87,7 @@ import java.util.concurrent.Executors; @hide */ @MinSdk(Build.VERSION_CODES.S) +@RequiresApi(Build.VERSION_CODES.S) @SystemApi public final class MediaTranscodingManager { private static final String TAG = "MediaTranscodingManager"; @@ -946,6 +949,8 @@ public final class MediaTranscodingManager { * * @return the video track format to be used if transcoding should be performed, * and null otherwise. + * @throws IllegalArgumentException if the hinted source video format contains invalid + * parameters. */ @Nullable public MediaFormat resolveVideoFormat() { @@ -956,20 +961,19 @@ public final class MediaTranscodingManager { MediaFormat videoTrackFormat = new MediaFormat(mSrcVideoFormatHint); videoTrackFormat.setString(MediaFormat.KEY_MIME, MediaFormat.MIMETYPE_VIDEO_AVC); - int width = mSrcVideoFormatHint.getInteger(MediaFormat.KEY_WIDTH); - int height = mSrcVideoFormatHint.getInteger(MediaFormat.KEY_HEIGHT); + int width = mSrcVideoFormatHint.getInteger(MediaFormat.KEY_WIDTH, -1); + int height = mSrcVideoFormatHint.getInteger(MediaFormat.KEY_HEIGHT, -1); if (width <= 0 || height <= 0) { throw new IllegalArgumentException( "Source Width and height must be larger than 0"); } - float frameRate = 30.0f; // default to 30fps. - if (mSrcVideoFormatHint.containsKey(MediaFormat.KEY_FRAME_RATE)) { - frameRate = mSrcVideoFormatHint.getFloat(MediaFormat.KEY_FRAME_RATE); - if (frameRate <= 0) { - throw new IllegalArgumentException( - "frameRate must be larger than 0"); - } + float frameRate = + mSrcVideoFormatHint.getNumber(MediaFormat.KEY_FRAME_RATE, 30.0) + .floatValue(); + if (frameRate <= 0) { + throw new IllegalArgumentException( + "frameRate must be larger than 0"); } int bitrate = getAVCBitrate(width, height, frameRate); |