Merge pull request #1519 from Exiv2/fix_1503_JXL_bmff

Fix 1503 jxl bmff
main
Robin Mills 4 years ago committed by GitHub
commit a750ea2780
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -61,6 +61,7 @@ struct BmffBoxHeader
#define TAG_heix 0x68656978 /**< "heix" HEIC */
#define TAG_mif1 0x6d696631 /**< "mif1" HEIF */
#define TAG_crx 0x63727820 /**< "crx " Canon CR3 */
#define TAG_jxl 0x4a584c20 /**< "JXL " JPEG XL */
#define TAG_moov 0x6d6f6f76 /**< "moov" Movie */
#define TAG_meta 0x6d657461 /**< "meta" Metadata */
#define TAG_mdat 0x6d646174 /**< "mdat" Media data */
@ -78,6 +79,8 @@ struct BmffBoxHeader
#define TAG_cmt3 0x434D5433 /**< "CMT3" canonID */
#define TAG_cmt4 0x434D5434 /**< "CMT4" gpsID */
#define TAG_colr 0x636f6c72 /**< "colr" */
#define TAG_exif 0x45786966 /**< "Exif" Used by JXL*/
#define TAG_xml 0x786d6c20 /**< "xml" Used by JXL*/
// *****************************************************************************
// class member definitions
@ -149,6 +152,8 @@ namespace Exiv2
return "image/heif";
case TAG_crx:
return "image/x-canon-cr3";
case TAG_jxl:
return "image/jxl"; // https://github.com/novomesk/qt-jpegxl-image-plugin/issues/1
default:
return "image/generic";
}
@ -435,6 +440,12 @@ namespace Exiv2
case TAG_cmt4:
parseTiff(Internal::Tag::cmt4, box.length);
break;
case TAG_exif:
parseTiff(Internal::Tag::root, box.length,address+8);
break;
case TAG_xml:
parseXmp(box.length,io_->tell());
break;
default: break ; /* do nothing */
}
@ -610,7 +621,8 @@ namespace Exiv2
return false;
}
bool matched = buf[4] == 'f' && buf[5] == 't' && buf[6] == 'y' && buf[7] == 'p';
bool matched = (buf[4] == 'f' && buf[5] == 't' && buf[6] == 'y' && buf[7] == 'p')
||(buf[4] == 'J' && buf[5] == 'X' && buf[6] == 'L' && buf[7] == ' ');
if (!advance || !matched) {
iIo.seek(static_cast<long>(0), BasicIo::beg);
}

Binary file not shown.

@ -0,0 +1,60 @@
# -*- coding: utf-8 -*-
import system_tests
import unittest
# test needs system_tests.BT.vv['enable_bmff']=1
bSkip=system_tests.BT.verbose_version().get('enable_bmff')!='1'
if bSkip:
raise unittest.SkipTest('*** requires enable_bmff=1 ***')
class issue_1503_jxl_bmff(metaclass=system_tests.CaseMeta):
url = "https://github.com/Exiv2/exiv2/issue/1503"
filename = "$data_path/Reagan.jxl"
commands = ["$exiv2 -pS $filename"
,"$exiv2 -g Date/i $filename"
,"$exiv2 $filename"
]
retval = [ 0 ] * len(commands)
stderr = [ "" ] * len(commands)
stdin = [ "" ] * len(commands)
stdout = ["""Exiv2::BmffImage::boxHandler: JXL 0->12
Exiv2::BmffImage::boxHandler: ftyp 12->20 brand: jxl
Exiv2::BmffImage::boxHandler: Exif 32->5722
Exiv2::BmffImage::boxHandler: xml 5754->5306
Exiv2::BmffImage::boxHandler: jbrd 11060->1707
Exiv2::BmffImage::boxHandler: jxlc 12767->20125
""","""Exif.Image.DateTime Ascii 20 2016:09:13 11:58:16
Exif.Photo.DateTimeOriginal Ascii 20 2004:06:21 23:37:53
Exif.Photo.DateTimeDigitized Ascii 20 2004:06:21 23:37:53
Xmp.xmp.ModifyDate XmpText 25 2016-09-13T11:58:16+01:00
Xmp.xmp.CreateDate XmpText 25 2004-06-21T23:37:53+01:00
Xmp.xmp.MetadataDate XmpText 25 2016-09-13T11:58:16+01:00
Xmp.photoshop.DateCreated XmpText 10 2004-06-21
""","""File name : $filename
File size : 32892 Bytes
MIME type : image/generic
Image size : 200 x 130
Thumbnail : image/jpeg, 4196 Bytes
Camera make : NIKON CORPORATION
Camera model : NIKON D1X
Image timestamp : 2004:06:21 23:37:53
File number :
Exposure time : 1/125 s
Aperture : F5
Exposure bias : +1/3 EV
Flash : No flash
Flash bias :
Focal length : 42.0 mm
Subject distance:
ISO speed :
Exposure mode : Manual
Metering mode : Center weighted average
Macro mode :
Image quality :
White balance : Manual
Copyright :
Exif comment :
"""
]
Loading…
Cancel
Save