Skip to content

Commit 09bb20b

Browse files
Chih-Chung ChangAndroid (Google) Code Review
authored andcommitted
Merge "Fix 5240036: Generate a reasonable bitrate for intermediate clips."
2 parents 5c72e58 + 8b1f350 commit 09bb20b

File tree

1 file changed

+33
-6
lines changed

1 file changed

+33
-6
lines changed

media/java/android/media/videoeditor/MediaArtistNativeHelper.java

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2318,24 +2318,23 @@ String generateEffectClip(MediaItem lMediaItem, ClipSettings lclipSettings,
23182318
editSettings.audioBitrate = Bitrate.BR_64_KBPS;
23192319
editSettings.audioSamplingFreq = AudioSamplingFrequency.FREQ_32000;
23202320

2321-
editSettings.videoBitrate = Bitrate.BR_5_MBPS;
2322-
//editSettings.videoFormat = VideoFormat.MPEG4;
23232321
editSettings.videoFormat = VideoFormat.H264;
23242322
editSettings.videoFrameRate = VideoFrameRate.FR_30_FPS;
23252323
editSettings.videoFrameSize = findVideoResolution(mVideoEditor.getAspectRatio(),
23262324
m.getHeight());
2325+
editSettings.videoBitrate = findVideoBitrate(editSettings.videoFrameSize);
23272326
} else {
23282327
MediaImageItem m = (MediaImageItem)lMediaItem;
23292328
editSettings.audioBitrate = Bitrate.BR_64_KBPS;
23302329
editSettings.audioChannels = 2;
23312330
editSettings.audioFormat = AudioFormat.AAC;
23322331
editSettings.audioSamplingFreq = AudioSamplingFrequency.FREQ_32000;
23332332

2334-
editSettings.videoBitrate = Bitrate.BR_5_MBPS;
23352333
editSettings.videoFormat = VideoFormat.H264;
23362334
editSettings.videoFrameRate = VideoFrameRate.FR_30_FPS;
23372335
editSettings.videoFrameSize = findVideoResolution(mVideoEditor.getAspectRatio(),
23382336
m.getScaledHeight());
2337+
editSettings.videoBitrate = findVideoBitrate(editSettings.videoFrameSize);
23392338
}
23402339

23412340
editSettings.outputFile = EffectClipPath;
@@ -2395,11 +2394,12 @@ String generateKenBurnsClip(EditSettings e, MediaImageItem m) {
23952394
e.audioFormat = AudioFormat.AAC;
23962395
e.audioSamplingFreq = AudioSamplingFrequency.FREQ_32000;
23972396

2398-
e.videoBitrate = Bitrate.BR_5_MBPS;
23992397
e.videoFormat = VideoFormat.H264;
24002398
e.videoFrameRate = VideoFrameRate.FR_30_FPS;
24012399
e.videoFrameSize = findVideoResolution(mVideoEditor.getAspectRatio(),
24022400
m.getScaledHeight());
2401+
e.videoBitrate = findVideoBitrate(e.videoFrameSize);
2402+
24032403
mProcessingState = PROCESSING_KENBURNS;
24042404
mProcessingObject = m;
24052405
err = generateClip(e);
@@ -2490,10 +2490,10 @@ String generateTransitionClip(EditSettings e, String uniqueId,
24902490
e.audioFormat = AudioFormat.AAC;
24912491
e.audioSamplingFreq = AudioSamplingFrequency.FREQ_32000;
24922492

2493-
e.videoBitrate = Bitrate.BR_5_MBPS;
24942493
e.videoFormat = VideoFormat.H264;
24952494
e.videoFrameRate = VideoFrameRate.FR_30_FPS;
24962495
e.videoFrameSize = getTransitionResolution(m1, m2);
2496+
e.videoBitrate = findVideoBitrate(e.videoFrameSize);
24972497

24982498
if (new File(outputFilename).exists()) {
24992499
new File(outputFilename).delete();
@@ -3567,6 +3567,34 @@ else if (height == MediaProperties.HEIGHT_288)
35673567
return retValue;
35683568
}
35693569

3570+
/**
3571+
* Calculate a reasonable bitrate for generating intermediate clips.
3572+
*/
3573+
private int findVideoBitrate(int videoFrameSize) {
3574+
switch (videoFrameSize) {
3575+
case VideoFrameSize.SQCIF:
3576+
case VideoFrameSize.QQVGA:
3577+
case VideoFrameSize.QCIF:
3578+
return Bitrate.BR_128_KBPS;
3579+
case VideoFrameSize.QVGA:
3580+
case VideoFrameSize.CIF:
3581+
return Bitrate.BR_384_KBPS;
3582+
case VideoFrameSize.VGA:
3583+
case VideoFrameSize.WVGA:
3584+
case VideoFrameSize.NTSC:
3585+
case VideoFrameSize.nHD:
3586+
case VideoFrameSize.WVGA16x9:
3587+
return Bitrate.BR_2_MBPS;
3588+
case VideoFrameSize.V720p:
3589+
case VideoFrameSize.W720p:
3590+
case VideoFrameSize.S720p:
3591+
return Bitrate.BR_5_MBPS;
3592+
case VideoFrameSize.V1080p:
3593+
default:
3594+
return Bitrate.BR_8_MBPS;
3595+
}
3596+
}
3597+
35703598
/**
35713599
* This method is responsible for exporting a movie
35723600
*
@@ -3643,7 +3671,6 @@ void export(String filePath, String projectDir, int height, int bitrate,
36433671
case MediaProperties.BITRATE_2M:
36443672
outBitrate = Bitrate.BR_2_MBPS;
36453673
break;
3646-
36473674
case MediaProperties.BITRATE_5M:
36483675
outBitrate = Bitrate.BR_5_MBPS;
36493676
break;

0 commit comments

Comments
 (0)