View Full Version : H.264 Patcher and BD-Tools
videofan3d
29th April 2017, 09:39
(Project is mirrored on site videofan3d (https://sites.google.com/site/videofan3d/))
BDTools is small set of simple command-line (CLI) utilities for displaying the structure of .mpls playlist and .clpi clip information files which are part of Bluray Disc navigation.
MPLS2JSON.exe
– converts .mpls playlist, .clpi clip information file or .bdjo BD-J object file into human&machine readable JSON file, or
– converts .json file into binary .mpls, .clpi or .bdjo file. This reverse operation can be used for modification of the content of the .mpls/.clip/.bdjo file.
MPLSDump.exe
– displays simplified list of all .m2ts files referred in given .mpls playlist
h264Modify.exe
- allows changes of some parameters of H.264 elementary video-stream.
Modifies frame-rate and sample-aspect-ratio of the H.264 encoded video without re-encoding!
- allows insertion or deletion of frame packing arrangement SEI messages (side-by-side, top-above-bottom, etc.)
h264Offset3D.exe
- tool for offset-metadata manipulation (subtitles in Bluray-3D)
- allows extract, delete, replace, insert offset-metadata from/into dependent view elementary stream of Bluray-3D.
AVCHDInfo
- displays recording date/time of each videoframe of AVCHD.MTS file extracted from vendor-specific information (if available)
BDTools executables and documentation can be downloaded from:
2019-06-05: BDTools version 2.31 (https://drive.google.com/file/d/12bIXjPXPjirgNf4ahpEptSycaM6JEZLi) - bugfix in MPLS2JSON - 3D subtitle depth plane extraction
2017-08-24: BDTools version 2.30 (https://drive.google.com/file/d/0BymRNDHq74DEU0dfTHdoUFlnRjA) - added AVCHDInfo
2017-08-02: BDTools version 2.20 (https://drive.google.com/file/d/0BymRNDHq74DEZ29rN2hkemRNWUU) - added h264Offset3D
2017-07-24: BDTools version 2.10 (https://drive.google.com/file/d/0BymRNDHq74DETFMwNHAtWEdMZ0E)
2017-06-16: BDTools version 2.00 (https://drive.google.com/file/d/0BymRNDHq74DEbU0yWXRyaW1ZQjA)
2017-05-10: BDTools version 1.10 (https://drive.google.com/file/d/0BymRNDHq74DENFVDX0RaMHNXaDQ)
2017-04-29: BDTools version 1.00 (https://drive.google.com/file/d/0BymRNDHq74DEM0JrckV2YmJ1clE)
Sharc
29th April 2017, 10:17
Very nice, thanks! :)
Stupid question: How to prevent the windows from immediately closing after displaying the result?
I put the link to the .exe into the "Send to" folder. It works but the window immediately closes.
sneaker_ger
29th April 2017, 10:24
Put a batch file into the send to folder. First line to call the program (with %1 parameter), second line "pause".
@videofan3d
Thanks for sharing.
Sharc
29th April 2017, 12:12
Odd, the called window (with the output) still closes .....
sneaker_ger
29th April 2017, 13:06
@videofan3d
Why does h264patch ask for admin rights?
videofan3d
29th April 2017, 16:14
@videofan3d
Why does h264patch ask for admin rights?
Rename the executable to whatever else than "*patch*.exe" and it will work.
Crazy Microsoft! If the exe-filename contains the word "patch" then it is considered as dangerous and requires administrator access... WTF!!!
I will rename it in next build to something else.
Hereby I'm opening discussion/your suggestions for new name recommendations :) !!!
sneaker_ger
29th April 2017, 16:46
Thx.
@Sharc
Try again after renaming as explained by videofan3d.
Sharc
29th April 2017, 22:42
Yes, renaming the h264Patch.exe solved the issue. Thanks.
tebasuna51
30th April 2017, 10:01
Hereby I'm opening discussion/your suggestions for new name recommendations :) !!!
Maybe h264Mody (short of h264Modify).
Other metadata than can be changed is the Level, like CoolSoft H264 Level Editor (http://coolsoft.altervista.org/en/h264leveleditor).
videofan3d
1st May 2017, 22:11
Maybe h264Mody (short of h264Modify).
Other metadata than can be changed is the Level, like CoolSoft H264 Level Editor (http://coolsoft.altervista.org/en/h264leveleditor).
I will change the name to h264Modify (as I prefer regular, serious names).
I will add also change of profile_idc, constraint_setN_flag and level_idc.
Next release will be around 10 of May.
videofan3d
10th May 2017, 09:54
BDTools 1.10 released:
h264Patch
- renamed to h264Modify (due to Windows antivirus protection)
- added options -profile_idc, -constraint_flags, -level_idc
- renamed options -frame_rate, -sar_idc (for consistency with BD-documentation)
MPLS2JSON
- added experimental support for UHD Bluray (4K)
DenisRodman
10th May 2017, 10:38
videofan3d, Many thanks.
MPLS2JSON.exe -a great utility. Can you add conversion support also for file *.clpi ?
And what do you think about adding support for the new version of 300? Sample ver.300 (https://www.sendspace.com/file/osqvog)
videofan3d
10th May 2017, 10:54
videofan3d, Many thanks.
MPLS2JSON.exe -a great utility. Can you add conversion support also for file *.clpi ?
And what do you think about adding support for the new version of 300? Sample ver.300 (https://www.sendspace.com/file/osqvog)
re *.clip ... maybe in the future (for BD it is only matter of coding work)
Re: version 300 (UHD) ... some experimental support is already there - try it.
(To finalize it I need to get the complete UHD-BD specification.)
DenisRodman
10th May 2017, 11:40
(... I need to get the complete UHD-BD specification.)
Maybe these documents will help BD-ROM Version 3.0 (https://www.sendspace.com/file/edyggg) I found them on the internet.
I checked your new experimental version for all three types of files *.mpls, MovieObject.bdmv, index.bdmv Conversion and reverse :thanks:
mkver
4th June 2017, 10:26
Thanks for the tool. May I ask for another feature in h264modify? Can you allow it to change the SPS and PPS id-values (both of the actual SPS and PPS and of the frames using them)? This would improve the ability to join different videos (with incompatible SPS and PPS) without reencoding, because one would only need to set the SPS and PPS id to different values before joining them. (Yes, I know that this is unnecessary for Blu-ray authoring because on a Blu-ray the SPS and PPS are simply repeated and can therefore be easily overwritten, but for mp4 and mkv it would allow to use the more space-efficient "out-of-band" way of transmitting the SPS and PPS.)
videofan3d
5th June 2017, 23:02
Thanks for the tool. May I ask for another feature in h264modify? Can you allow it to change the SPS and PPS id-values (both of the actual SPS and PPS and of the frames using them)? This would improve the ability to join different videos (with incompatible SPS and PPS) without reencoding, because one would only need to set the SPS and PPS id to different values before joining them. (Yes, I know that this is unnecessary for Blu-ray authoring because on a Blu-ray the SPS and PPS are simply repeated and can therefore be easily overwritten, but for mp4 and mkv it would allow to use the more space-efficient "out-of-band" way of transmitting the SPS and PPS.)
Hi,
I'm working now on MPLS2JSON for .clpi files (requested somewhere above).
Once finished I will check also if SPS/PPS matter is somehow easily doable.
hubblec4
8th June 2017, 14:02
Hi videofan3d
The MPLS2JSON is a nice tool.
I have made a small test and found a small issue.
I copyed a mpls file to the BD-Tools folder and use this commandline
F:\Download\BDTools_1.10\MPLS2JSON.exe 00001.mpls
Failed to open 00001.mpls
failed signature match:
found ""
expected "MPLS"
or "MOBJ"
or "INDX"
Parse failed: 00001.mpls
Then I entered a full path to the MPLS and it works.
F:\Download\BDTools_1.10\MPLS2JSON.exe F:\Download\BDTools_1.10\00001.mpls
videofan3d
8th June 2017, 18:06
Hi videofan3d
The MPLS2JSON is a nice tool.
I have made a small test and found a small issue.
I copyed a mpls file to the BD-Tools folder and use this commandline
F:\Download\BDTools_1.10\MPLS2JSON.exe 00001.mpls
Failed to open 00001.mpls
failed signature match:
found ""
expected "MPLS"
or "MOBJ"
or "INDX"
Parse failed: 00001.mpls
Then I entered a full path to the MPLS and it works.
F:\Download\BDTools_1.10\MPLS2JSON.exe F:\Download\BDTools_1.10\00001.mpls
Actually, what was your "current" directory when you performed the first command?
If it was NOT "F:\Download\BDTools_1.10", then it is logical that process could not find the first parameter.
MPLS2JSON doesn't change current directory, this is standard behavior of all command line programs in any
operation system (Unix, Windows DOS-prompt, Linux, ...)
You have specified full-path-qualification for executable program, thus operating system found it. But then executable MPLS2JSON tried to find 00001.mpls in current (and unchanged) directory, but it was not there. So it failed. In the second case you fully qualified the 00001.mpls file, thus process found it.
I will change the error message to explain more precisely the cause, but behavior itself is according OS standards.
hubblec4
8th June 2017, 21:21
Thanks for these explanation.
I had used the console (windows 7) to enter the command line. With a file.bat it works all fine.
videofan3d
16th June 2017, 09:21
BDTools 2.00 released:
MPLS2JSON - added support for .clpi clip information files
Please:
I don't have so many Blu-ray discs to check thoroughly all variants of .mpls and .clpi.
If you face some discrepancies or suspicious behavior, please provide me with relevant input file (.mpls/.clpi - both these are quite small to be send or attached) and I can fix it.
Dion
17th June 2017, 00:52
Thank you for this tool. I have been looking for a sar changer tool for awhile.
DenisRodman
17th June 2017, 15:55
Hi videofan3d, thanks for CLPI.
I checked the conversion of CLPI for new discs The.Smurfs.2.2013.COMPLETE.UHD.BLURAY and Inferno.2016.COMPLETE.UHD.BLURAY all is well :thanks: .
Can you add support for the conversion also for the *.bdjo file too?
Also for versions 200 and 300.
hubblec4
20th June 2017, 19:26
Thanks for your work.
videofan3d
11th July 2017, 21:38
Thanks for the tool. May I ask for another feature in h264modify? Can you allow it to change the SPS and PPS id-values (both of the actual SPS and PPS and of the frames using them)? This would improve the ability to join different videos (with incompatible SPS and PPS) without reencoding, because one would only need to set the SPS and PPS id to different values before joining them. (Yes, I know that this is unnecessary for Blu-ray authoring because on a Blu-ray the SPS and PPS are simply repeated and can therefore be easily overwritten, but for mp4 and mkv it would allow to use the more space-efficient "out-of-band" way of transmitting the SPS and PPS.)
Hi,
could you please describe me in more detail (example) what do you request here?
And preferably also testing scenario for these cases, how can I emulate it...
videofan3d
24th July 2017, 17:49
BDTools 2.10 released:
MPLS2JSON - added support for .bdjo BD-J object files and sound.bdmv (extracts also its WAVE content)
DenisRodman
25th July 2017, 05:01
videofan3d, That's great!
Many thanks :thanks: .
videofan3d
2nd August 2017, 12:15
BDTools 2.20 released:
h264Offset3D
- new tool for offset-metadata manipulation (subtitles in Bluray-3D) added
- allows extract, delete, replace, insert offset-metadata from/into dependent view elementary stream of Bluray-3D.
r0lZ
3rd August 2017, 09:15
Yeah! Thanks, especially for the new h264Offset3D !
Suggestion: Can you add the possibility to modify (or create?) the frame-packing value with h264Modify ? That value is used by many TVs and hardware players to switch automatically to the right 3D mode (SBS, T&B, Frame Alternate...) It is very important, especially if the player ignores the stereo-mode of the MKV header. The frame-packing can be set with x264's --frame-packing argument, but currently if you forgot it or if you use a wrong value, you're stuck, and you have to re-encode the whole video stream.
videofan3d
3rd August 2017, 11:18
Yeah! Thanks, especially for the new h264Offset3D !
Suggestion: Can you add the possibility to modify (or create?) the frame-packing value with h264Modify ? That value is used by many TVs and hardware players to switch automatically to the right 3D mode (SBS, T&B, Frame Alternate...) It is very important, especially if the player ignores the stereo-mode of the MKV header. The frame-packing can be set with x264's --frame-packing argument, but currently if you forgot it or if you use a wrong value, you're stuck, and you have to re-encode the whole video stream.
Hi,
regarding frame-packing.
I'm worried it is possible to add it (correctly).
Frame-packing is inserted as a SEI message, it is not just a flag. But main point is that it has also couple of parameters which are part of encoding process (and has impact on x264 encoding: you can easily verify that output files created with and w/o --frame_packing N are from image perspective different)!
Thus after such modification the image quality would not correlate with frame_packing_arrangement SEI message.
This would not be logical to make such hack.
(And beside this I don't know these parameters so I likely cannot insert correct frame_packing_arrangement SEI message).
I will check it later once more in detail if it is doable....
sneaker_ger
3rd August 2017, 11:24
Most complicated is --frame-packing 5. I think you can get a good idea about potential problems from reading the x264 git log: http://git.videolan.org/?p=x264%2Fx264-sandbox.git&a=search&h=HEAD&st=commit&s=frame-packing
There you will also read about the optimizations x264 does for compression and compatibility.
r0lZ
3rd August 2017, 12:04
Yes, as far as I know, only frame-packing 5 (Frame Sequential) has an impact on the way the video is encoded (because the motion vectors are computed with the even or odd frames only). And even in that case, I'm not sure it has an impact on the way the video is decoded at playback time. But perhaps I'm wrong and other frame packing methods are also optimized. It is perhaps possible, for example, to encode only once the parts of the images that are identical in the two views of a movie encoded in half-SBS, but I don't think it's the case currently.
But I didn't know that the frame-packing is stored as SEI messages, and that's obviously a good argument for not implementing it in h264Modify. Thanks anyway for what h264Modify can already do.
videofan3d
3rd August 2017, 20:37
Yes, as far as I know, only frame-packing 5 (Frame Sequential) has an impact on the way the video is encoded (because the motion vectors are computed with the even or odd frames only). And even in that case, I'm not sure it has an impact on the way the video is decoded at playback time. But perhaps I'm wrong and other frame packing methods are also optimized. It is perhaps possible, for example, to encode only once the parts of the images that are identical in the two views of a movie encoded in half-SBS, but I don't think it's the case currently.
But I didn't know that the frame-packing is stored as SEI messages, and that's obviously a good argument for not implementing it in h264Modify. Thanks anyway for what h264Modify can already do.
I checked the format of particular SEI message - with certain assumptions it will be possible to add it (indeed only for accidentally omitted --frame-packing during encoding). I will work on this for next release...
sneaker_ger
3rd August 2017, 20:46
indeed only for accidentally omitted --frame-packing during encoding)
What does that mean?
videofan3d
3rd August 2017, 22:24
What does that mean?
as R0lZ said: "... if you forgot it or if you use a wrong value, you're stuck..." :)
r0lZ
4th August 2017, 08:35
I checked the format of particular SEI message - with certain assumptions it will be possible to add it (indeed only for accidentally omitted --frame-packing during encoding). I will work on this for next release...
Yeah! Thanks!
I suppose that the SEI message is regularly repeated during the whole movie. Right? I ask this because my current method to add the frame-packing when it is missing is simply to encode 1 second of black with the correct option, and merge the original movie after that "intro" with MkvMerge. My Samsung TV recognizes the 3D mode correctly when the movie starts and doesn't lose it during the playback, but I have the impression that my method is not correct and may not work with all players.
Anyway, we will have soon a better way to do it. :-)
sneaker_ger
4th August 2017, 08:58
Yes, I think it must at least be repeated for every coded video sequence (GOP). Frame-packing 5 needs SEI for every view sequence.
DenisRodman
5th August 2017, 05:47
Hi videofan3d,
Can you add support for the conversion for the id.bdmv?
File path CERTIFICATE\id.bdmv
Also for versions 200 and 300.
videofan3d
5th August 2017, 13:10
Hi videofan3d,
Can you add support for the conversion for the id.bdmv?
File path CERTIFICATE\id.bdmv
Also for versions 200 and 300.
Yes, I will add it.
Please note, that I work only with specification for version 200 (from 2011).
I didn't find official BD specification 300 yet - so I can only guess and hope that it is similar and adds only minor backward-compatible extensions (i.e. uses reserved fields).
DenisRodman
5th August 2017, 14:35
videofan3d,
I understand you perfectly. It is difficult for you to work without having the necessary documents. Every new version of you I check on the disks of the UHD version 300. Testing the result pleased. Considering the fact that new parameters have been added in CLPI such as HDR and others, your program very competently conversion the code and reverse. Therefore, we all understand how you work. At you it turns out all.
Good luck and let's hope for the best :thanks: .
videofan3d
5th August 2017, 15:04
Yes, I think it must at least be repeated for every coded video sequence (GOP). Frame-packing 5 needs SEI for every view sequence.
"frame_packing_arrangement" SEI messages can appear anytime it is needed to inform decoder about change of 3D format. They should appear in general after each Picture Parameter Set (PPS) NAL unit, and in case of mode "frame alternation" also before each frame slice NAL unit (to indicate if it is left or right eye).
These "frame_packing_arrangement" SEI messages constitute very sophisticated signaling system for 3D decoder. They have meaning "from now on use decoding method X". There is also message "stop 3D decoding".
This signaling system allows to include into one elementary stream several 3D methods and switch them accordingly on the fly.
Do you know why there is 3D method 6 = MONO?
It is intended to signal decoder that "from now on we have only 2D picture", however glasses should stay turned on and TV should display the same image into both L and R eye! (switching glasses on/off usually causes unpleasant glitches)
Apparently this was designed for broadcast but unfortunately nowadays it is over, and I doubt that decoders recognize all these 3D signaling messages....
geheim
5th August 2017, 16:20
Hi videofan3D,
so I did some tests with h264offset3D and it works pretty fine. The only problem is that after inserting the original offsets back into the mvc stream after reencoding, and remuxing, I get blocking artefacts when playing on my Sony standalone player. This doesn't happen without inserting the offsets.
h264offset3d seems to brake something in the stream. Do you have any idea what it could be?? Thanks for creating this nice tool at all :)
sneaker_ger
5th August 2017, 16:40
"frame_packing_arrangement" SEI messages can appear anytime it is needed to inform decoder about change of 3D format. They should appear in general after each Picture Parameter Set (PPS) NAL unit, and in case of mode "frame alternation" also before each frame slice NAL unit (to indicate if it is left or right eye).
These "frame_packing_arrangement" SEI messages constitute very sophisticated signaling system for 3D decoder. They have meaning "from now on use decoding method X". There is also message "stop 3D decoding".
This signaling system allows to include into one elementary stream several 3D methods and switch them accordingly on the fly.
Do you know why there is 3D method 6 = MONO?
It is intended to signal decoder that "from now on we have only 2D picture", however glasses should stay turned on and TV should display the same image into both L and R eye! (switching glasses on/off usually causes unpleasant glitches)
Apparently this was designed for broadcast but unfortunately nowadays it is over, and I doubt that decoders recognize all these 3D signaling messages....
Some players are very picky about correct frame packing SEIs. For your tool 6/mono wouldn't really make sense. As you say it only makes sense if you intend to switch from 3D to 2D. And even then I believe it is not strictly needed. It could only be useful for broadcast/live encoding when encoder doesn't yet know when the switch will occur and may need to do it in the middle of a GOP on top of that.
AVC/HEVC specs cover endless use-cases. Much of it is irrelevant in the real world. It's way too complicated.
videofan3d
5th August 2017, 19:03
Hi videofan3D,
so I did some tests with h264offset3D and it works pretty fine. The only problem is that after inserting the original offsets back into the mvc stream after reencoding, and remuxing, I get blocking artefacts when playing on my Sony standalone player. This doesn't happen without inserting the offsets.
h264offset3d seems to brake something in the stream. Do you have any idea what it could be?? Thanks for creating this nice tool at all :)
Hi, is there any chance to create small sample and upload it to web? (both with and w/o inserted offset_metadata). I need to check the structure...
geheim
6th August 2017, 08:05
Hi, is there any chance to create small sample and upload it to web? (both with and w/o inserted offset_metadata). I need to check the structure...
Of course, I'll create a small sample later today :)
geheim
11th August 2017, 12:30
Hi,
over the last few days I did quit a few tests with h264offset3D. And I can say that it works absolutely stable and exactly as it is meant to work. Thanks @videofan3D!
As for muxing frim-encoded streams with integrated offsets, I had some difficulties. TSMuxer muxes them perfectly fine, however the output can't be played on every standalone player because TSMuxer uses the out-of-mux method for 3D folders. This is of Course not a problem of Frim or h264offset3d.
A solution is to only mux with TSMuxer using it's BluRay ISO output option. But you can have only one title per Disc using this method.
For people like me, who want to have some menus and generate them with Scenarist the situation is a bit more complicated.
Scenarist muxes FRIM encodes withOUT offsets perfectly. Hoewever you need to uncheck "Spec check mode" in MUI generator.
You'll get a 3D bluray out of Scenarist that plays in every single standalone player because Scenarist is a professional tool and designed for perfect compatibility.
But as FRIM encodes have broken offset structure, subtitles can't have any depth, not even if you want to set Offsets manually, because scenarist doesn't offer the option to manage Offsets at all with FRIM encodes.
This is where videofan3d's new h264offset3d gets important. With this tool you can extract offsets from original files or generate a text file with offsets manually and intergrate them into the mvc stream after encoding with FRIM. This works perfectly.
Now even Scenarist recognizes the FRIM encoded file as valid (no need to disable "spec check mode").
In Scenarist you can now manage offsets in every possible way.
However, the resulting disc shows some block artefacts every 5-10 seconds during playback on standalone players.
This didn't happen without integrating offsets.
Luckily there is an easy fix for this using jdobbs' BD-Rebuilder. Just process the disc you got out of Scenarist with BD-Rebuilder. If you set the output size accordingly, BD-Rebuilder won't reencode any video files. It only remuxes the disc using the in-mux file structure, which is also compatible with every standalone player.
As Offsets are only assigned within the mpls files (thanks @videofan3D), the offsets you assigned in Scenarist will be there even after remuxing. Now the discs work perfectly fine with menus and 3d subtitle offsets at the same time. And we are able to make perfect backups of original discs with FRIM and h264offset3D as well.
I hope my post will help some people in creating their backups or own movies with Scenarist, Frim and h264offset3D.
Big thanks to @videofan3D for creating these wonderful tools.
videofan3d
24th August 2017, 21:32
BDTools 2.30 released:
MPLS2JSON
- added support for id.bdmv files
- sound.bdmv - WAVE files are extracted to the same directory as .json file
h264Modify
- added -frame_packing for insertion or deletion of frame packing SEI messages:
CHECKER or 0 - for checkerboard
COLINT or 1 - column interleave
ROWINT or 2 - row interleave
SBS or 3 - side by side
TAB or 4 - top above bottom
MONO or 6 - mono - 2D frame
TILE or 7 - tile format
(frame alternation (mode 5) is not supported yet)
h264Offset3D
- minor bugfixing - no new features
AVCHDInfo
- new tool. Displays recording date/time of each frame of AVCHD.MTS file extracted from vendor-specific information (if available) - in textual or tab-separated format.
Vendor-specific information contains sometimes additional data like camcorder model, recording aperture, gain, GPS info, etc. However this format is not standardized nor unified and each vendor like SONY, CANON, PANASONIC etc. uses its own coding. Further vendor-specific data might be possibly extracted in future versions of AVCHDInfo.
Yanada
12th September 2017, 21:36
I downloaded ver 2.30 of your awesome tools and found that MPLS2JSON seems to still be the previous version (2.20) in the 2.30 download. The release notes say that id.bdmv support was added in 2.30...
Also the help info says that it can show info for clpi files, but when I try it it states failed signature match: found ""
This is one of the most useful tools I've found so far! Keep up the great work!
As a side request, could you add the Windows standard help argument "/?" as an alias to the Linux standard "--help"? Thanks!
videofan3d
14th September 2017, 22:56
I downloaded ver 2.30 of your awesome tools and found that MPLS2JSON seems to still be the previous version (2.20) in the 2.30 download. The release notes say that id.bdmv support was added in 2.30...
Also the help info says that it can show info for clpi files, but when I try it it states failed signature match: found ""
This is one of the most useful tools I've found so far! Keep up the great work!
As a side request, could you add the Windows standard help argument "/?" as an alias to the Linux standard "--help"? Thanks!
There might be slight mismatch in numbering, but "MPLS to JSON - version 2.20 (build: Aug 14 2017)" support id.bdmv - you can test it.
Regarding clip and signature match: found "" - please give me the particular .clip file, I will check it.
Regarding /? ... try -help
(I don't like Microsoft's /?, it confuses regular "questions mark" meaning. Standard UNIX uses only single "minus")
Yanada
16th September 2017, 12:14
Oh, interesting... I'm not sure which file I tried it on. CLPI is indeed working on other files... curious (on my end).
Please ignore that problem I guess. If I can remember the file again I'll send it.
:thanks:
tebasuna51
21st September 2017, 12:06
A spanish user ask me about a problem playing (with a BDplayer) a custom BD with a h264 stream like this:
General
Complete name : D:\tmp\Muestra.h264
Format : AVC
Format/Info : Advanced Video Codec
File size : 132 MiB
Overall bit rate mode : Variable
Video
Format : AVC
Format/Info : Advanced Video Codec
Format profile : High@L4.1
Format settings, CABAC : Yes
Format settings, RefFrames : 2 frames
Bit rate mode : Variable
Width : 1 920 pixels
Height : 1 080 pixels
Display aspect ratio : 16:9
Frame rate : 23.976 (24000/1001) FPS
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Text
ID : CC1
Format : EIA-608
Muxing mode : SCTE 128 / DTVCC Transport
Bit rate mode : Constant
Stream size : 0.00 Byte (0%)
CaptionServiceName : CC1
Maybe the problem is the subs included: https://en.wikipedia.org/wiki/EIA-608
Is that stream allowed in BluRay specs?
Do you know a tool to modify the h264 deleting the EIA-608 subs?
Sample (https://mega.nz/#!tRMnnawL!u1Zirc0w15jwVl7pFAwoD3w-l7gZc1lCiPCp8yeIy1k)
Sharc
21st September 2017, 22:34
A spanish user ask me about a problem playing (with a BDplayer) a custom BD with a h264 stream like this:
Maybe the problem is the subs included: https://en.wikipedia.org/wiki/EIA-608
Is that stream allowed in BluRay specs?
Do you know a tool to modify the h264 deleting the EIA-608 subs?
Sample (https://mega.nz/#!tRMnnawL!u1Zirc0w15jwVl7pFAwoD3w-l7gZc1lCiPCp8yeIy1k)
I don't know about Blu-ray compliance.
You can remove the EIA-608 caption by re-encoding the stream.
tebasuna51
22nd September 2017, 07:17
You can remove the EIA-608 caption by re-encoding the stream.
Of course, I was searching a way without recode.
sneaker_ger
31st January 2018, 13:47
Thanks for those links in the thread for updating sar. I seem to be getting an error and wondering if you have any insight. Below is my command followed by the error. Any help you can provide would be awesome. The input file is an MKV made from BD3D2MK3D. Thanks.
h264Modify.exe F:\Movies\ULTRON.mkv -sar 1:2 F:\Movies\ULTRON-UPDATED.mkv
ERROR reading bitstream: read past NAL end
H.264 Stream Modifier - version 2.00 (build: Aug 24 2017)
ERROR: h264Modify.exe - cannot copy bitstream F:\Movies\ULTRON.mkv
h264Modify doesn't work directly on mkv container. You have to demux, modify, then mux again.
mkvextract tracks "F:\Movies\ULTRON.mkv" "0:F:\Movies\ULTRON.264"
h264Modify.exe F:\Movies\ULTRON.264 -sar 1:2 F:\Movies\ULTRON-UPDATED.264
mkvmerge -o "F:\Movies\ULTRON-UPDATED.mkv" --stereo-mode 0:1 "F:\Movies\ULTRON-UPDATED.264" --no-video "F:\Movies\ULTRON.mkv"
(You may have to set a few flags again (e.g. for 3D) and/or get trouble if the file is vfr. Then you have to manually set flags and copy timecodes from source. See mkvextract and mkvmerge docs in that case.)
outgoing
13th October 2018, 23:27
First of all, thank you very much for providing us with these great tools. My issue is pure novice. When I want to create the output from mpls to json it says can't create the file. This is the syntax I write. Any help is more than appreciated.
C:\>MPLS2JSON 00800.mpls 00800.json
Save failed: 00800.json
ocean
14th October 2018, 05:04
Welcome to the forum, command-line (CLI) run as administrator.
tebasuna51
14th October 2018, 10:07
As administrator or run in a folder owned by the user.
C:\ (the root folder and others) is protected to write for standard users.
outgoing
14th October 2018, 10:33
Thank you friends for the welcoming and help, the cause is the one you indicated, the lack of habit of working on cli commands. :thanks:
KonJuruing
2nd June 2019, 13:59
Hello videofan3d,
I use these BDTools 2.30 since several month, really great helpfull tools :-)
Now, I have some issues with subtitle depth.
Inside a playlist file there are different planes for different subtitles.
After reconvert from .json to .mpls ALL .pgs subtitle streams are set to plane#0.
short example:
(original .mpls file with different planes after conversion to .json)
"PG_stream": [
{
"PG_textST_offset_sequence_id_ref": 11,
"reserved01": 0,
"dialog_region_offset_valid_flag": 0,
"is_SS_PG": 0,
"is_top_AS_PG_textST": 0,
"is_bottom_AS_PG_textST": 0
},
{
"PG_textST_offset_sequence_id_ref": 12,
"reserved01": 0,
"dialog_region_offset_valid_flag": 0,
"is_SS_PG": 0,
"is_top_AS_PG_textST": 0,
"is_bottom_AS_PG_textST": 0
},
{
"PG_textST_offset_sequence_id_ref": 1,
"reserved01": 0,
"dialog_region_offset_valid_flag": 0,
"is_SS_PG": 0,
"is_top_AS_PG_textST": 0,
"is_bottom_AS_PG_textST": 0
},
{
"PG_textST_offset_sequence_id_ref": 2,
"reserved01": 0,
"dialog_region_offset_valid_flag": 0,
"is_SS_PG": 0,
"is_top_AS_PG_textST": 0,
"is_bottom_AS_PG_textST": 0
},
{
"PG_textST_offset_sequence_id_ref": 3,
"reserved01": 0,
"dialog_region_offset_valid_flag": 0,
"is_SS_PG": 0,
"is_top_AS_PG_textST": 0,
"is_bottom_AS_PG_textST": 0
},
{
"PG_textST_offset_sequence_id_ref": 4,
"reserved01": 0,
"dialog_region_offset_valid_flag": 0,
"is_SS_PG": 0,
"is_top_AS_PG_textST": 0,
"is_bottom_AS_PG_textST": 0
},
{
"PG_textST_offset_sequence_id_ref": 5,
"reserved01": 0,
"dialog_region_offset_valid_flag": 0,
"is_SS_PG": 0,
"is_top_AS_PG_textST": 0,
"is_bottom_AS_PG_textST": 0
},
{
"PG_textST_offset_sequence_id_ref": 6,
"reserved01": 0,
"dialog_region_offset_valid_flag": 0,
"is_SS_PG": 0,
"is_top_AS_PG_textST": 0,
"is_bottom_AS_PG_textST": 0
},
{
"PG_textST_offset_sequence_id_ref": 7,
"reserved01": 0,
"dialog_region_offset_valid_flag": 0,
"is_SS_PG": 0,
"is_top_AS_PG_textST": 0,
"is_bottom_AS_PG_textST": 0
},
{
"PG_textST_offset_sequence_id_ref": 8,
"reserved01": 0,
"dialog_region_offset_valid_flag": 0,
"is_SS_PG": 0,
"is_top_AS_PG_textST": 0,
"is_bottom_AS_PG_textST": 0
},
{
"PG_textST_offset_sequence_id_ref": 13,
"reserved01": 0,
"dialog_region_offset_valid_flag": 0,
"is_SS_PG": 0,
"is_top_AS_PG_textST": 0,
"is_bottom_AS_PG_textST": 0
},
{
"PG_textST_offset_sequence_id_ref": 15,
"reserved01": 0,
"dialog_region_offset_valid_flag": 0,
"is_SS_PG": 0,
"is_top_AS_PG_textST": 0,
"is_bottom_AS_PG_textST": 0
},
{
"PG_textST_offset_sequence_id_ref": 9,
"reserved01": 0,
"dialog_region_offset_valid_flag": 0,
"is_SS_PG": 0,
"is_top_AS_PG_textST": 0,
"is_bottom_AS_PG_textST": 0
},
{
"PG_textST_offset_sequence_id_ref": 14,
"reserved01": 0,
"dialog_region_offset_valid_flag": 0,
"is_SS_PG": 0,
"is_top_AS_PG_textST": 0,
"is_bottom_AS_PG_textST": 0
},
{
"PG_textST_offset_sequence_id_ref": 10,
"reserved01": 0,
"dialog_region_offset_valid_flag": 0,
"is_SS_PG": 0,
"is_top_AS_PG_textST": 0,
"is_bottom_AS_PG_textST": 0
}
],
"IG_stream": []
After reconversion this .json file to .mpls the different planes are gone, just one plane#0.
After another conversion of this new .mpls once again to .json I see that the content has chainged:
"PG_stream": [
{
"PG_textST_offset_sequence_id_ref": 0,
"reserved01": 0,
"dialog_region_offset_valid_flag": 1,
"is_SS_PG": 0,
"is_top_AS_PG_textST": 0,
"is_bottom_AS_PG_textST": 0
},
{
"PG_textST_offset_sequence_id_ref": 0,
"reserved01": 0,
"dialog_region_offset_valid_flag": 1,
"is_SS_PG": 0,
"is_top_AS_PG_textST": 0,
"is_bottom_AS_PG_textST": 0
},
{
"PG_textST_offset_sequence_id_ref": 0,
"reserved01": 0,
"dialog_region_offset_valid_flag": 1,
"is_SS_PG": 0,
"is_top_AS_PG_textST": 0,
"is_bottom_AS_PG_textST": 0
},
{
"PG_textST_offset_sequence_id_ref": 0,
"reserved01": 0,
"dialog_region_offset_valid_flag": 1,
"is_SS_PG": 0,
"is_top_AS_PG_textST": 0,
"is_bottom_AS_PG_textST": 0
},
{
"PG_textST_offset_sequence_id_ref": 0,
"reserved01": 0,
"dialog_region_offset_valid_flag": 1,
"is_SS_PG": 0,
"is_top_AS_PG_textST": 0,
"is_bottom_AS_PG_textST": 0
},
{
"PG_textST_offset_sequence_id_ref": 0,
"reserved01": 0,
"dialog_region_offset_valid_flag": 1,
"is_SS_PG": 0,
"is_top_AS_PG_textST": 0,
"is_bottom_AS_PG_textST": 0
},
{
"PG_textST_offset_sequence_id_ref": 0,
"reserved01": 0,
"dialog_region_offset_valid_flag": 1,
"is_SS_PG": 0,
"is_top_AS_PG_textST": 0,
"is_bottom_AS_PG_textST": 0
},
{
"PG_textST_offset_sequence_id_ref": 0,
"reserved01": 0,
"dialog_region_offset_valid_flag": 1,
"is_SS_PG": 0,
"is_top_AS_PG_textST": 0,
"is_bottom_AS_PG_textST": 0
},
{
"PG_textST_offset_sequence_id_ref": 0,
"reserved01": 0,
"dialog_region_offset_valid_flag": 1,
"is_SS_PG": 0,
"is_top_AS_PG_textST": 0,
"is_bottom_AS_PG_textST": 0
},
{
"PG_textST_offset_sequence_id_ref": 0,
"reserved01": 0,
"dialog_region_offset_valid_flag": 1,
"is_SS_PG": 0,
"is_top_AS_PG_textST": 0,
"is_bottom_AS_PG_textST": 0
},
{
"PG_textST_offset_sequence_id_ref": 0,
"reserved01": 0,
"dialog_region_offset_valid_flag": 1,
"is_SS_PG": 0,
"is_top_AS_PG_textST": 0,
"is_bottom_AS_PG_textST": 0
},
{
"PG_textST_offset_sequence_id_ref": 0,
"reserved01": 0,
"dialog_region_offset_valid_flag": 1,
"is_SS_PG": 0,
"is_top_AS_PG_textST": 0,
"is_bottom_AS_PG_textST": 0
},
{
"PG_textST_offset_sequence_id_ref": 0,
"reserved01": 0,
"dialog_region_offset_valid_flag": 1,
"is_SS_PG": 0,
"is_top_AS_PG_textST": 0,
"is_bottom_AS_PG_textST": 0
},
{
"PG_textST_offset_sequence_id_ref": 0,
"reserved01": 0,
"dialog_region_offset_valid_flag": 1,
"is_SS_PG": 0,
"is_top_AS_PG_textST": 0,
"is_bottom_AS_PG_textST": 0
},
{
"PG_textST_offset_sequence_id_ref": 0,
"reserved01": 0,
"dialog_region_offset_valid_flag": 1,
"is_SS_PG": 0,
"is_top_AS_PG_textST": 0,
"is_bottom_AS_PG_textST": 0
}
],
"IG_stream": []
Maybe you can have a look at this ?
For editing .json file I use Free JSON Editor:
https://www.mediafreeware.com/free-json-editor.html
If you need more infos, just let me know :-)
:thanks:
videofan3d
3rd June 2019, 20:30
.. I have some issues with subtitle depth.
Inside a playlist file there are different planes for different subtitles.
Finally someone pointed to this issue!
Someone shows he/she still uses these little tools :)
Version 2.30 uploaded to this web has a bug in 3D subtitle depth extraction. You can check this using command
mpls2json -selftest 00000.mpls
when in case of BD3D it will not re-create identical .mpls.
Fixed version 2.31 uploaded.
KonJuruing
7th June 2019, 17:31
Hello vidofan3d,
thank you so much for fast fixing.
I just tested version 2.31 on a seamless branching mpls file:
AFTER USING NEW VERSION 2.31 ALL PLANES FOR 3D SUBTITLES ARE SAME LIKE ON ORIGINAL MPLS :)
Thank you once again for fixing.
Especially for me, your BDTools is the best software for editing blu-rays.
Before, I used bdedit...but yours are way better (for me) :)
:thanks::thanks::thanks:
frank
12th June 2019, 15:09
I want to set the SEI frame-packing info
h264Modify mkv3d_3d.264 -frame_packing SBS film_3d.264
but h264Modify doesn't show that info.
NAL position 0x000158A0 (88224)
nal_unit_type: 7 "Sequence parameter set"
profile_idc = 100 "High"
constraint_flags = 16 (0x10)
constraint_set0_flag = 0
constraint_set1_flag = 0
constraint_set2_flag = 0
constraint_set3_flag = 0
constraint_set4_flag = 1
constraint_set5_flag = 0
level_idc = 40
time_scale / 2 = 24000
num_units_in_tick = 1001
fixed_frame_scale = 0Nothing changed. I miss the frame-packing field.
3D encodings with ffmpeg / x264 and --frame-packing=3 also don't show the field. But it should be there.
The other infos can be changed.
videofan3d
17th June 2019, 20:07
I want to set the SEI frame-packing info
h264Modify mkv3d_3d.264 -frame_packing SBS film_3d.264
but h264Modify doesn't show that info.
NAL position 0x000158A0 (88224)
nal_unit_type: 7 "Sequence parameter set"
profile_idc = 100 "High"
constraint_flags = 16 (0x10)
constraint_set0_flag = 0
constraint_set1_flag = 0
constraint_set2_flag = 0
constraint_set3_flag = 0
constraint_set4_flag = 1
constraint_set5_flag = 0
level_idc = 40
time_scale / 2 = 24000
num_units_in_tick = 1001
fixed_frame_scale = 0Nothing changed. I miss the frame-packing field.
3D encodings with ffmpeg / x264 and --frame-packing=3 also don't show the field. But it should be there.
The other infos can be changed.
In fact, the frame_packing info is inserted as SEI message
nal_unit_type: 6 "SEI"
nal_ref_idc: 0
payload_type: 45 "frame_packing_arrangement"
payload_size: 7
frank
18th June 2019, 12:19
Ok, thanks, it works, I verified it with H.264 Analyzer.
But how did you display this info?
h264Modify version 2.0 without options
h264Modify.exe film_3d.264 only shows nal_unit_type 7 but not nal_unit_type 6. This info is missing.
Please, correct the issue.
Why is h264Modify so important?
Today we can encode much faster using HW encoders - Intel qsv, NVIDIA nvenc. But this tools can't inject the SEI frame_packing info. E.g. for 3D in MP4 (Google Cardboard VR) this metadata is important.
outgoing
27th August 2019, 23:31
Also, once done the conversion of a mpls to json, the information it gives is great, but if when you do the conversion again to .mpls no longer plays the movie, at least in my case, what good is it to change parameters if later the file is not valid. Sure I'm missing something, how to change some parameter in the json and convert it properly to mpls. Sorry, maybe these are obvious questions for some but not for me.
edited:
Sorry, editing with wordpad everything fine. Thanks!!
pel9
3rd November 2019, 11:35
I reversed some info about the Dolby Vision stream.
The next byte after the number_of_PiP_PG_textST_stream_entries_plus in the STN_table() is the number_of_DV_video_stream_entries*
The value could be 0 or 1.
If the value is 1 then at the end of STN_table() there is a stream_entry() and stream_attributes() structure.
The stream_entry() has a new stream_type (4) and the structure is:
length 8 bit (=9)
stream_type 8 bit (=4)
reserved 8 bit
ref_to_stream_PID_of_DVstream* 16 bit
reserved 40 bit
The stream_attributes() structure is similar to the main video stream
* These names are guessed by me
Also reversed some extension
http://bdedit.pel.hu/pic/HDRmetadata.png
Emulgator
9th November 2019, 23:50
Ah, welcome back and many thanks for your work !
TitanFan
2nd January 2020, 16:49
So, I'm looking at a playlist that references the same m2ts file multiple times with different in_time and out_time values. For example mplsdump on a playlist reports 45 clips, and each clip has an in_time and out_time value. When I convert the playlist to a json file, I can see the in_time and out_time values, but I'm not sure what the format is?
For example:
"Clip_Information_file_name": "00351",
"Clip_codec_identifier": "M2TS",
"ref_to_STC_id": 0,
"reserved01": 0,
"is_multi_angle": 0,
"connection_condition": 1,
"IN_time": 11042287,
"OUT_time": 16109850,
What is the in_time and out_time format? How can I convert this format to hh:mm:ss time format?
videoh
2nd January 2020, 16:54
What is the in_time and out_time format? How can I convert this format to hh:mm:ss time format? Divide by 45000 to get the total time in seconds. Then you can work out the hours, minutes, and seconds from that.
TitanFan
3rd January 2020, 04:37
Thanks - dividing by 45000 worked. I checked a BDedit playlist report and it has the same in_time/out_time as BDTools. For some reason these playlist times are always 10-15 seconds off when I check the video....I can play the playlist file and it selects the video parts correctly, so I'm not sure why these playlist reports are showing incorrect times. Good news is that the times are off by a consistent amount, so I can just subtract the 10-15 seconds off each time to correct the problem.
koka
21st April 2020, 22:35
Which "command" is true?
How in MPLS2JSON.exe:
{
"operation_code": 1212154624,
"operand_1": 10,
"operand_2": 65535,
"command": "Greater_or_Equal reg_10 65535"
}
or other::
{
"operation_code": 1212154624,
"operand_1": 10,
"operand_2": 65535,
"command": "Not_Equal reg_10 65535"
}
koka
21st April 2020, 23:00
structure is:
length 8 bit (=9)
stream_type 8 bit (=4)
reserved 8 bit
ref_to_stream_PID_of_DVstream* 16 bit
reserved 40 bit
"STN_table": {
"stream": [
{
"type": 1,
"pid": 4113,
"stream_coding_type": "H.265",
"video_format": "2160p",
"frame_rate": "23_976",
"reserved_uhd": 18,
"reserved01": 16384
},
...
{
"type": 4,
"pid": 5376,
"stream_coding_type": "H.265",
"video_format": "1080p",
"frame_rate": "23_976",
"reserved_uhd": 34,
"reserved01": 0
}
where:
ru=st.get("reserved_uhd", 0)
if ru:
if ru==0x12: uhd|=0b10010 #HDR10plus and HDR10
elif ru==0x80: uhd|=0b10000 #HDR10plus
elif ru==0x22: uhd|=0b00100 #DV
videofan3d
28th April 2020, 18:46
Which "command" is true?
How in MPLS2JSON.exe:
{
"operation_code": 1212154624,
"operand_1": 10,
"operand_2": 65535,
"command": "Greater_or_Equal reg_10 65535"
}
or other::
{
"operation_code": 1212154624,
"operand_1": 10,
"operand_2": 65535,
"command": "Not_Equal reg_10 65535"
}
Not_Equal seems to be correct.
(there is one-bit-shift bug in MPLS2JSON.exe)
Reads through py2 or py3 index.bdmv, MovieObject.bdmv and part *.mpls of Blu-ray Disk into objects
Writes from objects to index.bdmv, MovieObject.bdmv
Reads and writes everything else through mpls2json.exe (https://github.com/abakum/tsmuxerCLI/blob/master/bdon.py)
karbre
2nd March 2023, 00:31
What is the unit of timestamps in a JSON generated by mpls2json? E.g. "IN_time": 30990600
It doesn't seem to be ms, ns or anything similar.
edit: found the answer, it's x/45000 seconds
r0lZ
26th March 2023, 14:04
h264Modify.exe film_3d.264 only shows nal_unit_type 7 but not nal_unit_type 6. This info is missing.
Please, correct the issue.
Why is h264Modify so important?
Today we can encode much faster using HW encoders - Intel qsv, NVIDIA nvenc. But this tools can't inject the SEI frame_packing info. E.g. for 3D in MP4 (Google Cardboard VR) this metadata is important.
I second this request.
I have the intention to write a GUI (integrated in BD3D2MK3D) to automatically demux the AVC stream from a MKV (2D or 3D), use your valuable h264Modify tool to either insert the correct frame-packing or to delete it, and remux the patched MKV.
Due to a serious bug in the BigScreen software, many hardware players are unable to display the 3D images correctly when that SEI message is present, as you can see here (https://forum.videohelp.com/threads/395498-BD3D2MK3D-Convert-3D-BDs-or-MKV-to-3D-SBS-TAB-or-FS-MKV-Support-thread/page14#post2684978). Hence the necessity for some users to remove it, even when it is correct. And of course, adding it in the too numerous 3D movies lacking it is obviously also important.
Of course, I would like to be able to show the current frame-packing mode in the GUI, or if it is not specified. It's important to avoid to demux, patch and remux the AVC stream without a good reason.
Can you add the information in the output (with also the current 3D mode please) ? Or an option to display only that information as soon as it is detected and exit immediately will be even better.
Thanks in advance.
[EDIT] If someone knows a free CLI tool able to display that information, please let me know.
r0lZ
28th March 2023, 12:21
My GUI is on the way, but I have just noticed this strange problem with this h264Modify command:
"h264Modify.exe" "in.avc" "out.avc" -frame-packing SBS:LR
(Or with any other frame-packing value, including DELETE).
This message is issued (probably in stderr):
H.264 Stream Modifier - version 2.00 (build: Aug 24 2017)
WARNING: h264Modify.exe - unknown option --frame-packing specified, ignoring...
However, --frame-packing (with -- instead of a single -) is never present in my code.
Note that if I use --frame-packing in the command, the warning becomes "unknown option ---frame-packing" ! (Again, the command works correctly.)
Unfortunately, due to this strange message, I have no simple way to verify if the command has worked correctly from my GUI. (Actually, the command has worked perfectly, despite the strange warning.)
Can you fix that little problem, please ? Thanks.
r0lZ
3rd April 2023, 09:31
I have finished the GUI, and I will release a new version of BD3D2MK3D soon.
But I have found another bug in h264 modify, and this one is very important. The frame-packing "Frame Alternation" is missing. It is available with the x264 option --frame-packing 5, but it is not possible to specify it in the command line of h264Modify. It's a pity, as it's probably the most necessary format after SBS and TAB. Videofan3D, can you add it ? Thanks !
outgoing
4th January 2024, 12:10
@videofan3d
In MPLS2JSON there is some kind of bug concerning the editing of dolby vision data in UHD mpls. Without making any modification in the original mpls of any UHD physical disc containing DV data if I convert this .mpls to .json and without changing any data I convert it back to mpls in this conversion process some data related to the DV feature is "lost" which makes that it cannot be activated in a player like Oppo. If I open the two mpls (original/converted without changing any data) in hex, you will see that there are a series of differences and these cause the "breaking" of the DV in a physical disc to be activated when it is played. Can you please check this.
Edited:
On the other hand, if I edit the .mpls in BDedit and make some changes, the resulting mpls has only changed the data that I have modified and keeps the DV data and it is possible to play the disc with DV in any player.
Edited1:
In .mpls belonging to 2D/3D Full Bluray disks, this is not a problem, it preserves the integrity of all data and only the data you have modified after the conversion is done.
From all this it is clear that your application was designed and works great for 2D/3D discs. On UHD discs with hdr10 it also works correctly in the tests I have done. It only works badly on all UHD discs that include Dolby Vision data. So when you go back to the edited .mpls some data is already lost or corrupted relative to DV.
videofan3d
7th February 2024, 23:10
From all this it is clear that your application was designed and works great for 2D/3D discs. On UHD discs with hdr10 it also works correctly in the tests I have done. It only works badly on all UHD discs that include Dolby Vision data. So when you go back to the edited .mpls some data is already lost or corrupted relative to DV.
It is possible - I prepared application based on BD2D/3D specification which I obtained (by chance) - and which is not freely available, unfortunately. In that time UHD extension was not specified, yet.
Provide me with few UHD Dolby Vision BD titles (meaning names) which suffer by this issue - I can try to look at it.
outgoing
7th February 2024, 23:26
You will see that any full UHD containing DV when editing the mpls specific to the main movie will corrupt the DV data. For example in my direct experience these titles i have worked with:
Belle (2021) UHD
Ghost in the Shell (1995) UHD
Kick-Ass 2 (2013) UHD
Sisu (2022) UHD
Thank you for continuing to develop these great editing tools.
von Suppé
8th February 2024, 11:06
@videofan3d
Any chance that you can add a "h265Modify.exe"? Being more & more busy with hevc streams, it would be great to be able to both read and edit metadata.
videofan3d
18th February 2024, 15:55
You will see that any full UHD containing DV when editing the mpls specific to the main movie will corrupt the DV data. For example in my direct experience these titles i have worked with:
Belle (2021) UHD
Ghost in the Shell (1995) UHD
Kick-Ass 2 (2013) UHD
Sisu (2022) UHD
Thank you for continuing to develop these great editing tools.
I found only Ghost in the Shell (1995) UHD but somehow I cannot reproduce the issue. Maybe I don't have the same release.
Could you send me couple of .mpls files which suffer with this reverse-construction problem?
outgoing
19th February 2024, 00:45
@videofan3d
Please check your pm.
DreckSoft
26th February 2024, 01:57
Thanks for those amazing tools!
I think I found a bug in h264Modify
I changed a file with MAIN@L4 to HIGH@L4.1 with -profile_idc High -level_idc 4.1
That did also change the resolution from 1920x1080 to 1920x1084
That results in an unplayable file. I edited it back to 1920x1080 with h264info and now it's fine.
Btw: In case you ever decide to cease development, PLEASE open source the tools. There are already way too many great (video) programs lost.
videofan3d
2nd March 2024, 14:23
You will see that any full UHD containing DV when editing the mpls specific to the main movie will corrupt the DV data. For example in my direct experience these titles i have worked with:
Belle (2021) UHD
Ghost in the Shell (1995) UHD
Kick-Ass 2 (2013) UHD
Sisu (2022) UHD
MPLS2JSON is written based on BD-ROM specification from 2011 which does not include UHD.
Problem is already in initial conversion to JSON: it skips extra DV track because it is not aware of them.
I'm modified it slightly based on provided .mpls sample:
MPLS2JSON.exe 2024-03-02 (https://drive.google.com/file/d/1j2irpu8JlKtvvckFZ-oNypCt9cFlALpX)
But I could only guess the meaning of those extra bytes.
Please try it and let me know your observation.
To anyone: if someone has BD-ROM Part 3 - Audio Visual Basic Specifications newer than from 2011 and is able and willing to share it, would be great.
I could then extend this utility correctly in broader scope for UHD.
videofan3d
2nd March 2024, 14:30
Thanks for those amazing tools!
I think I found a bug in h264Modify
I changed a file with MAIN@L4 to HIGH@L4.1 with -profile_idc High -level_idc 4.1
That did also change the resolution from 1920x1080 to 1920x1084
That results in an unplayable file. I edited it back to 1920x1080 with h264info and now it's fine.
Btw: In case you ever decide to cease development, PLEASE open source the tools. There are already way too many great (video) programs lost.
Could you please send me short video and exact command which you run to reproduce the problem?
Thanks
DreckSoft
3rd March 2024, 14:09
Does that help?
https://docplayer.net/48882577-White-paper-blu-ray-disc-read-only-format-ultra-hd-blu-ray-audio-visual-application-format-specifications-for-bd-rom-version-3.html
outgoing
3rd March 2024, 17:34
I'm modified it slightly based on provided .mpls sample:
MPLS2JSON.exe 2024-03-02 (https://drive.google.com/file/d/1j2irpu8JlKtvvckFZ-oNypCt9cFlALpX)
But I could only guess the meaning of those extra bytes.
Please try it and let me know your observation.
In the new patched version, in two UHD with DV that i have tested, the DV works perfectly, it is activated. Now in this patched version it keeps the DV field in the mpls, in the previous version all the relative DV data field were destroyed. I have to say that in the two UHD movies they were different and both had the same values for the DV data, i don't know if in all of them they will be standard data or in some of them they will be different.
Great work, let's see if others can also provide information on their editing with the new version. Big :thanks: for keeping these little gems up to date.
The field marked in red was destroyed in the previous version, with the new version it is now preserved and it seems that it was the core information to activate the DV in the player.
https://ibb.co/pZk5hNj
videofan3d
3rd March 2024, 21:56
Does that help?
https://docplayer.net/48882577-White-paper-blu-ray-disc-read-only-format-ultra-hd-blu-ray-audio-visual-application-format-specifications-for-bd-rom-version-3.html
This one is White Paper describing only general concept.
There exists huge document (several hundreds of pages) with detailed file format and structure description.
Unfortunately, this detailed document is not commonly available, you cannot download it from Bluray-Association (DBA) web-pages.
And this is what I need.
pel9
4th March 2024, 15:54
Does that help?
https://docplayer.net/48882577-White-paper-blu-ray-disc-read-only-format-ultra-hd-blu-ray-audio-visual-application-format-specifications-for-bd-rom-version-3.html
We need the full version (2000+ pages) of this document.
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.