Ticket #9577: caption-rst-dlc-fix.patch

File caption-rst-dlc-fix.patch, 1.6 KB (added by Clayton Smith <argilo@…>, 9 years ago)
  • mythtv/libs/libmythtv/cc708decoder.cpp

    diff --git a/mythtv/libs/libmythtv/cc708decoder.cpp b/mythtv/libs/libmythtv/cc708decoder.cpp
    index 2b8e865..78a54cb 100644
    a b static void parse_cc_service_stream(CC708Reader* cc, uint service_num) 
    123123    // find last reset or delay cancel in buffer
    124124    for (i = 0; i < blk_size; i++)
    125125    {
    126         if (RST == cc->buf[service_num][i])
    127             rst_loc = dlc_loc = i;
    128         else if (DLC == cc->buf[service_num][i])
    129             dlc_loc = i;
     126        switch (cc->buf[service_num][i]) {
     127            // Skip over parameters, since their bytes may coincide
     128            // with RST or DLC
     129            case CLW:
     130            case DLW:
     131            case DSW:
     132            case HDW:
     133            case TGW:
     134            case DLY:
     135                i += 1;
     136                break;
     137            case SPA:
     138            case SPL:
     139                i += 2;
     140                break;
     141            case SPC:
     142                i += 3;
     143                break;
     144            case SWA:
     145                i += 4;
     146                break;
     147            case DF0:
     148            case DF1:
     149            case DF2:
     150            case DF3:
     151            case DF4:
     152            case DF5:
     153            case DF6:
     154            case DF7:
     155                i += 6;
     156                break;
     157            // Detect RST or DLC bytes
     158            case RST:
     159                rst_loc = dlc_loc = i;
     160                break;
     161            case DLC:
     162                dlc_loc = i;
     163                break;
     164        }
    130165    }
    131166
    132167    // reset, process only data after reset