Convenient unified display of the most relevant technical and tag data for video and audio files.

Overview

MediaInfoLib README

MediaInfo(Lib) is a convenient unified display of the most relevant technical and tag data for video and audio files.

Build Status Build status

MediaInfoLib - https://github.com/MediaArea/MediaInfoLib
Copyright (c) MediaArea.net SARL. All Rights Reserved.

This program is freeware under BSD-2-Clause license conditions.
See License.html for more information

Comments
  • DCP: support of multi-reel DCP

    DCP: support of multi-reel DCP

    Fix #992.

    @kieranjol, I "merge" MXF files duration when I detect the same count of files per reel and the same kind of file in the same order for each reel (if reel 1 has Video then Audio, other reels must have Video then Audio too), in order to simplify the algorithm. If count of files per reel or file kind order is different, I keep displaying each file in its each part, as I don't know yet how I would like to display that in MediaInfo in a readable way (how should it be actually displayed?), if I decide to support such kind of content one day.

    I also display only the first file in the "Source" line, I am reluctant to display 10 file names in this MediaInfo field when there are 10 reels. The issue is not really technical and is not new (already implemented for IMF packages having several resources for a track), just that the MediaInfo output in text may be huge if I list all file names in 1 shot (some IMF packages have hundreds of files for a single track)

    So result is e.g. for a multi-reel package with 1mn20s + 40s content:

    General
    Complete name                            : Jerome_FTR-1-25_F-133_2K_20180912_SMPTE_OV\cpl_baf3403d-c7cf-490f-8b47-3a09521bdc5a.xml
    Format                                   : DCP CPL
    File size                                : 1.05 GiB
    Duration                                 : 2 min 0 s
    Overall bit rate                         : 74.9 Mb/s
    
    Video
    ID                                       : 1-2
    Format                                   : JPEG 2000
    Format profile                           : D-Cinema 2k
    Format settings, wrapping mode           : Frame
    Muxing mode                              : MXF
    Codec ID                                 : 0D010301020C0100-0401020203010103
    Duration                                 : 2 min 0 s
    Bit rate                                 : 68.0 Mb/s
    Width                                    : 1 998 pixels
    Height                                   :  pixel0
    Original height                          : 1 080 pixels
    Display aspect ratio                     : 1.85:1
    Frame rate                               : 25.000 FPS
    Color space                              : XYZ
    Chroma subsampling                       : 4:4:4
    Bit depth                                : 12 bits
    Scan type                                : Progressive
    Stream size                              : 973 MiB (91%)
    Title                                    : Picture Track
    Color range                              : Full
    Source                                   : j2c_304cc461-bb25-4976-8117-c33d0ccbe3eb.mxf
    
    Audio
    ID                                       : 2-2
    Format                                   : PCM
    Format settings                          : Little
    Format settings, wrapping mode           : Frame (BWF)
    Muxing mode                              : MXF
    Codec ID                                 : 0D01030102060100-0000000000000000
    Duration                                 : 2 min 0 s
    Bit rate mode                            : Constant
    Bit rate                                 : 6 912 kb/s
    Channel(s)                               : 6 channels
    Sampling rate                            : 48.0 kHz
    Frame rate                               : 25.000 FPS (1920 SPF)
    Bit depth                                : 24 bits
    Stream size                              : 98.9 MiB (9%)
    Title                                    : Sound Track
    Source                                   : pcm_ed08d089-6f26-4d12-aef6-3d060dad53a7.mxf
    Locked                                   : No
    
    opened by JeromeMartinez 22
  • CMake building broken with (MinGW) GCC

    CMake building broken with (MinGW) GCC

    This one I don't actually know how to fix.

    C:/builds/ab/build/libmediainfo-git/Source/MediaInfo/Text/File_AribStdB24B37.cpp: In member function 'void MediaInfoLib::File_AribStdB24B37::aption_statement()':
    C:/builds/ab/build/libmediainfo-git/Source/MediaInfo/Text/File_AribStdB24B37.cpp:744:72: error: cannot convert 'const char*' to 'const wchar_*' in assignment
                 Event.Content=Streams[(size_t)(Element_Code-1)].Line.c_str();
                                                                            ^
    [178/223] Building CXX object CMakeFiles/mediainfo.dir/C_/builds/ab/build/libmediainfo-git/Source/MediaInfo/Text/File_Eia608.cpp.o
    In file included from C:/builds/ab/build/libmediainfo-git/Source/ThirdParty/aes-gladman/aescpp.h:26:0,
                     from C:/builds/ab/build/libmediainfo-git/Source/MediaInfo/File__Analyze.h:23,
                     from C:/builds/ab/build/libmediainfo-git/Source/MediaInfo/Text/File_Eia608.h:19,
                     from C:/builds/ab/build/libmediainfo-git/Source/MediaInfo/Text/File_Eia608.cpp:24:
    C:/builds/ab/build/libmediainfo-git/Source/ThirdParty/aes-gladman/aes.h:85:3: warning: 'align' attribute directive ignored [-Wattributes]
     } aes_encrypt_ctx;
       ^~~~~~~~~~~~~~~
    C:/builds/ab/build/libmediainfo-git/Source/ThirdParty/aes-gladman/aes.h:93:3: warning: 'align' attribute directive ignored [-Wattributes]
     } aes_decrypt_ctx;
       ^~~~~~~~~~~~~~~
    
    opened by wiiaboo 22
  • Display Aspect Ratio wrong in some scenarios due to float number comparison

    Display Aspect Ratio wrong in some scenarios due to float number comparison

    This was previously reported via email as was the following suggestion for a change in File_Mpeg4_Elements.cpp: Changing this: if (moov_trak_tkhd_DisplayAspectRatio && Height && moov_trak_tkhd_DisplayAspectRatio != ((float32)Width) / Height) to this: if (moov_trak_tkhd_DisplayAspectRatio && Height && fabs((moov_trak_tkhd_DisplayAspectRatio-((float32)Width)/Height)>0.000001f)) testFiles.zip

    Also, I found that building release32 exhibited the problem, but building debug32, release64, or debug64 didn’t. So, I downloaded the standalone release64 and, just like not expected, it exhibited the problem.

    bug 
    opened by Just-Curious 19
  • Extract embedded CUEsheet from FLAC file

    Extract embedded CUEsheet from FLAC file

    I wasn't able to find a parameter related to CUE for extracting such data from FLAC files. Is that possible by now? what is the name of the "general" parameter?

    cuesheet : REM GENRE Kammermusik / REM DATE 2005 / PERFORMER "Maria Kliegel+Nina Tichman" / TITLE "Cellosonaten Nr. 1 & 2" / REM REPLAYGAIN_ALBUM_GAIN +2.51 dB / REM REPLAYGAIN_ALBUM_PEAK 0.999969 / FILE "Maria Kliegel und Nina Tichman - Faure - Cellosonaten Nr. 1&2.flac" WAVE / TRACK 01 AUDIO / TITLE "Elegie, Op. 24" / PERFORMER "Maria Kliegel+Nina Tichman" / REM REPLAYGAIN_TRACK_GAIN +3.56 dB / REM REPLAYGAIN_TRACK_PEAK 0.872437 / INDEX 01 00:00:00 / TRACK 02 AUDIO / TITLE "Papillon, Op. 77" / PERFORMER "Maria Kliegel+Nina Tichman" / REM REPLAYGAIN_TRACK_GAIN +6.27 dB / REM REPLAYGAIN_TRACK_PEAK 0.557831 / INDEX 00 06:43:61 / INDEX 01 06:48:23 / TRACK 03 AUDIO / TITLE "Sonate Nr. 1 fur Cello und Klavier, Op. 109, I. Allegro" / PERFORMER "Maria Kliegel+Nina Tichman" / REM REPLAYGAIN_TRACK_GAIN +0.22 dB / REM REPLAYGAIN_TRACK_PEAK 0.965851 / INDEX 00 09:58:43 / INDEX 01 10:05:24 / TRACK 04 AUDIO / TITLE "Sonate Nr. 1 fur Cello und Klavier, Op. 109, II. Andante" / PERFORMER "Maria Kliegel+Nina Tichman" / REM REPLAYGAIN_TRACK_GAIN +4.98 dB / REM REPLAYGAIN_TRACK_PEAK 0.577148 / INDEX 00 15:06:13 / INDEX 01 15:07:50 / TRACK 05 AUDIO / TITLE "Sonate Nr. 1 fur Cello und Klavier, Op. 109, III. Finale: Allegro commodo" / PERFORMER "Maria Kliegel+Nina Tichman" / REM REPLAYGAIN_TRACK_GAIN +2.31 dB / REM REPLAYGAIN_TRACK_PEAK 0.741760 / INDEX 00 21:52:48 / INDEX 01 21:53:35 / TRACK 06 AUDIO / TITLE "Berceuse, Op. 16" / PERFORMER "Maria Kliegel+Nina Tichman" / REM REPLAYGAIN_TRACK_GAIN +5.68 dB / REM REPLAYGAIN_TRACK_PEAK 0.497345 / INDEX 00 27:35:33 / INDEX 01 27:38:39 / TRACK 07 AUDIO / TITLE "Romance, Op. 69" / PERFORMER "Maria Kliegel+Nina Tichman" / REM REPLAYGAIN_TRACK_GAIN +3.82 dB / REM REPLAYGAIN_TRACK_PEAK 0.600098 / INDEX 00 31:13:38 / INDEX 01 31:17:39 / TRACK 08 AUDIO / TITLE "Sicilienne, Op. 78" / PERFORMER "Maria Kliegel+Nina Tichman" / REM REPLAYGAIN_TRACK_GAIN +7.69 dB / REM REPLAYGAIN_TRACK_PEAK 0.448090 / INDEX 00 35:27:40 / INDEX 01 35:31:11 / TRACK 09 AUDIO / TITLE "Sonate Nr. 2 fur Cello und Klavier, Op. 117, I. Allegro" / PERFORMER "Maria Kliegel+Nina Tichman" / REM REPLAYGAIN_TRACK_GAIN +0.70 dB / REM REPLAYGAIN_TRACK_PEAK 0.999969 / INDEX 00 39:19:30 / INDEX 01 39:23:74 / TRACK 10 AUDIO / TITLE "Sonate Nr. 2 fur Cello und Klavier, Op. 117, II. Andante" / PERFORMER "Maria Kliegel+Nina Tichman" / REM REPLAYGAIN_TRACK_GAIN +3.08 dB / REM REPLAYGAIN_TRACK_PEAK 0.747131 / INDEX 00 45:16:02 / INDEX 01 45:16:49 / TRACK 11 AUDIO / TITLE "Sonate Nr. 2 fur Cello und Klavier, Op. 117, III. Allegro vivo" / PERFORMER "Maria Kliegel+Nina Tichman" / REM REPLAYGAIN_TRACK_GAIN +0.09 dB / REM REPLAYGAIN_TRACK_PEAK 0.945648 / INDEX 00 52:19:42 / INDEX 01 52:20:63 / TRACK 12 AUDIO / TITLE "Apres un reve, Op. 7/1" / PERFORMER "Maria Kliegel+Nina Tichman" / REM REPLAYGAIN_TRACK_GAIN +6.01 dB / REM REPLAYGAIN_TRACK_PEAK 0.596161 / INDEX 00 56:44:06 / INDEX 01 56:47:38 / TRACK 13 AUDIO / TITLE "Serenade, Op. 98" / PERFORMER "Maria Kliegel+Nina Tichman" / REM REPLAYGAIN_TRACK_GAIN +1.56 dB / REM REPLAYGAIN_TRACK_PEAK 0.948059 / INDEX 00 60:03:13 / INDEX 01 60:05:28

    https://pastebin.com/r7iMhefj

    opened by Sami32 18
  • MP4 Disable Track and Alternate Group

    MP4 Disable Track and Alternate Group

    I'm not sure how you want to handle these kind of things.

    You'll have to add the Matroska Enabled flag too at some point and there's already a "default" and "forced" field, it's useful to know, but I'm worried about cluttering the output.

    MPC-HC obeys the Matroska enabled flag, I don't know how many others do.

    For MP4 MP4Box only shows the enabled flag if it's set to disabled, and as far as the MP4 specs are concerned, having an alternate group of zero means the track doesn't have an alternate group.

    I don't know if there's a way of specifying to only show a field in output if it contains or doesn't contain a certain value. To be honest, I don't see the point in showing the Matroska forced flag for audio and video, unless it happens to be set to yes. I'm not even sure what that would mean in the real world.

    opened by ndjamena 14
  • Atmos incoherence display?

    Atmos incoherence display?

    Shouldn't it be 15 dynamic ojects and 1 Bed channel?

    Audio
    Format                                   : MLP FBA 16-ch
    Format/Info                              : Meridian Lossless Packing FBA with 16-channel presentation
    Commercial name                          : Dolby TrueHD with Dolby Atmos
    Bit rate mode                            : Variable
    Maximum bit rate                         : 7 662 kb/s
    Channel(s)                               : 8 channels
    Channel layout                           : L R C LFE Ls Rs Lb Rb
    Sampling rate                            : 48.0 kHz
    Frame rate                               : 1 200.000 FPS (40 SPF)
    Number of dynamic objects                : 11
    Bed channel count                        : 1 channel
    Bed channel configuration                : LFE
    
    opened by Sami32 13
  • Filenames with `:` in them do something odd in MediaInfoList

    Filenames with `:` in them do something odd in MediaInfoList

    I'm not sure what this code is trying to do? Was there meant to be a mode where lots of filenames could be provided as a string which was ':' separated? ':'s can occur in filenames (on macOS at least).

    :.png will go through the top code path and a.png will go through the other one

    https://github.com/MediaArea/MediaInfoLib/blob/master/Source/MediaInfo/MediaInfoList_Internal.cpp#L89

        if (Pos!=string::npos && Pos!=1)
            List.push_back(File_Name);
        #if defined(MEDIAINFO_FILE_YES)
        else if (File::Exists(File_Name))
            List.push_back(File_Name);
        #endif //defined(MEDIAINFO_FILE_YES)
        #if defined(MEDIAINFO_DIRECTORY_YES)
        else
        {
            ....
        }
    
    bug 
    opened by hjmallon 12
  • HEVC: Trying to better support buggy SEIs (missing rbsp_stop_one_bit)

    HEVC: Trying to better support buggy SEIs (missing rbsp_stop_one_bit)

    At some point we should add messages when there is an error in the bitstream, but for the moment I didn't figure the best approach (with generic code for handling errors as much as possible, and not poluting the default output)

    From vote https://mediaarea.net/Vote/Support-Buggy-Hevc-H-265-Sei-171 Issue from encoder, see https://github.com/rigaya/NVEnc/issues/51#issuecomment-393130636

    opened by JeromeMartinez 12
  • No

    No "Format Profile" shown in Video Properties

    Dears, We have a mp4 file, which contain a HEVC raw stream and right hvc1 and hvcC atom. But MediaInfo cannot show "Format Profile" in Video Properties, when using Basic View or Tree View. Please help to check the attached file and tell us what the problem is. test.zip

    bug 
    opened by shizhongbo 12
  • ProRes RAW

    ProRes RAW

    It seem that for now it show the codecID as format: aprh Shouldn't "ProRes RAW" be more meaningful?

    Samples: https://filmplusgear.com/prores-raw-testfiles-for-download-nab-2018/

    opened by Sami32 11
  • Segfault during MediaInfo_Open_Buffer_Finalize

    Segfault during MediaInfo_Open_Buffer_Finalize

    Running on Alpine Linux which uses musl libc instead of glibc. This crash is pretty repeatable, with pretty much any video file.

    Thread 8 "Threadpool work" received signal SIGSEGV, Segmentation fault.
    decfloat (f=f@entry=0x7ffff1f1aeb8, c=50, bits=24, emin=-149, sign=1, pok=pok@entry=1) at src/internal/floatscan.c:67
    67	{
    (gdb) bt
    #0  decfloat (f=f@entry=0x7ffff1f1aeb8, c=50, bits=24, emin=-149, sign=1, pok=pok@entry=1) at src/internal/floatscan.c:67
    #1  0x00007ffff7d8c76e in __floatscan (f=f@entry=0x7ffff1f1aeb8, prec=prec@entry=0, pok=pok@entry=1) at src/internal/floatscan.c:509
    #2  0x00007ffff7dbbfd5 in strtox (s=0x555558fb4578 "23.976", p=0x7ffff1f1aff0, prec=prec@entry=0) at src/stdlib/strtod.c:14
    #3  0x00007ffff7dbc00c in strtof (s=<optimized out>, p=<optimized out>) at src/stdlib/strtod.c:22
    #4  0x00007fffeeb124c0 in void std::__convert_to_v<float>(char const*, float&, std::_Ios_Iostate&, int* const&) () from /usr/lib/libstdc++.so.6
    #5  0x00007fffeeb5dadf in std::num_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_get(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, std::_Ios_Iostate&, float&) const () from /usr/lib/libstdc++.so.6
    #6  0x00007fffeeb584aa in std::num_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::get(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, std::_Ios_Iostate&, float&) const () from /usr/lib/libstdc++.so.6
    #7  0x00007fffeeb42aba in std::basic_istream<wchar_t, std::char_traits<wchar_t> >& std::basic_istream<wchar_t, std::char_traits<wchar_t> >::_M_extract<float>(float&) () from /usr/lib/libstdc++.so.6
    #8  0x00007fffeedd6212 in ZenLib::Ztring::To_float32(ZenLib::ztring_t) const () from /usr/lib/libzen.so.0
    #9  0x00007fffef8ddc88 in MediaInfoLib::File__Analyze::Fill(MediaInfoLib::stream_t, unsigned long, unsigned long, ZenLib::Ztring const&, bool) () from /usr/lib/libmediainfo.so.0
    #10 0x00007fffef8df7be in MediaInfoLib::File__Analyze::Fill(MediaInfoLib::stream_t, unsigned long, unsigned long, float, unsigned char, bool) () from /usr/lib/libmediainfo.so.0
    #11 0x00007fffef8f1e61 in MediaInfoLib::File__Analyze::Fill(MediaInfoLib::stream_t, unsigned long, unsigned long, double, unsigned char, bool) () from /usr/lib/libmediainfo.so.0
    #12 0x00007fffef8e617f in MediaInfoLib::File__Analyze::Video_FrameRate_Rounding(unsigned long, MediaInfoLib::video) () from /usr/lib/libmediainfo.so.0
    #13 0x00007fffef8ddeb5 in MediaInfoLib::File__Analyze::Fill(MediaInfoLib::stream_t, unsigned long, unsigned long, ZenLib::Ztring const&, bool) () from /usr/lib/libmediainfo.so.0
    #14 0x00007fffef8df7be in MediaInfoLib::File__Analyze::Fill(MediaInfoLib::stream_t, unsigned long, unsigned long, float, unsigned char, bool) () from /usr/lib/libmediainfo.so.0
    #15 0x00007fffef8f1e61 in MediaInfoLib::File__Analyze::Fill(MediaInfoLib::stream_t, unsigned long, unsigned long, double, unsigned char, bool) () from /usr/lib/libmediainfo.so.0
    #16 0x00007fffef8e617f in MediaInfoLib::File__Analyze::Video_FrameRate_Rounding(unsigned long, MediaInfoLib::video) () from /usr/lib/libmediainfo.so.0
    
    <recurse for ~1500 frames>
    
    #1540 0x00007fffefb028c7 in MediaInfoLib::File_Mk::Streams_Finish() () from /usr/lib/libmediainfo.so.0
    #1541 0x00007fffef8a8e5e in MediaInfoLib::File__Analyze::ForceFinish(char const*) () from /usr/lib/libmediainfo.so.0
    #1542 0x00007fffef8a0f72 in MediaInfoLib::File__Analyze::Open_Buffer_Finalize(bool) () from /usr/lib/libmediainfo.so.0
    #1543 0x00007fffef95e408 in MediaInfoLib::MediaInfo_Internal::Open_Buffer_Finalize() () from /usr/lib/libmediainfo.so.0
    #1544 0x00007fffef911569 in MediaInfoLib::MediaInfo::Open_Buffer_Finalize() () from /usr/lib/libmediainfo.so.0
    #1545 0x00007fffefdc882f in MediaInfo_Open_Buffer_Finalize () from /usr/lib/libmediainfo.so.0
    #1546 0x00000000403cf5a3 in ?? ()
    #1547 0x0000555558185840 in ?? ()
    #1548 0x00007ffff2118940 in ?? ()
    #1549 0x00007ffff2118900 in ?? ()
    #1550 0x00000000317c1241 in ?? ()
    #1551 0x00007ffff2813a38 in ?? ()
    #1552 0x0000000000000001 in ?? ()
    #1553 0x00007ffff75661f0 in ?? ()
    #1554 0x00007ffff75697c8 in ?? ()
    #1555 0x00007ffff21189c0 in ?? ()
    #1556 0x00000000403ceec4 in ?? ()
    #1557 0x0000000000000001 in ?? ()
    #1558 0x0000000000000003 in ?? ()
    #1559 0x0000000000004000 in ?? ()
    #1560 0x00000000317caff7 in ?? ()
    #1561 0x00007ffff0cf7970 in ?? ()
    #1562 0xffffffffffffffff in ?? ()
    #1563 0x00007fff00000007 in ?? ()
    #1564 0x0000000000000000 in ?? ()
    

    I'm honestly not sure whether this crash is the fault of Sonarr, libmediainfo, zenlib or musl. Can you provide any insight? I'll keep gdb running in this state in case I can provide any extra information that may be useful for debugging this.

    I initially thought that this was caused by a stack overflow due to the large amount of recursion; musl is renowned for it's small stack size. From what I can see that total stack is a hair under 2MiB, so it still could be that.

    bug 
    opened by frebib 11
  • Possible incorrect parsing of HEVC with CBR and trailing zeroes

    Possible incorrect parsing of HEVC with CBR and trailing zeroes

    Summary

    When set to use CBR rate control, QSV's HEVC encoder can generate slice_segment_layer() NALs that have trailing zeroes, which can cause MediaInfoLib to miscalculate its position when it moves to the next block of NALs. And if PPS repeating is enabled, causes it to have cascading parsing errors, which in turn corrupts the reporting output.

    Data and Affected Files

    MediaInfoLib version: ca37f16b7f6a2e210722e10d5a78084dbc10584b (master as of this writing) MediaInfo version: 9c1a6e8fbd2f206805054ffcaa1c761d5f09b0ac (master as of this writing) ZenLib version: 94ea0fd07edb43237e8e219fe2b2624a4287bd3e (master as of this writing)

    Example file (post-mux) causing parsing errors: https://obsproject.com/temp/cbr_packets.mkv Example raw HEVC packet (pre-mux) which causes parsing errors: https://obsproject.com/temp/cbr_packet.bin HEX view of HEVC packet showing trailing zeroes: https://gist.github.com/jp9000/98fea8dfe6a045d70aa022c8ff745101

    The offset to that packet (the first packet with trailing zeroes) within the MKV file is 624388 (0x98704), or frame 168(?) I believe.

    This was tested with the in-progress pull request for obs-studio: https://github.com/obsproject/obs-studio/pull/6522

    It was also tested with FFmpeg, with parameters: ffmpeg -i [input file] -c:v hevc_qsv -preset:v medium -profile:v main -g:v 180 -b:v 2500k -maxrate 2500k -c:a copy [output file].mkv -- if you want to test FFmpeg yourself, don't use blank video, use a video that has details but is moving only marginally, such as my example video. But my video file should be sufficient to show the parsing issue.

    Note about MKV

    MKV container is required, because for some reason MediaInfoLib will only parse all frames in a file if MKV container is used; other file containers will only parse the first dozen or so frames, which stops before the frame where it occurs (usually around 150 frames in or so).

    Details of parsing issue

    I'll speak relative to that first example packet. The first packet with trailing zeroes, the example packet, has 3 NAL units:

    1. pic_parameter_set() (because repeating headers is on; note that it doesn't matter if they're on or off, the parsing errors still occur)
    2. sei()
    3. slice_segment_layer() with the aforementioned trailing zeroes

    When MediaInfoLib encounters the third NAL of the example packet, the slice_segment_layer() NAL with trailing zeroes, the first thing that happens is that it'll misinterpret the first three bytes of the trailing zeroes as a delimiter to for a new NAL, via this code: https://github.com/MediaArea/MediaInfoLib/blob/master/Source/MediaInfo/Video/File_Hevc.cpp#L1063-L1082


    Then, after it parses that NAL, it'll mistakenly parse the trailing zeroes as a fourth NAL here: https://github.com/MediaArea/MediaInfoLib/blob/master/Source/MediaInfo/File__Analyze.cpp#L1115-L1118


    It silently fails parsing the zeroes and erroneously treats it as a slice_segment_layer(). When it finishes parsing that NAL, the Buffer_Offset will be equal to Buffer_Size-1, so one byte will be remaining. It'll then try to treat that last byte as a fifth NAL in the block. But Buffer_Parse() fails, and it leaves Buffer_Offset equal to Buffer_Size-1.


    Then, because Buffer_Offset is left with the value of Buffer_Size-1, when Open_Buffer_Continue_Loop() returns to its calling function, Open_Buffer_Continue(), it'll calculate Buffer_Size which will now equal just 1, here: https://github.com/MediaArea/MediaInfoLib/blob/master/Source/MediaInfo/File__Analyze.cpp#L861


    Because of that, when the next block of NALs is parsed, it will erroneously subtract 1 from the file position of that File_Offset, here: https://github.com/MediaArea/MediaInfoLib/blob/master/Source/MediaInfo/File__Analyze.cpp#L976-L978


    Because of that, when it starts parsing NALs, the File_Offset will be incorrect, one byte less than what it's supposed to be, causing the reading of the Size value for the next NAL to be read as 0 instead of its correct size, here: https://github.com/MediaArea/MediaInfoLib/blob/master/Source/MediaInfo/Video/File_Hevc.cpp#L1052

    good bad


    This then causes it to try to calculate the size when it tries to parse the next header here: https://github.com/MediaArea/MediaInfoLib/blob/master/Source/MediaInfo/Video/File_Hevc.cpp#L1060-L1061

    Which makes it use a much larger value than it was supposed to be (5578 versus the intended value of 8). This causes cascading corrupt parsing, especially in this case when the encoder is set to use repeating PPS. You'll get bad SEI values, and on this file in particular, you'll see this:

    SEI_rbsp_stop_one_bit                    : Missing
    

    Which is part of its erroneous analysis of the file due to the parsing issue.

    Other thoughts

    That's basically the situation. I am not very familiar with the HEVC spec, I had to wing it and look through the spec as I investigated this issue as thoroughly as I could. The trailing zeroes I was told are related to CBR's HRD compliance, or something like that (paraphrasing, can't remember exactly). I think it's CBR bitrate padding or something.

    This file appears to decode properly with normal decoders.

    The intent is that I'm just trying to confirm whether it's a bug in this parser, or whether it's a bug with Intel's QSV encoder. I doubt it's a bug in the QSV encoder, but I could be wrong. MediaInfoLib appears to use a custom parser, so I feel like I'd be more likely to assume it's just some bug in the parser, especially considering this is a very niche rate control, and usually parsing cuts off at a dozen or so frames on other container formats.

    If you can verify whether this is a bug with the MediaInfoLib parser or not, I'd be most grateful. If it's a bug in the code, hopefully my investigation will help you pinpoint this niche bug and improve the parser. I'll relay this issue report so that you can talk with the relevant people around QSV if necessary.

    opened by jp9000 1
  • MP4 file format

    MP4 file format "Edits" Box uses different timescale for media start time

    MP4 edit list atoms('moov'/'trak'/'edts'/'elst') contain a table of edits, each with three entries. The entries are, loosely, duration, start, speed.

    • duration is given in movie timescale units(listed in 'moov'/'mvhd')
    • start is given in media timescale units(listed in 'moov'/'trak'/'mdia'/'mdhd')
    • speed is a unitless fixed-point number

    I think that mediainfo's --details=1 human-readable output presents start using the same units as duration, as opposed to the timescale given in the track's media header. The fix for this may require some inconvenient, out-of-order precessing. An alternate solution would be to present this value using some unit like "ticks" instead of converting to seconds.

    bug 
    opened by 3CHosler 1
  • [MediaInfoDLL] Issue async open remote files

    [MediaInfoDLL] Issue async open remote files

    Thank you for this incredible library.

    When using C# interop class to read multiple remote files in parallel, there are high chances that open() will fail randomly, which looks like resource contention issue.

    e.g. opening three video files a,b,c together async will likely see:
    a-> fail to open
    b-> success
    c-> fail to open
    

    Example code

        public static void Main(string[] args)
            {
                var videoDuration1 = ReadVideoDuration("http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/SubaruOutbackOnStreetAndDirt.mp4");
                var videoDuration2 = ReadVideoDuration("http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerMeltdowns.mp4");
                // expect intermittent file open failures
                Console.WriteLine($" [async] #1 Video Duration {videoDuration1.Result}");
                Console.WriteLine($" [async] #2 Video Duration {videoDuration2.Result}");
            }
    
    
            private static async Task<string> ReadVideoDuration(string videoUri)
            {
                return await Task.Run(
                    () =>
                    {
                        MediaInfo mediaInfo = new MediaInfo();
                        try
                        {
                            if (mediaInfo.Open(videoUri) == 0)
                            {
                                throw new Exception($"Cannot read media file {videoUri}");
                            }
                            return mediaInfo.Get(StreamKind.Video, 0, "Duration");
                        }
                        finally
                        {
                            mediaInfo.Close();
                        }
                    });
            }
    

    Local files or synchronous read don't have this problem. Please help to check if this is a wrong usage or a thread safety issue, thanks.

    I'm using .net471 on windows 10 x64, mediaInfo 21.9 (same issue latest release), libcurl 7.80

    Attached project (with binaries), MediaInfoExample.zip and dlls dll.zip

    opened by AsWish 0
  • Less Inform() with Open(memory) than Open(file)

    Less Inform() with Open(memory) than Open(file)

    I'm trying to update our code to use the latest MediaInfoLib from v0.7.88. Yes, it's been quite a while. Our unit tests load some data from files and some data from memory output from ffmpeg after processing the file data. The unit tests loading data directly from files seem to be working. The unit tests loading from memory are failing because many values are unavailable.

    I've tracked down that it breaks with release v0.7.95, specifically the change: "Rely less on file size (for growing file support)" https://github.com/MediaArea/MediaInfoLib/commit/ef6968bab7691dbe1c67bc9fae99e63979220356

    I've included test code and a couple small ts files that illustrate the problem.

    I'm not sure if this is a bug or working as designed, but I'd appreciate knowing how to get more fields available from using memory buffers.

    Thx, Katherine

    main.cpp.pdf 187812.log.pdf 187812.ts.zip 1290996.log.pdf 1290996.ts.zip

    bug 
    opened by shpshftr 2
Releases(v22.12)
  • v22.12(Dec 23, 2022)

    • WebVTT: more information (duration, start/end timestamp, count of lines...)
    • MP4/MOV: support of FLAC
    • MP4/MOV: support of LanguageIETF
    • ProRes: parse FFmpeg glbl atom for getting color range
    • AVI/WAV: detection of character set
    • WAV: display MD5 of raw content
    • FLAC: display MD5 of unencoded content
    • USAC: trace of UsacFrame() up to after preroll
    • MOV/MP4: option for parsing only the header, no parsing of any frame
    • MXF: option for parsing only the header, no parsing of any frame
    • MXF: quicker parsing when fast parsing is requested
    • I662, WAV: fix false-positive detection of DTS in PCM
    • I1637, MPEG-Audio: proper support of Helix MP3 encoder detection and encoder settings
    • I661, MXF: fix UKDPP FpaPass value sometimes not outputted
    • S1182, Teletext subtitle: prioritize subtitle metadata other overs
    • Matroska: Better handling in case of buggy AVC stream
    • 22.2 audio: Fix name of 1 channel (Tll --> Tsl)
    • AAC: fix wrong parsing of some bitstreams
    • Fix crash with stdin input and ctrl-c
    • Fix memory leak in JSON output
    Source code(tar.gz)
    Source code(zip)
  • v22.09(Oct 5, 2022)

    • Italian language update
    • USAC: IOD and sampling rate coherency checking
    • ADM: support of nested objects and complementary objects
    • AC-4: Display of Custom downmix targets
    • IAB: Parsing of IAB bitstream and ADM-like output
    • Frame rate: store FrameRate_Num/Den also for integer values
    • MPEG-4/MOV: support of time codes >30 fps
    • MOV/MPEG-4: List of QuickTime time code discontinuities
    • Dolby Vision: add info about more profiles
    • Text streams: show stream frame rate if not same as container frame rate
    • CDP: fix rounding of frame rate
    • SCC: fix of CEA-608 FirstDisplay_Delay_Frames
    • SCC: fix TimeCode_Last
    • MPEG-4/MOV: last time code value for all kind of QuickTime time codes
    • MOV/MPEG-4: Fix frame count for NDF non-integer frame rates
    • JSON: fix invalid output in some corner cases
    • Several other parsing bug/crash fixes (thanks to fuzzing by users)
    Source code(tar.gz)
    Source code(zip)
  • v22.06(Jun 23, 2022)

    • MXF: FFV1 support
    • Dolby Vision: add info about more profiles
    • AAC: check of missing ID_END and incoherent count of channels
    • NSV: better handling of buggy StarDiva agenda negative timestamps
    • Text: Show text frame rate
    • Text: frame rate precise numerator/denominator also for text streams
    • CDP: readout of display aspect ratio
    • MPEG-4/MOV: support of time codes >30 fps
    • TTML: Support of more timeExpression flavors
    • ADM: correctly map Dolby binaural render mode to track UID
    • Dolby Audio Metadata: first frame of action in HH:MM:SS:FF format
    • Dolby Vision: profiles and levels in decimal rather than in hexadecimal
    • MXF: fix of Dolby Vision Metadata not displayed if HDR10 metadata is present
    • MPEG-4/MOV: avoid buggy frame rates by taking frame rate from stts atom
    • CDP: better catching of wrong line21_field value
    • NSV: better handling of invalid frames
    • MXF: Include frame count in SDTI and SystemScheme1 time codes to time stamp conversion
    • TTML: do not show frame rate if it is from MediaInfo options
    • DV: timecode trace in HH:MM:SS:FF format
    Source code(tar.gz)
    Source code(zip)
  • v22.03(Mar 31, 2022)

    • NSV (Nullsoft Video): full featured support
    • NSV: support of proprietary StarDiva metadata (by reverse engineering)
    • HEVC: CEA-608/708 support
    • Dolby Audio Metadata: First frame of action, binaural render modes
    • Dolby Audio Metadata: 5.1 and 5.1.x downmix, 5.1 to 2.0 downmix, associated video frame rate, trim modes
    • MOV/MP4, TTML, SCC, MXF TC: time code of last frame
    • EIA-608: first displayed caption type
    • EIA-608: Maximum count of lines per event and total count of lines
    • EIA-608: duration of the visible content
    • TTML: Total count of lines
    • TTML: Maximum count of lines per event (including overlapping times)
    • TTML: Frame count, display aspect ratio
    • TTML: Support of timestamps in frames
    • SCC: Delay
    • Matroska: Encoding settings metadata support
    • MOV/MP4: Gamma metadata output
    • MPEG-4/MOV: difference between audio Center and Mono when possible
    • MP4/MOV: Support of dec3 atom in wave atom
    • MPEG-4/MOV: show both values in case of chan atom ChannelLayoutTag / ChannelDescriptions mismatch
    • MP4/MOV: Support of dec3 atom in wave atom
    • MXF: better support of AVC streams without SPS/PPS
    • ADM: display channel index of trackUIDs
    • WAV: fix freeze with 32-bit PCM
    • DPX: fix regression with DPX files more than 64 MB
    • Dolby E: fix crash with some invalid streams
    • E-AC-3: service kind was not correctly handled
    • EXR: fix of bad handling of files with long names in attributes
    • TTML: correct handling of 29.97 DF time codes
    • AV1: fix of the parsing of some streams, especially the ones with HDR metadata
    • WebVTT: was not correctly handling WebVTT header with comment
    • Matroska: fix false positive detection of bad CRC32
    • Several other parsing bug/crash fixes
    Source code(tar.gz)
    Source code(zip)
  • v21.09(Sep 18, 2021)

    • ADM: full featured support (programmes, content, objects, pack formats...)
    • ADM: in WAV (axml, bxml), MXF
    • S-ADM in AES3: support of Levels A1 and AX1
    • MOV/MP4: support of Dolby Vision Metadata XML
    • MXF: detection of IAB
    • SMPTE ST 337 (AES3): support of subframe mode
    • HEVC: CEA-608/708 caption support
    • MP4/QuickTime: Android slow motion real frame rate
    • JSON output: add creatingLibrary field
    • MPEG-4: fix read too much data with some predecessor definitions
    • EBUCore: fix of fields order and types
    Source code(tar.gz)
    Source code(zip)
  • v21.03(Mar 27, 2021)

    • WAV: ADM profile detection of Dolby Atmos Master or MPEG-H
    • SMPTE ST 337: support of AC-4
    • AC-3/AC-4: show top layer channels after Lw/Rw, as it becomes the defacto standard layout
    • Dolby Surround EX and Pro Logic IIz detection
    • Matroska: add DV support
    • JavaScript module: reduce binary size
    • JavaScript module: reserve less memory at startup
    • DV: remove check of zeroed bytes in timecode, considered again as valid timecode
    • TIFF; add support of compression codes 7 and 8
    • WAV: show bext (BWF) version in verbose mode / XML / JSON
    • MXF: detection fo DCI P3 mastering display color primaries
    • Options: add software version to text output
    • Options: add report creation timestamp to text output
    • macOS: native build for Apple Silicon (arm64)
    • HDR: mastering max. luminance precision was wrong
    • WM: fix EncodingTime parsing
    • MOV/MP4: skip XMP huge atoms, fix
    • MPEG-TS: fix inverted supplementary_audio_descriptor mix_type values
    • AAC: fix File_Aac::is_intensity according to ISO/IEC 14496-3:2009
    • I1353, MP4: Skip user data Xtra and free atoms
    • FFV1: fix crash with some bitstreams parsing
    • TIFF: fix division by 0
    • RF64: fix the WAV malformed chunk size test
    • Supported platforms: this is the last version compatible with Windows XP, macOS 10.5-10.9, RHEL/CentOS 6
    Source code(tar.gz)
    Source code(zip)
  • v20.09(Oct 9, 2020)

    • Dolby ED2: full featured support (presentations, presentation targets, beds, objects)
    • MKV: support of Dolby Vision metadata
    • MXF: detection of Dolby E hidden in PCM tracks having more than 2 channels
    • WAV: detection of Dolby E hidden in PCM tracks having more than 2 channels
    • CineForm: display of color space (including Bayer), bit depth
    • WAV: more precise sample count
    • SMPTE ST 337: catch of streams starting later than usual (probing increased from 4 to 16 PCM "frames")
    • PNG: detection of additional alpha plane in color space
    • MXF: detection of additional alpha plane in color space
    • AVI: detection of additional alpha plane in color space
    • MPEG Audio: was wrongly flagging Xing info tag as CBR
    • VorbisTag: does not skip DISCID
    • Miscellaneous bug/crash fixes
    Source code(tar.gz)
    Source code(zip)
  • v20.08(Aug 11, 2020)

    • MPEG-H 3D Audio full featured support (group presets, switch groups, groups, signal groups)
    • MP4/MOV: support of more metadata locations
    • JSON and XML outputs: authorize "complete" output
    • MPEG-4: support of TrueHD
    • WM: show legacy value of performer if not same as modern one
    • WAV: trace of adtl (Associated Data List) chunk
    • URL encoding detection fix for URL having a query part (issue with e.g. pre-signed AWS S3 URLs)
    • Don't try to seek to the end (false positive range related error with HTTP)
    • DPX: don't load the whole file in RAM
    • Opus: fix wrong channel mapping
    • Miscellaneous other bug fixes
    Source code(tar.gz)
    Source code(zip)
  • v20.03(Apr 3, 2020)

    • AC-4 full featured support (presentations, groups, substreams)
    • MPEG-H 3D Audio basic support
    • MPEG-TS: audio preselection descriptor support
    • Dolby Vision v2 detection
    • MPEG-4: support of colr/nclx (color information) box
    • URL encoding option fixes, permitting to use URL encoded or non URL encoded links
    • AAC: fix SBR frequency when in ADIF
    • DPX: ColorimetricSpecification and TransferCharacteristic were inverted fixes
    • Some API calls were not thread safe fixes
    • Several crash and memory leaks fixes
    Source code(tar.gz)
    Source code(zip)
  • v19.09(Sep 11, 2019)

    • AC-4: basic detection, raw, in MP4 or TS
    • AC-3/E-AC-3: display time code of the first frame
    • Don't show anymore by default "encoded" bit rates and stream sizes
    • MOV: Decode more language codes
    • x MXF: some metadata were missing
    • x AC-3: AC-3 actually has no bit depth, removing the default 16 value
    • x AC-3/E-AC-3: fix bitrate info (so duration) with streams having a time code
    • x AC-3: parse more frames also when in MP4, in order to better detect JOC (Atmos)
    • x MP4: do not show audio bit depth if it is the "default" 16 (value is not trustable enough)
    • x ProRes RAW: we know only width and height
    • x SubRip: bad handling of files having a quote character
    Source code(tar.gz)
    Source code(zip)
  • v19.07(Jul 16, 2019)

    • Dolby E: readout of Dolby E program description
    • MXF: Detection of Dolby Vision
    • MP4: support of Spatial Audio Metadata
    • DV: color space is explicit
    • DV: audio format settings
    • Matroska: PCM bit rate
    • MOV, MXF: Time code frame rate
    • DV: DVCAM commercial name for locked audio and PAL 4:2:0
    • MXF: Time code track name x USAC: frame rate was missing in case of non standard sampling rate x USAC: fix infinite loop with some LATM streams x WAV: MP3 delay should be added to BWF time reference x TTML: fix wrong output with standalone files x N19/STL: fix crash with some uncommon framerates x VC-3: fix sub sampling with some v2 files x DV: Time code frame number was wrong (divided by 2) for 50/60 fps content
    Source code(tar.gz)
    Source code(zip)
  • v19.04(Apr 23, 2019)

    • USAC: DRC effect types, Sample peak level, True peak level, Program loudness
    • HDR: SMPTE ST 2094 App 4 (including HDR10+) support
    • HDR: move HDR10, Dolby Vision and SL-HDR meta to specific generic "HDR Format" lines
    • Matroska: SMPTE ST 2086 (HDR10) support
    • Matroska: FieldOrder support
    • HEIF image format support
    • AV1: support of AV1 in MP4, HEIF, IVF
    • MOV: Add a lot more countries to AppleStoreCountry field internal list
    • MXF: Fix memory leak when fully parsing big file with acquisition metadata
    • HEVC: more HEVC profiles (Multiview, Scalable, Screen Content...)
    • AAC: better handling of corrupted streams
    • AAC: better handling of unknown channel layouts
    • AVC in MP4: better support of corrupted streams x B1101, AVI: fix crash with some invalid streams x B1101, SMPTE ST 337: fix crash with some invalid streams x Matroska: chapters timestamp were not display if chapters have no name x MXF: Fix false positive truncated file detection when there is no Random Index Pack x AAC: channel layout typos (Rls instead of Lrs, Lr instead of Rb) x ProRes: correctly show color space if alpha plane is present x MPEG Audio: some VBR files use "Info" Xing header, so we ignore the difference between "Info" and "Xing" x I943, MPEG-4: wrong display aspect ratio in some corner cases (32-bit release only) x I1096, OGG: assign METADATA_BLOCK_PICTURE tag to cover x I339, text in square brackets stripped in $if() section
    Source code(tar.gz)
    Source code(zip)
  • v18.12(Dec 11, 2018)

    • DCP: support of multi-reel packages
    • EBUCore: added some FFV1 related metadata
    • JPEG: better info display of CYMK files
    • Provide source of the color related metadata (container or stream) (hidden by default)
    • MXF: display more information when wrapper/essence values are detected as not same
    • MXF: ProRes profiles
    • MPEG-4: ProRes RAW support
    • MPEG-TS: add support of parsing some ETSI TS 103-433 messages
    • MPEG-2 Video: variable GOP detection fix
    • MPEG-7 export: some fields were missing due to the removal of some legacy fields
    • ADTS: Fix display of channel count for 8-channel streams
    • ID3v2: fix some date related issues
    • I298, ID3v2: fix wrong read of recording date in some cases
    • I1032, PBCore2: fix essenceFrameSize with non Video tracks
    • I1096, JPEG: fix crash with one file
    • Several other crash and memory leak fixes
    Source code(tar.gz)
    Source code(zip)
  • v18.08.1(Sep 10, 2018)

  • v18.08(Sep 7, 2018)

    • Dolby Atmos (in E-AC-3 or TrueHD): support of bed channel count/configuration + objects count + complexity index
    • AC-3/DTS/AAC: display of info about legacy decoders behavior removed
    • AC-3/DTS/AAC: some changes in how format is displayed
    • AC-3/DTS/AAC: better split between technical names and commercial names
    • AAC: support of profile information from MP4_IOD_Tag AudioProfileLevelIndication
    • USAC (xHE-AAC) support
    • Audio channel layout: using a new terminology, better suited for 3D Audio, see https://mediaarea.net/AudioChannelLayout
    • DSD (DSF & DSDIFF) support
    • DXD (Digital eXtreme Definition) commercial name
    • Dolby Vision: use new form for profile (numbers instead of acronyms)
    • New format "Directory" when image sequence + audio file is detected (1 directory style for the moment)
    • PBCore2 export update, thanks to WGBH
    • MPEG-7 export update
    • NISO export update
    • AV1: support of AOmedia AV1 based on 1.0.0 specifications
    • ATRAC9 detection
    • Versionned RPMs
    • HEVC: better support of buggy SEI
    • ADTS: CodecID
    • Support of injection of external metadata
    • HTTPS: support of AWS extension "x-amz-*" in HTTPS headers, permitting to manage temporary credentials (AssumeRole)
    • MPEG-4, #1005: Obey edit list in QuickTime Timecode track
    • MIXML: hide fields which were hidden in normal output
    • Hybrid AC-3/E-AC-3 (in Blu-rays): bit rate info was wrong
    • Lot of bug fixes, see full log for more info
    Source code(tar.gz)
    Source code(zip)
  • v18.05(May 9, 2018)

    • PBCore 2.1 export update, sponsored by WGBH as part of the NEH-funded PBCore Development and Preservation Project
    • TIFF: more IFDs are supported (density, software...)
    • NISO Z39.87 output
    • Mastering Display Color Primaries: was always showing BT.709 instead of real value, when present
    • Attachments: do not provide anymore attachments content in XML by default, fixes
    Source code(tar.gz)
    Source code(zip)
  • v18.03.1(Mar 26, 2018)

  • v18.03(Mar 20, 2018)

    • AV1: support of AOmedia AV1 based on latest specifications draft, raw (OBU) and in MKV
    • MXF: HDR metadata support
    • MXF: detection and parsing of ProRes (SMPTE RDD 44)
    • MXF: framerate container/stream incoherence detection
    • DPX: endianess, packing mode, compression mode
    • AVC: add consumer camera recording date/time
    • AVC: add consumer camera model name and iris F number
    • JPEG: ICC parsing, display of ICC color space
    • EBUCore: possibility to inject external metadata in the output from MediaInfo
    • JSON output
    • Hide/Show fields option
    • Attachments: do not provide anymore attachments content in XML by default, reducing XML output size
    • colour description: trying (again!) to have more coherent labeling
    • DCP/IMF: fix crash with some CPL files
    • I782, FFV1: Golomb Rice parsing was wrong
    • I210, FFV1: remove sar_den test must be 0 if sar_num is 0
    • AAC: SBR parsing issue with 3+ channel streams, with sometimes false-positive PS detection
    • BMP: was wrongly considering 4-bit without palette as with palette so wrong bit depth
    • DPX: some elements in trace were wrongly displayed (wrong endianess)
    • B1082, Ancillary data: fix infinite loop
    Source code(tar.gz)
    Source code(zip)
  • v17.12(Dec 21, 2017)

    • MediaInfoOnline: https://mediaarea.net/MediaInfoOnline
    • JavaScript build and example
    • Dolby Vision: detection of Dolby Vision and display of profile for MPEG-TS and MP4 files
    • MPEG-4: Support of external time code tracks (.qtc)
    • JPEG 2000: Support of IMF profiles
    • F523, BDMV: Support of UHD Blu-ray playlist
    • Endianness and Sign report for PCM Matroska tracks
    • MPEG-4: Resolume DXV display
    • MPEG-4: support of file names >64 chars long or non ASCII for referenced files
    • Slight binary size optimizations
    • colour_description: some changes in order to have more readable names (DCI P3, Display P3, sRGB)
    • MP4: crash with some HEVC streams with Dolby Vision
    • VC-3: frame rate should not be detected as wrong when there are several frames per block
    • Matroska: wrong color range info
    • Matroska: fix crash with some corrupted files
    • MXF: better support of height when there is an incoherence between header and footer
    • transfer_characteristics: fix BT.2020 difference between values 14 and 15
    • Trace: fix freeze with some files
    • Trace: invalid character encoding with some MOV files
    • Some memory leak fixes
    Source code(tar.gz)
    Source code(zip)
  • v17.10(Nov 2, 2017)

    • We need your support! Visit https://mediaarea.net/SupportUs
    • Version scheme is now YY.MM (year dot month, 2 digits each)
    • New MediaInfo XML output, with XSD, more suitable for automatic parsing. Use Option("Inform", "OLDXML") for keeping previous behavior
    • New "Info_OutputFormats" option for listing supported output formats
    • Universal Ad ID: refactored display, better display of value and registry, XML name slightly modified
    • MOV: support of HDR metadata (MasteringDisplayColorVolume, MaxCLL, MaxFALL)
    • BWF: display of UMID and loudness info
    • AAC: show program_config_element in trace
    • MPEG Audio: frame rate info
    • PCM in WAV and Matroska: Support of ValidBitsPerSample
    • I197, EBUCore: 1.8 output uses now final version of XSD and final XSD location
    • Matroska: tweaking frame rate empirical detection for some corner cases
    • I1070, LAME 3.100 info tag was incorrectly parsed
    • B1068, MPEG Audio: Incoherent duration between General and Audio parts, Audio part duration fixed
    • Matroska: showing "A_MS/ACM" Matroska CodecID
    • MXF: Fix crash with some buggy files
    • MXF: was not well supporting MXF referencing only 1 file
    • PCM in WAV: 8-bit content is unsigned and without endianess
    • PCM in WAV and Matroska: More coherency between Wave info and ExtensibleWave Info (bitdepth, sign)
    • WAV: GUID display was with first 8 bytes in wrong order
    • Several crash fixes
    Source code(tar.gz)
    Source code(zip)
Owner
MediaArea
Open source software company focused on digital media analysis
MediaArea
GStreamer source element for AirPlay video streams

A GStreamer plugin that provides an airplaysrc element for receiving video streamed from Apple devices using the AirPlay protocol.

Jeremie Knuesel 65 Dec 22, 2022
a library for audio and music analysis

aubio aubio is a library to label music and sounds. It listens to audio signals and attempts to detect events. For instance, when a drum is hit, at wh

aubio 2.9k Jan 1, 2023
WangBin 3.4k Dec 27, 2022
Simple and Fast Multimedia Library

SFML — Simple and Fast Multimedia Library SFML is a simple, fast, cross-platform and object-oriented multimedia API. It provides access to windowing,

Simple and Fast Multimedia Library 8.3k Jan 8, 2023
✔️The smallest header-only GUI library(4 KLOC) for all platforms

Welcome to GUI-lite The smallest header-only GUI library (4 KLOC) for all platforms. 中文 Lightweight ✂️ Small: 4,000+ lines of C++ code, zero dependenc

null 6.6k Jan 8, 2023
Display array is a board that sets 6 ST7735 display with a resolution of 80x160px in a linear array sharing the clock, data, rs, backlight pins together

The display array is a board that sets 6 ST7735 display with a resolution of 80x160px in a linear array sharing the clock, data, rs, backlight pins together, and leaving individual access to the cs lines of each display, This board allows you to display images with a resolution of 480x160px.

Josue Alejandro Gutierrez 70 Dec 19, 2022
A demo of the relevant blog post: Hook Heaps and Live Free

LockdExeDemo A demo of the relevant blog post: Hook Heaps and Live Free DEMO Explanation There are 2 compile types. The first is an EXE. The EXE requi

null 158 Nov 28, 2022
This contains code and relevant schematics from my Applied Digital Signal Processing class, where we developed various digital filters on the NXP FRDM K22F development board.

#dsp_class Summary This repo is meant to hold any of the C and MATLAB programming I did over the course of my Applied Digital Signal Processing class

Abdullah Almosalami 1 Nov 11, 2021
This repository is for everyone for Hacktoberfest 2021. Anyone can contribute anything for your Swags (T- Shirt), must be relevant that can add some value to this repository.

Hacktober Fest 2021 For Everyone! Upload Projects or Different Types of Programs in any Language Use this project to make your first contribution to a

Mahesh Jain 174 Dec 27, 2022
The aim of this repository is to make it a one final stop for revision for technical interviews involving data structures and algorithms .

Hey ??‍♂️ This repository is meant for data structures and algorithms . I will be updating this often and will include all the data structures importa

Prakhar Rai 51 Sep 29, 2022
Code accompanying our SIGGRAPH 2021 Technical Communications paper "Transition Motion Tensor: A Data-Driven Approach for Versatile and Controllable Agents in Physically Simulated Environments"

SIGGRAPH ASIA 2021 Technical Communications Transition Motion Tensor: A Data-Driven Framework for Versatile and Controllable Agents in Physically Simu

null 10 Apr 21, 2022
Easy to use cryptographic framework for data protection: secure messaging with forward secrecy and secure data storage. Has unified APIs across 14 platforms.

Themis provides strong, usable cryptography for busy people General purpose cryptographic library for storage and messaging for iOS (Swift, Obj-C), An

Cossack Labs 1.6k Jan 6, 2023
SpDB is a data integration tool designed to organize scientific data from different sources under the same namespace according to a global schema and to provide access to them in a unified form (views)

SpDB is a data integration tool designed to organize scientific data from different sources under the same namespace according to a global schema and to provide access to them in a unified form (views). Its main purpose is to provide a unified data access interface for complex scientific computations in order to enable the interaction and integration between different programs and databases.

YU Zhi 0 Jun 22, 2022
Video game library manager with support for wide range of 3rd party libraries and game emulation support, providing one unified interface for your games.

An open source video game library manager and launcher with support for 3rd party libraries like Steam, GOG, Origin, Battle.net and Uplay. Includes game emulation support, providing one unified interface for your games.

Josef Nemec 4.8k Jan 3, 2023
Memory Process File System (MemProcFS) is an easy and convenient way of viewing physical memory as files in a virtual file system

The Memory Process File System (MemProcFS) is an easy and convenient way of viewing physical memory as files in a virtual file system.

Ulf Frisk 1.7k Jan 2, 2023
Mixed reality VR laser tag using Oculus Quest 2 and OAK-D depth cameras. First prize winner for North America region in OpenCV AI Competition 2021.

Mixed Reality Laser Tag Copyright 2021 Bart Trzynadlowski Overview This is the source code to my Mixed Reality Laser Tag project, which won first priz

null 34 Jun 3, 2022
WT32-ETH01 LAN 8720 RJ45 wired Wireless-tag

WT32-ETH01 LAN 8720 RJ45 ESP32 wired Wireless-tag WT32-ETH01 +/-7 Dollar ESP32 with Ethernet jack https://www.google.com/search?q=WT32-ETH01 Buy it fr

Dirk Luberth Dijkman 50 Jun 29, 2022
Anchor/Tag Configuration using Decawave DWM1000 UWB radios | Indoor Localization

Features This project implements the following features: Precise distance and location measurements using DWM1001 UWB radios. Nodes can be easily conf

Jonathan Pereira 25 Oct 27, 2022
Controle de acesso com Arduino via leitura de Tag RFID.

arduino-access-control PT-BR Controle de acesso com Arduino via leitura de Tag RFID. Esta versão possui um menu CLI escondido que é mostrado quando o

Marco Barbosa 1 Oct 27, 2021
About A TreeSitter parser for Neorg's `table` Tag

NFF Table-Tag TreeSitter Parser A TreeSitter grammar for Neorg's table format. Available Commands Command Result yarn installs needed dependencies (on

Neorg 7 Dec 2, 2022