mirror of
https://github.com/mpv-player/mpv
synced 2025-01-17 12:31:25 +00:00
Add TVI_CONTROL_VID_SET_WIDTH_HEIGHT to set width and height together for v4l2,
otherwise some drivers will always stay stuck in the lowest resolution. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28975 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
91dd12b122
commit
b397b28b31
@ -439,6 +439,12 @@ static int open_tv(tvi_handle_t *tvh)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* limits on w&h are norm-dependent -- JM */
|
/* limits on w&h are norm-dependent -- JM */
|
||||||
|
if (tvh->tv_param->width != -1 && tvh->tv_param->height != -1) {
|
||||||
|
// first tell the driver both width and height, some drivers do not support setting them independently.
|
||||||
|
int dim[2];
|
||||||
|
dim[0] = tvh->tv_param->width; dim[1] = tvh->tv_param->height;
|
||||||
|
funcs->control(tvh->priv, TVI_CONTROL_VID_SET_WIDTH_HEIGHT, dim);
|
||||||
|
}
|
||||||
/* set width */
|
/* set width */
|
||||||
if (tvh->tv_param->width != -1)
|
if (tvh->tv_param->width != -1)
|
||||||
{
|
{
|
||||||
|
@ -175,6 +175,7 @@ typedef struct {
|
|||||||
#define TVI_CONTROL_VID_SET_PICTURE 0x11e
|
#define TVI_CONTROL_VID_SET_PICTURE 0x11e
|
||||||
#define TVI_CONTROL_VID_SET_GAIN 0x11f
|
#define TVI_CONTROL_VID_SET_GAIN 0x11f
|
||||||
#define TVI_CONTROL_VID_GET_GAIN 0x120
|
#define TVI_CONTROL_VID_GET_GAIN 0x120
|
||||||
|
#define TVI_CONTROL_VID_SET_WIDTH_HEIGHT 0x121
|
||||||
|
|
||||||
/* TUNER controls */
|
/* TUNER controls */
|
||||||
#define TVI_CONTROL_TUN_GET_FREQ 0x201
|
#define TVI_CONTROL_TUN_GET_FREQ 0x201
|
||||||
|
@ -780,6 +780,14 @@ static int control(priv_t *priv, int cmd, void *arg)
|
|||||||
return TVI_CONTROL_TRUE;
|
return TVI_CONTROL_TRUE;
|
||||||
case TVI_CONTROL_VID_CHK_WIDTH:
|
case TVI_CONTROL_VID_CHK_WIDTH:
|
||||||
return TVI_CONTROL_TRUE;
|
return TVI_CONTROL_TRUE;
|
||||||
|
case TVI_CONTROL_VID_SET_WIDTH_HEIGHT:
|
||||||
|
if (getfmt(priv) < 0) return TVI_CONTROL_FALSE;
|
||||||
|
priv->format.fmt.pix.width = ((int *)arg)[0];
|
||||||
|
priv->format.fmt.pix.height = ((int *)arg)[1];
|
||||||
|
priv->format.fmt.pix.field = V4L2_FIELD_ANY;
|
||||||
|
if (ioctl(priv->video_fd, VIDIOC_S_FMT, &priv->format) < 0)
|
||||||
|
return TVI_CONTROL_FALSE;
|
||||||
|
return TVI_CONTROL_TRUE;
|
||||||
case TVI_CONTROL_VID_SET_WIDTH:
|
case TVI_CONTROL_VID_SET_WIDTH:
|
||||||
if (getfmt(priv) < 0) return TVI_CONTROL_FALSE;
|
if (getfmt(priv) < 0) return TVI_CONTROL_FALSE;
|
||||||
priv->format.fmt.pix.width = *(int *)arg;
|
priv->format.fmt.pix.width = *(int *)arg;
|
||||||
|
Loading…
Reference in New Issue
Block a user