Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for ISOBMFF Files (AVIF, HEIF, CR3) #1229

Closed
johnny-bit opened this issue Jun 5, 2020 · 70 comments
Closed

Add support for ISOBMFF Files (AVIF, HEIF, CR3) #1229

johnny-bit opened this issue Jun 5, 2020 · 70 comments
Assignees
Labels
request feature request or any other kind of wish
Milestone

Comments

@johnny-bit
Copy link

Is your feature request related to a problem? Please describe.
Exiv2 does not support ISOBMFF format, therefore doesn't support AVIF, HEIF, CR3 and possibly other filetypes using this format

Describe the solution you'd like
Ideally - ISOBMFF format support, at least reading data from it :)

Describe alternatives you've considered
ExifTool and couple other open source projects already support ISOBMFF based files, however exiv2 still doesn't.

Additional context
Iam fully aware of #1066 - I asked my legal counsel and gethered much needed advice. According to all info I managed to gather, there's no legal issue in creating and using a tool capable of reading data and metadata stored in ISOBMFF containers. Worth noting is the fact that JPEG2000 IS an ISOBMFF based and support for it is present in the library without any issue.

Aditionally, already existing libraries like libavif, libheif, libraw and others already work with ISOBMFF files without legal problems.

The ONLY problematic issue would be not reading but decrypting encrypted (not encoded) data or using proprietary code, which I am sure is not the issue here.

@johnny-bit johnny-bit added the request feature request or any other kind of wish label Jun 5, 2020
@Filou83
Copy link

Filou83 commented Jun 5, 2020

Please add support for CR3 and HEIF/HEIC image formats, at least to support reading the image/EXIF informations located in the container.

I've read #1066 , #978 and the comment here darktable-org/rawspeed#121 (comment). I tried to understand the concerns about legal issues when reading data from patented ISOBMFF, but I could not see any evidence in this concerns. As far as I've read, there already have been contributions submitted to support these file fomats. Please add them to your library.

Thank you in advance!

@clanmills
Copy link
Collaborator

clanmills commented Jun 5, 2020

This would now be in Exiv2 v0.27.3 without this show stopper from @D4N #1066 (comment)

It's too late to develop the code required to implement this feature for v0.27.3 which is now at RC2. #1018 (comment)

I will support and mentor/assist anybody willing to work on this issue.

@Filou83
Copy link

Filou83 commented Jun 6, 2020

This would now be in Exiv2 v0.27.3 without this show stopper from @D4N #1066 (comment)

It's too late to develop the code required to implement this feature for v0.27.3 which is now at RC2. #1018 (comment)

I will support and mentor/assist anybody willing to work on this issue.

Thank you for your answer. But I still don't understand exactly what the goal is. There have been 2 contributions done to bring HEIF support to exiv2, maybe these could be reopened?
#978 and #1044
Then #1066 has been opened. So there are 3 proposals to get ISOBMFF support. Maybe one of them could be pushed again into master branch? Maybe it could be your last huge step forward for the project before retireing from exiv2? ;) (with a winking eye and full of hope that you're going to stay)
Or do you believe, the only possible option is to write independend code in exiv2 without using the libheif library?

@clanmills
Copy link
Collaborator

I'm working on a book "Image Metadata and Exiv2 Architecture". Here's today's version: https://clanmills.com/exiv2/book/ (and/or https://clanmills.com/exiv2/book/IMaEA.pdf).

The book is coming along quite steadily. The purpose behind the book is to help Exiv2 survive and be developed in future.

It was not only Dan's comment, there was another very negative comment: #1066 (comment) I didn't understand the comment because it refers to a case about which I know nothing.

I don't think we need to use another library to do this. We already have a CR2 and JP2000 parsers. We can probably modify that and we're done. And there's another brainless approach. Exif metadata is written as an embedded TIFF which has the signature II*\0 or MM\0*, XMP <x:xmpmeta x="adobe:ns:meta/" We could read the file byte-by-byte and find the metadata. What's the difference between reading a file byte-by-byte and using the command cp? None that I can think of. Does cp infringe image patents?

However, as Dan said "Patents don't work that way!", and I took that to mean "no matter what solution you propose, you may be in legal trouble!". A couple of years ago, we needed legal advice and I got free help from an expert in intellectual property licensing. I offered to consult with this person before publish any code for ISOBMFF. There was no response to my offer.

