Skip to content
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

fix SMPTE ST12-1 bits interpretation #937

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 41 additions & 18 deletions block_additional_mappings/smpte-st12-1-timecode.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,38 +6,61 @@ If the Block uses Lacing, the timecode value is associated with the first frame

The `Block Additional Mapping` contains a full binary representation of a 64-bit SMPTE timecode
value stored in big-endian format and expressed exactly as defined in Section 8 and 9
of SMPTE 12M [@!SMPTE.ST12-1]. For convenience, here are the bit assignments for a
SMPTE ST 12-1 binary representation as described in [@?RFC5484, section 6.2]:
of SMPTE 12M [@!SMPTE.ST12-1], without the 16-bit synchronization word.
For convenience, here are the time address bit assignments as described in [@?RFC5484, section 6.2]:

| Bit Positions | Label |
|:-------------:|:-----------------------|
| 0--3 | Units of frames |
| 4--7 | First binary group |
| 8--9 | Tens of frames |
| 10 | Drop frame flag |
| 11 | Color frame flag |
| 12--15 | Second binary group |
| 16--19 | Units of seconds |
| 20--23 | Third binary group |
| 24--26 | Tens of seconds |
| 27 | Polarity correction |
| 28--31 | Fourth binary group |
| 32--35 | Units of minutes |
| 36--39 | Fifth binary group |
| 40--42 | Tens of minutes |
| 43 | Binary group flag BGF0 |
| 44--47 | Sixth binary group |
| 48--51 | Units of hours |
| 52--55 | Seventh binary group |
| 56--57 | Tens of hours |
| 58 | Binary group flag BGF1 |
| 59 | Binary group flag BGF2 |
| 60--63 | Eighth binary group |
Table: SMPTE ST 12-1 Bits Assignment{#ST12Bits}
Table: SMPTE ST 12-1 Time Address Bit Positions{#ST12Bits}

For example, a timecode value of "07:32:54;18" can be expressed as a 64-bit SMPTE 12M value as:
For example, a timecode value of "07:12:26;18" can be expressed as a 64-bit SMPTE 12M value as:

```
10000000 01100000 01100000 01010000
00100000 00110000 01110000 00000000
```

Or with the irrelevant bits marked with an "x" which gives 26 usable bits:

```
1000xxxx 01xxxxxx 0110xxxx 010xxxxx
0010xxxx 001xxxxx 0111xxxx 00xxxxxx
```

This is interpreted in hexadecimal:

- 0x8 units of frames
- 0x1 tens of frames
- 0x6 units of seconds
- 0x2 tens of seconds
- 0x2 units of minutes
- 0x1 tens of minutes
- 0x7 units of hours
- 0x0 tens of hours

Given no value is above 9, the BCD coding correspond to the actual values:

- 8 units of frames
- 1 tens of frames
- 6 units of seconds
- 2 tens of seconds
- 2 units of minutes
- 1 tens of minutes
- 7 units of hours
- 0 tens of hours

Or:

- 18 frames
- 26 seconds
- 12 minutes
- 07 hours