• Home
  • Raw
  • Download

Lines Matching full:p

8 void av7110_ipack_reset(struct ipack *p)  in av7110_ipack_reset()  argument
10 p->found = 0; in av7110_ipack_reset()
11 p->cid = 0; in av7110_ipack_reset()
12 p->plength = 0; in av7110_ipack_reset()
13 p->flag1 = 0; in av7110_ipack_reset()
14 p->flag2 = 0; in av7110_ipack_reset()
15 p->hlength = 0; in av7110_ipack_reset()
16 p->mpeg = 0; in av7110_ipack_reset()
17 p->check = 0; in av7110_ipack_reset()
18 p->which = 0; in av7110_ipack_reset()
19 p->done = 0; in av7110_ipack_reset()
20 p->count = 0; in av7110_ipack_reset()
24 int av7110_ipack_init(struct ipack *p, int size, in av7110_ipack_init() argument
27 if (!(p->buf = vmalloc(size))) { in av7110_ipack_init()
31 p->size = size; in av7110_ipack_init()
32 p->func = func; in av7110_ipack_init()
33 p->repack_subids = 0; in av7110_ipack_init()
34 av7110_ipack_reset(p); in av7110_ipack_init()
39 void av7110_ipack_free(struct ipack *p) in av7110_ipack_free() argument
41 vfree(p->buf); in av7110_ipack_free()
45 static void send_ipack(struct ipack *p) in send_ipack() argument
54 switch (p->mpeg) { in send_ipack()
56 if (p->count < 10) in send_ipack()
58 p->buf[3] = p->cid; in send_ipack()
59 p->buf[4] = (u8)(((p->count - 6) & 0xff00) >> 8); in send_ipack()
60 p->buf[5] = (u8)((p->count - 6) & 0x00ff); in send_ipack()
61 if (p->repack_subids && p->cid == PRIVATE_STREAM1) { in send_ipack()
62 off = 9 + p->buf[8]; in send_ipack()
63 streamid = p->buf[off]; in send_ipack()
66 ac3_off = ((p->buf[off + 2] << 8)| in send_ipack()
67 p->buf[off + 3]); in send_ipack()
68 if (ac3_off < p->count) in send_ipack()
69 f = dvb_filter_get_ac3info(p->buf + off + 3 + ac3_off, in send_ipack()
70 p->count - ac3_off, &ai, 0); in send_ipack()
72 nframes = (p->count - off - 3 - ac3_off) / in send_ipack()
74 p->buf[off + 2] = (ac3_off >> 8) & 0xff; in send_ipack()
75 p->buf[off + 3] = (ac3_off) & 0xff; in send_ipack()
76 p->buf[off + 1] = nframes; in send_ipack()
77 ac3_off += nframes * ai.framesize - p->count; in send_ipack()
81 p->func(p->buf, p->count, p->data); in send_ipack()
83 p->buf[6] = 0x80; in send_ipack()
84 p->buf[7] = 0x00; in send_ipack()
85 p->buf[8] = 0x00; in send_ipack()
86 p->count = 9; in send_ipack()
87 if (p->repack_subids && p->cid == PRIVATE_STREAM1 in send_ipack()
89 p->count += 4; in send_ipack()
90 p->buf[9] = streamid; in send_ipack()
91 p->buf[10] = (ac3_off >> 8) & 0xff; in send_ipack()
92 p->buf[11] = (ac3_off) & 0xff; in send_ipack()
93 p->buf[12] = 0; in send_ipack()
98 if (p->count < 8) in send_ipack()
100 p->buf[3] = p->cid; in send_ipack()
101 p->buf[4] = (u8)(((p->count - 6) & 0xff00) >> 8); in send_ipack()
102 p->buf[5] = (u8)((p->count - 6) & 0x00ff); in send_ipack()
103 p->func(p->buf, p->count, p->data); in send_ipack()
105 p->buf[6] = 0x0f; in send_ipack()
106 p->count = 7; in send_ipack()
112 void av7110_ipack_flush(struct ipack *p) in av7110_ipack_flush() argument
114 if (p->plength != MMAX_PLENGTH - 6 || p->found <= 6) in av7110_ipack_flush()
116 p->plength = p->found - 6; in av7110_ipack_flush()
117 p->found = 0; in av7110_ipack_flush()
118 send_ipack(p); in av7110_ipack_flush()
119 av7110_ipack_reset(p); in av7110_ipack_flush()
123 static void write_ipack(struct ipack *p, const u8 *data, int count) in write_ipack() argument
127 if (p->count < 6) { in write_ipack()
128 memcpy(p->buf, headr, 3); in write_ipack()
129 p->count = 6; in write_ipack()
132 if (p->count + count < p->size){ in write_ipack()
133 memcpy(p->buf+p->count, data, count); in write_ipack()
134 p->count += count; in write_ipack()
136 int rest = p->size - p->count; in write_ipack()
137 memcpy(p->buf+p->count, data, rest); in write_ipack()
138 p->count += rest; in write_ipack()
139 send_ipack(p); in write_ipack()
141 write_ipack(p, data + rest, count - rest); in write_ipack()
146 int av7110_ipack_instant_repack (const u8 *buf, int count, struct ipack *p) in av7110_ipack_instant_repack() argument
151 while (c < count && (p->mpeg == 0 || in av7110_ipack_instant_repack()
152 (p->mpeg == 1 && p->found < 7) || in av7110_ipack_instant_repack()
153 (p->mpeg == 2 && p->found < 9)) in av7110_ipack_instant_repack()
154 && (p->found < 5 || !p->done)) { in av7110_ipack_instant_repack()
155 switch (p->found) { in av7110_ipack_instant_repack()
159 p->found++; in av7110_ipack_instant_repack()
161 p->found = 0; in av7110_ipack_instant_repack()
166 p->found++; in av7110_ipack_instant_repack()
168 p->found = 2; in av7110_ipack_instant_repack()
170 p->found = 0; in av7110_ipack_instant_repack()
174 p->cid = 0; in av7110_ipack_instant_repack()
184 p->done = 1; in av7110_ipack_instant_repack()
189 p->found++; in av7110_ipack_instant_repack()
190 p->cid = buf[c]; in av7110_ipack_instant_repack()
194 p->found = 0; in av7110_ipack_instant_repack()
201 p->plen[0] = buf[c]; in av7110_ipack_instant_repack()
203 p->plen[1] = buf[c]; in av7110_ipack_instant_repack()
205 p->found += 2; in av7110_ipack_instant_repack()
206 p->plength = (p->plen[0] << 8) | p->plen[1]; in av7110_ipack_instant_repack()
208 p->plen[0] = buf[c]; in av7110_ipack_instant_repack()
209 p->found++; in av7110_ipack_instant_repack()
214 p->plen[1] = buf[c]; in av7110_ipack_instant_repack()
216 p->found++; in av7110_ipack_instant_repack()
217 p->plength = (p->plen[0] << 8) | p->plen[1]; in av7110_ipack_instant_repack()
220 if (!p->done) { in av7110_ipack_instant_repack()
221 p->flag1 = buf[c]; in av7110_ipack_instant_repack()
223 p->found++; in av7110_ipack_instant_repack()
224 if ((p->flag1 & 0xc0) == 0x80) in av7110_ipack_instant_repack()
225 p->mpeg = 2; in av7110_ipack_instant_repack()
227 p->hlength = 0; in av7110_ipack_instant_repack()
228 p->which = 0; in av7110_ipack_instant_repack()
229 p->mpeg = 1; in av7110_ipack_instant_repack()
230 p->flag2 = 0; in av7110_ipack_instant_repack()
236 if (!p->done && p->mpeg == 2) { in av7110_ipack_instant_repack()
237 p->flag2 = buf[c]; in av7110_ipack_instant_repack()
239 p->found++; in av7110_ipack_instant_repack()
244 if (!p->done && p->mpeg == 2) { in av7110_ipack_instant_repack()
245 p->hlength = buf[c]; in av7110_ipack_instant_repack()
247 p->found++; in av7110_ipack_instant_repack()
256 if (!p->plength) in av7110_ipack_instant_repack()
257 p->plength = MMAX_PLENGTH - 6; in av7110_ipack_instant_repack()
259 if (p->done || ((p->mpeg == 2 && p->found >= 9) || in av7110_ipack_instant_repack()
260 (p->mpeg == 1 && p->found >= 7))) { in av7110_ipack_instant_repack()
261 switch (p->cid) { in av7110_ipack_instant_repack()
265 if (p->mpeg == 2 && p->found == 9) { in av7110_ipack_instant_repack()
266 write_ipack(p, &p->flag1, 1); in av7110_ipack_instant_repack()
267 write_ipack(p, &p->flag2, 1); in av7110_ipack_instant_repack()
268 write_ipack(p, &p->hlength, 1); in av7110_ipack_instant_repack()
271 if (p->mpeg == 1 && p->found == 7) in av7110_ipack_instant_repack()
272 write_ipack(p, &p->flag1, 1); in av7110_ipack_instant_repack()
274 if (p->mpeg == 2 && (p->flag2 & PTS_ONLY) && in av7110_ipack_instant_repack()
275 p->found < 14) { in av7110_ipack_instant_repack()
276 while (c < count && p->found < 14) { in av7110_ipack_instant_repack()
277 p->pts[p->found - 9] = buf[c]; in av7110_ipack_instant_repack()
278 write_ipack(p, buf + c, 1); in av7110_ipack_instant_repack()
280 p->found++; in av7110_ipack_instant_repack()
286 if (p->mpeg == 1 && p->which < 2000) { in av7110_ipack_instant_repack()
288 if (p->found == 7) { in av7110_ipack_instant_repack()
289 p->check = p->flag1; in av7110_ipack_instant_repack()
290 p->hlength = 1; in av7110_ipack_instant_repack()
293 while (!p->which && c < count && in av7110_ipack_instant_repack()
294 p->check == 0xff){ in av7110_ipack_instant_repack()
295 p->check = buf[c]; in av7110_ipack_instant_repack()
296 write_ipack(p, buf + c, 1); in av7110_ipack_instant_repack()
298 p->found++; in av7110_ipack_instant_repack()
299 p->hlength++; in av7110_ipack_instant_repack()
305 if ((p->check & 0xc0) == 0x40 && !p->which) { in av7110_ipack_instant_repack()
306 p->check = buf[c]; in av7110_ipack_instant_repack()
307 write_ipack(p, buf + c, 1); in av7110_ipack_instant_repack()
309 p->found++; in av7110_ipack_instant_repack()
310 p->hlength++; in av7110_ipack_instant_repack()
312 p->which = 1; in av7110_ipack_instant_repack()
315 p->check = buf[c]; in av7110_ipack_instant_repack()
316 write_ipack(p, buf + c, 1); in av7110_ipack_instant_repack()
318 p->found++; in av7110_ipack_instant_repack()
319 p->hlength++; in av7110_ipack_instant_repack()
320 p->which = 2; in av7110_ipack_instant_repack()
325 if (p->which == 1) { in av7110_ipack_instant_repack()
326 p->check = buf[c]; in av7110_ipack_instant_repack()
327 write_ipack(p, buf + c, 1); in av7110_ipack_instant_repack()
329 p->found++; in av7110_ipack_instant_repack()
330 p->hlength++; in av7110_ipack_instant_repack()
331 p->which = 2; in av7110_ipack_instant_repack()
336 if ((p->check & 0x30) && p->check != 0xff) { in av7110_ipack_instant_repack()
337 p->flag2 = (p->check & 0xf0) << 2; in av7110_ipack_instant_repack()
338 p->pts[0] = p->check; in av7110_ipack_instant_repack()
339 p->which = 3; in av7110_ipack_instant_repack()
344 if (p->which > 2){ in av7110_ipack_instant_repack()
345 if ((p->flag2 & PTS_DTS_FLAGS) == PTS_ONLY) { in av7110_ipack_instant_repack()
346 while (c < count && p->which < 7) { in av7110_ipack_instant_repack()
347 p->pts[p->which - 2] = buf[c]; in av7110_ipack_instant_repack()
348 write_ipack(p, buf + c, 1); in av7110_ipack_instant_repack()
350 p->found++; in av7110_ipack_instant_repack()
351 p->which++; in av7110_ipack_instant_repack()
352 p->hlength++; in av7110_ipack_instant_repack()
356 } else if ((p->flag2 & PTS_DTS_FLAGS) == PTS_DTS) { in av7110_ipack_instant_repack()
357 while (c < count && p->which < 12) { in av7110_ipack_instant_repack()
358 if (p->which < 7) in av7110_ipack_instant_repack()
359 p->pts[p->which - 2] = buf[c]; in av7110_ipack_instant_repack()
360 write_ipack(p, buf + c, 1); in av7110_ipack_instant_repack()
362 p->found++; in av7110_ipack_instant_repack()
363 p->which++; in av7110_ipack_instant_repack()
364 p->hlength++; in av7110_ipack_instant_repack()
369 p->which = 2000; in av7110_ipack_instant_repack()
374 while (c < count && p->found < p->plength + 6) { in av7110_ipack_instant_repack()
376 if (l + p->found > p->plength + 6) in av7110_ipack_instant_repack()
377 l = p->plength + 6 - p->found; in av7110_ipack_instant_repack()
378 write_ipack(p, buf + c, l); in av7110_ipack_instant_repack()
379 p->found += l; in av7110_ipack_instant_repack()
386 if (p->done) { in av7110_ipack_instant_repack()
387 if (p->found + count - c < p->plength + 6) { in av7110_ipack_instant_repack()
388 p->found += count - c; in av7110_ipack_instant_repack()
391 c += p->plength + 6 - p->found; in av7110_ipack_instant_repack()
392 p->found = p->plength + 6; in av7110_ipack_instant_repack()
396 if (p->plength && p->found == p->plength + 6) { in av7110_ipack_instant_repack()
397 send_ipack(p); in av7110_ipack_instant_repack()
398 av7110_ipack_reset(p); in av7110_ipack_instant_repack()
400 av7110_ipack_instant_repack(buf + c, count - c, p); in av7110_ipack_instant_repack()