Author Topic: MLVFS - a FUSE based, "on the fly" MLV to CDNG converter  (Read 940834 times)

reddeercity

  • Contributor
  • Hero Member
  • *****
  • Posts: 2303
Re: MLVFS - a FUSE based, "on the fly" MLV to CDNG converter
« Reply #1125 on: March 14, 2016, 09:22:59 PM »
Not sure if this a issue use the new dual iso video for 5d2 but i'm have problems with the latest mlvfs for mac.
sometimes when i toggle on dual iso processing with default setting it doesn't always process  the dual iso .
Tried deleting the .idx file re-mounting the file , seems find on a older version i have on my hackintoss .
I'm working off a SSD , i see if there's any log files .
Also Is dual iso processing normally very slow ? I using AMaZe for Interpolation , Alias Map & Fullres Blending enable.
First time working with dual iso , with non dual iso there hardly any delay and can but edited etc.. in realtime in Resolve
but this is not possible with dual iso it seems , i play around with some of the setting and see if i can improve on this .
Just curious , when the web page opens and read the files etc.. shouldn't it say it's "dual iso" ? of give the two iso setting ?
all i see is the lower number e.g. 100 out of 100/800

dmilligan

  • Developer
  • Hero Member
  • *****
  • Posts: 3218
  • 60Da / 1100D / EOSM
Re: MLVFS - a FUSE based, "on the fly" MLV to CDNG converter
« Reply #1126 on: March 14, 2016, 10:16:15 PM »
The dual ISO algorithm is just very complex and slow, there's no way around it. There is a fast preview mode, but it is very low quality. So the usefulness of dual ISO in relation to the MLVFS "on the fly" paradigm is rather limited. Personally, I think dual ISO video is just not worth the effort and drawbacks (aliasing, loss in resolution, etc) and most people want to use simply because it sounds cool and somewhat of a placebo effect.

As for the webgui, there is no dual ISO related metadata in the MLV file (IMO there probably should be). So the only way to figure out if something is dual ISO or not is to actually do some complex analysis on a frame. Doing this would bog down the gui for everyone, not just dual ISO users.

reddeercity

  • Contributor
  • Hero Member
  • *****
  • Posts: 2303
Re: MLVFS - a FUSE based, "on the fly" MLV to CDNG converter
« Reply #1127 on: March 14, 2016, 10:58:56 PM »
Sound good , i understand now thanks.




dfort

  • Guest
Re: MLVFS - a FUSE based, "on the fly" MLV to CDNG converter
« Reply #1128 on: March 16, 2016, 07:24:06 PM »
There seems to be an issue with the timecode on 23.98fps material.

Using exiftool to look at the timecode from a DNG frame numbered 0 and the timecode is 00:00:00.00 as expected. All is fine until you get to frame 24 and the timecode jumps to 00:00:01.01. This +1-frame is cumulative adding a frame to the timecode every second.

I don't know if this is intentional or if it affects any other framerate.

Markus

  • Senior
  • ****
  • Posts: 340
Re: MLVFS - a FUSE based, "on the fly" MLV to CDNG converter
« Reply #1129 on: March 16, 2016, 07:43:17 PM »
Still can't get MLVFS to work. (Win10 64bit)
I installed the new version of mlvfs with x64 bit support and dokan 1RC2 (tryed RC1 as vell) Uninstalled before reinstalling with boot in between.
MLVFS version from this post http://www.magiclantern.fm/forum/index.php?topic=13152.msg163041#msg163041
Used the following string to mount: "mlvfs_x64.exe C:\MLV --mlv_dir=F:\DCIM\100EOS5D\"
The MLV-file I tryed to mount was about 4.5 gig in size
This time I can not even enter the mounted catalog and keep getting the following error message when I try to:
mlvfs_wrap_getattr(1746): caught exception 0xC000001D at address 0x5AF8A3F3
 
even tryed going offline and deactivating avast anti-virus program...
Also uninstalled Pismo mounting.

So now I'm at a loss what more to try.
Anyone got any suggestions?
Any help would be greatly appreciated.

dmilligan

  • Developer
  • Hero Member
  • *****
  • Posts: 3218
  • 60Da / 1100D / EOSM
Re: MLVFS - a FUSE based, "on the fly" MLV to CDNG converter
« Reply #1130 on: March 16, 2016, 09:16:33 PM »
There seems to be an issue with the timecode on 23.98fps material.
Feel free to correct this math, it came from chmee's tool. I suspect it doesn't handle rounding correctly.
Code: [Select]
    //from raw2cdng, credits: chmee
    int hours = (int)floor((double)frame / framerate / 3600);
    frame = frame - (hours * 60 * 60 * (int)framerate);
    int minutes = (int)floor((double)frame / framerate / 60);
    frame = frame - (minutes * 60 * (int)framerate);
    int seconds = (int)floor((double)frame / framerate) % 60;
    frame = frame - (seconds * (int)framerate);
    int frames = frame % MAX(1,(int)round(framerate));
   
    buffer[*data_offset] = to_tc_byte(frames) & 0x3F;
    if(drop_frame) buffer[*data_offset] = buffer[*data_offset] | (1 << 7); //set the drop frame bit
    buffer[*data_offset + 1] = to_tc_byte(seconds) & 0x7F;
    buffer[*data_offset + 2] = to_tc_byte(minutes) & 0x7F;
    buffer[*data_offset + 3] = to_tc_byte(hours) & 0x3F;

