Skip to content

Decoding progressive/interlaced information #3

@YourMJK

Description

@YourMJK

Regarding our discussion in #1, I created multiple similar MXV test videos for further reverse engineering efforts.

Test videos

MXV framerate test files.zip

All videos were exported using MAGIX Video Deluxe 2025 Plus and have these properties in common:

  • Display size: 1920x1080
  • Duration: TS 00:00:02:00
  • Color space, primaries, transfer: BT.709
  • Audio: Stereo, 16bit, 48kHz
  • Video content:
    • Info text: framerate, HH:MM:SS:FF timestamp, color space
    • SMPTE color bars from TS 00:00:00:00
    • Black from TS 00:00:01:00 until end
  • Audio content:
    • 1kHz sine wave for 1 frame, one starting at TS 00:00:00:00 and one at TS 00:00:01:00

There are 12 videos, 10 progressive and 2 interlaced framerates (all that are supported by VD25):

  • 23.976p (24000/1001)
  • 24p
  • 25p
  • 29.97p (30000/1001)
  • 30p
  • 47.952p (48000/1001)
  • 48p
  • 50p
  • 59.94p (60000/1001)
  • 60p
  • 25i
  • 29.97i

The two interlaced ones should have SAR 4:3 and thus their frame sizes are 1440x1080.
All progressive versions have SAR 1:1.

For the two 48fps videos (47.952p and 48p) I used the same source files as for the 24fps versions (23.976p and 24p respectively) but with every frame doubled. That's why the info text in the video isn't correct.

Initial analysis

Framerate

After reading your new REVERSE-ENGINEERING.md, I used ImHex and your custom pattern file (really useful!) to take a quick look at some of my test files.

I pretty sure the framerate is encoded in offsets 0x50–0x57 (0x38–0x3F in chunk MXJVH264) as a 64-bit little-endian double.

I checked these versions and all their float values matched: 23.976p, 24p, 25p, 29.97p, 30p, 50p, 25i.

Progressive/interlaced

Thought there might be a flag near the framerate but I didn't find anything in MXJVH264.

SAR

Since you currently have two fields each for frame width and height, I was sure one of them would be the encoded frame size and one the display size.
I.e., in the case of my two test videos with SAR 4:3, one width 1440 and the other 1920.

But this doesn't seem to be the case. For these two video files both width values are 1440.
Maybe it's encoded elsewhere, maybe not at all or maybe they were exported improperly.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions