Changeset 588


Ignore:
Timestamp:
Apr 5, 2009, 1:42:32 PM (10 years ago)
Author:
blogic
Message:

lua'fy ucv_foo

Location:
branches/communities/blogic/uvc_f00
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • branches/communities/blogic/uvc_f00/Makefile

    r587 r588  
    1 PROGS=uvccapture
     1PROGS=uvc.so
    22CFLAGS?=
    33CFLAGS+=-pedantic -Wall -std=gnu99 -I/usr/include/lua5.1/
    4 CPPFLAGS=-I./include
    54LDFLAGS?=
    65LDFLAGS+=-luci -llua5.1
     
    109
    1110$(PROGS): $(OBJS)
    12         $(CC) $(CFLAGS)  $(LDFLAGS) $(MYLDFLAGS) $^ -o $@
     11        $(CC) $(CFLAGS) -shared -Wl,-soname,uvc $(LDFLAGS) $(LDFLAGS) $^ -o $@
    1312
    1413clean:
     
    1615
    1716%.o: %.c
    18         $(CC) $(CPPFLAGS) $(CFLAGS) $(MYCFLAGS) -c  $^ -o $@
     17        $(CC) $(CFLAGS) -c  $^ -o $@
    1918
  • branches/communities/blogic/uvc_f00/uvccapture.c

    r587 r588  
    1 
    2 /*******************************************************************************
    3 #             uvccapture: USB UVC Video Class Snapshot Software                #
    4 #This package work with the Logitech UVC based webcams with the mjpeg feature  #
    5 #.                                                                             #
    6 #       Orginally Copyright (C) 2005 2006 Laurent Pinchart &&  Michel Xhaard   #
    7 #       Modifications Copyright (C) 2006  Gabriel A. Devenyi                   #
    8 #                                                                              #
    9 # This program is free software; you can redistribute it and/or modify         #
    10 # it under the terms of the GNU General Public License as published by         #
    11 # the Free Software Foundation; either version 2 of the License, or            #
    12 # (at your option) any later version.                                          #
    13 #                                                                              #
    14 # This program is distributed in the hope that it will be useful,              #
    15 # but WITHOUT ANY WARRANTY; without even the implied warranty of               #
    16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                #
    17 # GNU General Public License for more details.                                 #
    18 #                                                                              #
    19 # You should have received a copy of the GNU General Public License            #
    20 # along with this program; if not, write to the Free Software                  #
    21 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA    #
    22 #                                                                              #
    23 *******************************************************************************/
     1/*
     2 *   This program is free software; you can redistribute it and/or modify
     3 *   it under the terms of the GNU General Public License as published by
     4 *   the Free Software Foundation; either version 2 of the License, or
     5 *   (at your option) any later version.
     6 *
     7 *   This program is distributed in the hope that it will be useful,
     8 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
     9 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     10 *   GNU General Public License for more details.
     11 *
     12 *   You should have received a copy of the GNU General Public License
     13 *   along with this program; if not, write to the Free Software
     14 *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
     15 *
     16 *   Copyright (C) 2008 John Crispin <blogic@openwrt.org>
     17 */
    2418
    2519#include <stdio.h>
     
    3226#include <linux/videodev.h>
    3327
     28#include <lua.h>
     29#include <lualib.h>
     30#include <lauxlib.h>
     31
    3432#include "v4l2uvc.h"
     33
     34struct vdIn *videoIn = NULL;
    3535
    3636struct vdIn*
     
    6969}
    7070
    71 int
    72 main(int argc, char **argv)
     71static int u_grab(lua_State *L)
    7372{
    74         struct vdIn *videoIn = uvc_init("/dev/video0", 640, 480);
    75         uvc_snapshot(videoIn, "snap.jpg");
    76         close_v4l2(videoIn);
    77     free(videoIn);
    78         return 0;
     73        char *filename;
     74        if(!videoIn)
     75        {
     76                videoIn = uvc_init("/dev/video0", 640, 480);
     77                if(!videoIn)
     78                {
     79                        lua_pushboolean(L, 0);
     80                        return 1;
     81                }
     82        }
     83        if(uvcGrab(videoIn) < 0)
     84        {
     85                close_v4l2(videoIn);
     86                free(videoIn);
     87                videoIn = NULL;
     88                lua_pushnil(L);
     89        } else {
     90                lua_pushlstring(L, videoIn->tmpbuffer, videoIn->buf.bytesused + DHT_SIZE);
     91        }
     92        return 1;
    7993}
     94
     95static int u_dump(lua_State *L)
     96{
     97        char *filename;
     98        if(!videoIn)
     99        {
     100                videoIn = uvc_init("/dev/video0", 640, 480);
     101                if(!videoIn)
     102                {
     103                        lua_pushboolean(L, 0);
     104                        return 1;
     105                }
     106        }
     107        if(lua_gettop(L) != 1)
     108        {
     109                lua_pushstring(L, "uvc.dump(\"filename\") : wrong param count");
     110                lua_error(L);
     111                return 0;
     112        }
     113        filename = (char *)lua_tostring (L, 1);
     114        if(uvc_snapshot(videoIn, filename) != 0)
     115        {
     116                close_v4l2(videoIn);
     117                free(videoIn);
     118                videoIn = NULL;
     119                lua_pushnil(L);
     120        } else {
     121                lua_pushboolean(L, 1);
     122        }
     123        return 1;
     124}
     125
     126
     127static luaL_reg func[] = {
     128        {"grab", u_grab},
     129        {"dump", u_dump},
     130        {NULL, NULL}
     131};
     132
     133int luaopen_uvc(lua_State *L)
     134{
     135        luaL_openlib(L, "uvc", func, 0);
     136        lua_pushstring(L, "_VERSION");
     137        lua_pushstring(L, "1.0");
     138        lua_rawset(L, -3);
     139        return 1;
     140}
     141
     142int luaclose_uvc(lua_State *L)
     143{
     144        if(videoIn)
     145        {
     146                close_v4l2(videoIn);
     147                free(videoIn);
     148        }
     149        lua_pushstring(L, "Called");
     150        return 1;
     151}
     152
     153
  • branches/communities/blogic/uvc_f00/v4l2uvc.c

    r587 r588  
    102102  vd->grabmethod = grabmethod;
    103103  if (init_v4l2 (vd) < 0) {
    104     fprintf (stderr, " Init v4L2 failed !! exit fatal \n");
    105104    goto error;;
    106105  }
     
    141140
    142141  if ((vd->fd = open (vd->videodevice, O_RDWR)) == -1) {
    143     perror ("ERROR opening V4L interface \n");
    144     exit (1);
     142    return -1;
    145143  }
    146144  memset (&vd->cap, 0, sizeof (struct v4l2_capability));
Note: See TracChangeset for help on using the changeset viewer.