--- multiplexer/splicets.c 2001/04/03 21:14:33 1.3 +++ multiplexer/splicets.c 2001/04/09 15:26:03 1.4 @@ -447,7 +447,9 @@ stream_descr *process_something (stream_ f -= 6; } if ((psi_size <= 0) - && (c->opcr.valid)) { + && ((c->opcr.valid) + || ((!s->u.d.has_opcr) + && (c->pcr.valid)))) { adapt_flags1 |= TS_ADAPT_OPCRFLAG; f -= 6; } @@ -530,13 +532,19 @@ stream_descr *process_something (stream_ c->pcr.valid = FALSE; } if (adapt_flags1 & TS_ADAPT_OPCRFLAG) { - *d++ = (c->opcr.base >> 25) | (c->opcr.ba33 << 7); - *d++ = c->opcr.base >> 17; - *d++ = c->opcr.base >> 9; - *d++ = c->opcr.base >> 1; - *d++ = (c->opcr.base << 7) | (c->opcr.ext >> 8) | 0x7E; - *d++ = c->opcr.ext; - c->opcr.valid = FALSE; + clockref *opcr; + if (c->opcr.valid) { + opcr = &c->opcr; + } else { + opcr = &c->pcr; + } + *d++ = (opcr->base >> 25) | (opcr->ba33 << 7); + *d++ = opcr->base >> 17; + *d++ = opcr->base >> 9; + *d++ = opcr->base >> 1; + *d++ = (opcr->base << 7) | (opcr->ext >> 8) | 0x7E; + *d++ = opcr->ext; + opcr->valid = FALSE; } if (adapt_flags1 & TS_ADAPT_SPLICING) { }