Skip to content

refactore: Implement marker bit validation with debug output in user data parsing.#2113

Open
AhmedAlian7 wants to merge 1 commit intoCCExtractor:masterfrom
AhmedAlian7:fix/es_userdata-syntax-check
Open

refactore: Implement marker bit validation with debug output in user data parsing.#2113
AhmedAlian7 wants to merge 1 commit intoCCExtractor:masterfrom
AhmedAlian7:fix/es_userdata-syntax-check

Conversation

@AhmedAlian7
Copy link
Contributor

[FEATURE]

In raising this pull request, I confirm the following (please check boxes):

  • 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 (check one):

  • I have never used CCExtractor.
  • I have used CCExtractor just a couple of times.
  • I absolutely love CCExtractor, but have not contributed previously.
  • I am an active contributor to CCExtractor.

SCTE 20 Marker Bit Syntax Check

closes #2112

I have implemented a syntax check for the SCTE 20 marker bit in es_userdata.c. This ensures that the parser verifies the marker bit is '1' as per the standard, and logs a debug warning if it is not.

Changes

src/lib_ccx/es_userdata.c

I replaced the TODO comment with a check that reads the bit and logs a warning if it is 0.

// Before
read_bits(ustream, 1); // TODO: Add syntax check

// After
if(read_bits(ustream, 1) == 0)
{
    dbg_print(CCX_DMT_VERBOSE, "SCTE 20: Marker bit is 0 (should be 1)\n");
}

Verification Results

Automated Verification

  • Compilation: Successfully compiled es_userdata.c with gcc to ensure no syntax errors were introduced.
  • Log Logic: Reviewed the code to ensure dbg_print is used correctly with CCX_DMT_VERBOSE level, which is consistent with other debug prints in the file.

This adds a validation check for the SCTE 20 marker bit in es_userdata.c. If the bit is 0, a debug warning is logged. This prevents potential parsing issues with corrupt streams.
@AhmedAlian7 AhmedAlian7 force-pushed the fix/es_userdata-syntax-check branch from 51de8f2 to 083a606 Compare February 16, 2026 12:12
@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 0626bb5...:
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 81/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 --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...

Congratulations: Merging this PR would fix the following tests:


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.

@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 0626bb5...:
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 85/86
Teletext 21/21
WTV 13/13
XDS 34/34

Your PR breaks these cases:

Congratulations: Merging this PR would fix the following tests:

  • ccextractor --autoprogram --out=srt --latin1 --quant 0 85271be4d2..., Last passed: Never
  • 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

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.

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.

[Enhance] Implement syntax check for marker bits in es_userdata.c

2 participants