Compare commits

..

1 Commits

Author SHA1 Message Date
Alan Coopersmith
a0eaca36a7 Improve man page formatting
More closely follow common style as described on
https://man7.org/linux/man-pages/man7/man-pages.7.html
and fix warnings raised by `mandoc -T lint` and `groff -rCHECKSTYLE=10`

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Part-of: <https://gitlab.freedesktop.org/xorg/driver/xf86-video-v4l/-/merge_requests/7>
2025-07-12 15:16:15 -07:00
18 changed files with 336 additions and 342 deletions

View File

@@ -1,65 +0,0 @@
name: 🐞 Bug report
description: Create a report to help us improve
labels: [bug, needs-triage]
body:
- type: markdown
attributes:
value: |
Please fill out the sections below to help everyone identify and fix the bug. If you have a general idea or question then please use the [discussions](https://github.com/orgs/X11Libre/discussions).
- type: dropdown
id: affected-version
attributes:
label: Affected version
options:
- 0.3.0.1
- Git master branch
- other or don't know
default: 1
validations:
required: true
- type: textarea
id: description
attributes:
label: Describe your issue
placeholder: When I did X then Y happened.
validations:
required: true
- type: textarea
id: steps
attributes:
label: Steps to reproduce
placeholder: |
1. Start ...
2. Do this
3. Do that
validations:
required: true
- type: textarea
id: expected
attributes:
label: What did you expect?
placeholder: I expected this to happen.
- type: textarea
id: environment
attributes:
label: Additional Information
description: |
Additional information you want to provide such as logs, system info, environment, screenshots, etc.
placeholder: |
Add any other context about the bug here.
- type: checkboxes
id: checks
attributes:
label: Extra fields
options:
- label: I have checked the existing [issues](https://github.com/X11Libre/xf86-video-v4l/issues)
required: true
- label: I have read the [Contributing Guidelines](https://github.com/X11Libre/xserver/blob/master/CONTRIBUTING.md)
required: true
- label: I'd like to work on this issue
- type: markdown
attributes:
value: |
Thanks for reporting this issue! We will get back to you as soon as possible.

View File

@@ -1,49 +0,0 @@
name: ✨ Feature request
description: Suggest a feature for this software
labels: [enhancement, needs-triage]
body:
- type: markdown
attributes:
value: |
Please fill out the sections below to properly describe the new software feature you are suggesting. If you have a general idea or question then please use the [discussions](https://github.com/orgs/X11Libre/discussions).
- type: textarea
id: description
attributes:
label: "Describe the feature"
placeholder: A thing in X that allows to do Y.
validations:
required: true
- type: textarea
id: rationale
attributes:
label: "It should be done because"
placeholder: Doing Y is needed for Z.
validations:
required: true
- type: textarea
id: alternative
attributes:
label: "What are the alternatives?"
placeholder: We could do A or B instead.
- type: textarea
id: context
attributes:
label: Additional context
description: Additional information you want to provide such as references to related issues or protocols, the implications on existing use cases, etc.
placeholder: |
Add any other context about the feature request here.
- type: checkboxes
id: checks
attributes:
label: Extra fields
options:
- label: I have checked the existing [issues](https://github.com/X11Libre/xf86-video-v4l/issues)
required: true
- label: I have read the [Contributing Guidelines](https://github.com/X11Libre/xserver/blob/master/CONTRIBUTING.md)
required: true
- label: I'd like to work on this issue
- type: markdown
attributes:
value: |
Thanks for your suggestion! Let's see together if it can be done.

View File

@@ -1,49 +0,0 @@
name: 🔧 Code cleanup
description: Level up the source code
labels: [code-cleanup, needs-triage]
body:
- type: markdown
attributes:
value: |
Please fill out the sections below to properly describe the code cleanup you are suggesting. If you have a general idea or question then please use the [discussions](https://github.com/orgs/X11Libre/discussions).
- type: textarea
id: description
attributes:
label: "Describe the cleanup"
placeholder: C in X needs to be changed into D.
validations:
required: true
- type: textarea
id: rationale
attributes:
label: "It should be done because"
placeholder: Having D is needed for E.
validations:
required: true
- type: textarea
id: alternative
attributes:
label: "What are the alternatives?"
placeholder: We could do A or B instead.
- type: textarea
id: context
attributes:
label: Additional context
description: Additional information you want to provide such as implications on existing code, how to ensure API/ABI stability, which tests are needed or to be run, related issues, etc.
placeholder: |
Add any other context about the cleanup here.
- type: checkboxes
id: checks
attributes:
label: Extra fields
options:
- label: I have checked the existing [issues](https://github.com/X11Libre/xf86-video-v4l/issues)
required: true
- label: I have read the [Contributing Guidelines](https://github.com/X11Libre/xserver/blob/master/CONTRIBUTING.md)
required: true
- label: I'd like to work on this issue
- type: markdown
attributes:
value: |
Thanks for looking at the source code! Let's see together how it can be improved.

View File

@@ -1,38 +0,0 @@
name: 🔖 Documentation update
description: Make your mark for better documentation
labels: [documentation, needs-triage]
body:
- type: markdown
attributes:
value: |
Please fill out the sections below to help others understand our software. If you have a general idea or question then please use the [discussions](https://github.com/orgs/X11Libre/discussions).
- type: textarea
id: description
attributes:
label: Describe the update
placeholder: These things need to be better documented.
validations:
required: true
- type: textarea
id: environment
attributes:
label: Additional Information
description: Additional information you want to provide such as tickets related to changes in the software, affected files, screenshots, etc.
placeholder: |
Add any other context about the update here.
- type: checkboxes
id: checks
attributes:
label: Extra fields
options:
- label: I have checked the existing [issues](https://github.com/X11Libre/xf86-video-v4l/issues)
required: true
- label: I have read the [Contributing Guidelines](https://github.com/X11Libre/xserver/blob/master/CONTRIBUTING.md)
required: true
- label: I'd like to work on this issue
- type: markdown
attributes:
value: |
Thanks for requesting this update! We will get back to you as soon as possible.

View File

@@ -1,43 +0,0 @@
name: ✅ Organizational task
description: Create a task for project organization
labels: [needs-triage, organization]
body:
- type: markdown
attributes:
value: |
Please fill out the sections below to get organizational things done. If you have a general idea or question then please use the [discussions](https://github.com/orgs/X11Libre/discussions).
- type: textarea
id: description
attributes:
label: Describe the task
placeholder: These things need to be done.
validations:
required: true
- type: textarea
id: rationale
attributes:
label: "It should be done because"
placeholder: Doing Y is needed for Z.
- type: textarea
id: environment
attributes:
label: Additional Information
description: Additional information you want to provide such as the context for bigger tasks, the implicatons on existing workflows, related issues, etc.
placeholder: |
Add any other context about the task here.
- type: checkboxes
id: checks
attributes:
label: Extra fields
options:
- label: I have checked the existing [issues](https://github.com/X11Libre/xf86-video-v4l/issues)
required: true
- label: I have read the [Contributing Guidelines](https://github.com/X11Libre/xserver/blob/master/CONTRIBUTING.md)
required: true
- label: I'd like to work on this issue
- type: markdown
attributes:
value: |
Thanks for adding this task! We will get back to you as soon as possible.

View File

@@ -1,8 +0,0 @@
blank_issues_enabled: false
contact_links:
- name: XLibre Community Support
url: https://github.com/orgs/X11Libre/discussions
about: Please ask and answer questions here.
- name: Mailing List
url: https://www.freelists.org/list/xlibre
about: You can join the discussions on our mailing list.

View File

@@ -1,28 +0,0 @@
permissions:
contents: write
on:
push:
pull_request:
jobs:
# This driver is Linux-only
ubuntu:
strategy:
matrix:
xserver-version: [ master, xlibre-xserver-25.1.1, xlibre-xserver-25.0.0.20 ]
runs-on: ubuntu-latest
steps:
- uses: X11Libre/action-build-driver/target/ubuntu@v0.3.7
with:
xserver-version: ${{ matrix.xserver-version }}
release-notes:
name: Release pushed tag
runs-on: ubuntu-latest
if: ${{ startsWith(github.ref, 'refs/tags/xlibre-') }}
needs: ubuntu
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: X11Libre/action-build-driver/release@v0.3.7

1
.gitignore vendored
View File

@@ -7,6 +7,7 @@
aclocal.m4
autom4te.cache/
autoscan.log
ChangeLog
compile
config.guess
config.h

98
.gitlab-ci.yml Normal file
View File

@@ -0,0 +1,98 @@
# vim: set expandtab shiftwidth=2 tabstop=8 textwidth=0 filetype=yaml:
#
# This CI uses the freedesktop.org ci-templates.
# Please see the ci-templates documentation for details:
# https://freedesktop.pages.freedesktop.org/ci-templates/
.templates_sha: &template_sha 25e8e9f020880aa35fffe3d6b259b933f0f9449f # see https://docs.gitlab.com/ee/ci/yaml/#includefile
include:
# Arch container builder template
- project: 'freedesktop/ci-templates'
ref: *template_sha
file: '/templates/arch.yml'
- project: 'freedesktop/ci-templates'
ref: *template_sha
file: '/templates/ci-fairy.yml'
- template: Security/SAST.gitlab-ci.yml
stages:
- prep # prep work like rebuilding the container images if there is a change
- build # for actually building and testing things in a container
- test
- deploy
variables:
FDO_UPSTREAM_REPO: 'xorg/driver/xf86-video-v4l'
# The tag should be updated each time the list of packages is updated.
# Changing a tag forces the associated image to be rebuilt.
# Note: the tag has no meaning, we use a date format purely for readability
FDO_DISTRIBUTION_TAG: '2023-10-01.0'
FDO_DISTRIBUTION_PACKAGES: 'git gcc pkgconf autoconf automake libtool make xorg-util-macros xorgproto xorg-server-devel pixman'
#
# Verify that commit messages are as expected
#
check-commits:
extends:
- .fdo.ci-fairy
stage: prep
script:
- ci-fairy check-commits --junit-xml=results.xml
except:
- master@xorg/driver/xf86-video-v4l
variables:
GIT_DEPTH: 100
artifacts:
reports:
junit: results.xml
#
# Verify that the merge request has the allow-collaboration checkbox ticked
#
check-merge-request:
extends:
- .fdo.ci-fairy
stage: deploy
script:
- ci-fairy check-merge-request --require-allow-collaboration --junit-xml=results.xml
artifacts:
when: on_failure
reports:
junit: results.xml
allow_failure: true
#
# Build a container with the given tag and the packages pre-installed.
# This only happens if the tag changes, otherwise the existing image is
# re-used.
#
container-prep:
extends:
- .fdo.container-build@arch
stage: prep
variables:
GIT_STRATEGY: none
#
# The default build, runs on the image built above.
#
build:
stage: build
extends:
- .fdo.distribution-image@arch
script:
- autoreconf -ivf
- mkdir _builddir
- pushd _builddir > /dev/null
- ../configure --disable-silent-rules
- make
- make check
- make distcheck
- popd > /dev/null

View File

View File

View File

@@ -1 +1,32 @@
# Copyright 2005 Adam Jackson.
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# on the rights to use, copy, modify, merge, publish, distribute, sub
# license, and/or sell copies of the Software, and to permit persons to whom
# the Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice (including the next
# paragraph) shall be included in all copies or substantial portions of the
# Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
# ADAM JACKSON BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
SUBDIRS = src man
MAINTAINERCLEANFILES = ChangeLog INSTALL
.PHONY: ChangeLog INSTALL
INSTALL:
$(INSTALL_CMD)
ChangeLog:
$(CHANGELOG_CMD)
dist-hook: ChangeLog INSTALL

0
NEWS
View File

View File

@@ -1,10 +1,77 @@
# Copyright 2005 Adam Jackson.
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# on the rights to use, copy, modify, merge, publish, distribute, sub
# license, and/or sell copies of the Software, and to permit persons to whom
# the Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice (including the next
# paragraph) shall be included in all copies or substantial portions of the
# Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
# ADAM JACKSON BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
# Process this file with autoconf to produce a configure script
# Initialize Autoconf
AC_PREREQ([2.60])
AC_INIT([xlibre-xf86-video-v4l],
[25.0.1],
[https://github.com/X11Libre/xf86-video-v4l/issues],
[xlibre-xf86-video-v4l])
AC_INIT([xf86-video-v4l],
[0.3.0],
[https://gitlab.freedesktop.org/xorg/driver/xf86-video-v4l/issues],
[xf86-video-v4l])
AC_CONFIG_SRCDIR([Makefile.am])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_AUX_DIR(.)
XLIBRE_INIT_MODULE_AM(v4l)
# Initialize Automake
AM_INIT_AUTOMAKE([foreign dist-xz])
AM_MAINTAINER_MODE
AC_CONFIG_FILES([Makefile src/Makefile man/Makefile])
# Require X.Org macros 1.8 or later for MAN_SUBSTS set by XORG_MANPAGE_SECTIONS
m4_ifndef([XORG_MACROS_VERSION],
[m4_fatal([must install xorg-macros 1.8 or later before running autoconf/autogen])])
XORG_MACROS_VERSION(1.8)
XORG_DEFAULT_OPTIONS
# Initialize libtool
LT_INIT([disable-static])
AH_TOP([#include "xorg-server.h"])
# Define a configure option for an alternate module directory
AC_ARG_WITH(xorg-module-dir,
AS_HELP_STRING([--with-xorg-module-dir=DIR],
[Default xorg module directory [[default=$libdir/xorg/modules]]]),
[moduledir="$withval"],
[moduledir="$libdir/xorg/modules"])
# Store the list of server defined optional extensions in REQUIRED_MODULES
XORG_DRIVER_CHECK_EXT(RANDR, randrproto)
XORG_DRIVER_CHECK_EXT(XV, videoproto)
# Obtain compiler/linker options for the driver dependencies
PKG_CHECK_MODULES(XORG, [xorg-server >= 1.0.99.901 xproto $REQUIRED_MODULES])
# Checks for library functions
# We don't use strlcat or strlcpy, but check to quiet a -Wredundant-decls warning
# from xorg/os.h which will otherwise redefine it.
AC_CHECK_FUNCS([strlcat strlcpy])
AC_SUBST([moduledir])
DRIVER_NAME=v4l
AC_SUBST([DRIVER_NAME])
AC_CONFIG_FILES([
Makefile
src/Makefile
man/Makefile
])
AC_OUTPUT

View File

@@ -1,12 +1,41 @@
# SPDX-License-Identifier: MIT OR X11
#
# Copyright © 2026 Enrico Weigelt, metux IT consult <info@metux.net>
# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice (including the next
# paragraph) shall be included in all copies or substantial portions of the
# Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.
#
drvmandir = @xlibre_driver_man_dir@
drvman_DATA = @xlibre_driver_name@.@xlibre_driver_man_section@
drivermandir = $(DRIVER_MAN_DIR)
CLEANFILES = $(drvman_DATA)
driverman_PRE = @DRIVER_NAME@.man
.man.@xlibre_driver_man_section@:
cp $< $@
driverman_DATA = $(driverman_PRE:man=@DRIVER_MAN_SUFFIX@)
EXTRA_DIST = @DRIVER_NAME@.man
CLEANFILES = $(driverman_DATA)
# String replacements in MAN_SUBSTS now come from xorg-macros.m4 via configure
SUFFIXES = .$(DRIVER_MAN_SUFFIX) .man
.man.$(DRIVER_MAN_SUFFIX):
$(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@

View File

@@ -1,6 +1,6 @@
.\" shorthand for double quote that works everywhere.
.ds q \N'34'
.TH V4L 4 2026-01-30 "X Version 11"
.TH V4L 4 2009-01-09 __vendorversion__
.SH NAME
v4l \- video4linux driver
.SH SYNOPSIS

View File

@@ -1,12 +1,33 @@
# SPDX-License-Identifier: MIT OR X11
# Copyright 2005 Adam Jackson.
#
# Copyright © 2026 Enrico Weigelt, metux IT consult <info@metux.net>
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# on the rights to use, copy, modify, merge, publish, distribute, sub
# license, and/or sell copies of the Software, and to permit persons to whom
# the Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice (including the next
# paragraph) shall be included in all copies or substantial portions of the
# Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
# ADAM JACKSON BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
AM_CFLAGS = $(XLIBRE_SERVER_CFLAGS)
# this is obnoxious:
# -module lets us name the module exactly how we want
# -avoid-version prevents gratuitous .0.0.0 version numbers on the end
# _ladir passes a dummy rpath to libtool so the thing will actually link
# TODO: -nostdlib/-Bstatic/-lgcc platform magic, not installing the .a, etc.
AM_CFLAGS = $(BASE_CFLAGS) $(XORG_CFLAGS)
v4l_drv_la_LTLIBRARIES = v4l_drv.la
v4l_drv_la_LDFLAGS = -module -avoid-version
v4l_drv_ladir = @xlibre_video_drivers_dir@
v4l_drv_la_LDFLAGS = -module -avoid-version
v4l_drv_ladir = @moduledir@/drivers
v4l_drv_la_SOURCES = v4l.c videodev2.h
v4l_drv_la_SOURCES = \
v4l.c \
videodev2.h

109
src/v4l.c
View File

@@ -3,27 +3,42 @@
* based on Michael Schimek's permedia 2 driver.
*
* Copyright (c) 2011 Mauro Carvalho Chehab <mchehab@redhat.com> for:
* - Major rewrite, as driver got ported to V4L2 API
* - Major rewrite, as driver got ported to V4L2 API
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#ifndef _GNU_SOURCE
#define _GNU_SOURCE
#endif
#include <errno.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <unistd.h>
#include <X11/extensions/Xv.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <ctype.h>
#include "xf86.h"
#include "xf86fbman.h"
#include "xf86xv.h"
#include "fourcc.h"
#include <fcntl.h>
#include <errno.h>
#include <string.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include "videodev2.h"
#include "xf86.h"
#include "xf86_OSproc.h"
#include "xf86Pci.h"
#include "xf86PciInfo.h"
#include "xf86fbman.h"
#include "xf86xv.h"
#include <X11/extensions/Xv.h>
#include "regionstr.h"
#include "dgaproc.h"
#include "xf86str.h"
#include "fourcc.h"
#include <asm/ioctl.h> /* _IORW(xxx) #defines are here */
#if 0
# define DEBUG(x) (x)
@@ -52,6 +67,8 @@ _X_EXPORT DriverRec V4L = {
.driverFunc = NULL, /* FIXME: Need to implement for new probing mode */
};
#ifdef XFree86LOADER
static MODULESETUPPROTO(v4lSetup);
static XF86ModuleVersionInfo v4lVersRec =
@@ -70,8 +87,8 @@ static XF86ModuleVersionInfo v4lVersRec =
_X_EXPORT XF86ModuleData v4lModuleData = { &v4lVersRec, v4lSetup, NULL };
static void*
v4lSetup(void *module, void *opts, int *errmaj, int *errmin)
static pointer
v4lSetup(pointer module, pointer opts, int *errmaj, int *errmin)
{
static Bool setupDone = FALSE;
@@ -83,9 +100,16 @@ v4lSetup(void *module, void *opts, int *errmaj, int *errmin)
setupDone = TRUE;
xf86AddDriver (&V4L, module, 0);
return (void*)1;
return (pointer)1;
}
#else
#include <fcntl.h>
#include <sys/ioctl.h>
#endif
#define VIDEO_OFF 0 /* really off */
#define VIDEO_RGB 1 /* rgb overlay (directly to fb) */
#define VIDEO_YUV 2 /* yuv overlay (to offscreen memory + hw scaling) */
@@ -143,7 +167,8 @@ typedef struct _PortPrivRec {
static Atom xvEncoding, xvFreq;
static XF86VideoFormatRec InputVideoFormats[] = {
static XF86VideoFormatRec
InputVideoFormats[] = {
{ 15, TrueColor },
{ 16, TrueColor },
{ 24, TrueColor },
@@ -153,10 +178,10 @@ static XF86VideoFormatRec InputVideoFormats[] = {
#define V4L_ATTR (sizeof(Attributes) / sizeof(XF86AttributeRec))
static const XF86AttributeRec Attributes[] = {
{XvSettable | XvGettable, -1000, 1000, (char*)XV_ENCODING},
{XvSettable | XvGettable, -1000, 1000, XV_ENCODING},
};
static const XF86AttributeRec FreqAttr =
{XvSettable | XvGettable, 0, 16*1000, (char*)XV_FREQ};
{XvSettable | XvGettable, 0, 16*1000, XV_FREQ};
#define MAX_V4L_DEVICES 4
@@ -175,6 +200,8 @@ static struct V4L_DEVICE {
{ -1 },
};
/* ---------------------------------------------------------------------- */
static int SetV4LFmt(int fd, CARD32 pixelformat)
{
struct v4l2_framebuffer fbuf;
@@ -197,7 +224,6 @@ static int SetV4LFmt(int fd, CARD32 pixelformat)
p[0], p[1], p[2], p[3]));
return 0;
}
static int GetV4LFmt(int fd, CARD32 *pixelformat)
{
struct v4l2_framebuffer fbuf;
@@ -219,6 +245,7 @@ static int AddControl(PortPrivPtr p, XF86AttributeRec **list, int *count,
{
char *ptr;
/* v4l_add_attr */
if (qctrl->flags & V4L2_CTRL_FLAG_DISABLED)
return 0;
switch (qctrl->type) {
@@ -388,7 +415,7 @@ static int V4lOpenDevice(PortPrivPtr pPPriv, ScrnInfoPtr pScrn)
pPPriv->rgb_fbuf.fmt.width = pScrn->virtualX;
pPPriv->rgb_fbuf.fmt.height = pScrn->virtualY;
pPPriv->rgb_fbuf.fmt.bytesperline = pScrn->displayWidth * ((pScrn->bitsPerPixel + 7)/8);
pPPriv->rgb_fbuf.base = (void*)(pScrn->memPhysBase + pScrn->fbOffset);
pPPriv->rgb_fbuf.base = (pointer)(pScrn->memPhysBase + pScrn->fbOffset);
if (first) {
xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, 2,
"v4l: memPhysBase=0x%lx\n", pScrn->memPhysBase);
@@ -434,7 +461,7 @@ static int
V4lPutVideo(ScrnInfoPtr pScrn,
short vid_x, short vid_y, short drw_x, short drw_y,
short vid_w, short vid_h, short drw_w, short drw_h,
RegionPtr clipBoxes, void *data, DrawablePtr pDraw)
RegionPtr clipBoxes, pointer data, DrawablePtr pDraw)
{
struct v4l2_format fmt;
@@ -493,9 +520,9 @@ V4lPutVideo(ScrnInfoPtr pScrn,
pPPriv->yuv_fbuf.fmt.width = pPPriv->surface->width;
pPPriv->yuv_fbuf.fmt.height = pPPriv->surface->height;
pPPriv->yuv_fbuf.fmt.bytesperline = pPPriv->surface->pitches[0];
pPPriv->yuv_fbuf.fmt.pixelformat = pPPriv->yuv_format;
pPPriv->yuv_fbuf.base =
(void*)(pScrn->memPhysBase + pPPriv->surface->offsets[0]);
pPPriv->yuv_fbuf.fmt.pixelformat = pPPriv->yuv_format;
pPPriv->yuv_fbuf.base =
(pointer)(pScrn->memPhysBase + pPPriv->surface->offsets[0]);
DEBUG(xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, 2,
" surface: %p+%d = %p, %dx%d, pitch %d\n",
(void *)pScrn->memPhysBase, pPPriv->surface->offsets[0],
@@ -666,7 +693,7 @@ static int
V4lPutStill(ScrnInfoPtr pScrn,
short vid_x, short vid_y, short drw_x, short drw_y,
short vid_w, short vid_h, short drw_w, short drw_h,
RegionPtr clipBoxes, void *data, DrawablePtr pDraw)
RegionPtr clipBoxes, pointer data, DrawablePtr pDraw)
{
#if 0
PortPrivPtr pPPriv = (PortPrivPtr) data;
@@ -679,7 +706,7 @@ V4lPutStill(ScrnInfoPtr pScrn,
}
static void
V4lStopVideo(ScrnInfoPtr pScrn, void *data, Bool shutdown)
V4lStopVideo(ScrnInfoPtr pScrn, pointer data, Bool shutdown)
{
PortPrivPtr pPPriv = (PortPrivPtr) data;
int zero=0;
@@ -716,7 +743,7 @@ V4lStopVideo(ScrnInfoPtr pScrn, void *data, Bool shutdown)
static int
V4lSetPortAttribute(ScrnInfoPtr pScrn,
Atom attribute, INT32 value, void *data)
Atom attribute, INT32 value, pointer data)
{
struct v4l2_control ctrl;
PortPrivPtr pPPriv = (PortPrivPtr) data;
@@ -782,7 +809,7 @@ err:
static int
V4lGetPortAttribute(ScrnInfoPtr pScrn,
Atom attribute, INT32 *value, void *data)
Atom attribute, INT32 *value, pointer data)
{
struct v4l2_control ctrl;
PortPrivPtr pPPriv = (PortPrivPtr) data;
@@ -837,7 +864,7 @@ err:
static void
V4lQueryBestSize(ScrnInfoPtr pScrn, Bool motion,
short vid_w, short vid_h, short drw_w, short drw_h,
unsigned int *p_w, unsigned int *p_h, void *data)
unsigned int *p_w, unsigned int *p_h, pointer data)
{
PortPrivPtr pPPriv = (PortPrivPtr) data;
int maxx = pPPriv->enc[pPPriv->cenc].width;
@@ -974,13 +1001,13 @@ V4LBuildEncodings(PortPrivPtr p, int fd)
for (std = 0; std < num_std; std++) {
int width, height;
/*
* Currently, this code is not reliable, due to driver
* non-compliance on both saa7134 and bttv. So, instead,
* just use the video standard information
*/
/*
* Currently, this code is not reliable, due to driver
* non-compliance on both saa7134 and bttv. So, instead,
* just use the video standard information
*/
#if 0
struct v4l2_framebuffer fbuf;
struct v4l2_framebuffer fbuf;
/* Some webcam drivers will fail here, but that's OK */
ioctl(fd, VIDIOC_S_STD, &p->standard[std].id);
@@ -1016,13 +1043,13 @@ V4LBuildEncodings(PortPrivPtr p, int fd)
}
}
#else
if (p->standard[std].id & V4L2_STD_525_60) {
height = 480;
width = 640;
} else {
height = 576;
width = 768;
}
if (p->standard[std].id & V4L2_STD_525_60) {
height = 480;
width = 640;
} else {
height = 576;
width = 768;
}
#endif
/* Fixup for some driver bug */
@@ -1188,7 +1215,7 @@ V4LInit(ScrnInfoPtr pScrn, XF86VideoAdaptorPtr **adaptors)
if (!Private)
return FALSE;
memset(Private,0,sizeof(DevUnion));
Private->ptr = pPPriv;
Private->ptr = (pointer)pPPriv;
VAR[i]->pPortPrivates = Private;
VAR[i]->nPorts = 1;