예제 #1
0
static int start_streaming(struct vb2_queue *vq, unsigned int count)
{
    struct saa7134_dmaqueue *dmaq = vq->drv_priv;
    struct saa7134_dev *dev = dmaq->dev;
    u32 leading_null_bytes = 0;
    int err;

    err = saa7134_ts_start_streaming(vq, count);
    if (err)
        return err;

    /* If more cards start to need this, then this
       should probably be added to the card definitions. */
    switch (dev->board) {
    case SAA7134_BOARD_BEHOLD_M6:
    case SAA7134_BOARD_BEHOLD_M63:
    case SAA7134_BOARD_BEHOLD_M6_EXTRA:
        leading_null_bytes = 1;
        break;
    }
    saa_call_all(dev, core, init, leading_null_bytes);
    /* Unmute audio */
    saa_writeb(SAA7134_AUDIO_MUTE_CTRL,
               saa_readb(SAA7134_AUDIO_MUTE_CTRL) & ~(1 << 6));
    dev->empress_started = 1;
    return 0;
}
static int empress_s_fmt_vid_cap(struct file *file, void *priv,
				struct v4l2_format *f)
{
	struct saa7134_dev *dev = file->private_data;

	saa_call_all(dev, video, s_fmt, f);

	f->fmt.pix.pixelformat  = V4L2_PIX_FMT_MPEG;
	f->fmt.pix.sizeimage    = TS_PACKET_SIZE * dev->ts.nr_packets;

	return 0;
}
예제 #3
0
static int empress_s_fmt_vid_cap(struct file *file, void *priv,
				struct v4l2_format *f)
{
	struct saa7134_dev *dev = file->private_data;
	struct v4l2_mbus_framefmt mbus_fmt;

	v4l2_fill_mbus_format(&mbus_fmt, &f->fmt.pix, V4L2_MBUS_FMT_FIXED);
	saa_call_all(dev, video, s_mbus_fmt, &mbus_fmt);
	v4l2_fill_pix_format(&f->fmt.pix, &mbus_fmt);

	f->fmt.pix.pixelformat  = V4L2_PIX_FMT_MPEG;
	f->fmt.pix.sizeimage    = TS_PACKET_SIZE * dev->ts.nr_packets;

	return 0;
}
예제 #4
0
static int empress_g_fmt_vid_cap(struct file *file, void *priv,
				struct v4l2_format *f)
{
	struct saa7134_dev *dev = video_drvdata(file);
	struct v4l2_mbus_framefmt mbus_fmt;

	saa_call_all(dev, video, g_mbus_fmt, &mbus_fmt);

	v4l2_fill_pix_format(&f->fmt.pix, &mbus_fmt);
	f->fmt.pix.pixelformat  = V4L2_PIX_FMT_MPEG;
	f->fmt.pix.sizeimage    = TS_PACKET_SIZE * dev->ts.nr_packets;
	f->fmt.pix.bytesperline = 0;

	return 0;
}
static int ts_init_encoder(struct saa7134_dev* dev)
{
	u32 leading_null_bytes = 0;

	/* If more cards start to need this, then this
	   should probably be added to the card definitions. */
	switch (dev->board) {
	case SAA7134_BOARD_BEHOLD_M6:
	case SAA7134_BOARD_BEHOLD_M63:
	case SAA7134_BOARD_BEHOLD_M6_EXTRA:
		leading_null_bytes = 1;
		break;
	}
	ts_reset_encoder(dev);
	saa_call_all(dev, core, init, leading_null_bytes);
	dev->empress_started = 1;
	return 0;
}
예제 #6
0
static int empress_s_fmt_vid_cap(struct file *file, void *priv,
                                 struct v4l2_format *f)
{
    struct saa7134_dev *dev = video_drvdata(file);
    struct v4l2_subdev_format format = {
        .which = V4L2_SUBDEV_FORMAT_ACTIVE,
    };

    v4l2_fill_mbus_format(&format.format, &f->fmt.pix, MEDIA_BUS_FMT_FIXED);
    saa_call_all(dev, pad, set_fmt, NULL, &format);
    v4l2_fill_pix_format(&f->fmt.pix, &format.format);

    f->fmt.pix.pixelformat  = V4L2_PIX_FMT_MPEG;
    f->fmt.pix.sizeimage    = TS_PACKET_SIZE * dev->ts.nr_packets;
    f->fmt.pix.bytesperline = 0;

    return 0;
}