Here's the full output for a 23.976 file
Code: [Select]
$ exiftool -TimeCodes *.dng
======== M14-1233.MLV-C_000000.dng
Time Codes                      : 00:00:00.00
======== M14-1233.MLV-C_000001.dng
Time Codes                      : 00:00:00.01
======== M14-1233.MLV-C_000002.dng
Time Codes                      : 00:00:00.02
======== M14-1233.MLV-C_000003.dng
Time Codes                      : 00:00:00.03
======== M14-1233.MLV-C_000004.dng
Time Codes                      : 00:00:00.04
======== M14-1233.MLV-C_000005.dng
Time Codes                      : 00:00:00.05
======== M14-1233.MLV-C_000006.dng
Time Codes                      : 00:00:00.06
======== M14-1233.MLV-C_000007.dng
Time Codes                      : 00:00:00.07
======== M14-1233.MLV-C_000008.dng
Time Codes                      : 00:00:00.08
======== M14-1233.MLV-C_000009.dng
Time Codes                      : 00:00:00.09
======== M14-1233.MLV-C_000010.dng
Time Codes                      : 00:00:00.10
======== M14-1233.MLV-C_000011.dng
Time Codes                      : 00:00:00.11
======== M14-1233.MLV-C_000012.dng
Time Codes                      : 00:00:00.12
======== M14-1233.MLV-C_000013.dng
Time Codes                      : 00:00:00.13
======== M14-1233.MLV-C_000014.dng
Time Codes                      : 00:00:00.14
======== M14-1233.MLV-C_000015.dng
Time Codes                      : 00:00:00.15
======== M14-1233.MLV-C_000016.dng
Time Codes                      : 00:00:00.16
======== M14-1233.MLV-C_000017.dng
Time Codes                      : 00:00:00.17
======== M14-1233.MLV-C_000018.dng
Time Codes                      : 00:00:00.18
======== M14-1233.MLV-C_000019.dng
Time Codes                      : 00:00:00.19
======== M14-1233.MLV-C_000020.dng
Time Codes                      : 00:00:00.20
======== M14-1233.MLV-C_000021.dng
Time Codes                      : 00:00:00.21
======== M14-1233.MLV-C_000022.dng
Time Codes                      : 00:00:00.22
======== M14-1233.MLV-C_000023.dng
Time Codes                      : 00:00:00.23
======== M14-1233.MLV-C_000024.dng
Time Codes                      : 00:00:01.01
======== M14-1233.MLV-C_000025.dng
Time Codes                      : 00:00:01.02
======== M14-1233.MLV-C_000026.dng
Time Codes                      : 00:00:01.03
======== M14-1233.MLV-C_000027.dng
Time Codes                      : 00:00:01.04
======== M14-1233.MLV-C_000028.dng
Time Codes                      : 00:00:01.05
======== M14-1233.MLV-C_000029.dng
Time Codes                      : 00:00:01.06
======== M14-1233.MLV-C_000030.dng
Time Codes                      : 00:00:01.07
======== M14-1233.MLV-C_000031.dng
Time Codes                      : 00:00:01.08
======== M14-1233.MLV-C_000032.dng
Time Codes                      : 00:00:01.09
======== M14-1233.MLV-C_000033.dng
Time Codes                      : 00:00:01.10
======== M14-1233.MLV-C_000034.dng
Time Codes                      : 00:00:01.11
======== M14-1233.MLV-C_000035.dng
Time Codes                      : 00:00:01.12
======== M14-1233.MLV-C_000036.dng
Time Codes                      : 00:00:01.13
======== M14-1233.MLV-C_000037.dng
Time Codes                      : 00:00:01.14
======== M14-1233.MLV-C_000038.dng
Time Codes                      : 00:00:01.15
======== M14-1233.MLV-C_000039.dng
Time Codes                      : 00:00:01.16
======== M14-1233.MLV-C_000040.dng
Time Codes                      : 00:00:01.17
======== M14-1233.MLV-C_000041.dng
Time Codes                      : 00:00:01.18
======== M14-1233.MLV-C_000042.dng
Time Codes                      : 00:00:01.19
======== M14-1233.MLV-C_000043.dng
Time Codes                      : 00:00:01.20
======== M14-1233.MLV-C_000044.dng
Time Codes                      : 00:00:01.21
======== M14-1233.MLV-C_000045.dng
Time Codes                      : 00:00:01.22
======== M14-1233.MLV-C_000046.dng
Time Codes                      : 00:00:01.23
======== M14-1233.MLV-C_000047.dng
Time Codes                      : 00:00:01.00
======== M14-1233.MLV-C_000048.dng
Time Codes                      : 00:00:02.02
======== M14-1233.MLV-C_000049.dng
Time Codes                      : 00:00:02.03
======== M14-1233.MLV-C_000050.dng
Time Codes                      : 00:00:02.04
======== M14-1233.MLV-C_000051.dng
Time Codes                      : 00:00:02.05
======== M14-1233.MLV-C_000052.dng
Time Codes                      : 00:00:02.06
======== M14-1233.MLV-C_000053.dng
Time Codes                      : 00:00:02.07
======== M14-1233.MLV-C_000054.dng
Time Codes                      : 00:00:02.08
======== M14-1233.MLV-C_000055.dng
Time Codes                      : 00:00:02.09
======== M14-1233.MLV-C_000056.dng
Time Codes                      : 00:00:02.10
======== M14-1233.MLV-C_000057.dng
Time Codes                      : 00:00:02.11
======== M14-1233.MLV-C_000058.dng
Time Codes                      : 00:00:02.12
======== M14-1233.MLV-C_000059.dng
Time Codes                      : 00:00:02.13
======== M14-1233.MLV-C_000060.dng
Time Codes                      : 00:00:02.14
======== M14-1233.MLV-C_000061.dng
Time Codes                      : 00:00:02.15
======== M14-1233.MLV-C_000062.dng
Time Codes                      : 00:00:02.16
======== M14-1233.MLV-C_000063.dng
Time Codes                      : 00:00:02.17
======== M14-1233.MLV-C_000064.dng
Time Codes                      : 00:00:02.18
======== M14-1233.MLV-C_000065.dng
Time Codes                      : 00:00:02.19
======== M14-1233.MLV-C_000066.dng
Time Codes                      : 00:00:02.20
======== M14-1233.MLV-C_000067.dng
Time Codes                      : 00:00:02.21
======== M14-1233.MLV-C_000068.dng
Time Codes                      : 00:00:02.22
======== M14-1233.MLV-C_000069.dng
Time Codes                      : 00:00:02.23
======== M14-1233.MLV-C_000070.dng
Time Codes                      : 00:00:02.00
======== M14-1233.MLV-C_000071.dng
Time Codes                      : 00:00:02.01
======== M14-1233.MLV-C_000072.dng
Time Codes                      : 00:00:03.03
======== M14-1233.MLV-C_000073.dng
Time Codes                      : 00:00:03.04
======== M14-1233.MLV-C_000074.dng
Time Codes                      : 00:00:03.05
======== M14-1233.MLV-C_000075.dng
Time Codes                      : 00:00:03.06
======== M14-1233.MLV-C_000076.dng
Time Codes                      : 00:00:03.07
======== M14-1233.MLV-C_000077.dng
Time Codes                      : 00:00:03.08
======== M14-1233.MLV-C_000078.dng
Time Codes                      : 00:00:03.09
======== M14-1233.MLV-C_000079.dng
Time Codes                      : 00:00:03.10
======== M14-1233.MLV-C_000080.dng
Time Codes                      : 00:00:03.11
======== M14-1233.MLV-C_000081.dng
Time Codes                      : 00:00:03.12
======== M14-1233.MLV-C_000082.dng
Time Codes                      : 00:00:03.13
======== M14-1233.MLV-C_000083.dng
Time Codes                      : 00:00:03.14
======== M14-1233.MLV-C_000084.dng
Time Codes                      : 00:00:03.15
======== M14-1233.MLV-C_000085.dng
Time Codes                      : 00:00:03.16
======== M14-1233.MLV-C_000086.dng
Time Codes                      : 00:00:03.17
======== M14-1233.MLV-C_000087.dng
Time Codes                      : 00:00:03.18
======== M14-1233.MLV-C_000088.dng
Time Codes                      : 00:00:03.19
======== M14-1233.MLV-C_000089.dng
Time Codes                      : 00:00:03.20
======== M14-1233.MLV-C_000090.dng
Time Codes                      : 00:00:03.21
======== M14-1233.MLV-C_000091.dng
Time Codes                      : 00:00:03.22
======== M14-1233.MLV-C_000092.dng
Time Codes                      : 00:00:03.23
======== M14-1233.MLV-C_000093.dng
Time Codes                      : 00:00:03.00
======== M14-1233.MLV-C_000094.dng
Time Codes                      : 00:00:03.01
======== M14-1233.MLV-C_000095.dng
Time Codes                      : 00:00:03.02
======== M14-1233.MLV-C_000096.dng
Time Codes                      : 00:00:04.04
======== M14-1233.MLV-C_000097.dng
Time Codes                      : 00:00:04.05
======== M14-1233.MLV-C_000098.dng
Time Codes                      : 00:00:04.06
======== M14-1233.MLV-C_000099.dng
Time Codes                      : 00:00:04.07
======== M14-1233.MLV-C_000100.dng
Time Codes                      : 00:00:04.08
======== M14-1233.MLV-C_000101.dng
Time Codes                      : 00:00:04.09
======== M14-1233.MLV-C_000102.dng
Time Codes                      : 00:00:04.10
======== M14-1233.MLV-C_000103.dng
Time Codes                      : 00:00:04.11
======== M14-1233.MLV-C_000104.dng
Time Codes                      : 00:00:04.12
======== M14-1233.MLV-C_000105.dng
Time Codes                      : 00:00:04.13
======== M14-1233.MLV-C_000106.dng
Time Codes                      : 00:00:04.14
======== M14-1233.MLV-C_000107.dng
Time Codes                      : 00:00:04.15
======== M14-1233.MLV-C_000108.dng
Time Codes                      : 00:00:04.16
======== M14-1233.MLV-C_000109.dng
Time Codes                      : 00:00:04.17
======== M14-1233.MLV-C_000110.dng
Time Codes                      : 00:00:04.18
======== M14-1233.MLV-C_000111.dng
Time Codes                      : 00:00:04.19
======== M14-1233.MLV-C_000112.dng
Time Codes                      : 00:00:04.20
======== M14-1233.MLV-C_000113.dng
Time Codes                      : 00:00:04.21
======== M14-1233.MLV-C_000114.dng
Time Codes                      : 00:00:04.22
======== M14-1233.MLV-C_000115.dng
Time Codes                      : 00:00:04.23
======== M14-1233.MLV-C_000116.dng
Time Codes                      : 00:00:04.00
======== M14-1233.MLV-C_000117.dng
Time Codes                      : 00:00:04.01
======== M14-1233.MLV-C_000118.dng
Time Codes                      : 00:00:04.02
======== M14-1233.MLV-C_000119.dng
Time Codes                      : 00:00:04.03
======== M14-1233.MLV-C_000120.dng
Time Codes                      : 00:00:05.05
======== M14-1233.MLV-C_000121.dng
Time Codes                      : 00:00:05.06
======== M14-1233.MLV-C_000122.dng
Time Codes                      : 00:00:05.07
======== M14-1233.MLV-C_000123.dng
Time Codes                      : 00:00:05.08
======== M14-1233.MLV-C_000124.dng
Time Codes                      : 00:00:05.09
======== M14-1233.MLV-C_000125.dng
Time Codes                      : 00:00:05.10
======== M14-1233.MLV-C_000126.dng
Time Codes                      : 00:00:05.11
======== M14-1233.MLV-C_000127.dng
Time Codes                      : 00:00:05.12
======== M14-1233.MLV-C_000128.dng
Time Codes                      : 00:00:05.13
======== M14-1233.MLV-C_000129.dng
Time Codes                      : 00:00:05.14
======== M14-1233.MLV-C_000130.dng
Time Codes                      : 00:00:05.15
======== M14-1233.MLV-C_000131.dng
Time Codes                      : 00:00:05.16
======== M14-1233.MLV-C_000132.dng
Time Codes                      : 00:00:05.17
======== M14-1233.MLV-C_000133.dng
Time Codes                      : 00:00:05.18
======== M14-1233.MLV-C_000134.dng
Time Codes                      : 00:00:05.19
======== M14-1233.MLV-C_000135.dng
Time Codes                      : 00:00:05.20
======== M14-1233.MLV-C_000136.dng
Time Codes                      : 00:00:05.21
======== M14-1233.MLV-C_000137.dng
Time Codes                      : 00:00:05.22
======== M14-1233.MLV-C_000138.dng
Time Codes                      : 00:00:05.23
======== M14-1233.MLV-C_000139.dng
Time Codes                      : 00:00:05.00
======== M14-1233.MLV-C_000140.dng
Time Codes                      : 00:00:05.01
======== M14-1233.MLV-C_000141.dng
Time Codes                      : 00:00:05.02
======== M14-1233.MLV-C_000142.dng
Time Codes                      : 00:00:05.03
======== M14-1233.MLV-C_000143.dng
Time Codes                      : 00:00:05.04
======== M14-1233.MLV-C_000144.dng
Time Codes                      : 00:00:06.06
======== M14-1233.MLV-C_000145.dng
Time Codes                      : 00:00:06.07
The seconds are always correct, but the frame numbers are off.

