Lines Matching refs:pPriv

188 z4l_ovly_unmap(Z4lPortPrivRec * pPriv)
192 nbfrs = pPriv->nbfrs;
194 if (pPriv->bfrs[i].start != NULL) {
195 munmap(pPriv->bfrs[i].start, pPriv->bfrs[i].length);
196 pPriv->bfrs[i].start = NULL;
199 pPriv->nbfrs = -1;
200 pPriv->bufsz = -1;
201 pPriv->last = -1;
205 z4l_ovly_map(Z4lPortPrivRec * pPriv, int dir)
213 if (pPriv->run > 0) {
217 fd = pPriv->fd;
224 pPriv->nbfrs = req.count;
225 if (pPriv->nbfrs <= 0) {
229 memset(&pPriv->bfrs, 0, sizeof(pPriv->bfrs));
231 for (i = 0; i < pPriv->nbfrs; ++i) {
238 pPriv->bfrs[i].offset = offset;
239 pPriv->bfrs[i].length = bfr.length;
241 if (pPriv->bufsz < bsz)
242 pPriv->bufsz = bsz;
245 for (i = 0; i < pPriv->nbfrs; ++i) {
246 pPriv->bfrs[i].start = mmap(NULL, bfr.length, PROT_READ | PROT_WRITE,
247 MAP_SHARED, fd, pPriv->bfrs[i].offset);
248 if (pPriv->bfrs[i].start == MAP_FAILED)
252 for (i = 0; i < pPriv->nbfrs; ++i) {
253 DBLOG(3, "bfr %d ofs %#lx adr %p sz %lu\n", i, pPriv->bfrs[i].offset,
254 pPriv->bfrs[i].start, (unsigned long) pPriv->bfrs[i].length);
255 memset(pPriv->bfrs[i].start, 0x80, pPriv->bfrs[i].length);
258 pPriv->last = 0;
259 while (pPriv->last < pPriv->nbfrs - 1) {
260 bfr.index = pPriv->last++;
268 z4l_ovly_unmap(pPriv);
272 z4l_ovly_dqbuf(Z4lPortPrivRec * pPriv)
276 int fd = pPriv->fd;
283 FD_SET(pPriv->fd, &dqset);
292 DBLOG(3, "dqbuf %d,%d,%d,%d\n", stat, bfr.index, pPriv->last, errno);
298 z4l_open_device(Z4lPortPrivRec * pPriv)
302 if (pPriv->fd < 0) {
303 pPriv->fd = open(&pPriv->dev_path[0], O_RDWR, 0);
304 DBLOG(1, "open(%s)=%d\n", &pPriv->dev_path[0], pPriv->fd);
307 if (IoCtl(pPriv->fd, FIONBIO, &enable, 1) != 0) {
309 close(pPriv->fd);
310 pPriv->fd = -1;
314 return pPriv->fd;
318 z4l_close_device(Z4lPortPrivRec * pPriv)
322 if (pPriv->fd >= 0) {
323 ret = close(pPriv->fd);
324 pPriv->fd = -1;
327 if (pPriv->run > 0) {
328 z4l_ovly_unmap(pPriv);
329 pPriv->run = -1;
336 z4l_ovly_reset(Z4lPortPrivRec * pPriv)
340 if (pPriv->run > 0) {
341 z4l_close_device(pPriv);
342 ret = z4l_open_device(pPriv);
373 z4l_ovly_pixfmt(Z4lPortPrivRec * pPriv, unsigned int pixfmt)
377 DBLOG(1, "pixfmt %4.4s %4.4s\n", (char *) &pPriv->pixfmt, (char *) &pixfmt);
379 IoCtl(pPriv->fd, VIDIOC_G_FBUF, &fbuf, 1);
382 IoCtl(pPriv->fd, VIDIOC_S_FBUF, &fbuf, 1);
383 pPriv->pixfmt = pixfmt;
387 z4l_ovly_bfr(Z4lPortPrivRec * pPriv, int width, int height)
394 IoCtl(pPriv->fd, VIDIOC_G_FMT, &fmt, 1);
396 fmt.fmt.win.w.width = pPriv->width = width;
397 fmt.fmt.win.w.height = pPriv->height = height;
398 IoCtl(pPriv->fd, VIDIOC_S_FMT, &fmt, 1);
402 z4l_ovly_rect(Z4lPortPrivRec * pPriv,
409 pPriv->src_x = src_x;
410 pPriv->src_y = src_y;
411 pPriv->src_w = src_w;
412 pPriv->src_h = src_h;
413 pPriv->drw_x = drw_x;
414 pPriv->drw_y = drw_y;
415 pPriv->drw_w = drw_w;
416 pPriv->drw_h = drw_h;
419 if ((w = pPriv->drw_w) <= 0)
422 dx = x * pPriv->src_w / w;
423 src_x = pPriv->src_x + dx;
424 src_w = pPriv->src_w - dx;
425 drw_w = pPriv->drw_w - x;
430 if ((h = pPriv->drw_h) <= 0)
433 dy = y * pPriv->src_h / h;
434 src_y = pPriv->src_y + dy;
435 src_h = pPriv->src_h - dy;
436 drw_h = pPriv->drw_h - y;
442 IoCtl(pPriv->fd, VIDIOC_G_FMT, &fmt, 1);
443 if (pPriv->src_is_set != 0) {
446 pPriv->src_is_set = 0;
448 if (pPriv->src_is_set == 0) {
449 pPriv->src_is_set = 1;
454 IoCtl(pPriv->fd, VIDIOC_S_FMT, &fmt, 1);
459 IoCtl(pPriv->fd, VIDIOC_G_FMT, &fmt, 1);
460 if (pPriv->drw_is_set != 0) {
463 pPriv->drw_is_set = 0;
465 if (pPriv->drw_is_set == 0) {
466 pPriv->drw_is_set = 1;
471 IoCtl(pPriv->fd, VIDIOC_S_FMT, &fmt, 1);
513 z4l_ovly_set_colorkey(Z4lPortPrivRec * pPriv, int key)
519 if (IoCtl(pPriv->fd, VIDIOC_G_FMT, &fmt, 1) < 0)
522 if (IoCtl(pPriv->fd, VIDIOC_S_FMT, &fmt, 1) < 0)
524 pPriv->colorkey = key;
530 z4l_ovly_get_colorkey(Z4lPortPrivRec * pPriv, int *key)
536 if (IoCtl(pPriv->fd, VIDIOC_G_FMT, &fmt, 1) < 0)
544 z4l_ovly_set_keymode(Z4lPortPrivRec * pPriv, int enable)
549 if (IoCtl(pPriv->fd, VIDIOC_G_FBUF, &fbuf, 1) < 0)
558 if (IoCtl(pPriv->fd, VIDIOC_S_FBUF, &fbuf, 1) < 0)
560 pPriv->keymode = enable;
566 z4l_ovly_get_keymode(Z4lPortPrivRec * pPriv, int *enable)
571 if (IoCtl(pPriv->fd, VIDIOC_G_FBUF, &fbuf, 1) < 0)
579 z4l_ovly_set_encoding(Z4lPortPrivRec * pPriv, int id)
590 adpt = pPriv->adpt;
605 if (IoCtl(pPriv->fd, VIDIOC_S_INPUT, &inp, 1) < 0)
609 if (IoCtl(pPriv->fd, VIDIOC_S_STD, &std, 1) < 0)
614 if (IoCtl(pPriv->fd, VIDIOC_G_FMT, &fmt, 1) < 0)
618 if (IoCtl(pPriv->fd, VIDIOC_S_FMT, &fmt, 1) < 0)
622 if (IoCtl(pPriv->fd, VIDIOC_G_FBUF, &fbuf, 1) < 0)
627 if (IoCtl(pPriv->fd, VIDIOC_S_FBUF, &fbuf, 1) < 0)
629 pPriv->pixfmt = sp->fmt;
630 pPriv->enc = enc;
631 pPriv->src_is_set = pPriv->drw_is_set = 0;
637 z4l_ovly_get_encoding(Z4lPortPrivRec * pPriv, int *id)
639 XF86VideoEncodingPtr enc = pPriv->enc;
646 z4l_ovly_stop(Z4lPortPrivRec * pPriv)
650 if (pPriv->run < 0)
653 fd = pPriv->fd;
654 if (pPriv->dir > 0) {
659 if (pPriv->dir <= 0) {
664 if (pPriv->dir != 0)
665 z4l_ovly_unmap(pPriv);
667 pPriv->run = -1;
668 z4l_close_device(pPriv);
672 z4l_ovly_start(Z4lPortPrivRec * pPriv, int dir)
676 if (pPriv->run >= 0)
679 if ((pPriv->dir = dir) != 0)
680 z4l_ovly_map(pPriv, dir);
684 if (IoCtl(pPriv->fd, VIDIOC_OVERLAY, &enable, 1) != 0) {
685 z4l_ovly_stop(pPriv);
689 pPriv->run = 1;
724 z4l_setup_colorkey(Z4lPortPrivRec * pPriv, ScreenPtr pScrn, RegionPtr clipBoxes)
726 if (pPriv->run > 0 && pPriv->dir <= 0 && pPriv->keymode != 0 &&
727 z4l_region_equal(&pPriv->clips, clipBoxes) == 0) {
728 xf86XVFillKeyHelper(pScrn, pPriv->colorkey, clipBoxes);
729 REGION_COPY(pScrn, &pPriv->clips, clipBoxes);
736 Z4lPortPrivRec *pPriv = (Z4lPortPrivRec *) data;
741 z4l_ovly_stop(pPriv);
743 pPriv->src_is_set = pPriv->drw_is_set = 0;
745 REGION_EMPTY(pScrni->pScreen, &pPriv->clips);
775 Z4lPortPrivRec *pPriv = (Z4lPortPrivRec *) data;
777 if (pPriv->run > 0 && pPriv->dir >= 0)
779 if (pPriv->fd < 0) {
780 z4l_open_device(pPriv);
781 if (pPriv->fd < 0)
785 fd = pPriv->fd;
786 if (pPriv->run < 0) {
790 pPriv->pixfmt = pPriv->height = -1;
791 pPriv->src_is_set = pPriv->drw_is_set = 0;
795 if (pixfmt != pPriv->pixfmt) {
796 z4l_ovly_reset(pPriv);
797 z4l_ovly_pixfmt(pPriv, pixfmt);
799 if (pPriv->width != width || pPriv->height != height) {
800 z4l_ovly_reset(pPriv);
801 z4l_ovly_bfr(pPriv, width, height);
804 if (pPriv->src_is_set == 0 || pPriv->drw_is_set == 0 ||
805 pPriv->src_x != src_x || pPriv->src_y != src_y ||
806 pPriv->src_w != src_w || pPriv->src_h != src_h ||
807 pPriv->drw_x != drw_x || pPriv->drw_y != drw_y ||
808 pPriv->drw_w != drw_w || pPriv->drw_h != drw_h)
809 z4l_ovly_rect(pPriv, src_x, src_y, src_w, src_h, drw_x, drw_y, drw_w,
812 if (pPriv->run < 0) {
813 z4l_ovly_start(pPriv, -1);
814 if (pPriv->run < 0)
818 if (pPriv->last < 0 && (pPriv->last = z4l_ovly_dqbuf(pPriv)) < 0)
824 dst = (unsigned char *) pPriv->bfrs[pPriv->last].start;
839 bfr.index = pPriv->last;
846 pPriv->last = z4l_ovly_dqbuf(pPriv);
847 z4l_setup_colorkey(pPriv, pScrni->pScreen, clipBoxes);
903 Z4lPortPrivRec *pPriv = (Z4lPortPrivRec *) data;
908 if (z4l_open_device(pPriv) >= 0) {
909 if (pPriv->run < 0) {
911 z4l_ovly_get_encoding(pPriv, &id);
912 z4l_ovly_set_encoding(pPriv, id);
915 pPriv->src_x, pPriv->src_y, pPriv->src_w, pPriv->src_h,
916 pPriv->drw_x, pPriv->drw_y, pPriv->drw_w, pPriv->drw_h);
917 if (pPriv->src_is_set == 0 || pPriv->drw_is_set == 0 ||
918 pPriv->src_w != src_w || pPriv->src_h != src_h ||
919 pPriv->drw_x != drw_x || pPriv->drw_y != drw_y ||
920 pPriv->drw_w != drw_w || pPriv->drw_h != drw_h)
921 z4l_ovly_rect(pPriv, src_x, src_y, src_w, src_h, drw_x, drw_y,
923 if (pPriv->run < 0)
924 z4l_ovly_start(pPriv, 0);
926 z4l_setup_colorkey(pPriv, pScrni->pScreen, clipBoxes);
1123 Z4lPortPrivRec *pPriv;
1133 n = sizeof(*adpt) + sizeof(*pPriv) + 1 * sizeof(*adpt->pPortPrivates);
1134 n += (nattrs - 1) * sizeof(pPriv->attrIds[0]);
1144 pPriv = (Z4lPortPrivRec *) & adpt->pPortPrivates[1];
1145 adpt->pPortPrivates[0].ptr = (pointer) pPriv;
1146 pPriv->adpt = adpt;
1156 Z4lPortPrivRec *pPriv = (Z4lPortPrivRec *) data;
1162 int old_fd = pPriv->fd;
1169 if (old_fd < 0 && z4l_open_device(pPriv) < 0)
1172 adpt = pPriv->adpt;
1183 attrId = pPriv->attrIds[i];
1188 z4l_ovly_set_encoding(pPriv, val);
1191 z4l_ovly_set_keymode(pPriv, val);
1192 REGION_EMPTY(pScrni->pScreen, &pPriv->clips);
1193 z4l_setup_colorkey(pPriv, pScrni->pScreen, &pPriv->clips);
1196 z4l_ovly_set_colorkey(pPriv, val);
1202 if (IoCtl(pPriv->fd, VIDIOC_S_CTRL, &ctrl, 1) != 0)
1208 z4l_close_device(pPriv);
1217 Z4lPortPrivRec *pPriv = (Z4lPortPrivRec *) data;
1223 int old_fd = pPriv->fd;
1230 if (old_fd < 0 && z4l_open_device(pPriv) < 0)
1233 adpt = pPriv->adpt;
1244 attrId = pPriv->attrIds[i];
1249 z4l_ovly_get_encoding(pPriv, &val);
1253 z4l_ovly_get_keymode(pPriv, &val);
1257 z4l_ovly_get_colorkey(pPriv, &val);
1262 if (IoCtl(pPriv->fd, VIDIOC_G_CTRL, &ctrl, 1) != 0)
1269 z4l_close_device(pPriv);
1284 Z4lPortPrivRec *pPriv;
1294 pPriv = (Z4lPortPrivRec *) adpt->pPortPrivates[0].ptr;
1295 if (pPriv->run > 0) {
1296 pPriv->drw_is_set = 0;
1297 z4l_ovly_rect(pPriv,
1298 pPriv->src_x, pPriv->src_y, pPriv->src_w,
1299 pPriv->src_h, pPriv->drw_x, pPriv->drw_y,
1300 pPriv->drw_w, pPriv->drw_h);
1317 Z4lPortPrivRec *pPriv;
1572 pPriv = (Z4lPortPrivRec *) adpt->pPortPrivates[0].ptr;
1573 pPriv->fd = fd;
1574 pPriv->run = -1;
1575 pPriv->dir = 0;
1576 pPriv->nbfrs = -1;
1577 pPriv->bufsz = -1;
1578 pPriv->last = -1;
1579 pPriv->pixfmt = opixfmt;
1581 REGION_NULL(pScrni->pScreen, &pPriv->clips);
1583 REGION_INIT(pScrni->pScreen, &pPriv->clips, NullBox, 0);
1585 strncpy(&pPriv->dev_path[0], z4l_dev_paths[dev],
1586 sizeof(pPriv->dev_path));
1587 pPriv->enc = &encs[cenc];
1589 pPriv->attrIds[i] = attrIds[i];
1592 z4l_ovly_set_colorkey(pPriv, DEFAULT_COLORKEY);
1593 z4l_ovly_set_keymode(pPriv, DEFAULT_KEYMODE);
1596 pPriv->fd = -1;