Exiv2 v0.27.3 will ship as scheduled on 2020-06-30. I'm going to finish the book and have offered to do "one final release" which will be 0.27.4 or 0.28. Again, no feedback from the team.

We could have a team meeting (on Zoom or something) to discuss this. I can't be bothered.

@pr0m1th3as
Copy link

pr0m1th3as commented Jun 6, 2020

@clanmills Thank you for all your work with exiv2 and please do everyone a big favor and go ahead with the initial plan of adding ISOBMFF support to your last "one final release".

A few words about software patents and multimedia formats

Software patents are put in place to ensure competition advantages of the companies who implement them. Companies like Canon do not want to see a rival bring a camera in the market using their own format and/or proprietary software to process their raw images. And this is the main obstacle for open sourcing their formats.

Nevertheless, what the end user may or may not do with the raw files generated with a legally obtained camera, is not Canon's concern and it can't be, because any files generated with a camera are always the property of the camera's end user and not the manufacturer's.

I am not sure to what Dan referred to when said "Patents don't work that way!"
but legal precedent has shown that software patents work this way: if I loose money from you using my patent, then I sue you and lawyers come into play, if I don't loose money or even benefit from your work, then I don't care, nevertheless I keep my patents in place.
So the question about foreseeable legal troubles boils down to: did exiv2 or darktable or anybody else face legal trouble for reading Canon's CR2 raw format? (yes, there patents for that too).

I am not a lawyer but following @johnny-bit and @clanmills initiative I discussed this issue with one. The above comments can be considered a short summary of this discussion.

@clanmills
Copy link
Collaborator

The exiv2 project has no money at all. None. Not a penny. So why would Canon sue somebody with no money? And if the project has no money, Canon would find it difficult to explain in court why reading metadata (written to a public standard) caused them to loose money. As I have pointed out, we could find the metadata by hunting for the markers.

After I started to work on v0.27.3, my wife said "Am I becoming an Exiv2 widow again? You're in your office 12 hours every day. When is this going to stop?". So when Dan and Jens started being so negative, I thought: "I don't need to spend 4 weeks developing and testing ISOBMFF.".

I'm not going to do anything at the moment. Exiv2 v0.27.3 RC2 was published as scheduled last Sunday on 2020-05-31. I hope there will be no code changes and it will be released as 0.27.3 on 2020-06-30.

If no-one else volunteers, I'll reopen #1066 for the next release (0.27.4 or 0.28). However, I hope somebody will undertake this project. I want to pursue other hobbies such as playing the Euphonium and Piano, running, the garden and spending time with my wife.

MusicRoom

@pr0m1th3as
Copy link

Apparently they wouldn't, but I guess we will have to wait and see what's next. I only wish I had the necessary skills to get involved in a more productive manner other than expressing my support.

On the bright side, your music room makes a clear statement about pursuing other hobbies. Although euphonium, running and gardening are not my things, the piano is a serious temptation 👍 and reasonably deserves for some daily attention, not to mention the wife of course.

@clanmills
Copy link
Collaborator

There's another reason that I forgot to mention. I'd like to solve the "Lens Recognition" problem. I'm going to make a proposal to the community at LGM in Rennes in May 2021. #1202 (comment)

In order to work on M2Lscript (pronounced MillsScript), I have to escape from Exiv2 to give me the time. I hope the community will find somebody to take on the maintenance of Exiv2. I intend to run a work-shop at LGM based on my book. I'm doing all I can to ensure the long-term success of Exiv2.

@D4N
Copy link
Member

D4N commented Jun 8, 2020 via email

@johnny-bit
Copy link
Author

@D4N - There is literally nothing legally speaking in the way of loading any file on your disk into memory, reading bytes from it and interpreting those. be it heif, mp3, jpg2k or whatever. Also if data is available within file in know standard, there's nothing legally barring you from interpreting that data according to that standard (meaning exif, xmp etc...).

As I mentioned - you are stomping on legal minefield if you try to decrypt encrypted data. You are violating law if you're using unlicenced proprietary decoder to read encoded data. You are threading near some borders if you do cleanroom-analysis of data within file and write your own decoder.

I assume than none of the above matches description of what's needed to read exif data from ISOBMFF container.

Legal-expertise wise: I asked my legal advisor for legal advice and it's cost. I'll setup a meeting with him and ask for cost of legal expertise. I can cover at least part of the cost associated. I also would be needing description of way of ow exiv2 reads files, does it use any proprietary software or any "problematic" parts I've mentioned above.

@pr0m1th3as
Copy link

@D4N Nikon's NEF is a proprietary format, Canon's CRW & CR2 are proprietary formats too, so could you clarify what's the difference with Canon's CR3? They all have patents filed to maintain advantage over their competitors. Even DNG has a patent license called "Digital Negative (DNG) Specification Patent License" although they 've stated about 5 years later (in 2009) that "there were no known intellectual property encumbrances or license requirements for DNG". (sourced from wikipedia and Adobe's website)

AFAIK if one runs into trouble for reading proprietary raw formats, then this trouble should be here onto all of us very long ago. If I remember correctly dcraw started reading such files by reverse engineering them almost two decades ago. To my knowledge, there has been no issue with any opensource software reading proprietary raw files all these years.

On the other hand, if your concern arise from the latest developments with EU legislation and the rumors/concerns that could potentially harm other open source projects like VLC for reading other media formats (audio or video), this is an entirely different story. Regarding VLC and the like, there are legal grounds because those files are (potentially) not legally acquired or/and they still have certain restrictions such as CDs, tapes, vinyl etc. for example you need extra permission to publicly play a music CD even if you bought lawfully. And there is a lot concern about online piracy and all that. Most importantly, when you buy some music on a CD and mp3 file, you own the medium not the intellectual content it is saved in there.

But this is never the case with our camera's raw files, any content saved in a raw format with a camera I take a picture with belongs to me including any copyrights I am willing to introduce to my photos. This the main reason why companies like Canon, Nikon etc never bothered coming after you or every other person like Robin who have devoted significant time into making these formats accessible to the open source community. The other reason is explained in my previous post (nothing to gain). They still charge (possibly) Adobe for some readily available API so they can include CR£ support in their latest LR version, which they charge end users for a lot of money, and they do this because they can (Adobe don't mind some premium for faster support for their software, they take for free from the opensource community a lot more, which is under LR's hood anyway). But you can add this to the reasons why Canon and the like are quite hesitant to provide a free API for reading their raw files.

@1div0
Copy link
Collaborator

1div0 commented Jun 8, 2020

@pr0m1th3as
Copy link

pr0m1th3as commented Jun 8, 2020

* please read this https://www.linkedin.com/pulse/future-without-mpeg-leonardo-chiariglione/

I am not sure how this directly relates to the matter of this thread. Quite interesting reading though.

As for the purposes of reverse engineering and reading a proprietary format for interoperability purposes, the following US Law makes it pretty clear IMO and also explains why StarOffice, OpenOffice, & LibreOffice had no legal troubles reading MS Word formats before Microsoft's Open Specification Promise over a decade ago. Not to mention about dcraw, exiftools, exiv2, darktable, etc., which are our concern in this thread.

"Sec. 103(f) of the DMCA (17 U.S.C. § 1201 (f)) says that a person who is in legal possession of a program, is permitted to reverse-engineer and circumvent its protection if this is necessary in order to achieve "interoperability" — a term broadly covering other devices and programs being able to interact with it, make use of it, and to use and transfer data to and from it, in useful ways. A limited exemption exists that allows the knowledge thus gained to be shared and used for interoperability purposes." $
$ text copied from Wikipedia
original source: https://www.law.cornell.edu/uscode/text/17/1201

@clanmills
Copy link
Collaborator

Topic: Exiv2 and ISOBMFF Support
Time: Jun 14, 2020 13:00 London

Join Zoom Meeting
https://us02web.zoom.us/j/82136730279?pwd=M3hCbll4cWN3ellJd2pCZkxjVEx3Zz09

Meeting ID: 821 3673 0279
Password: 1fDNUV

@boardhead
Copy link
Collaborator

I want to pursue other hobbies such as playing the Euphonium and Piano, running, the garden and spending time with my wife.

Hey. Euphonium was my instrument too, but I haven't played since high school. :)

@clanmills
Copy link
Collaborator

I played Trumpet in the school orchestra and haven't played it since. I decided to move down an octave and delighted by the experience. I got the instrument in September 2018 and expect to pass Grade-6 in November. I attend a "virtual" trumpet school in Australia. The teacher gives us a video/lesson every day on Facebook for $30/month! (20 in the class). I have a brass tutor who comes to my house every other Wednesday. Since lockdown, we meet in a virtual class room.

I've played piano all my life. We purchased a digital piano last year. It's amazing. It's beautiful to play. It'll accompany me when I can get a midi file. I purchased ScanScore which does scan (or PDF) to music. So, if I can't find a midi file, ScanScore can "read the dots.".

Have a look at my book. It's coming on well: https://clanmills.com/exiv2/book/

In particular, please read this: https://clanmills.com/exiv2/book/#future

@clanmills
Copy link
Collaborator

I've had a totally new thought about this. I was talking to Jens (the gexiv2 engineer) and he was talking about introspection. I couldn't get the gnome introspection code to build. However, it sure smells like COM (I'm so old, I remember COM/DCOM being new). If libheif (and other libraries) used introspection, I think we can call other shared libraries without linking their code at all. It's 100% fixed at run time.

If we do a metadata->read() on a HEIF, we create "Mr Heif Object" and ask him to give us the Exif Tiff embedded in this file (or XMP, or IPTC, or ICC).

By using introspection, we don't have a single line of libheif in our code base. No header files. No linking. We don't need a special build option for Heif. Nothing. It's dealt with at run-time.

@johnny-bit
Copy link
Author

AVIF is an open standard, CR3 is/should be freely readable. JPEG2000 is already in the lib. only issue: HEIF. Still, reading bytes from file and interpreting known values doesn't touch file patents that I know of.

Using introspection and dynamic linking would've in edge cases circumvent any problems related to using totally free lib in patent minefield. Same thing would be if it were filetype libraries connection to exiv2 not other way around and announcing things they can provide. Then it'd be simple wine-brick story, only in "don't install libPatentedFileFormat along with exiv2 or you might've been able to read exif, xmp and ICMP data from PatentedFileFormat".

@clanmills
Copy link
Collaborator

@johnny-bit You're right. If we use a library which has code that infringes the patent, we could be in trouble, even if we don't use the part of the library that infringes the patent.

I'm also mistaken about having no libheif code. We have to know the interface (a .i file in COM) to use introspection. So we would have libheif code in Exiv2. However, it may be possible to only include that part of the interface that we really need. That may be possible (or impossible).

Incidentally, @cgilles submitted a PR today to link libheif #1233. It only involves changing about 25 existing files and adding 53 new files. The patch has 130,000 lines and cannot be applied to 'master'. The PR is only as simple as this because it is readonly, and doesn't include any test code at all. Clearly it's ready to ship (not).

We could return to my idea to write as little code as it takes to read the file and locate the 4 blocks of interest. I was originally looking at Dave Coffman's parse.c which reads all manner of files in 1000 lines of C.

@boardhead
Copy link
Collaborator

Have a look at my book. It's coming on well: https://clanmills.com/exiv2/book/

Holy cow! This book looks like it will be amazingly comprehensive. Great work so far!!

@cgilles
Copy link
Collaborator

cgilles commented Jun 9, 2020

I don't know with github PR make a garbage.

this is a "git diff HEAD > heif.patch.txt". 22 Kb file with limited in-deep code change. It very simple in fact...

heif.patch.txt

@cgilles
Copy link
Collaborator

cgilles commented Jun 9, 2020

Patch V2. I forget a block change in a CMakeLists.txt script:

heifv2.patch.txt

For an HEIF unit test, it's very simple. Take an HEIF image taken with an iphone for ex, which contain metadata an try to use exiv2 CLI tool to display Exif|Iptc|Xmp.

libheif parse file to extract metadata chunk and pass byte-array as well to exiv2 core. No more. The rest is standard Exiv2 code unchanged...

This is a sample HEIF file with metadata:

pict0027.zip

@clanmills
Copy link
Collaborator

Here's the summary of the Sunday's meeting on Zoom. #318 (comment)

@paperdigits
Copy link

@D4N and @phako :

Can you please outline the steps necessary, in your opinions, to get support merged into exiv2?

You say you're worried about the consumers of the exiv2 library, and the linux desktop at large, but we are the consumers of the exiv2 library-- darktable, digiKam, elementary photos, GNOME Photos, etc etc.

@phako
Copy link
Contributor

phako commented Sep 4, 2020

You say you're worried about the consumers of the exiv2 library, and the linux desktop at large, but we are the consumers of the exiv2 library-- darktable, digiKam, elementary photos, GNOME Photos, etc etc.

All I said was give people (i.e. individuals and distributions) who care about such things as non-free and potentially patent-proned formats an opt out. Nothing more. Because doing that later is awful and much easier if you design the whole feature with it from the start.

@paperdigits
Copy link

@phako thanks!

We'll wait on the reply of @D4N

@debarshiray
Copy link

As the upstream author of GNOME Photos, a GNOME contributor in general, and a Fedora contributor, I totally agree with @phako here.

One approach that's used by some frameworks (eg., GStreamer) is to use loadable (via dlopen) shared objects (or plugins) for codec support. That way, distributors (like Fedora) that cannot ship patent encumbered code can remove those plugins, but third-party repositories can provide the patent encumbered codecs for users who are able to use them.

@KristijanZic
Copy link

Alright, thanks! I really hope the ISOBMFF support is now being green-lighted.

@dhoulder
Copy link
Contributor

Robin and I have discussed what productive steps might be taken next, and think that in order to protect Exiv2 and its users, we should consider joining the Open Invention Network. See https://openinventionnetwork.com/

OIN is a consortium of major technology players including Redhat, Google, and IBM, with over 3300 members all up. You can read about the benefits of joining OIN at https://openinventionnetwork.com/about-us/member-benefits/

They have a license (https://openinventionnetwork.com/joining-oin/join-now/license-agreement/ ) which Exiv2 could sign which would commit us to:

  • Forfeit our right to sue other members for patent infringement.
  • Donate our patents for unconditional use by other members.

There's no fee for joing OIN. There are potential benefits in the event of any legal issue arising with Exiv2, possibly even with existing code, mostly due to the membership of some very large industry leaders.

Furthermore, they have a concept of a Linux System Definition, which includes core Linux and adjacent open source technologies. See https://openinventionnetwork.com/linux-system/

Note that currently included in the Linux System Definition are imaging-related packages such as gimp, gd, ImageMagick, and digikam, so I expect Exiv2 would be a prime candidate.

@clanmills
Copy link
Collaborator

clanmills commented Nov 14, 2020

Thank you @dhoulder for working with me on this issue.

On 2021-01-18 (9 weeks on Monday), I will retire. My book will be complete. I hope somebody will step forward to maintain Exiv2 and I assure them of my support and cooperation. I hope my successor will get Exiv2 into OIN and the Linux System Definition.

Concerning ISOBMFF, here's my summary of the situation.

  1. The risk of patent infringement in ISOBMFF is the same as the risk in the current Exiv2 library.
  2. In the investigation of this issue, no strong argument has surfaced to stop this development.
  3. Exiv2 users (both developers and end users) have strongly expressed support for this feature. If we don’t provide this feature, somebody will fork the code. As the community struggles to maintain the two branches of Exiv2, a second fork will cause confusion and duplication.

If somebody offers a PR for ISOBMFF support, I will accept it provided:

  1. Nobody provides a strong reason to say STOP.
  2. The PR builds on all supported platforms and passes the existing test suite.
  3. The PR extends the test suite to test the newly supported formats.
  4. The PR has a build switch to enable/disable the feature.
  5. The PR does not require Exiv2 to call a library.
  6. The PR Includes appropriate documentation updates.
  7. The author of the PR agrees to support users and fix issues in the code for 2 years on both the 0.27-maintenance and master branches.

I've personally found working on Exiv2 to be interesting and mostly enjoyable. It has been a surprise that more contributors haven't joined in the fun. On page 2 of the book, I acknowledge: Exiv2 contributors (in alphabetical order): Abhinav, Alan, Andreas (both of them), Arnold, Ben, Dan, Gilles, Kevin, Leo, Leonardo, Luis, Mahesh, Michał, Mikayel, Miloš, Nehal, Neils, Phil, Rosen, Sridhar, Thomas, Tuan .... and others who have contributed to Exiv2.

I hope the C19 situation fades in spring and LGM goes ahead in Rennes in 2021. I look forward to seeing you there.

@1div0
Copy link
Collaborator

1div0 commented Nov 14, 2020

Thanks, Robin!

So I will reload and restart my efforts to get HEIF support into the Exiv2 and then darktable with full metadata I/O.

Cheers!

Happy WE.

@johnny-bit
Copy link
Author

@1div0 - that's good to hear. I myself wanted to start working on pure C++ implementation making sure it doesn't need/call external libraries as per #5 of Robin's requirements for PR :)

@clanmills
Copy link
Collaborator

clanmills commented Nov 14, 2020

The tvisitor.cpp code in my book (svn://dev.exiv2.org/svn/team/book) reads the metadata in JP2, AVIF, HEIF and CR3 (and many more formats). I have documented and explained in the book how it works.

The tvisitor.cpp code is less than 3000 lines and decodes Exif (including MakerNotes), IPTC, XMP and ICC metadata in every format supported by Exiv2, plus ISOBMFF, BigTiff. It's a single file of code. If you wish to decode PNG you need to link libz. My aim is to demystify how metadata is encoded in all the common image formats.

@clanmills
Copy link
Collaborator

@1div0 Thanks for your email. My reply bounced on your mail server.

I've fixed the "double free" in class CRW on Linux. I've also fixed a Linux compiler warning in dmpf.cpp

I've look at your "NEOWISE" image and see:

548 rmills@rmillsmm-local:~/gnu/exiv2/team/book/build $ ./tvisitor -pR ~/Downloads/20200717_221452.avif 
STRUCTURE OF JP2 (avif) FILE (MM): /Users/rmills/Downloads/20200717_221452.avif
 address |   length |  box | uuid | data
       0 |       24 | ftyp |      | avif____avifmif1miafMA1B 97 118 105 102 0 0 0 0 97 118 105 102 109 105 102 49 109 105 97 102 77 65 49 66
      32 |     9336 | meta |      | _______(hdlr________pict____________liba 0 0 0 0 0 0 0 40 104 100 108 114 0 0 0 0 0 0 0 0 112 105 99 116 0 0 0 0 0 0 0 0 0 0 0 0 108 105 98 97
  STRUCTURE OF JP2 FILE (MM): /Users/rmills/Downloads/20200717_221452.avif:44->9332
         0 |       32 | hdlr |      | ________pict____________libavif_ 0 0 0 0 0 0 0 0 112 105 99 116 0 0 0 0 0 0 0 0 0 0 0 0 108 105 98 97 118 105 102 0
        40 |        6 | pitm |      | _____. 0 0 0 0 0 1
        54 |       36 | iloc |      | ____D__._.___.__$._.q:_.___._...__I. 0 0 0 0 68 0 0 2 0 1 0 0 0 1 0 0 36 168 0 15 113 58 0 2 0 0 0 1 0 15 149 226 0 0 73 234
        62 |       14 |  ext |    1 |   9384,1012026
        76 |       14 |  ext |    2 | 1021410, 18922
        98 |       57 | iinf |      | _____.___.infe.____.__av01Color____.infe 0 0 0 0 0 2 0 0 0 26 105 110 102 101 2 0 0 0 0 1 0 0 97 118 48 49 67 111 108 111 114 0 0 0 0 25 105 110 102 101
    STRUCTURE OF JP2 FILE (MM): /Users/rmills/Downloads/20200717_221452.avif:44->9332:112->51
           0 |       18 | infe |      | .____.__av01Color_ 2 0 0 0 0 1 0 0 97 118 48 49 67 111 108 111 114 0
          26 |       17 | infe |      | .____.__ExifExif_ 2 0 0 0 0 2 0 0 69 120 105 102 69 120 105 102 0
    END: /Users/rmills/Downloads/20200717_221452.avif:44->9332:112->51
       163 |       18 | iref |      | _______.cdsc_._._. 0 0 0 0 0 0 0 14 99 100 115 99 0 2 0 1 0 1
       189 |     9135 | iprp |      | __#.ipco___.ispe______..__..___.pixi____ 0 0 35 152 105 112 99 111 0 0 0 20 105 115 112 101 0 0 0 0 0 0 15 160 0 0 23 128 0 0 0 16 112 105 120 105 0 0 0 0
    STRUCTURE OF JP2 FILE (MM): /Users/rmills/Downloads/20200717_221452.avif:44->9332:197->9135
           0 |     9104 | ipco |      | ___.ispe______..__..___.pixi____....___. 0 0 0 20 105 115 112 101 0 0 0 0 0 0 15 160 0 0 23 128 0 0 0 16 112 105 120 105 0 0 0 0 3 8 8 8 0 0 0 12
      STRUCTURE OF JP2 FILE (MM): /Users/rmills/Downloads/20200717_221452.avif:44->9332:197->9135:8->9104
             0 |       12 | ispe |      | ______..__.. 0 0 0 0 0 0 15 160 0 0 23 128
            20 |        8 | pixi |      | ____.... 0 0 0 0 3 8 8 8
            36 |        4 | av1C |      | ..._ 129 31 12 0
            48 |     9048 | colr |      | prof__#Tlcms..__mntrRGB XYZ .._._._._,_; 112 114 111 102 0 0 35 84 108 99 109 115 2 16 0 0 109 110 116 114 82 71 66 32 88 89 90 32 7 228 0 7 0 19 0 9 0 44 0 59
      END: /Users/rmills/Downloads/20200717_221452.avif:44->9332:197->9135:8->9104
        9112 |       15 | ipma |      | _______._...... 0 0 0 0 0 0 0 1 0 1 4 1 2 131 4
    END: /Users/rmills/Downloads/20200717_221452.avif:44->9332:197->9135
  END: /Users/rmills/Downloads/20200717_221452.avif:44->9332
    9376 |  1030948 | mdat |      | ._....>[email protected]#..c...p..."."..=_'.....0 18 0 10 8 31 239 62 126 239 229 137 64 26 14 100 35 184 204 99 211 180 20 112 194 128 8 34 171 34 154 226 61 0 39 252 2 185 218 236 48
END: /Users/rmills/Downloads/20200717_221452.avif
549 rmills@rmillsmm-local:~/gnu/exiv2/team/book/build $ 

I don't know why you referred me to that image, however I'm sure it'll all make sense when we discuss it some more. I'm looking forward to working with you - together we'll move some little mountains!

@alexvanderberkel
Copy link
Member

alexvanderberkel commented Jan 4, 2021

hi everyone,

happy new year to all of you and I hope that all of you are safe and healthy. As the new Canon format CR3 is still an open issue for tools such as darktable, rawtherapee and many more, there was the idea to form a little task force from different projects in order to get this done. Within this the meeting we should discuss what are the blockers, e.g. legal questions / joining the open-invention network, what can be tackled by whom etc...

I hope that the time slot on the weekend fits most people.

Topic: Support for ISOBMFF Files (AVIF, HEIF, CR3)
Time: Jan 9, 2021 07:30 PM Amsterdam, Berlin, Rome, Stockholm, Vienna

Join Zoom Meeting
https://us05web.zoom.us/j/82168885673?pwd=K3pqRThERVNQK2JQR2ZweStwS2Nkdz09

Meeting ID: 821 6888 5673
Passcode: L1B3Hz

Cheers,
Alex

@clanmills
Copy link
Collaborator

We have a horrible communications setup here. There are different discussions about this taking place here, discuss.pixls.us, Wire, private email. Can we discuss this here:

https://app.element.io/#/room/#exiv2-chat:matrix.org.

@LeoHsiao1 Could you participate in this please. I'm aiming to ship Exiv2 v0.27.4 with ISOBMFF support on 2021-04-30 and that will include your python test code (and the death of the bash scripts).

@LeoHsiao1
Copy link
Contributor

@clanmills
Thanks for your invitation, but I can't communicate orally in English.
Please arrange tasks for me through words. That's enough.

@clanmills
Copy link
Collaborator

Thanks, @LeoHsiao1

I think it's unlikely that you will be expected to do anything. We will have to update the test suite of course, however that's unlikely to require your input. I'll let you know if we need your help.

The good news here is that Exiv2 v0.27.4 is likely to ship at the end of April 2021 and will include your test code. What happens to Exiv2 after v0.27.4 is not my concern and hope that the joint project with darktable will lead to a bright future for Exiv2.

@clanmills
Copy link
Collaborator

Agenda for the meeting:

Exiv2-ISOBMFF-2021-01-09.pdf

@clanmills clanmills self-assigned this Jan 11, 2021
@clanmills clanmills added this to the v0.27.4 milestone Jan 11, 2021
@clanmills
Copy link
Collaborator

Exiv2 0.27.4 Progress is being documented here: #1018 (comment)

@clanmills
Copy link
Collaborator

Fixed. #1475. Seven Engineers have contributed to this. @alexvanderberkel @LeoHsiao1 @hassec @clanmills @kmilos @piponazo @1div0.

And I must mention David Houlder for his help with the legal investigation. And Gordon Laing for test images. Pat and his folks at discuss.pixls.us who will set up a test image server.

By far the largest team of contributors in the history of the Exiv2 project.

@johnny-bit
Copy link
Author

Thank you @clanmills and all contributors that made it possible!

@pr0m1th3as
Copy link

Big Thanks to @clanmills and everyone else involved in adding support for CR3 !!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
request feature request or any other kind of wish
Projects
None yet
Development

No branches or pull requests