DeafEyeJedi

  • Hero Member
  • *****
  • Posts: 3411
  • 5D3 | M1 | 7D | 70D | SL1 | M2 | 50D
Re: MLVFS - a FUSE based, &quot;on the fly&quot; MLV to CDNG converter
« Reply #1131 on: March 17, 2016, 12:28:31 AM »
@dfort -- I wonder if your Genius Brother can help solve this formula for the TimeCode bug?
5D3.113 | 5D3.123 | EOSM.203 | 7D.203 | 70D.112 | 100D.101 | EOSM2.* | 50D.109

dmilligan

  • Developer
  • Hero Member
  • *****
  • Posts: 3218
  • 60Da / 1100D / EOSM
Re: MLVFS - a FUSE based, "on the fly" MLV to CDNG converter
« Reply #1132 on: March 17, 2016, 01:55:56 AM »
So this gets close:
Code: [Select]
    double time = frame / framerate;
    int hours = (int)floor(time / 3600);
    int minutes = ((int)floor(time / 60)) % 60;
    int seconds = ((int)floor(time)) % 60;
    int frames = (int)floor((time - floor(time)) * framerate);
   
    buffer[*data_offset] = to_tc_byte(frames) & 0x3F;
    if(drop_frame) buffer[*data_offset] = buffer[*data_offset] | (1 << 7); //set the drop frame bit
    buffer[*data_offset + 1] = to_tc_byte(seconds) & 0x7F;
    buffer[*data_offset + 2] = to_tc_byte(minutes) & 0x7F;
    buffer[*data_offset + 3] = to_tc_byte(hours) & 0x3F;

