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); .run(testId, editedMediaItem);
ExportResult exportResult = exportTestResult.exportResult; ExportResult exportResult = exportTestResult.exportResult;
assert exportTestResult.filePath != null;
String actualMimeType = String actualMimeType =
retrieveTrackFormat(context, exportTestResult.filePath, C.TRACK_TYPE_VIDEO).sampleMimeType; retrieveTrackFormat(context, exportTestResult.filePath, C.TRACK_TYPE_VIDEO).sampleMimeType;
assertThat(actualMimeType).isEqualTo(MimeTypes.VIDEO_DOLBY_VISION); assertThat(actualMimeType).isEqualTo(MimeTypes.VIDEO_DOLBY_VISION);

View File

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

View File

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