Merge pull request #1519 from Exiv2/fix_1503_JXL_bmff
Fix 1503 jxl bmff
This commit is contained in:
commit
a750ea2780
@ -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);
|
||||
}
|
||||
|
||||
BIN
test/data/Reagan.jxl
Normal file
BIN
test/data/Reagan.jxl
Normal file
Binary file not shown.
60
tests/bugfixes/github/test_issue_1503.py
Normal file
60
tests/bugfixes/github/test_issue_1503.py
Normal file
@ -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…
Reference in New Issue
Block a user