But it doesn't "drop" frames at the standardized amount for NTSC (30/1.001 fps) which is: two frames every minute except each tenth minute. It just rounds the exact time to the nearest frame.

I don't know if the same convention applies for 23.976.

dfort

  • Guest
Re: MLVFS - a FUSE based, "on the fly" MLV to CDNG converter
« Reply #1133 on: March 17, 2016, 02:55:50 AM »
I thought it was because of these lines:

Code: [Select]
    frame = frame - (seconds * (int)framerate);
    int frames = frame % MAX(1,(int)round(framerate));

The first line isn't rounding the framerate so it is changing 23.976 to 23. I tried changing it but ran into compiling problems that I didn't have before.

As for NTSC drop frame timecode, it only applies to 29.97 and 59.94 frame rates. As far as I know there is no drop frame timecode for 23.976 video, at least I've never encountered it. Someone can do a fact check on that. In any case, the only times I had to deal with drop-frame timecode was on NTSC master tapes that had to be delivered for broadcast. All the editing and VFX workflows that I've encountered used non-drop timecode. In addition, the math is so much easier with non-drop frame timecode when converting from frame numbers to timecode and back.

In other words, if you strip out all the drop-frame code nobody should miss it.

Here's that compiling issue I mentioned. The build script finishes and I get a binary but it won't create a mounted volume or webpage.

