|
| 1 | +From 8c42e0c85b8be5793ecf67c9ae1123f1343c5bed Mon Sep 17 00:00:00 2001 |
| 2 | +From: John Reck <jreck@google.com> |
| 3 | +Date: Wed, 25 Jun 2025 14:18:45 -0700 |
| 4 | +Subject: [PATCH] Track DNG SDK 1.7.1 API changes |
| 5 | + |
| 6 | +966e57a9a04b3dc56de8230e4c02d73ac46c01b2 |
| 7 | + |
| 8 | +Bug: 412662901 |
| 9 | +Test: make |
| 10 | +Cherrypick-From: https://googleplex-android-review.googlesource.com/q/commit:710c53b4c71495ba646646ba11510f423ae458e7 |
| 11 | +Merged-In: I11050ac5461b13a65fd6d69b4607ffc9ab3fba2c |
| 12 | +Change-Id: I11050ac5461b13a65fd6d69b4607ffc9ab3fba2c |
| 13 | +--- |
| 14 | + .../libctscamera2jni/dng-validate-jni.cpp | 41 +++++++++---------- |
| 15 | + 1 file changed, 20 insertions(+), 21 deletions(-) |
| 16 | + |
| 17 | +diff --git a/tests/camera/libctscamera2jni/dng-validate-jni.cpp b/tests/camera/libctscamera2jni/dng-validate-jni.cpp |
| 18 | +index 186cf3f3b97..e6bb3aab406 100644 |
| 19 | +--- a/tests/camera/libctscamera2jni/dng-validate-jni.cpp |
| 20 | ++++ b/tests/camera/libctscamera2jni/dng-validate-jni.cpp |
| 21 | +@@ -234,7 +234,7 @@ static dng_error_code dng_validate(const void* data, uint32_t count) { |
| 22 | + |
| 23 | + // Skip preview if writing a compresssed main image to save space |
| 24 | + // in this example code. |
| 25 | +- if (negative->RawJPEGImage() != NULL && previewIndex > 0) { |
| 26 | ++ if (negative->RawLossyCompressedImage() != NULL && previewIndex > 0) { |
| 27 | + break; |
| 28 | + } |
| 29 | + |
| 30 | +@@ -265,8 +265,8 @@ static dng_error_code dng_validate(const void* data, uint32_t count) { |
| 31 | + |
| 32 | + // If we have compressed JPEG data, create a compressed thumbnail. Otherwise |
| 33 | + // save a uncompressed thumbnail. |
| 34 | +- bool useCompressedPreview = (negative->RawJPEGImage() != NULL) || |
| 35 | +- (previewIndex > 0); |
| 36 | ++ bool useCompressedPreview = |
| 37 | ++ (negative->RawLossyCompressedImage() != NULL) || (previewIndex > 0); |
| 38 | + |
| 39 | + AutoPtr<dng_preview> preview (useCompressedPreview ? |
| 40 | + (dng_preview *) new dng_jpeg_preview : |
| 41 | +@@ -287,7 +287,7 @@ static dng_error_code dng_validate(const void* data, uint32_t count) { |
| 42 | + |
| 43 | + if (!useCompressedPreview) { |
| 44 | + dng_image_preview *imagePreview = static_cast<dng_image_preview *>(preview.Get()); |
| 45 | +- imagePreview->fImage.Reset(previewImage.Release()); |
| 46 | ++ imagePreview->SetImage(host, previewImage.Release()); |
| 47 | + } else { |
| 48 | + dng_jpeg_preview *jpegPreview = static_cast<dng_jpeg_preview *>(preview.Get()); |
| 49 | + int32 quality = (previewIndex == 0 ? 8 : 5); |
| 50 | +@@ -308,12 +308,8 @@ static dng_error_code dng_validate(const void* data, uint32_t count) { |
| 51 | + dng_timer timer("Write DNG time"); |
| 52 | + dng_image_writer writer; |
| 53 | + |
| 54 | +- writer.WriteDNG(host, |
| 55 | +- stream2, |
| 56 | +- *negative.Get(), |
| 57 | +- &previewList, |
| 58 | +- dngVersion_Current, |
| 59 | +- false); |
| 60 | ++ writer.WriteDNG(host, stream2, *negative.Get(), &previewList, |
| 61 | ++ dngVersion_SaveDefault, false); |
| 62 | + } |
| 63 | + |
| 64 | + gDumpDNG.Clear(); |
| 65 | +@@ -351,6 +347,8 @@ static dng_error_code dng_validate(const void* data, uint32_t count) { |
| 66 | + if (negative->GetXMP()) { |
| 67 | + negative->GetXMP()->RemoveProperties(XMP_NS_CRS); |
| 68 | + negative->GetXMP()->RemoveProperties(XMP_NS_CRSS); |
| 69 | ++ negative->GetXMP()->RemoveProperties(XMP_NS_CRD); |
| 70 | ++ negative->GetXMP()->RemoveProperties(XMP_NS_CRLCP); |
| 71 | + } |
| 72 | + #endif |
| 73 | + |
| 74 | +@@ -358,17 +356,18 @@ static dng_error_code dng_validate(const void* data, uint32_t count) { |
| 75 | + dng_file_stream stream2(gDumpTIF.Get(), true); |
| 76 | + |
| 77 | + { |
| 78 | ++ const dng_camera_profile *profilePtr = nullptr; |
| 79 | ++ dng_camera_profile profile; |
| 80 | ++ if (!negative->IsMonochrome()) { |
| 81 | ++ const auto &profileID = render.CameraProfileID(); |
| 82 | ++ if (negative->GetProfileByID(profileID, profile)) profilePtr = &profile; |
| 83 | ++ } |
| 84 | + dng_timer timer("Write TIFF time"); |
| 85 | + dng_image_writer writer; |
| 86 | + |
| 87 | +- writer.WriteTIFF(host, |
| 88 | +- stream2, |
| 89 | +- *finalImage.Get(), |
| 90 | +- finalImage->Planes() >= 3 ? piRGB |
| 91 | +- : piBlackIsZero, |
| 92 | +- ccUncompressed, |
| 93 | +- negative.Get(), |
| 94 | +- &render.FinalSpace()); |
| 95 | ++ writer.WriteTIFF(host, stream2, *finalImage.Get(), |
| 96 | ++ finalImage->Planes() >= 3 ? piRGB : piBlackIsZero, ccUncompressed, |
| 97 | ++ &negative->Metadata(), &render.FinalSpace(profilePtr)); |
| 98 | + } |
| 99 | + gDumpTIF.Clear(); |
| 100 | + } |
| 101 | +@@ -432,7 +431,7 @@ Java_android_hardware_camera2_cts_DngCreatorTest_validateDngNative( |
| 102 | + ALOGE("Error reading from dng_validate output pipe: %d", errno); |
| 103 | + return JNI_FALSE; |
| 104 | + } |
| 105 | +- close(pipeFds[1]); |
| 106 | ++ close(pipeFds[0]); |
| 107 | + |
| 108 | + std::string line; |
| 109 | + int lineCount = 0; |
| 110 | +@@ -457,8 +456,8 @@ Java_android_hardware_camera2_cts_DngCreatorTest_validateDngNative( |
| 111 | + } |
| 112 | + } |
| 113 | + // If no output is produced, assume something went wrong |
| 114 | +- if (lineCount < 3) { |
| 115 | +- ALOGE("Validation output less than expected!"); |
| 116 | ++ if (lineCount > 0) { |
| 117 | ++ ALOGE("Unexpected stderr output!"); |
| 118 | + dng_err = dng_error_unknown; |
| 119 | + } |
| 120 | + if (dng_err != dng_error_none) { |
| 121 | +-- |
| 122 | +2.52.0.rc1.455.g30608eb744-goog |
| 123 | + |
0 commit comments