Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.freedesktop.org/gstreamer/gst-plugins-rs.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMathieu Duponchelle <mathieu@centricular.com>2020-11-20 23:33:45 +0300
committerMathieu Duponchelle <mathieu@centricular.com>2021-01-19 18:40:00 +0300
commita7180e3995295a7083d16f79b0f0bd45d4fa1cdc (patch)
treeb4c534780d11cf38a151016fdaecb074c96d2868
parenta3dafea688201cc03efad5a5f5cef0915d9c011a (diff)
libcaption: fix bit set on indent preambles
style preambles look like: |P|0|0|1|C|0|ROW| |P|1|N|0|STYLE|U| and column preambles look like: |P|0|0|1|C|0|ROW| |P|1|N|1|CURSR|U| Both preambles go through eia608_row_pramble(), the value they pass as the x parameter is supposed to hold 4 bits, either 0|STYLE or 1|CURSR This value then gets bit-shifted by 1 and or'd in the second byte. The value is also and' with 0x1E to ensure it can't leak into the upper bits. The previous code resulted in x being a 5-bit value, 0x10 (0b10000). This resulted in outputting a style preamble, as 0x10 << 1 & 0x1E is 0b00000. When the indent was 0 (the usual case), this went undetected, but with any other value it resulted in no indent being applied, but the text getting colored or italicized. This patch fixes x to have the correct value of 0x8 | indent.
-rw-r--r--video/closedcaption/src/c/eia608.c2
-rw-r--r--video/closedcaption/tests/tttocea608.rs8
2 files changed, 5 insertions, 5 deletions
diff --git a/video/closedcaption/src/c/eia608.c b/video/closedcaption/src/c/eia608.c
index a3782df5c..9cb63f832 100644
--- a/video/closedcaption/src/c/eia608.c
+++ b/video/closedcaption/src/c/eia608.c
@@ -53,7 +53,7 @@ eia608_row_pramble (int row, int chan, int x, int underline)
uint16_t
eia608_row_column_pramble (int row, int col, int chan, int underline)
{
- return eia608_row_pramble (row, chan, 0x10 | (col / 4), underline);
+ return eia608_row_pramble (row, chan, 0x8 | (col / 4), underline);
}
uint16_t
diff --git a/video/closedcaption/tests/tttocea608.rs b/video/closedcaption/tests/tttocea608.rs
index 24d91e964..e91bd3136 100644
--- a/video/closedcaption/tests/tttocea608.rs
+++ b/video/closedcaption/tests/tttocea608.rs
@@ -73,8 +73,8 @@ fn test_one_timed_buffer_and_eos() {
(733_333_333.into(), 33_333_334.into(), [0x94, 0x20]), /* control doubled */
(766_666_667.into(), 33_333_333.into(), [0x94, 0xae]), /* erase_non_displayed_memory */
(800_000_000.into(), 33_333_333.into(), [0x94, 0xae]), /* control doubled */
- (833_333_333.into(), 33_333_334.into(), [0x94, 0x40]), /* preamble */
- (866_666_667.into(), 33_333_333.into(), [0x94, 0x40]), /* control doubled */
+ (833_333_333.into(), 33_333_334.into(), [0x94, 0xd0]), /* preamble */
+ (866_666_667.into(), 33_333_333.into(), [0x94, 0xd0]), /* control doubled */
(900_000_000.into(), 33_333_333.into(), [0xc8, 0xe5]), /* H e */
(933_333_333.into(), 33_333_334.into(), [0xec, 0xec]), /* l l */
(966_666_667.into(), 33_333_333.into(), [0xef, 0x80]), /* o, nil */
@@ -320,8 +320,8 @@ fn test_one_timed_buffer_and_eos_roll_up2() {
(1_033_333_333.into(), 33_333_334.into(), [0x94, 0x2c]), /* control doubled */
(1_066_666_667.into(), 33_333_333.into(), [0x94, 0x25]), /* roll_up_2 */
(1_100_000_000.into(), 33_333_333.into(), [0x94, 0x25]), /* control doubled */
- (1_133_333_333.into(), 33_333_334.into(), [0x94, 0xe0]), /* preamble */
- (1_166_666_667.into(), 33_333_333.into(), [0x94, 0xe0]), /* control doubled */
+ (1_133_333_333.into(), 33_333_334.into(), [0x94, 0x70]), /* preamble */
+ (1_166_666_667.into(), 33_333_333.into(), [0x94, 0x70]), /* control doubled */
(1_200_000_000.into(), 33_333_333.into(), [0xc8, 0xe5]), /* H e */
(1_233_333_333.into(), 33_333_334.into(), [0xec, 0xec]), /* l l */
(1_266_666_667.into(), 33_333_333.into(), [0xef, 0x80]), /* o, nil */