Code: [Select]
./build_installer.sh
rm -f mlvfs dng.o index.o wav.o stripes.o cs.o amaze_demosaic_RT.o hdr.o histogram.o mongoose/mongoose.o webgui.o resource_manager.o lj92.o gif.o patternnoise.o LZMA/7zAlloc.o LZMA/7zBuf.o LZMA/7zBuf2.o LZMA/7zCrc.o LZMA/7zCrcOpt.o LZMA/7zDec.o LZMA/7zFile.o LZMA/7zIn.o LZMA/7zStream.o LZMA/Alloc.o LZMA/Bcj2.o LZMA/Bra.o LZMA/Bra86.o LZMA/BraIA64.o LZMA/CpuArch.o LZMA/Delta.o LZMA/LzFind.o LZMA/Lzma2Dec.o LZMA/Lzma2Enc.o LZMA/Lzma86Dec.o LZMA/Lzma86Enc.o LZMA/LzmaDec.o LZMA/LzmaEnc.o LZMA/LzmaLib.o LZMA/Ppmd7.o LZMA/Ppmd7Dec.o LZMA/Ppmd7Enc.o LZMA/Sha256.o LZMA/Xz.o LZMA/XzCrc64.o
gcc -c -Wall -D__DARWIN_64_BIT_INO_T=1 -D__FreeBSD__=10 -D_FILE_OFFSET_BITS=64 -I/usr/local/include/osxfuse -std=gnu99 -DVERSION="\"30aea14\"" -DBUILD_DATE="\"2016-03-17 01:18:13\"" -DFUSE_USE_VERSION=26 dng.c -o dng.o
In file included from dng.h:27:0,
                 from dng.c:28:
mlvfs.h:107:22: error: unknown type name '__always_inline'
 #define FORCE_INLINE __always_inline
                      ^
dng.c:793:8: note: in expansion of macro 'FORCE_INLINE'
 static FORCE_INLINE size_t dng_get_image_data_inline(struct frame_headers * frame_headers, uint16_t * packed_bits, uint8_t * output_buffer, off_t offset, size_t max_size, int32_t bpp)
        ^
dng.c:793:28: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'dng_get_image_data_inline'
 static FORCE_INLINE size_t dng_get_image_data_inline(struct frame_headers * frame_headers, uint16_t * packed_bits, uint8_t * output_buffer, off_t offset, size_t max_size, int32_t bpp)
                            ^
dng.c: In function 'dng_get_image_data':
dng.c:841:20: warning: implicit declaration of function 'dng_get_image_data_inline' [-Wimplicit-function-declaration]
             return dng_get_image_data_inline(frame_headers, packed_bits, output_buffer, offset, max_size, 8);
                    ^
make: *** [dng.o] Error 1
cp: mlvfs/mlvfs: No such file or directory
...
...
created: /Users/rosiefort/mlvfs/pack.temp.dmg
chmod: /Volumes/MLVFS/.Trashes: Permission denied
"disk7" unmounted.
"disk7" ejected.
Preparing imaging engine…
Reading Protective Master Boot Record (MBR : 0)…
   (CRC32 $9A1DC65A: Protective Master Boot Record (MBR : 0))
Reading GPT Header (Primary GPT Header : 1)…
   (CRC32 $9598AAEB: GPT Header (Primary GPT Header : 1))
Reading GPT Partition Data (Primary GPT Table : 2)…
   (CRC32 $7D08CF8A: GPT Partition Data (Primary GPT Table : 2))
Reading  (Apple_Free : 3)…
   (CRC32 $00000000:  (Apple_Free : 3))
Reading disk image (Apple_HFS : 4)…
...
   (CRC32 $C1163E58: disk image (Apple_HFS : 4))
Reading  (Apple_Free : 5)…
...
   (CRC32 $00000000:  (Apple_Free : 5))
Reading GPT Partition Data (Backup GPT Table : 6)…
...
   (CRC32 $7D08CF8A: GPT Partition Data (Backup GPT Table : 6))
Reading GPT Header (Backup GPT Header : 7)…
...
   (CRC32 $B05F628B: GPT Header (Backup GPT Header : 7))
Adding resources…
...
Elapsed Time:  2.070s
File size: 1500593 bytes, Checksum: CRC32 $B1F95B1F
Sectors processed: 16384, 13964 compressed
Speed: 3.3Mbytes/sec
Savings: 82.1%
created: /Users/rosiefort/mlvfs/MLVFS.dmg

dmilligan

  • Developer
  • Hero Member
  • *****
  • Posts: 3218
  • 60Da / 1100D / EOSM
Re: MLVFS - a FUSE based, "on the fly" MLV to CDNG converter
« Reply #1134 on: March 17, 2016, 03:33:54 AM »
try using clang to compile instead of gcc, I'll try and fix the issue soon

how about this:
Code: [Select]
    //use drop frame if the framerate is close to 30 / 1.001
    int drop_frame = round((1.0 - framerate / ceil(framerate)) * 1000) == 1 && ceil(framerate) == 30;
    int hours, minutes, seconds, frames;
   
    if (drop_frame)
    {
        int d = frame / 17982;
        int m = frame % 17982;
        int f = frame + 18 * d + 2 * (MAX(0, m - 2) / 1798);
       
        hours = ((f / 30) / 60) / 60;
        minutes = ((f / 30) / 60) % 60;
        seconds = (f / 30) % 60;
        frames = f % 30;
    }
    else
    {
        //round the framerate to the next largest integral framerate
        //tc will not match real world time if framerate is not an integer
        double time = framerate == 0 ? 0 : frame / (framerate > 1 ? round(framerate) : framerate);
        hours = (int)floor(time / 3600);
        minutes = ((int)floor(time / 60)) % 60;
        seconds = ((int)floor(time)) % 60;
        frames = framerate > 1 ? (frame % ((int)round(framerate))) : 0;
    }
   
    buffer[*data_offset] = to_tc_byte(frames) & 0x3F;
    if(drop_frame) buffer[*data_offset] = buffer[*data_offset] | (1 << 7); //set the drop frame bit
    buffer[*data_offset + 1] = to_tc_byte(seconds) & 0x7F;
    buffer[*data_offset + 2] = to_tc_byte(minutes) & 0x7F;
    buffer[*data_offset + 3] = to_tc_byte(hours) & 0x3F;

Ottoga

  • Member
  • ***
  • Posts: 203
  • The Ox is Slow but the Earth is Patient
Re: MLVFS - a FUSE based, "on the fly" MLV to CDNG converter
« Reply #1135 on: March 17, 2016, 03:42:55 AM »
@MARKUS

Quote
Used the following string to mount: "mlvfs_x64.exe C:\MLV --mlv_dir=F:\DCIM\100EOS5D\"

It looks like the format of your MLVFS launch command is incorrect. 'C:\MLV' is a path to a folder not a drive letter. Try the following:

launch a command prompt (in administrator mode) then:

cd /d [path_to_your_mlvfs_x64_rc.exe]

mlvfs_x64.exe X: --mlv-dir=[path_to_your_MLV_dir]

Where X: - the logical drive letter that will be assigned by the system for mounting the MLV file/s. Note that it doesn't have to be X: but it needs to be a drive letter that is not already in use on your computer.

Then type the url http://localhost:8000/ into your default browser that will bring up the GUI and let you configure the MLVFS correction/adjustment parameters.

Also, once you have done the above, if you launch Windows File Explorer you should see your chosen drive letter listed and the individual MLV files listed as sub-directories.

A small tip: set your preferred correction/adjustment setting in the GUI before accessing a mounted mlv folder in your logical drive or the settings won't be applied.

The MLVFS process will automatically build index files for each of the MLV files in your --mlv-dir location.  I see from your mount string that you are going directly to the CF card. under this scenario the index files will be created on your CF card. There might be a performance hit from this approach. Also, this is where your original footage is. If there is a hiccup with your PC that causes the card to corrupt then you have potentially lost everything.

It would be safer and I dare say faster if you copied your MLVs to a directory on your local hard drive.
EOS 7D.203, EFS 55-250mm, EF 75-300 III, Tamron 16-300 DiII VC PZD Macro, SpeedLite 580EX II.

dfort

  • Guest
Re: MLVFS - a FUSE based, "on the fly" MLV to CDNG converter
« Reply #1136 on: March 17, 2016, 04:36:29 AM »
try using clang to compile instead of gcc, I'll try and fix the issue soon

That fixed the compiling issue--looks like I got to fix that hack in the compiling tutorial I posted a while back. Been procrastinating busy!

Anyway, at first I got this error:

Code: [Select]
dng.c:545:9: error: redefinition of 'drop_frame'
    int drop_frame = round((1.0 - framerate / ceil(framerate)) * 1000) == 1 && ceil(framerate) == 30;
        ^
dng.c:539:52: note: previous definition is here
static uint32_t add_timecode(double framerate, int drop_frame, uint64_t frame, uint8_t * buffer, uint32_t * data_offset)

and it wouldn't create a dng.o so I did this to your code:

Code: [Select]
-    int drop_frame = round((1.0 - framerate / ceil(framerate)) * 1000) == 1 && ceil(framerate) == 30;
+    drop_frame = round((1.0 - framerate / ceil(framerate)) * 1000) == 1 && ceil(framerate) == 30;

But as you can see there's still issues.

Code: [Select]
======== /Users/rosiefort/Desktop/mount/M27-1302.MLV/M27-1302_000000.dng
Time Codes                      : 00:00:00.00
======== /Users/rosiefort/Desktop/mount/M27-1302.MLV/M27-1302_000001.dng
Time Codes                      : 00:00:00.00
======== /Users/rosiefort/Desktop/mount/M27-1302.MLV/M27-1302_000002.dng
Time Codes                      : 00:00:00.01
======== /Users/rosiefort/Desktop/mount/M27-1302.MLV/M27-1302_000003.dng
Time Codes                      : 00:00:00.02
======== /Users/rosiefort/Desktop/mount/M27-1302.MLV/M27-1302_000004.dng
Time Codes                      : 00:00:00.03
======== /Users/rosiefort/Desktop/mount/M27-1302.MLV/M27-1302_000005.dng
Time Codes                      : 00:00:00.04
======== /Users/rosiefort/Desktop/mount/M27-1302.MLV/M27-1302_000006.dng
Time Codes                      : 00:00:00.05
======== /Users/rosiefort/Desktop/mount/M27-1302.MLV/M27-1302_000007.dng
Time Codes                      : 00:00:00.06
======== /Users/rosiefort/Desktop/mount/M27-1302.MLV/M27-1302_000008.dng
Time Codes                      : 00:00:00.07
======== /Users/rosiefort/Desktop/mount/M27-1302.MLV/M27-1302_000009.dng
Time Codes                      : 00:00:00.08
======== /Users/rosiefort/Desktop/mount/M27-1302.MLV/M27-1302_000010.dng
Time Codes                      : 00:00:00.09
======== /Users/rosiefort/Desktop/mount/M27-1302.MLV/M27-1302_000011.dng
Time Codes                      : 00:00:00.10
======== /Users/rosiefort/Desktop/mount/M27-1302.MLV/M27-1302_000012.dng
Time Codes                      : 00:00:00.11
======== /Users/rosiefort/Desktop/mount/M27-1302.MLV/M27-1302_000013.dng
Time Codes                      : 00:00:00.12
======== /Users/rosiefort/Desktop/mount/M27-1302.MLV/M27-1302_000014.dng
Time Codes                      : 00:00:00.13
======== /Users/rosiefort/Desktop/mount/M27-1302.MLV/M27-1302_000015.dng
Time Codes                      : 00:00:00.14
======== /Users/rosiefort/Desktop/mount/M27-1302.MLV/M27-1302_000016.dng
Time Codes                      : 00:00:00.15
======== /Users/rosiefort/Desktop/mount/M27-1302.MLV/M27-1302_000017.dng
Time Codes                      : 00:00:00.16
======== /Users/rosiefort/Desktop/mount/M27-1302.MLV/M27-1302_000018.dng
Time Codes                      : 00:00:00.17
======== /Users/rosiefort/Desktop/mount/M27-1302.MLV/M27-1302_000019.dng
Time Codes                      : 00:00:00.18
======== /Users/rosiefort/Desktop/mount/M27-1302.MLV/M27-1302_000020.dng
Time Codes                      : 00:00:00.19
======== /Users/rosiefort/Desktop/mount/M27-1302.MLV/M27-1302_000021.dng
Time Codes                      : 00:00:00.20
======== /Users/rosiefort/Desktop/mount/M27-1302.MLV/M27-1302_000022.dng
Time Codes                      : 00:00:00.21
======== /Users/rosiefort/Desktop/mount/M27-1302.MLV/M27-1302_000023.dng
Time Codes                      : 00:00:00.22
======== /Users/rosiefort/Desktop/mount/M27-1302.MLV/M27-1302_000024.dng
Time Codes                      : 00:00:01.00
======== /Users/rosiefort/Desktop/mount/M27-1302.MLV/M27-1302_000025.dng
Time Codes                      : 00:00:01.00
======== /Users/rosiefort/Desktop/mount/M27-1302.MLV/M27-1302_000026.dng
Time Codes                      : 00:00:01.01

I'm a rank beginner in C so I'm a bit lost with what's going on here.

dmilligan

  • Developer
  • Hero Member
  • *****
  • Posts: 3218
  • 60Da / 1100D / EOSM
Re: MLVFS - a FUSE based, "on the fly" MLV to CDNG converter
« Reply #1137 on: March 17, 2016, 11:49:48 AM »
Sorry, I've made other changes elsewhere. Easiest way to test is to just put that in a function in separate program, call it from a loop, and print out the time code.

Markus

  • Senior
  • ****
  • Posts: 340
Re: MLVFS - a FUSE based, "on the fly" MLV to CDNG converter
« Reply #1138 on: March 17, 2016, 01:32:04 PM »
@Ottoga This is as far as I get. Everyting seems fine in browser but I cant access X:\. If I type sub-paths in --mlv_dir command I can't see them in browser.
Had the same problem trying it out on win 7...

mindfull

  • New to the forum
  • *
  • Posts: 14
Re: MLVFS - a FUSE based, "on the fly" MLV to CDNG converter
« Reply #1139 on: March 17, 2016, 05:43:11 PM »
is this normal?

El capitan OSX 10.11


dmilligan

  • Developer
  • Hero Member
  • *****
  • Posts: 3218
  • 60Da / 1100D / EOSM
Re: MLVFS - a FUSE based, &quot;on the fly&quot; MLV to CDNG converter
« Reply #1140 on: March 17, 2016, 08:59:45 PM »
There's a folder selection dialog waiting for you to select a folder

dfort

  • Guest
Re: MLVFS - a FUSE based, "on the fly" MLV to CDNG converter
« Reply #1141 on: March 17, 2016, 10:03:46 PM »
Sorry, I've made other changes elsewhere. Easiest way to test is to just put that in a function in separate program, call it from a loop, and print out the time code.

Uh, yeah. That's a bit beyond my current C coding abilities. However, I do have lots of experience in post production (IMDB link) and am wondering if there's a reason why so much effort is going into drop frame timecode? Is someone asking for it? I see no point in automatically forcing drop-frame timecode on 29.97fps DNG files. The productions that I have worked on have specified not to use drop-frame timecode on anything with a few exceptions for NTSC videotapes that were delivered to a broadcasting facility.

In any case, something is broken with the timecode and I'd like to help so I guess I need to hit the C programing tutorials.

Ottoga

  • Member
  • ***
  • Posts: 203
  • The Ox is Slow but the Earth is Patient
Re: MLVFS - a FUSE based, "on the fly" MLV to CDNG converter
« Reply #1142 on: March 18, 2016, 01:40:30 AM »
@Markus

Quote
Your mlvfs launch command:

c:\mlvfs_x64\mlvfs_x64.exe X:\ --mlv-dir=c:\

The '\' in your X:\ parameter is not required.

The parameter --mlv-dir=c:\  as per your launch command will result in MLVFS (or more likely the background dokan service) passing through, trying to map and interpret all files and sub-directories under the root of C: to drive X:

I'd suggest that under this scenario it is probably hitting a file that it can't deal with elegantly and as such causing the error. It also looks like it is trying to process the same MLV file twice which may be causing a conflict.

the --mlv-dir= parameter should contain the path to the folder where the MLV files that you want to process actually reside.

So, based on your screen shots I suggest that your mlvfs launch command should be:

c:\mlvfs_x64\mlvfs_x64.exe X: --mlv-dir=c:\HEj

MLVFS as a process appears to be working as it has successfully analysed M17-1143.mlv given that it is listed with all details in your localhost view. So hopefully with a corrected launch command you will be successful.

If you are still getting the error after that, then I'm at a loss and will need to hand your issue up to DMilligan. just provide fresh screen shots including some from File manager showing drive X: and any of its sub directories as well as one with a sub-directory contents showing.
EOS 7D.203, EFS 55-250mm, EF 75-300 III, Tamron 16-300 DiII VC PZD Macro, SpeedLite 580EX II.

reddeercity

  • Contributor
  • Hero Member
  • *****
  • Posts: 2303
Re: MLVFS - a FUSE based, "on the fly" MLV to CDNG converter
« Reply #1143 on: March 18, 2016, 05:51:49 AM »
Testing MLVFS for Windows7 , everything when as per instructions for x86 .
Web GUI work without any problems , did have same crashes  with dual ISO from the
5d2 , when I try to copy the dng's from the DOKAN\Z: fold to a real folder it will crash after
about 500 frame out of 1500 , stop responding etc... then lost the mounted folder
tried to remount but had problems , rebooted Windows everything back to normal
but I haven't tried to copy the file . Will try a different mount drive .
besides that works just like the Mac version .

kgv5

  • Hero Member
  • *****
  • Posts: 643
Re: MLVFS - a FUSE based, "on the fly" MLV to CDNG converter
« Reply #1144 on: March 18, 2016, 06:11:25 AM »
@reddeercity - could you please make a video tutorial how to get the newest method of MLVFS on PC working? I am still using the old version, it is a little bit hard to follow some new developments in this area though, i really enjoyed your previous tutorials. I bet it would be great for many people here if someone could sum it up to this point. Thanks.
www.pilotmovies.pl   5D Mark III, 6D, 550D

Markus

  • Senior
  • ****
  • Posts: 340
Re: MLVFS - a FUSE based, "on the fly" MLV to CDNG converter
« Reply #1145 on: March 18, 2016, 02:21:53 PM »
After trying anything and everything. I got an idea to try the x86 version of mlvfs instead and got it working right away. So it seems x64 version will not run on win 10 (at least not for me). Something goes wrong when it tries to mount the files to X:

I noticed that Pismo is much faster so I'll be sticking with that for a while. I mount my files from the card directly and then use slimraw to copy/compress them to harddrive. In that way I only get compressed footage on the harddrive. With Pismo and Slimraw this is just a little bit slower than copying the mlvs to the harddrive directly.


reddeercity

  • Contributor
  • Hero Member
  • *****
  • Posts: 2303
Re: MLVFS - a FUSE based, "on the fly" MLV to CDNG converter
« Reply #1146 on: March 18, 2016, 10:59:01 PM »
@reddeercity - could you please make a video tutorial how to get the newest method of MLVFS on PC working? I am still using the old version, it is a little bit hard to follow some new developments in this area though, i really enjoyed your previous tutorials. I bet it would be great for many people here if someone could sum it up to this point. Thanks.

Sure , I was thinking that myself the other day  ;)

reddeercity

  • Contributor
  • Hero Member
  • *****
  • Posts: 2303
Re: MLVFS - a FUSE based, "on the fly" MLV to CDNG converter
« Reply #1147 on: March 19, 2016, 05:12:18 PM »
@kgv5 here you go as requested ,  Video Tutorial for MLVFS for Windows .
I mainly talk about windows7 but the same will hold true for Win8 & Win10


kgv5

  • Hero Member
  • *****
  • Posts: 643
Re: MLVFS - a FUSE based, "on the fly" MLV to CDNG converter
« Reply #1148 on: March 19, 2016, 07:07:53 PM »
@reddeercity
Great, thank you very much. Very informative and helpful tutorial, as usual :) I needed such an explanation, it was little bit hard to follow this thread, now everything is clear!
www.pilotmovies.pl   5D Mark III, 6D, 550D

axelcine

  • Member
  • ***
  • Posts: 218
  • Hi, I'm Axel, editor, journalist and photographer
Re: MLVFS - a FUSE based, "on the fly" MLV to CDNG converter
« Reply #1149 on: March 19, 2016, 08:13:38 PM »
@reddeercity - Thank you very much. This was exactly what I needed.
EOS RP, 5dIII.113/Batt.grip, 5dIII.123, 700d/Batt.Grip/VF4 viewfinder + a truckload of new and older Canon L, Sigma and Tamron glass