2010-01-30 22:26:47 +00:00
|
|
|
/*
|
|
|
|
* This file is part of MPlayer.
|
|
|
|
*
|
|
|
|
* MPlayer 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.
|
|
|
|
*
|
|
|
|
* MPlayer 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 MPlayer; if not, write to the Free Software Foundation, Inc.,
|
|
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
|
|
*/
|
|
|
|
|
2008-02-22 09:09:46 +00:00
|
|
|
#ifndef MPLAYER_TVI_DEF_H
|
|
|
|
#define MPLAYER_TVI_DEF_H
|
2008-02-21 00:12:02 +00:00
|
|
|
|
2001-12-27 23:52:48 +00:00
|
|
|
#include <stdlib.h> /* malloc */
|
2002-11-06 23:54:29 +00:00
|
|
|
#include <string.h> /* memset */
|
2012-11-09 00:06:43 +00:00
|
|
|
#include "video/img_format.h"
|
2008-03-10 19:28:42 +00:00
|
|
|
#include "tv.h"
|
2001-12-27 23:52:48 +00:00
|
|
|
|
|
|
|
static int init(priv_t *priv);
|
2001-11-10 23:32:10 +00:00
|
|
|
static int uninit(priv_t *priv);
|
2001-11-09 23:46:06 +00:00
|
|
|
static int control(priv_t *priv, int cmd, void *arg);
|
2001-11-10 23:32:10 +00:00
|
|
|
static int start(priv_t *priv);
|
2002-04-12 10:40:38 +00:00
|
|
|
static double grab_video_frame(priv_t *priv, char *buffer, int len);
|
2001-11-09 23:46:06 +00:00
|
|
|
static int get_video_framesize(priv_t *priv);
|
2002-04-12 10:40:38 +00:00
|
|
|
static double grab_audio_frame(priv_t *priv, char *buffer, int len);
|
2001-11-09 23:46:06 +00:00
|
|
|
static int get_audio_framesize(priv_t *priv);
|
|
|
|
|
2008-01-13 11:48:56 +00:00
|
|
|
static const tvi_functions_t functions =
|
2001-11-09 23:46:06 +00:00
|
|
|
{
|
|
|
|
init,
|
2001-11-10 23:32:10 +00:00
|
|
|
uninit,
|
2001-11-09 23:46:06 +00:00
|
|
|
control,
|
2001-11-10 23:32:10 +00:00
|
|
|
start,
|
2001-11-09 23:46:06 +00:00
|
|
|
grab_video_frame,
|
|
|
|
get_video_framesize,
|
|
|
|
grab_audio_frame,
|
|
|
|
get_audio_framesize
|
|
|
|
};
|
|
|
|
|
2007-05-31 17:49:51 +00:00
|
|
|
/**
|
|
|
|
Fills video frame in given buffer with blue color for yv12,i420,uyvy,yuy2.
|
2009-05-13 02:58:57 +00:00
|
|
|
Other formats will be filled with 0xC0
|
2007-05-31 17:49:51 +00:00
|
|
|
*/
|
|
|
|
static inline void fill_blank_frame(char* buffer,int len,int fmt){
|
|
|
|
int i;
|
2009-05-13 02:58:57 +00:00
|
|
|
// RGB(0,0,255) <-> YVU(41,110,240)
|
2007-05-31 17:49:51 +00:00
|
|
|
|
|
|
|
switch(fmt){
|
|
|
|
case IMGFMT_YV12:
|
2007-08-23 14:20:31 +00:00
|
|
|
memset(buffer, 41,4*len/6); //Y
|
|
|
|
memset(buffer+4*len/6, 110,len/6);//V
|
|
|
|
memset(buffer+5*len/6, 240,len/6);//U
|
2007-05-31 17:49:51 +00:00
|
|
|
break;
|
|
|
|
case IMGFMT_I420:
|
2007-08-23 14:20:31 +00:00
|
|
|
memset(buffer, 41,4*len/6); //Y
|
|
|
|
memset(buffer+4*len/6, 240,len/6);//U
|
|
|
|
memset(buffer+5*len/6, 110,len/6);//V
|
2007-05-31 17:49:51 +00:00
|
|
|
break;
|
|
|
|
case IMGFMT_UYVY:
|
|
|
|
for(i=0;i<len;i+=4){
|
|
|
|
buffer[i]=0xFF;
|
|
|
|
buffer[i+1]=0;
|
|
|
|
buffer[i+2]=0;
|
|
|
|
buffer[i+3]=0;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case IMGFMT_YUY2:
|
|
|
|
for(i=0;i<len;i+=4){
|
|
|
|
buffer[i]=0;
|
|
|
|
buffer[i+1]=0xFF;
|
|
|
|
buffer[i+2]=0;
|
|
|
|
buffer[i+3]=0;
|
|
|
|
}
|
|
|
|
break;
|
2007-06-01 17:29:35 +00:00
|
|
|
case IMGFMT_MJPEG:
|
|
|
|
/*
|
|
|
|
This is compressed format. I don't know yet how to fill such frame with blue color.
|
|
|
|
Keeping frame unchanged.
|
|
|
|
*/
|
|
|
|
break;
|
2007-05-31 17:49:51 +00:00
|
|
|
default:
|
|
|
|
memset(buffer,0xC0,len);
|
|
|
|
}
|
|
|
|
}
|
2008-02-21 00:12:02 +00:00
|
|
|
|
2008-02-22 09:09:46 +00:00
|
|
|
#endif /* MPLAYER_TVI_DEF_H */
|