view stream/tvi_dummy.c @ 28703:439de22fe1c0

r27801 Clarify screenw/screenh options, patch by Christian Ohm, chr.ohm gmx net. r27872 Add a few more supported URL protocols r27895 Fix typo in psy-rd x264 option description. r27906 document x264's option subq=0, plus a bit of factoring and added details r27973 add direct3d docs, ok'd by Guillaume r27979 Make description of the option more clear r28056 Add a note about some known issues with -vo sdl r28095 Document missing vo_gl suboptions r28096 Using rectangle=2 for vo_gl is probably a good idea nowadays. r28126 Add support for writing PNG files with alpha channel in -vo png
author kraymer
date Thu, 26 Feb 2009 23:32:37 +0000
parents c43ce7268677
children ce0122361a39
line wrap: on
line source

/*
    Only a sample!
*/

#include "config.h"

#include <stdio.h>
#include "libmpcodecs/img_format.h"
#include "tv.h"

static tvi_handle_t *tvi_init_dummy(tv_param_t* tv_param);
/* information about this file */
const tvi_info_t tvi_info_dummy = {
	tvi_init_dummy,
	"NULL-TV",
	"dummy",
	"alex",
	NULL
};

/* private data's */
typedef struct {
    int width;
    int height;
} priv_t;

#include "tvi_def.h"

/* handler creator - entry point ! */
static tvi_handle_t *tvi_init_dummy(tv_param_t* tv_param)
{
    return new_handle();
}

/* initialisation */
static int init(priv_t *priv)
{
    priv->width = 320;
    priv->height = 200;
    return 1;
}

/* that's the real start, we'got the format parameters (checked with control) */
static int start(priv_t *priv)
{
    return 1;
}

static int uninit(priv_t *priv)
{
    return 1;
}

static int control(priv_t *priv, int cmd, void *arg)
{
    switch(cmd)
    {
	case TVI_CONTROL_IS_VIDEO:
	    return TVI_CONTROL_TRUE;
	case TVI_CONTROL_VID_GET_FORMAT:
//	    *(int *)arg = IMGFMT_YV12;
	    *(int *)arg = IMGFMT_YV12;
	    return TVI_CONTROL_TRUE;
	case TVI_CONTROL_VID_SET_FORMAT:
	{
//	    int req_fmt = *(int *)arg;
	    int req_fmt = *(int *)arg;
	    if (req_fmt != IMGFMT_YV12)
		return TVI_CONTROL_FALSE;
	    return TVI_CONTROL_TRUE;
	}
	case TVI_CONTROL_VID_SET_WIDTH:
	    priv->width = *(int *)arg;
	    return TVI_CONTROL_TRUE;
	case TVI_CONTROL_VID_GET_WIDTH:
	    *(int *)arg = priv->width;
	    return TVI_CONTROL_TRUE;
	case TVI_CONTROL_VID_SET_HEIGHT:
	    priv->height = *(int *)arg;
	    return TVI_CONTROL_TRUE;
	case TVI_CONTROL_VID_GET_HEIGHT:
	    *(int *)arg = priv->height;
	    return TVI_CONTROL_TRUE;
	case TVI_CONTROL_VID_CHK_WIDTH:
	case TVI_CONTROL_VID_CHK_HEIGHT:
	    return TVI_CONTROL_TRUE;
	case TVI_CONTROL_TUN_SET_NORM:
	    return TVI_CONTROL_TRUE;
    }
    return TVI_CONTROL_UNKNOWN;
}

static double grab_video_frame(priv_t *priv, char *buffer, int len)
{
    memset(buffer, 0x42, len);
    return 1;
}

static int get_video_framesize(priv_t *priv)
{
    /* YV12 */
    return priv->width * priv->height * 12 / 8;
}

static double grab_audio_frame(priv_t *priv, char *buffer, int len)
{
    memset(buffer, 0x42, len);
    return 1;
}

static int get_audio_framesize(priv_t *priv)
{
    return 1;
}