-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
encoding settings tag #31
Comments
Encoder Settings ExamplesHere's some example encoder settings from NMAAHC files:
(I've reproduced the last set "as is" but I believe the last line ought to be The existing method has the obvious benefit of drawing on standards, plus it is efficient in that you get a lot of info in just a few characters. Another benefit of sticking with this and modifying it slightly is keeping continuity with metadata in existing nmaahc files. But it is pretty complicated. Questions for you:
For reference, here is the "key" from p14 + p15 of BWF Embed Guidelines:
|
I found the FADGI dpx guidelines I believe these are drawing from. Looks like the nmaahc "keys" are not 1:1 with either of these guidelines though. Are they custom? Do we have the list somewhere? Page 36-37 of DPX Embed Guidelines:
|
I think ideally we could create 3 fields:
Each field would have the subfields that correspond to the letters in the FADGI dpx guidelines. This way we're still capturing the same metadata and in the same standardized format, but in mkv tags (which I think can have sub elements?). We would also have reverse compatibility because we could always convert these fields back to the FADGI format if we need:
The first example from my post this morning, in the new format would be:
|
@eddycolloton yes it was a combination of the two FADGI standards (and maybe @EmCNabs found a non-FADGI one for video at some point?) but it was clearly hard to keep consistent and only recently standardized (for NMAAHC) in the work @EmCNabs is doing. But, it is a compromise and, as you noted, complicated. |
@eddycolloton documented here - https://confluence.si.edu/display/NMAAH/Embedded+Metadata%3A+mkv+Video and here - but already outdated and incongruent between the two. Moving fast - hard to keep up! Latest version of mkvnote (https://github.com/NMAAHC/nmaahcmm/blob/mkvnote_expand/mkvnote) @dericed has final (final?) tags in key:value style using almost exclusively official MKV tags... the value for ENCODING_SETTINGS being currently under discussion.
|
OK. That's an idea, tracks with FADGI BWF guidelines.
Some of these, such as "name of vendor or operator" are duplicative of other mkv tags listed in the tag profiles are mkvnote. I want to the ENCODING_SETTINGS to document that equipment/hardware used to capture that. Most of 1 and I think all of 3 are either entered elsewhere or easily accessed from logs. something similar to what you suggested:
very open to suggestions! but definitely want to keep it easy! |
Oh, that's a good point, a lot of this is duplicated information. If the priority is to document the capture equipment, maybe we just want a signal flow text string? New MKV tag could just be "capture signal flow". Looks like you have a syntax started here already, using semi-colons to separate devices. Something like: For example: This is easy enough to split programmatically with only the 1st subfield (capture device) being a required field, and SN and signal type being optional. I'd be curious if there is any standardization in documenting signal flow? Seems doubtful. This of course would be throwing out the fadgi/bwf stuff entirely... |
@eddycolloton ya that is more or less what I'm thinking. The FADGI stuff was (I think) a compromise for trying to fit all this information into the file header, either wav or dpx, with byte restrictions and not breaking the fil. We have no such problem with mkv, which is kinda designed for exactly what we are trying to do. I like your example. Maybe modify as such: This would (hopefully) be something akin to a profile that could be copied/pasted for batches of tapes. the OS and vrecrod versions may change a bit (maybe unnecessary?) but everything else would be largely static per format. |
Yeah I think this works. Do we want to keep the field name "Encoder Settings" or change it to "transfer signal flow" or something? Would it be convenient to have some kind of spreadsheet macros form or google form or something to format this string? |
Just summarizing our meeting from today... leaving the field name the same: encoder settings Encoder Settings format would be: We can either make all subfields required, and have the code expect 3 subfields per field, and expect all named fields above, or make it more flexible. Now that we have outlined this, I've changed my mind from what I said in the meeting. I do not think we should make the subfields optional. I'm more in favor of starting with the check being strict, expecting all exact field names and requiring all subfields, and then we can make it more flexible if necessary. |
As of this commit: 4919c71 The ffprobe_check checks for the following fields in ENCODER_SETTINGS: Source VTR, Frame sync, Capture Device, Computer (separated by ;) It then checks for an expected number of subfields = {'Source VTR': 4, 'Frame sync': 3, 'Capture Device': 3, 'Computer': 5} Lastly it checks to see if each field has a serial number matching any of the following formats (not case sensitive): ["SN ", "SN-", "SN##"] @BleakleyMcD Give it a try when you can, and let me know when you would like to merge into the main branch. If the JPC_AV files won't have anything in ENCODER SETTINGS, the script will just report "No 'encoder settings' in ffprobe output" |
@eddycolloton after hearing from Morgan he suggests splitting the TBC field into two: TBC/Framesync and ADC.
if we use the 575 as a TBC/framesync and a ADC we can put 575 for both. But if we use an internal TBC/framesync and a 575 to convert then we can put “internal” for the TBC/framesync and 575 for the ADC. That adds a lot more potential variability to the number of subfields, which makes the idea of choosing specific profiles for this tag that the script can populate and/or check against appealing... |
Dub Transcoder for using 295. |
After further thought and discussion, lets separate TBC and Framesync The Framesync and the ADC will pretty much always be the same when using the 575, which is our go-to ADC. But for some formats we may also use the 295 in the signal chain, in which case there would be yet another category like "transcoder" or "color processor". Anyway we can ignore the 295 option for now. |
Sounds good! I will add these fields to the checks
Sure we can do this. We'll need to consider where to store the different signal flow values we're testing against. Right now the config.yaml stores expected values that the video file is checked against. That file is editable, but we haven't yet automated changes to it. There's plenty of good ways to do this of course, just a matter of choosing what is intuitive for us. We're already using yaml so I'd like to store the fields in that format, plus it can prevent against missing a comma or semicolon. Some options:
|
I know you said “ignore the 295 option for now,” but I thought I ought to
chime in and say it’s a 275.
…On Wed, May 15, 2024 at 10:27 AM Bleakley McDowell ***@***.***> wrote:
@eddycolloton <https://github.com/eddycolloton>
After further thought and discussion, lets separate TBC and Framesync
*Source VTR:* model name, serial number, video signal type (Composite,
SDI, etc.), audio connector type (XLR, RCA, etc.) ;
*TBC:* model name(or could be internal, referring back to the VTR),
serial number, video signal type (Composite, SDI, etc.)
*Framesync:* model name(or could be internal, referring back to the VTR),
serial number, video signal type (Composite, SDI, etc.)
*ADC:* model name, serial number, video signal type (Composite, SDI,
etc.) note if audio is embedded ;
*Capture Device:* model name, serial number, data connection type
(Thunderbolt/PCIe/SATA/etc) ;
*Computer:* model name, serial number, computer os version, capture
software (including version), encoding software (ffmpeg version not
required)
The Framesync and the ADC will pretty much always be the same when using
the 575, which is our go-to ADC. But for some formats we may also use the
295 in the signal chain, in which case there would be yet another category
like "transcoder" or "color processor". Anyway we can ignore the 295 option
for now.
—
Reply to this email directly, view it on GitHub
<#31 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/BDGTHWPSVGGWCFPCNYQR6NTZCN5GTAVCNFSM6AAAAABGPV3PTWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMJSHA2TOMJXGE>
.
You are receiving this because you are subscribed to this thread.Message
ID: ***@***.***>
|
I'm moving forward with option 3 from my prev comment. We need to be able to switch file name profiles too, so we will need to be able to automate config.yaml changes eventually. lots of good progress: 02534e6 Adding 2 new args: These will ref python dictionaries stored alongside the command profiles in yaml_profiles.py File name and signal flow "profiles" can then be read into the config.yaml and used for checking input files. Something like: (bowser branch is behind main so it would be "python JPC_AV/process_file.py -sn JPC_AV_SVHS /path/to/JPC_AV_05000" for now) File name check needed to be rewritten to account for varying number of file name "fields". Still tinkering with it. Here's the approved values for a JPC_SVHS signal flow and both file name profiles. JPC_AV_SVHS = { bowser_filename = { JPCAV_filename = { |
Awesome. soon-to-be FADGI subgroup on video "coding history" documentation in mkv tags? I think so. |
Clarifying for my own brain & workflow documentation, the Audio Signal Type that will be documented for each piece of equipment is the Audio Out signal form, correct? |
Yes, I believe that is correct. Same as video signal type? Right @BleakleyMcD ? |
@EmCNabs @eddycolloton yes! correct! right now we have it as the connector type. (XLR, RCA, etc.) but should switch it to the signal type PCM... or something. Will query the community for ideas! |
Update:
There isn't really a scenario where our TBC and framesync would be separate. You can buy a separate framesync for $1,000s but I don't know any setup that does that, certainly not ours. Also, "analog" seems more inline with describing the signal flow than "XLR". Only other possible thing to add would be "balanced" or "unbalanced"
TBD on that but will decide soon! In the meantime, can you make the updates in the script and any respective documentation @eddycolloton @EmCNabs @DSohl ? Getting close to closing this immense comment thread! |
You are able to toggle expected signal flow using the -sn/--signalflow. Current JPC_AV_SVHS values are:
Are you saying the new ones should be:
Also, should I create a signal flow "profile" for the Sony BVH3100? With a Sony BVH3100 signal flow profile you can switch expected encoder setting values like this:
If so what should it be called? |
Code for this also needs to be updated to look for the Tag ENCODER_SETTINGS instead of ENCODING_SETTINGS which is what it currently checks for. Or is it setup to look for both fields?
|
Thanks Emily! I've updated the mediatrace fields in the config.yaml to say ENCODER_SETTINGS instead of ENCODING_SETTINGS |
Yes, ENCODER_SETTINGS like that. signal flow name BVH3100 example here in the second table "example for JPC" https://confluence.si.edu/display/JPCAV/Embedded+metadata%3A+video |
Ok, I've updated the Encoder Settings check to look for these additional values, and I've added the BVH3100 profile, which you can activate w/ Currently parses the string from the ffprobe output, because that is where the check was before we started using mediatrace. Shouldn't be too bad to move the check over to mediatrace if you would prefer, but since mediatrace is XML and the check is written for .txt format, I'd like to wait until we've run the new version of the check on a handful of test files first. This way we can be sure we have it working right before I try to port it over to mediatrace XML. As of now, the check confirms that correct number of subfields are present, and that an SN exists for each device. Again this is sort of inherited from an earlier iteration. I presume we want the check to be more strict, lookiing for exact matches per subfield, which we can add soon. Approved values for the 2 signal flows are:
|
I'm trying to make some test file with mkvnote, but I've set it up on a new computer and I'm getting a weird error. @EmCNabs have you encountered this:
But then when I press any key I just get: I end up having to "Control C" and my changes don't get changed. If there's a known fix (probably user error on install/permissions), let me know, otherwise I'll see if I can find a mkvpropedit work around. |
Hi @EmCNabs and @BleakleyMcD , as of this commit: 8cc63cf Encoder Settings check is now in both MediaTrace and ffprobe checks, and looks for precise matches for every device and device subfield (model number, signal type, SN, etc.). Should work with the BVH3100 signal flow that Blake linked to here: https://confluence.si.edu/pages/viewpage.action?spaceKey=JPCAV&title=Embedded+metadata%3A+video If any one subfield doesn't match it will print the "device" (Source VTR, TBC/Framesync, ADC, etc.) and all of the subfields. like this:
|
make a better encoding settings value. see end of discussion in issue #30
@eddycolloton @EmCNabs @dericed @chialinchou1
The text was updated successfully, but these errors were encountered: