Loading libs/jpegrecoverymap/include/jpegrecoverymap/recoverymap.h +59 −20 Original line number Diff line number Diff line Loading @@ -16,61 +16,100 @@ namespace android::recoverymap { /* * Holds information for uncompressed image or recovery map. */ struct jpeg_r_uncompressed_struct { // Pointer to the data location. void* data; // Width of the recovery map or image in pixels. int width; // Height of the recovery map or image in pixels. int height; }; /* * Holds information for compressed image or recovery map. */ struct jpeg_r_compressed_struct { // Pointer to the data location. void* data; // Data length; int length; }; typedef struct jpeg_r_uncompressed_struct* j_r_uncompressed_ptr; typedef struct jpeg_r_compressed_struct* j_r_compressed_ptr; class RecoveryMap { public: /* * This method is called in the decoding pipeline. It will decode the recovery map. * * input: compressed recovery map * output: uncompressed recovery map * @param compressed_recovery_map compressed recovery map * @param dest decoded recover map * @return true if decoding succeeds */ void* decodeRecoveryMap(void* compressed_recovery_map); bool decodeRecoveryMap(j_r_compressed_ptr compressed_recovery_map, j_r_uncompressed_ptr dest); /* * This method is called in the encoding pipeline. It will encode the recovery map. * * input: uncompressed recovery map * output: compressed recovery map * @param uncompressed_recovery_map uncompressed recovery map * @param dest encoded recover map * @return true if encoding succeeds */ void* encodeRecoveryMap(void* uncompressed_recovery_map); bool encodeRecoveryMap(j_r_uncompressed_ptr uncompressed_recovery_map, j_r_compressed_ptr dest); /* * This method is called in the encoding pipeline. It will take the uncompressed 8-bit and * 10-bit yuv images as input, and calculate the uncompressed recovery map. * * input: uncompressed yuv_420 image, uncompressed p010 image * output: uncompressed recovery map * @param uncompressed_yuv_420_image uncompressed SDR image in YUV_420 color format * @param uncompressed_p010_image uncompressed HDR image in P010 color format * @param dest recover map * @return true if calculation succeeds */ void* generateRecoveryMap(void* uncompressed_yuv_420_image, void* uncompressed_p010_image); bool generateRecoveryMap(j_r_uncompressed_ptr uncompressed_yuv_420_image, j_r_uncompressed_ptr uncompressed_p010_image, j_r_uncompressed_ptr dest); /* * This method is called in the decoding pipeline. It will take the uncompressed (decoded) * 8-bit yuv image and the uncompressed (decoded) recovery map as input, and calculate the * 10-bit recovered image (in p010 color format). * * input: uncompressed yuv_420 image, uncompressed recovery map * output: uncompress p010 image * @param uncompressed_yuv_420_image uncompressed SDR image in YUV_420 color format * @param uncompressed_recovery_map uncompressed recovery map * @param dest reconstructed HDR image * @return true if calculation succeeds */ void* applyRecoveryMap(void* uncompressed_yuv_420_image, void* uncompressed_recovery_map); bool applyRecoveryMap(j_r_uncompressed_ptr uncompressed_yuv_420_image, j_r_uncompressed_ptr uncompressed_recovery_map, j_r_uncompressed_ptr dest); /* * This method is called in the decoding pipeline. It will read XMP metadata to find the start * position of the compressed recovery map, and will extract the compressed recovery map. * * input: compressed JPEG-G image (8-bit JPEG + compressed recovery map) * output: compressed recovery map * @param compressed_jpeg_r_image compressed JPEG_R image * @return compressed recovery map */ void* extractRecoveryMap(void* compressed_jpeg_g_image); j_r_compressed_ptr extractRecoveryMap(void* compressed_jpeg_r_image); /* * This method is called in the encoding pipeline. It will take the standard 8-bit JPEG image * and the compressed recovery map as input, and update the XMP metadata with the end of JPEG * marker, and append the compressed gian map after the JPEG. * * input: compressed 8-bit JPEG image (standard JPEG), compressed recovery map * output: compressed JPEG-G image (8-bit JPEG + compressed recovery map) * @param compressed_jpeg_image compressed 8-bit JPEG image * @param compress_recovery_map compressed recover map * @return compressed JPEG_R image */ void* appendRecoveryMap(void* compressed_jpeg_image, void* compressed_recovery_map); void* appendRecoveryMap(void* compressed_jpeg_image, j_r_compressed_ptr compressed_recovery_map); }; } // namespace android::recoverymap libs/jpegrecoverymap/recoverymap.cpp +30 −21 Original line number Diff line number Diff line Loading @@ -18,46 +18,54 @@ namespace android::recoverymap { void* RecoveryMap::decodeRecoveryMap(void* compressed_recovery_map) { if (compressed_recovery_map == nullptr) { return nullptr; bool RecoveryMap::decodeRecoveryMap(j_r_compressed_ptr compressed_recovery_map, j_r_uncompressed_ptr dest) { if (compressed_recovery_map == nullptr || dest == nullptr) { return false; } // TBD return nullptr; return true; } void* RecoveryMap::encodeRecoveryMap(void* uncompressed_recovery_map) { if (uncompressed_recovery_map == nullptr) { return nullptr; bool RecoveryMap::encodeRecoveryMap(j_r_uncompressed_ptr uncompressed_recovery_map, j_r_compressed_ptr dest) { if (uncompressed_recovery_map == nullptr || dest == nullptr) { return false; } // TBD return nullptr; return true; } void* RecoveryMap::generateRecoveryMap( void* uncompressed_yuv_420_image, void* uncompressed_p010_image) { if (uncompressed_yuv_420_image == nullptr || uncompressed_p010_image == nullptr) { return nullptr; bool RecoveryMap::generateRecoveryMap(j_r_uncompressed_ptr uncompressed_yuv_420_image, j_r_uncompressed_ptr uncompressed_p010_image, j_r_uncompressed_ptr dest) { if (uncompressed_yuv_420_image == nullptr || uncompressed_p010_image == nullptr || dest == nullptr) { return false; } // TBD return nullptr; return true; } void* RecoveryMap::applyRecoveryMap( void* uncompressed_yuv_420_image, void* uncompressed_recovery_map) { if (uncompressed_yuv_420_image == nullptr || uncompressed_recovery_map == nullptr) { return nullptr; bool RecoveryMap::applyRecoveryMap(j_r_uncompressed_ptr uncompressed_yuv_420_image, j_r_uncompressed_ptr uncompressed_recovery_map, j_r_uncompressed_ptr dest) { if (uncompressed_yuv_420_image == nullptr || uncompressed_recovery_map == nullptr || dest == nullptr) { return false; } // TBD return nullptr; return true; } void* RecoveryMap::extractRecoveryMap(void* compressed_jpeg_g_image) { if (compressed_jpeg_g_image == nullptr) { j_r_compressed_ptr RecoveryMap::extractRecoveryMap(void* compressed_jpeg_r_image) { if (compressed_jpeg_r_image == nullptr) { return nullptr; } Loading @@ -65,7 +73,8 @@ void* RecoveryMap::extractRecoveryMap(void* compressed_jpeg_g_image) { return nullptr; } void* RecoveryMap::appendRecoveryMap(void* compressed_jpeg_image, void* compressed_recovery_map) { void* RecoveryMap::appendRecoveryMap(void* compressed_jpeg_image, j_r_compressed_ptr compressed_recovery_map) { if (compressed_jpeg_image == nullptr || compressed_recovery_map == nullptr) { return nullptr; } Loading Loading
libs/jpegrecoverymap/include/jpegrecoverymap/recoverymap.h +59 −20 Original line number Diff line number Diff line Loading @@ -16,61 +16,100 @@ namespace android::recoverymap { /* * Holds information for uncompressed image or recovery map. */ struct jpeg_r_uncompressed_struct { // Pointer to the data location. void* data; // Width of the recovery map or image in pixels. int width; // Height of the recovery map or image in pixels. int height; }; /* * Holds information for compressed image or recovery map. */ struct jpeg_r_compressed_struct { // Pointer to the data location. void* data; // Data length; int length; }; typedef struct jpeg_r_uncompressed_struct* j_r_uncompressed_ptr; typedef struct jpeg_r_compressed_struct* j_r_compressed_ptr; class RecoveryMap { public: /* * This method is called in the decoding pipeline. It will decode the recovery map. * * input: compressed recovery map * output: uncompressed recovery map * @param compressed_recovery_map compressed recovery map * @param dest decoded recover map * @return true if decoding succeeds */ void* decodeRecoveryMap(void* compressed_recovery_map); bool decodeRecoveryMap(j_r_compressed_ptr compressed_recovery_map, j_r_uncompressed_ptr dest); /* * This method is called in the encoding pipeline. It will encode the recovery map. * * input: uncompressed recovery map * output: compressed recovery map * @param uncompressed_recovery_map uncompressed recovery map * @param dest encoded recover map * @return true if encoding succeeds */ void* encodeRecoveryMap(void* uncompressed_recovery_map); bool encodeRecoveryMap(j_r_uncompressed_ptr uncompressed_recovery_map, j_r_compressed_ptr dest); /* * This method is called in the encoding pipeline. It will take the uncompressed 8-bit and * 10-bit yuv images as input, and calculate the uncompressed recovery map. * * input: uncompressed yuv_420 image, uncompressed p010 image * output: uncompressed recovery map * @param uncompressed_yuv_420_image uncompressed SDR image in YUV_420 color format * @param uncompressed_p010_image uncompressed HDR image in P010 color format * @param dest recover map * @return true if calculation succeeds */ void* generateRecoveryMap(void* uncompressed_yuv_420_image, void* uncompressed_p010_image); bool generateRecoveryMap(j_r_uncompressed_ptr uncompressed_yuv_420_image, j_r_uncompressed_ptr uncompressed_p010_image, j_r_uncompressed_ptr dest); /* * This method is called in the decoding pipeline. It will take the uncompressed (decoded) * 8-bit yuv image and the uncompressed (decoded) recovery map as input, and calculate the * 10-bit recovered image (in p010 color format). * * input: uncompressed yuv_420 image, uncompressed recovery map * output: uncompress p010 image * @param uncompressed_yuv_420_image uncompressed SDR image in YUV_420 color format * @param uncompressed_recovery_map uncompressed recovery map * @param dest reconstructed HDR image * @return true if calculation succeeds */ void* applyRecoveryMap(void* uncompressed_yuv_420_image, void* uncompressed_recovery_map); bool applyRecoveryMap(j_r_uncompressed_ptr uncompressed_yuv_420_image, j_r_uncompressed_ptr uncompressed_recovery_map, j_r_uncompressed_ptr dest); /* * This method is called in the decoding pipeline. It will read XMP metadata to find the start * position of the compressed recovery map, and will extract the compressed recovery map. * * input: compressed JPEG-G image (8-bit JPEG + compressed recovery map) * output: compressed recovery map * @param compressed_jpeg_r_image compressed JPEG_R image * @return compressed recovery map */ void* extractRecoveryMap(void* compressed_jpeg_g_image); j_r_compressed_ptr extractRecoveryMap(void* compressed_jpeg_r_image); /* * This method is called in the encoding pipeline. It will take the standard 8-bit JPEG image * and the compressed recovery map as input, and update the XMP metadata with the end of JPEG * marker, and append the compressed gian map after the JPEG. * * input: compressed 8-bit JPEG image (standard JPEG), compressed recovery map * output: compressed JPEG-G image (8-bit JPEG + compressed recovery map) * @param compressed_jpeg_image compressed 8-bit JPEG image * @param compress_recovery_map compressed recover map * @return compressed JPEG_R image */ void* appendRecoveryMap(void* compressed_jpeg_image, void* compressed_recovery_map); void* appendRecoveryMap(void* compressed_jpeg_image, j_r_compressed_ptr compressed_recovery_map); }; } // namespace android::recoverymap
libs/jpegrecoverymap/recoverymap.cpp +30 −21 Original line number Diff line number Diff line Loading @@ -18,46 +18,54 @@ namespace android::recoverymap { void* RecoveryMap::decodeRecoveryMap(void* compressed_recovery_map) { if (compressed_recovery_map == nullptr) { return nullptr; bool RecoveryMap::decodeRecoveryMap(j_r_compressed_ptr compressed_recovery_map, j_r_uncompressed_ptr dest) { if (compressed_recovery_map == nullptr || dest == nullptr) { return false; } // TBD return nullptr; return true; } void* RecoveryMap::encodeRecoveryMap(void* uncompressed_recovery_map) { if (uncompressed_recovery_map == nullptr) { return nullptr; bool RecoveryMap::encodeRecoveryMap(j_r_uncompressed_ptr uncompressed_recovery_map, j_r_compressed_ptr dest) { if (uncompressed_recovery_map == nullptr || dest == nullptr) { return false; } // TBD return nullptr; return true; } void* RecoveryMap::generateRecoveryMap( void* uncompressed_yuv_420_image, void* uncompressed_p010_image) { if (uncompressed_yuv_420_image == nullptr || uncompressed_p010_image == nullptr) { return nullptr; bool RecoveryMap::generateRecoveryMap(j_r_uncompressed_ptr uncompressed_yuv_420_image, j_r_uncompressed_ptr uncompressed_p010_image, j_r_uncompressed_ptr dest) { if (uncompressed_yuv_420_image == nullptr || uncompressed_p010_image == nullptr || dest == nullptr) { return false; } // TBD return nullptr; return true; } void* RecoveryMap::applyRecoveryMap( void* uncompressed_yuv_420_image, void* uncompressed_recovery_map) { if (uncompressed_yuv_420_image == nullptr || uncompressed_recovery_map == nullptr) { return nullptr; bool RecoveryMap::applyRecoveryMap(j_r_uncompressed_ptr uncompressed_yuv_420_image, j_r_uncompressed_ptr uncompressed_recovery_map, j_r_uncompressed_ptr dest) { if (uncompressed_yuv_420_image == nullptr || uncompressed_recovery_map == nullptr || dest == nullptr) { return false; } // TBD return nullptr; return true; } void* RecoveryMap::extractRecoveryMap(void* compressed_jpeg_g_image) { if (compressed_jpeg_g_image == nullptr) { j_r_compressed_ptr RecoveryMap::extractRecoveryMap(void* compressed_jpeg_r_image) { if (compressed_jpeg_r_image == nullptr) { return nullptr; } Loading @@ -65,7 +73,8 @@ void* RecoveryMap::extractRecoveryMap(void* compressed_jpeg_g_image) { return nullptr; } void* RecoveryMap::appendRecoveryMap(void* compressed_jpeg_image, void* compressed_recovery_map) { void* RecoveryMap::appendRecoveryMap(void* compressed_jpeg_image, j_r_compressed_ptr compressed_recovery_map) { if (compressed_jpeg_image == nullptr || compressed_recovery_map == nullptr) { return nullptr; } Loading