The MLV format

Started by ilia3101, August 08, 2019, 12:09:00 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

ilia3101

Some time ago I remember hearing that the MLV format is getting extended with more features in Google summer of code for Apertus cine camera project. Did that ever happen?

A couple more questions:

1. Would developers consider adding new blocks to the official MLV format?

2. Where can I see most up to date version of mlv.h?

ilia3101

Ok never mind about the new blocks idea, raw_info has the matrix field I wanted. Though a "TEXT" block seems like a nice idea to me.

Anyway, I found mlv_structures.h on MLV post, and it is under LGPL (what I was hoping to find). However it does not contain raw_info structure, is that because raw_info is from CHDK and is full GPL? (I think I heard about this ages ago)

I am thinking there needs to be an mlv library (somthing like "libmlv"), that developers can use to add MLV support to their propreitary software. It would need to be licensed with LGPL or MIT, and written from scratch. But the GPL raw_info block is currently the main concern. Could it be done using byte offsets to access fields? - someone else calculates the offsets and communicates them to me.

I genuinely want to spread MLV as much as possible. No, I am not planning to sell any propreitary software with MLV support. I just want MLV to be a more widespread raw video format, I think it is perfect suited for that.

But first, I want to make a raw to MLV converter that converts other raw video formats or photo sequences to MLVs, so I can use MLV App with them. No licensing issues here as it will simply be GPL.


Anyone have any thought or advice about this?? About anything... The licensing issues, MLV for other cameras... bad or good ideas?

ilia3101

Ok let me condense the last verbal spaghetti post down to a couple of questions:

1. Is the MLV format suitable to use as a container for other raw video cameras' footage? (thinking of making a converter)
2. Would magic lantern community support the idea of a library (something like "libmlv") being created, with a license that does allow it to be used in proprietary software

Danne

Quote from: Ilia3101 on August 16, 2019, 03:42:11 PM
But first, I want to make a raw to MLV converter that converts other raw video formats or photo sequences to MLVs, so I can use MLV App with them.
How cool is that. I guess dng or tiff into mlv would be really convenient here. Or even jpg h264 maybe?

The library also seems like a good idea but I have little experience i this field. Maybe contact g3gg0 and a1ex directly too? Would be nice to see resolve and premiere implementing mlv support ;).

ilia3101

Quote from: Danne on August 18, 2019, 08:53:59 AM
How cool is that. I guess dng or tiff into mlv would be really convenient here. Or even jpg h264 maybe?
I saw in MLV headers that it can have h.264, but IDK if it has ever been tested or put to use (MLV App certainly doesn't handle h264 MLVs :D). DNG or cr2 would be easiest to convert to MLV though, especially if it is one of the already supported ML cameras, and masc found some nice libraries we could use.

Quote from: Danne on August 18, 2019, 08:53:59 AM
The library also seems like a good idea but I have little experience i this field. Maybe contact g3gg0 and a1ex directly too?
Yeah I guess I should reach out to them. I'm just not sure about the licensing, I remember loads of something about Martin Herring's Footage app (Footage was completely closed, this library WILL be open source, but I would want it to be usable in proprietary software). As MLV headers are LGPL it should techincally be allowed... as long as raw_info can be dealt with, maybe using byte offsets

Quote from: Danne on August 18, 2019, 08:53:59 AM
Would be nice to see resolve and premiere implementing mlv support ;).
It would be so satisfying if any of the industry giants were to implement MLV support. Maybe this is wishful thinking though :-\

ilia3101

Ok I found this https://github.com/apertus-open-source-cinema/opencine/blob/master/Source/OCcore/Image/mlv_structure_mod.h

It says it's LGPL, but contains the raw_info structure. Is that a mistake on their part?

Also I will forget the library idea for a bit, as I have heard from Apertus that their GSoC student will soon be finished with MLV format improvements... don't wanna make something already obsolete.

g3gg0

back from holiday,

anything i could help with?

Quote from: Ilia3101 on August 21, 2019, 05:45:03 PM
It says it's LGPL, but contains the raw_info structure. Is that a mistake on their part?

IIRC we aligned that that little part of the structure is fine to made LGPL to get the exchange format accepted.
only if even professional tools are allowed to use the structures, you can undercut commercial products with open source mindset ;)
Help us with datasheets - Help us with register dumps
magic lantern: 1Magic9991E1eWbGvrsx186GovYCXFbppY, server expenses: [email protected]
ONLY donate for things we have done, not for things you expect!

ilia3101

Quote from: g3gg0 on August 25, 2019, 07:51:26 PM
back from holiday,

anything i could help with?

I'll probably have something soon :)

Quote from: g3gg0 on August 25, 2019, 07:51:26 PM
IIRC we aligned that that little part of the structure is fine to made LGPL to get the exchange format accepted.

Glad to hear

Quote from: g3gg0 on August 25, 2019, 07:51:26 PM
only if even professional tools are allowed to use the structures, you can undercut commercial products with open source mindset ;)

Yep, always fun to do that :D

DeafEyeJedi

Following this thread as it seems an important topic to keep up with. Fun facts. Thanks guys!
5D3.113 | 5D3.123 | EOSM.203 | 7D.203 | 70D.112 | 100D.101 | EOSM2.* | 50D.109

extremelypoorfilmaker


ilia3101

The new(ish) RAWC block does not appear to be in the official mlv_structure.h LGPL file

ilia3101


masc

Wicked! What have you done?  ;D
5D3.113 | EOSM.202

ilia3101

Quote from: masc on October 11, 2019, 10:15:36 PM
Wicked! What have you done?  ;D

Almost ready to release, a tool for converting raw photo sequences to MLV. Should be useful for timelapses, or converting BlackMagic CDNG footage to MLV.

This will work much better once a colour matrix block finally gets added to the MLV format. It is currently relying on RAWI.raw_info.color_matrix1 and this commit.


@a1ex @g3gg0 can I call a new MLV reading/writing library "libMLV"?

Danne

Quote from: Ilia3101 on October 11, 2019, 10:24:01 PM
Almost ready to release, a tool for converting raw photo sequences to MLV. Should be useful for timelapses, or converting BlackMagic CDNG footage to MLV.

This will work much better once a colour matrix block finally gets added to the MLV format. It is currently relying on RAWI.raw_info.color_matrix1 and this commit.


@a1ex @g3gg0 can I call a new MLV reading/writing library "libMLV"?
Wow!

DeafEyeJedi

Indeed that's wicked @Ilia3101! 8)
5D3.113 | 5D3.123 | EOSM.203 | 7D.203 | 70D.112 | 100D.101 | EOSM2.* | 50D.109

a1ex

Quote from: Ilia3101 on October 11, 2019, 10:24:01 PM
@a1ex @g3gg0 can I call a new MLV reading/writing library "libMLV"?

Green light from my side.

g3gg0

Quote from: Ilia3101 on October 11, 2019, 10:24:01 PM
@a1ex @g3gg0 can I call a new MLV reading/writing library "libMLV"?

absolutely.
thanks!
Help us with datasheets - Help us with register dumps
magic lantern: 1Magic9991E1eWbGvrsx186GovYCXFbppY, server expenses: [email protected]
ONLY donate for things we have done, not for things you expect!

IDA_ML

Quote from: Ilia3101 on October 11, 2019, 10:24:01 PM
Almost ready to release, a tool for converting raw photo sequences to MLV. Should be useful for timelapses, or converting BlackMagic CDNG footage to MLV.

Ilia3101,

What you are planning to do is revolutionary!  Many people have already sensed the taste of the RAW-video magic and will not go back, no matter what.  Many of them, tired of waiting for more capable and stable ML builds for their Canon cameras, bought the BMPCC4k to continue filming in RAW.  Others are waiting for new RAW-video capable cameras to come out on the market.  All these people look forward to using MLVApp for post processing their RAW videos.  This is where your converter would be extremely useful! In my opinion, MLVApp is better, more intuitive and easier to work with than all other NLE available and is also free.   Personally, when grading my most important videos, I prefer it to DaVinci Resolve despite MLVApp's low render speeds.

I keep my thumbs pressed for you to succeed!

ilia3101

@a1ex @g3gg0 Thanks! glad you guys don't mind me taking the name.

Can I ignore MLV_VIDEO_CLASS_H264/MLV_VIDEO_CLASS_JPEG/MLV_VIDEO_CLASS_YUV? I think they have never been implemented is that right?



Quote from: IDA_ML on October 12, 2019, 11:20:06 AM
What you are planning to do is revolutionary!  Many people have already sensed the taste of the RAW-video magic and will not go back, no matter what.  Many of them, tired of waiting for more capable and stable ML builds for their Canon cameras, bought the BMPCC4k to continue filming in RAW.

Yes I'd really like to create a solution for converting all camera raw formats to MLV, including red/arri/blackmagic if possible.

I have done some research on video raw formats:

  • BRAW: Blackmagic claims BRAW is open in some way, but I don't see how that is true. I downloaded the SDK and it's completely propreitary, also I can't find any traces of a open specificaiton for it.
  • Arriraw: is an "open format", but you have to buy a 175 euro PDF to see how it works. Or use their propreitary SDK. But it probably won't be too hard to figure out how it works, as it is uncompressed.
  • Red raw: 100% propreitary, but there is an SDK for it (also propreitary, but maybe it's a way of getting it out of that format).

So MLV is really the best option, it is truly open, actually free, simple enough to be understood just by looking at mlv.h, and has many original implementations (ML itself, mlv_dump, mlvproducer, mlv app, fastrawviewer, martin hering's app ...)

Might have something later today to release. The writing functionality of libMLV is coming first. Reading a little bit later.

g3gg0

Quote from: Ilia3101 on October 12, 2019, 03:36:31 PM
Can I ignore MLV_VIDEO_CLASS_H264/MLV_VIDEO_CLASS_JPEG/MLV_VIDEO_CLASS_YUV? I think they have never been implemented is that right?

you should honor the flags, i.e. returning smth like LIBMLV_ERR_UNSUPPORTED_ENCODING or similar
Help us with datasheets - Help us with register dumps
magic lantern: 1Magic9991E1eWbGvrsx186GovYCXFbppY, server expenses: [email protected]
ONLY donate for things we have done, not for things you expect!

Luther

@Ilia3101 will you release under permissive license? If you release under GPL is think MLV will not be adopted by some companies. If we want global support for MLV, the library should be permissive (I suggest ISC license).

ilia3101

Quote from: g3gg0 on October 12, 2019, 03:54:45 PM
you should honor the flags, i.e. returning smth like LIBMLV_ERR_UNSUPPORTED_ENCODING or similar

Okay will do!

Quote from: Luther on October 12, 2019, 03:55:23 PM
@Ilia3101 will you release under permissive license? If you release under GPL is think MLV will not be adopted by some companies. If we want global support for MLV, the library should be permissive (I suggest ISC license).

Yes, I think I will release all new libMLV library code with MIT. I am making it completely original.

Do you think MIT is good? If there is a better option that companies like more, I can use that, just let me know. Edit: just realised you suggested ISC. What is the advantage over MIT?

I thought about LGPL, as it's fully permissive in how it can be used, and mlv_structure.h file is LGPL anyway, but for some reason companies seem to be scared even of LGPL.

DeafEyeJedi

Quote from: Ilia3101 on October 12, 2019, 03:57:49 PM
Do you think MIT is good? If there is a better option that companies like more, I can use that, just let me know. Edit: just realised you suggested ISC. What is the advantage over MIT?

I second this too re: advantage w ISC over MIT. Great call!

Regardless just like those mentioned... this is beyond revolutionary and can't describe how much MLV_App has pried me away from major NLE's (for good reasons) in despite of the rendering times and yet that's the beauty of open source!
5D3.113 | 5D3.123 | EOSM.203 | 7D.203 | 70D.112 | 100D.101 | EOSM2.* | 50D.109

garry23

At the risk of making a fool of myself I thought I would flag an interest here, ie as a non video guy.

The use case for me is taking a series of .cr2 images to simulate a long exposure, convert them onto a MLV file and process that file in MLVapp, ie to simulate a LE exposure longer than the ND or base image I can take.