Matroska-Org / foundation-source

libEBML2, libMatroska2, mkvalidator, mkclean and the specifications
54 stars 29 forks source link

ebmlmaster.c:260: UpdateDataSize: Assertion `!EBML_ElementNeedsDataSizeUpdate(i, bWithDefault)' failed. #118

Open knuxyl opened 1 year ago

knuxyl commented 1 year ago

Progress 1/3: 100% Optimizing... Remuxing... Reclustering... Generating Cues from scratch Progress 2/3: 100% The TransferCharacteristics element at 385 is not part of profile 'matroska v2', skipping The Primaries element at 393 is not part of profile 'matroska v2', skipping The Range element at 397 is not part of profile 'matroska v2', skipping The ChromaSitingHorz element at 401 is not part of profile 'matroska v2', skipping The ChromaSitingVert element at 405 is not part of profile 'matroska v2', skipping The Colour element at 382 is not part of profile 'matroska v2', skipping mkclean: /home/knuxyl/foundation-source/libebml2/ebmlmaster.c:260: UpdateDataSize: Assertion `!EBML_ElementNeedsDataSizeUpdate(i, bWithDefault)' failed. Aborted

EDIT Error arrises when vobsub subtitles are included in the mkv container. At this point I do not know if this is a bug or just not supported.

I was getting this problem with v0.9.0 so I cloned master (reports 0.10.0) and still the same issue. Source is from a DVD rip to lossless h264 video with an ac3 audio track and vobsub from DVD. Ffmpeg was used to encode the video with the following

ffmpeg -i "input.mkv" -c:a copy -c:s copy -c:v libx264 -vf "fieldmatch, fps=24000/1001, zscale=w=640:h=480:f=lanczos" -tune animation -preset veryslow -qp 0 -pix_fmt yuv420p -color_range tv -colorspace smpte170m -color_trc smpte170m -color_primaries smpte170m -map 0 -map_metadata -1 -max_interleave_delta 0 -y "output.mkv"

-max_interleave_delta 0 is used because ffmpeg does not properly handle timecodes or something, this fixes that.

Running the following results in the error above on 2 different machines (an intel xeon w-1290t and a amd threadripper 3945wx)

mkclean --remux --optimize output.mkv

Here is the example video, but it is not the only one giving me this exact same issue. https://drive.google.com/file/d/1PwW8hCpensf8Zop-N98oyq4DKRXDw1tb/view?usp=sharing

rotational467 commented 1 year ago

I have been running into this exact error with both .9 and .10 after building from source w/ no errors on Ubuntu. Does not occur with pre-built .9 Win64 binary.

vobsub subs are not the (only) cause, I get this on HEVC+PGS MKVs encoded with handbrake. It occurs when the --optimize switch is used, if using only --remux it succeeds (it also works with only --keep-cues).

I need to do more testing unrelated to this problem but which I need mkclean for, so I will try to provide a more comprehensive matrix of what does and doesn't trigger it.

rotational467 commented 1 year ago

Using an MKV containing HEVC, DTS-HD MA, and PGS subs that I ripped and encoded some time ago with Handbrake 1.0.7 w/x265 2.4, I tried the following with .10 on Ubuntu 22.04:

--keep-cues - pass --remux - pass --live - pass --unsafe - pass --optimize - fail --optimize_nv - fail --no-optimize - fail

All three failures produced identical output:

xxx@xxx:/mnt/scratch/cleanup$ sudo -u xxx mkclean --optimize Futurama\ -\ S06E19\ -\ Yo\ Leela\ Leela.mkv futuramatest_optimize.mkv

Progress 1/3: 100%

The Tag element at 2573 is missing mandatory element SimpleTag

The Tag element at 2597 is missing mandatory element SimpleTag

mkclean: /home/xxx/compile/foundation-source/libebml2/ebmlmaster.c:247: UpdateDataSize: Assertion `CheckMandatory((ebml_master*)Element, bWithDefault, ForProfile)' failed.

Aborted

This is not the same exact error reported here, however I can reproduce that error with an MKV containing AVC, DTS-HD MA, and PGS subs (which I did not rip/encode):

xxx@xxx:/mnt/scratch/cleanup$ sudo -u xxx mkclean --optimize Star\ Trek\ -\ Enterprise\ -\ S03E05\ -\ Impulse.mkv startrek_optimize.mkv

Progress 1/3: 100%

Optimizing...

Generating Cues from scratch

Progress 2/3: 100%

The MinCache element at 4359 is not part of profile 'matroska v2', skipping

mkclean: /home/xxx/compile/foundation-source/libebml2/ebmlmaster.c:260: UpdateDataSize: Assertion `!EBML_ElementNeedsDataSizeUpdate(i, bWithDefault)' failed.

Aborted

Behavior with other mkclean options is the same as the HEVC file above.