Update code based on Google comments

This commit is contained in:
ybai001 2024-07-29 16:12:29 +08:00
parent 5eb064d2d1
commit 6b6d66c7ce
3 changed files with 14 additions and 18 deletions

View File

@ -1304,7 +1304,6 @@ public class TransformerEndToEndTest {
.run(testId, editedMediaItem);
ExportResult exportResult = exportTestResult.exportResult;
assert exportTestResult.filePath != null;
String actualMimeType =
retrieveTrackFormat(context, exportTestResult.filePath, C.TRACK_TYPE_VIDEO).sampleMimeType;
assertThat(actualMimeType).isEqualTo(MimeTypes.VIDEO_DOLBY_VISION);

View File

@ -15,6 +15,7 @@
*/
package androidx.media3.transformer.mh;
import static androidx.media3.common.MimeTypes.VIDEO_DOLBY_VISION;
import static androidx.media3.common.MimeTypes.VIDEO_H265;
import static androidx.media3.common.util.Assertions.checkState;
import static androidx.media3.test.utils.TestUtil.retrieveTrackFormat;
@ -164,14 +165,16 @@ public final class HdrEditingTest {
new TransformerAndroidTestRunner.Builder(context, transformer)
.build()
.run(testId, mediaItem);
assert exportTestResult.filePath != null;
@C.ColorTransfer
int actualColorTransfer =
Objects.requireNonNull(
retrieveTrackFormat(context, exportTestResult.filePath, C.TRACK_TYPE_VIDEO)
.colorInfo)
retrieveTrackFormat(context, exportTestResult.filePath, C.TRACK_TYPE_VIDEO)
.colorInfo
.colorTransfer;
assertThat(actualColorTransfer).isEqualTo(C.COLOR_TRANSFER_HLG);
String actualMimeType =
retrieveTrackFormat(context, exportTestResult.filePath, C.TRACK_TYPE_VIDEO)
.sampleMimeType;
assertThat(actualMimeType).isEqualTo(VIDEO_DOLBY_VISION);
}
@Test
@ -259,12 +262,10 @@ public final class HdrEditingTest {
new TransformerAndroidTestRunner.Builder(context, transformer)
.build()
.run(testId, editedMediaItem);
assert exportTestResult.filePath != null;
@C.ColorTransfer
int actualColorTransfer =
Objects.requireNonNull(
retrieveTrackFormat(context, exportTestResult.filePath, C.TRACK_TYPE_VIDEO)
.colorInfo)
retrieveTrackFormat(context, exportTestResult.filePath, C.TRACK_TYPE_VIDEO)
.colorInfo
.colorTransfer;
assertThat(actualColorTransfer).isEqualTo(C.COLOR_TRANSFER_HLG);
}
@ -402,7 +403,6 @@ public final class HdrEditingTest {
throws Exception {
Context context = ApplicationProvider.getApplicationContext();
Format format = MP4_ASSET_DOLBY_VISION_HDR_FORMAT;
assert format.colorInfo != null;
if (deviceSupportsHdrEditing(VIDEO_H265, format.colorInfo)) {
recordTestSkipped(context, testId, /* reason= */ "Device supports Dolby Vision editing.");
return;
@ -442,12 +442,10 @@ public final class HdrEditingTest {
.build()
.run(testId, editedMediaItem);
assertThat(isToneMappingFallbackApplied.get()).isTrue();
assert exportTestResult.filePath != null;
@C.ColorTransfer
int actualColorTransfer =
Objects.requireNonNull(
retrieveTrackFormat(context, exportTestResult.filePath, C.TRACK_TYPE_VIDEO)
.colorInfo)
retrieveTrackFormat(context, exportTestResult.filePath, C.TRACK_TYPE_VIDEO)
.colorInfo
.colorTransfer;
assertThat(actualColorTransfer).isEqualTo(C.COLOR_TRANSFER_SDR);
} catch (ExportException exception) {

View File

@ -111,8 +111,7 @@ import java.nio.ByteBuffer;
if (isVideo) {
mediaFormat = MediaFormat.createVideoFormat(sampleMimeType, format.width, format.height);
MediaFormatUtil.maybeSetColorInfo(mediaFormat, format.colorInfo);
if (sampleMimeType.equals(MimeTypes.VIDEO_DOLBY_VISION) &&
android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.TIRAMISU) {
if (sampleMimeType.equals(MimeTypes.VIDEO_DOLBY_VISION) && SDK_INT >= 33) {
mediaFormat.setInteger(MediaFormat.KEY_PROFILE, getDvProfile(format));
mediaFormat.setInteger(MediaFormat.KEY_LEVEL, getDvLevel(format));
}
@ -295,7 +294,7 @@ import java.nio.ByteBuffer;
// Get Dolby Vision profile
// Refer to https://professionalsupport.dolby.com/s/article/What-is-Dolby-Vision-Profile
@RequiresApi(api = Build.VERSION_CODES.TIRAMISU)
@RequiresApi(33)
private static int getDvProfile(Format format) {
// Currently, only profile 8 is supported for encoding
// TODO: set profile ID based on format.
@ -304,7 +303,7 @@ import java.nio.ByteBuffer;
// Get Dolby Vision level
// Refer to https://professionalsupport.dolby.com/s/article/What-is-Dolby-Vision-Profile
@RequiresApi(api = Build.VERSION_CODES.TIRAMISU)
@RequiresApi(33)
private static int getDvLevel(Format format) {
int level = -1;
int maxWidthHeight = Math.max(format.width, format.height);