version 1.10, 2001/03/29 23:12:01
|
version 1.11, 2001/04/06 09:03:54
|
Line 955 void L64021Intr(struct cvdv_cards *card)
|
Line 955 void L64021Intr(struct cvdv_cards *card)
|
int i, a, v, as, vs, ap, vp; |
int i, a, v, as, vs, ap, vp; |
u8 intr[5]; |
u8 intr[5]; |
u8 layer; |
u8 layer; |
u8 reg; |
|
long ISRTime, DeltaSyncTime, Offset; |
long ISRTime, DeltaSyncTime, Offset; |
|
|
int used = 0; |
int used = 0; |
Line 975 void L64021Intr(struct cvdv_cards *card)
|
Line 974 void L64021Intr(struct cvdv_cards *card)
|
card->fields++; |
card->fields++; |
|
|
if (card->videoffwd){ |
if (card->videoffwd){ |
AudioStopDecode(card); |
if (!card->videoffwd_last){ |
card->videosync = 0; |
AudioStopDecode(card); |
card->videodelay = 0; |
card->videosync = 0; |
card->videoskip = 0; |
card->videoskip = card->videoffwd; |
reg = DecoderReadByte(card, 0x0EC); |
card->videoskip = 0; |
if ((reg & 0x07) == 0x00) { |
card->videoffwd_last = 1; |
DecoderWriteByte(card, 0x0EC, |
card->videoskip_last = 0; |
(card->videoffwd& |
} else { |
0x03) |0x04); |
if (card->videoskip_last == -1){ |
} |
card->videoskip = |
} else if ((DecoderReadByte(card, 0x0EC) & 0x07) |
card->videoffwd; |
&& !card->videoskip){ |
} |
|
|
|
if (!card->videoskip) |
|
card->videoskip_last = -1; |
|
else |
|
card->videoffwd_last = |
|
card->videoffwd; |
|
} |
|
} else if( card->videoffwd_last ){ |
|
card->videoffwd_last = 0; |
#ifdef DVB |
#ifdef DVB |
if (card->audiostate.AVSyncState) |
if (card->audiostate.AVSyncState) |
#endif |
#endif |
card->videosync = 1; |
card->videosync = 1; |
DecoderWriteByte(card, 0x0EC, 0x00); |
|
AudioStartDecode(card); |
AudioStartDecode(card); |
} |
} |
|
|
|
|
if (card->videoslow){ |
if (card->videoslow){ |
if (!card->videoslow_last){ |
if (!card->videoslow_last){ |
AudioStopDecode(card); |
AudioStopDecode(card); |
Line 1046 void L64021Intr(struct cvdv_cards *card)
|
Line 1054 void L64021Intr(struct cvdv_cards *card)
|
} else if (card->videoskip > 0) { |
} else if (card->videoskip > 0) { |
if ((DecoderReadByte(card, 0x0EC) & 0x03) |
if ((DecoderReadByte(card, 0x0EC) & 0x03) |
== 0x00) { |
== 0x00) { |
if (DecoderReadWord(card, 0x096) > 5) { |
if (DecoderReadWord(card, 0x096) > 5){ |
// pictures in video ES channel |
// pictures in video ES channel |
card->videoskip--; |
card->videoskip--; |
if(card->videoskip) { |
if(card->videoskip) { |
Line 1074 void L64021Intr(struct cvdv_cards *card)
|
Line 1082 void L64021Intr(struct cvdv_cards *card)
|
vs = card->VideoESSize; |
vs = card->VideoESSize; |
if (vs > 0) vp = (100 * v) / vs; |
if (vs > 0) vp = (100 * v) / vs; |
else vp = 0; |
else vp = 0; |
if (vp > 80) { |
if (vp > 40) { |
printk(KERN_ERR LOGNAME |
printk(KERN_ERR LOGNAME |
": Delayed Video Decoder start\n"); |
": Delayed Video Decoder start\n"); |
card->startingV = 0; |
card->startingV = 0; |
Line 1089 void L64021Intr(struct cvdv_cards *card)
|
Line 1097 void L64021Intr(struct cvdv_cards *card)
|
as = card->AudioESSize; |
as = card->AudioESSize; |
if (as > 0) ap = (100 * a) / as; |
if (as > 0) ap = (100 * a) / as; |
else ap = 0; |
else ap = 0; |
if (ap > 80) { |
if (ap > 40) { |
printk(KERN_ERR LOGNAME |
printk(KERN_ERR LOGNAME |
": Delayed Audio Decoder start\n"); |
": Delayed Audio Decoder start\n"); |
AudioSetPlayMode(card, MAUDIO_PLAY); |
AudioSetPlayMode(card, MAUDIO_PLAY); |
Line 1212 void L64021Intr(struct cvdv_cards *card)
|
Line 1220 void L64021Intr(struct cvdv_cards *card)
|
|
|
if (intr[3] & 0x30) { |
if (intr[3] & 0x30) { |
// Audio/Video ES channel buffer underflow |
// Audio/Video ES channel buffer underflow |
printk(KERN_ERR LOGNAME |
//printk(KERN_ERR LOGNAME |
": Int - ES channel buffer underflow\n"); |
// ": Int - ES channel buffer underflow\n"); |
if (card->closing) { |
if (card->closing) { |
card->closing = 0; |
card->closing = 0; |
CloseCard(card); |
CloseCard(card); |