This is an automatic generated email to let you know that the following patch were queued at the http://git.linuxtv.org/v4l-utils.git tree:
Subject: v4l2-compliance: add tests for VIDIOC_(TRY_)ENCODER_CMD. Author: Hans Verkuil <[email protected]> Date: Tue Aug 21 16:17:34 2012 +0200 Signed-off-by: Hans Verkuil <[email protected]> (cherry picked from commit 574f9328842eaa1b1e767ce9a1abd8cd869e783c) Signed-off-by: Gregor Jasny <[email protected]> utils/v4l2-compliance/Makefile | 2 +- utils/v4l2-compliance/v4l2-compliance.cpp | 7 +++- utils/v4l2-compliance/v4l2-compliance.h | 3 + utils/v4l2-compliance/v4l2-test-codecs.cpp | 62 ++++++++++++++++++++++++++++ 4 files changed, 72 insertions(+), 2 deletions(-) --- http://git.linuxtv.org/v4l-utils.git?a=commitdiff;h=df10d5711a3f27ccf770de9ea5f68303f6fb8056 diff --git a/utils/v4l2-compliance/Makefile b/utils/v4l2-compliance/Makefile index b267b3d..00c5389 100644 --- a/utils/v4l2-compliance/Makefile +++ b/utils/v4l2-compliance/Makefile @@ -6,7 +6,7 @@ all: $(TARGETS) v4l2-compliance: v4l2-compliance.o v4l2-test-debug.o v4l2-test-input-output.o \ v4l2-test-controls.o v4l2-test-io-config.o v4l2-test-formats.o \ - v4l2-test-buffers.o + v4l2-test-buffers.o v4l2-test-codecs.o $(CXX) $(LDFLAGS) -o $@ $^ -lv4l2 -lv4lconvert -lrt install: $(TARGETS) diff --git a/utils/v4l2-compliance/v4l2-compliance.cpp b/utils/v4l2-compliance/v4l2-compliance.cpp index e1d0da8..a22b875 100644 --- a/utils/v4l2-compliance/v4l2-compliance.cpp +++ b/utils/v4l2-compliance/v4l2-compliance.cpp @@ -656,6 +656,12 @@ int main(int argc, char **argv) printf("\ttest VIDIOC_G_SLICED_VBI_CAP: %s\n", ok(testSlicedVBICap(&node))); printf("\n"); + /* Codec ioctls */ + + printf("Codec ioctls:\n"); + printf("\ttest VIDIOC_(TRY_)ENCODER_CMD: %s\n", ok(testEncoder(&node))); + printf("\n"); + /* Buffer ioctls */ printf("Buffer ioctls:\n"); @@ -667,7 +673,6 @@ int main(int argc, char **argv) VIDIOC_CROPCAP, VIDIOC_G/S_CROP, VIDIOC_G/S_SELECTION VIDIOC_S_FBUF/OVERLAY - VIDIOC_(TRY_)ENCODER_CMD VIDIOC_(TRY_)DECODER_CMD VIDIOC_G_ENC_INDEX VIDIOC_QBUF/DQBUF/QUERYBUF/PREPARE_BUFS diff --git a/utils/v4l2-compliance/v4l2-compliance.h b/utils/v4l2-compliance/v4l2-compliance.h index 51b5ee0..9480cc2 100644 --- a/utils/v4l2-compliance/v4l2-compliance.h +++ b/utils/v4l2-compliance/v4l2-compliance.h @@ -189,6 +189,9 @@ int testTryFormats(struct node *node); int testSetFormats(struct node *node); int testSlicedVBICap(struct node *node); +// Codec ioctl tests +int testEncoder(struct node *node); + // Buffer ioctl tests int testReqBufs(struct node *node); int testReadWrite(struct node *node); diff --git a/utils/v4l2-compliance/v4l2-test-codecs.cpp b/utils/v4l2-compliance/v4l2-test-codecs.cpp new file mode 100644 index 0000000..60f861a --- /dev/null +++ b/utils/v4l2-compliance/v4l2-test-codecs.cpp @@ -0,0 +1,62 @@ +/* + V4L2 API codec ioctl tests. + + Copyright (C) 2012 Hans Verkuil <[email protected]> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA + */ + +#include <unistd.h> +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <inttypes.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <ctype.h> +#include <errno.h> +#include <sys/ioctl.h> +#include <assert.h> +#include "v4l2-compliance.h" + +int testEncoder(struct node *node) +{ + struct v4l2_encoder_cmd cmd; + int ret; + + memset(&cmd, 0xff, sizeof(cmd)); + memset(&cmd.raw, 0, sizeof(cmd.raw)); + ret = doioctl(node, VIDIOC_ENCODER_CMD, &cmd); + if (ret == ENOTTY) + return ret; + fail_on_test(ret != EINVAL); + ret = doioctl(node, VIDIOC_TRY_ENCODER_CMD, &cmd); + fail_on_test(ret == ENOTTY); + fail_on_test(ret != EINVAL); + cmd.cmd = V4L2_ENC_CMD_STOP; + cmd.flags = 0; + ret = doioctl(node, VIDIOC_TRY_ENCODER_CMD, &cmd); + fail_on_test(ret != 0); + ret = doioctl(node, VIDIOC_ENCODER_CMD, &cmd); + fail_on_test(ret != 0); + cmd.cmd = V4L2_ENC_CMD_PAUSE; + ret = doioctl(node, VIDIOC_ENCODER_CMD, &cmd); + fail_on_test(ret != EPERM && ret != EINVAL); + cmd.cmd = V4L2_ENC_CMD_RESUME; + ret = doioctl(node, VIDIOC_ENCODER_CMD, &cmd); + fail_on_test(ret != EPERM && ret != EINVAL); + return 0; +} _______________________________________________ linuxtv-commits mailing list [email protected] http://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits
