view libmpcodecs/vf_dvbscale.c @ 10743:3d1eab0d9c5a

* Add multi device support. For the moment up to 16 cards are supported. More can be added easily by changing 2 defines. This makes 90% of the patch (mostly stupid s/$var/card->$var/) The different devices can be accessed by different minor numbers (0-15): mknod /dev/mga_vid0 c 178 0 mknod /dev/mga_vid1 c 178 1 mknod /dev/mga_vid2 c 178 2 mknod /dev/mga_vid3 c 178 3 ... ln -s mga_vid /dev/mga_vid * Change the devfs code to let the kernel assign us a major and a minor number (what is the sense behind using devfs anyways if we dont do that ?) Subdevices for the different cards are created. mga_vid uses the first card (for compatibility) * Fix a possible error when mmap() is called before the card is configured by a ioctl().
author attila
date Sun, 31 Aug 2003 20:57:34 +0000
parents e9a2af584986
children 6ff3379a0862
line wrap: on
line source

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <inttypes.h>

#include "../config.h"
#include "../mp_msg.h"

#include "img_format.h"
#include "mp_image.h"
#include "vf.h"

struct vf_priv_s {
    int aspect;
};

//===========================================================================//

static int config(struct vf_instance_s* vf,
        int width, int height, int d_width, int d_height,
	unsigned int flags, unsigned int outfmt){

    int scaled_y=vf->priv->aspect*d_height/d_width;
    
    d_width=width; // do X-scaling by hardware
    d_height=scaled_y;

    return vf_next_config(vf,width,height,d_width,d_height,flags,outfmt);
}

static int open(vf_instance_t *vf, char* args){
    vf->config=config;
    vf->default_caps=0;
    vf->priv=malloc(sizeof(struct vf_priv_s));
    vf->priv->aspect=768;
    if(args) vf->priv->aspect=atoi(args);
    return 1;
}

vf_info_t vf_info_dvbscale = {
    "calc Y scaling for DVB card",
    "dvbscale",
    "A'rpi",
    "",
    open,
    NULL
};

//===========================================================================//