Skip to content

Conversation

@ChubbyChipmunk77
Copy link

…ion for public function validate_cc_pair. 3. Added constant for 0x7F.

[IMPROVEMENT]

In raising this pull request, I confirm the following

  • I have read and understood the contributors guide.
  • I have checked that another pull request for this purpose does not exist.
  • I have considered, and confirmed that this submission will be valuable to others.
  • I accept that this submission may not be used, and the pull request closed at the will of the maintainer.
  • I give this submission freely, and claim no ownership to its content.
  • I have mentioned this change in the changelog.

My familiarity with the project is as follows:

  • I have never used CCExtractor.

##Changes Made

  1. Replaced magic number 0x7F with named constant CC_BLANK_SPACE.
  2. Added comprehensive documentation to function validate_cc_pair.
  3. Simplified verify_parity function.

##Tests
✅ All existing tests passed.

…ion for public function validate_cc_pair. 3. Added constant for 0x7F.
@ccextractor-bot
Copy link
Collaborator

CCExtractor CI platform finished running the test files on windows. Below is a summary of the test results, when compared to test for commit ec30a79...:
Report Name Tests Passed
Broken 13/13
CEA-708 14/14
DVB 6/7
DVD 3/3
DVR-MS 2/2
General 25/27
Hardsubx 1/1
Hauppage 3/3
MP4 3/3
NoCC 10/10
Options 80/86
Teletext 21/21
WTV 13/13
XDS 34/34

Your PR breaks these cases:

  • ccextractor --autoprogram --out=srt --latin1 --quant 0 85271be4d2...
  • ccextractor --autoprogram --out=ttxt --latin1 --ucla dab1c1bd65...
  • ccextractor --out=srt --latin1 --autoprogram 29e5ffd34b...
  • ccextractor --out=spupng c83f765c66...
  • ccextractor --startcreditstext "CCextractor Start crdit Testing" c4dd893cb9...
  • ccextractor --startcreditsnotbefore 1 --startcreditstext "CCextractor Start crdit Testing" c4dd893cb9...
  • ccextractor --startcreditsnotafter 2 --startcreditstext "CCextractor Start crdit Testing" c4dd893cb9...
  • ccextractor --startcreditsforatleast 1 --startcreditstext "CCextractor Start crdit Testing" c4dd893cb9...
  • ccextractor --startcreditsforatmost 2 --startcreditstext "CCextractor Start crdit Testing" c4dd893cb9...

It seems that not all tests were passed completely. This is an indication that the output of some files is not as expected (but might be according to you).

Check the result page for more info.

Copy link
Contributor

@cfsmp3 cfsmp3 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for the improvements! The verify_parity simplification and the documentation are helpful.

However, there's a semantic issue with the constant usage. The value 0x7F is used for two different purposes in this code:

  1. As the solid blank character (0x7F = DEL/solid blank in CEA-608) - your constant is correct here
  2. As a parity bit mask (& 0x7F strips bit 7) - this should NOT use CC_SOLID_BLANK

In do_cb_dtvcc, the expression (cc_block[1] & 0x7F) == 0 is masking off the parity bit to check if the 7 data bits are zero. This isn't related to the "solid blank" character - it's just that the mask happens to have the same value.

Please revert the changes in do_cb_dtvcc (lines ~315-316 in your diff) to keep & 0x7F as a literal, or create a separate PARITY_MASK constant. The constant usage in validate_cc_pair is correct.

Also, consider using /// for Rust doc comments instead of //.

@ChubbyChipmunk77
Copy link
Author

Thank you for the improvements! The verify_parity simplification and the documentation are helpful.

However, there's a semantic issue with the constant usage. The value 0x7F is used for two different purposes in this code:

1. **As the solid blank character** (0x7F = DEL/solid blank in CEA-608) - your constant is correct here

2. **As a parity bit mask** (`& 0x7F` strips bit 7) - this should NOT use `CC_SOLID_BLANK`

In do_cb_dtvcc, the expression (cc_block[1] & 0x7F) == 0 is masking off the parity bit to check if the 7 data bits are zero. This isn't related to the "solid blank" character - it's just that the mask happens to have the same value.

Please revert the changes in do_cb_dtvcc (lines ~315-316 in your diff) to keep & 0x7F as a literal, or create a separate PARITY_MASK constant. The constant usage in validate_cc_pair is correct.

Also, consider using /// for Rust doc comments instead of //.

That makes sense. It is definitely confusing to use the blank character constant when performing bit masking. I’ll define a separate PARITY_MASK constant for this usage. Resolving the documentation comments too.

@ccextractor-bot
Copy link
Collaborator

CCExtractor CI platform finished running the test files on linux. Below is a summary of the test results, when compared to test for commit fd15528...:
Report Name Tests Passed
Broken 13/13
CEA-708 14/14
DVB 7/7
DVD 3/3
DVR-MS 2/2
General 27/27
Hardsubx 1/1
Hauppage 3/3
MP4 3/3
NoCC 10/10
Options 86/86
Teletext 21/21
WTV 13/13
XDS 34/34

Congratulations: Merging this PR would fix the following tests:

  • ccextractor --autoprogram --out=ttxt --latin1 --ucla dab1c1bd65..., Last passed: Never
  • ccextractor --out=srt --latin1 --autoprogram 29e5ffd34b..., Last passed: Never
  • ccextractor --startcreditstext "CCextractor Start crdit Testing" c4dd893cb9..., Last passed: Never
  • ccextractor --startcreditsnotbefore 1 --startcreditstext "CCextractor Start crdit Testing" c4dd893cb9..., Last passed: Never
  • ccextractor --startcreditsnotafter 2 --startcreditstext "CCextractor Start crdit Testing" c4dd893cb9..., Last passed: Never
  • ccextractor --startcreditsforatleast 1 --startcreditstext "CCextractor Start crdit Testing" c4dd893cb9..., Last passed: Never
  • ccextractor --startcreditsforatmost 2 --startcreditstext "CCextractor Start crdit Testing" c4dd893cb9..., Last passed: Never

All tests passed completely.

Check the result page for more info.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants