lkml.org 
[lkml]   [2020]   [Sep]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH RFT/RFC 19/49] staging: media: zoran: move jpg_settings out of zoran_fh
Date
We need to get rid of zoran_fh, so move the jpg_settings directly in the
zoran structure.
Signed-off-by: Corentin Labbe <clabbe@baylibre.com>
---
drivers/staging/media/zoran/zoran.h | 2 -
drivers/staging/media/zoran/zoran_driver.c | 103 ++++++++++-----------
2 files changed, 47 insertions(+), 58 deletions(-)

diff --git a/drivers/staging/media/zoran/zoran.h b/drivers/staging/media/zoran/zoran.h
index a529b49888c6..7e6e03563a2a 100644
--- a/drivers/staging/media/zoran/zoran.h
+++ b/drivers/staging/media/zoran/zoran.h
@@ -216,8 +216,6 @@ struct zoran_fh {
enum zoran_lock_activity overlay_active;/* feature currently in use? */

struct zoran_buffer_col buffers; /* buffers' info */
-
- struct zoran_jpg_settings jpg_settings; /* structure with a lot of things to play with */
};

struct card_info {
diff --git a/drivers/staging/media/zoran/zoran_driver.c b/drivers/staging/media/zoran/zoran_driver.c
index 984f1dde99d2..f0ceda9a3d44 100644
--- a/drivers/staging/media/zoran/zoran_driver.c
+++ b/drivers/staging/media/zoran/zoran_driver.c
@@ -587,9 +587,7 @@ static int zoran_jpg_queue_frame(struct zoran_fh *fh, int num,
}

/* what is the codec mode right now? */
- if (zr->codec_mode == BUZ_MODE_IDLE) {
- zr->jpg_settings = fh->jpg_settings;
- } else if (zr->codec_mode != mode) {
+ if (zr->codec_mode != BUZ_MODE_IDLE && zr->codec_mode != mode) {
/* wrong codec mode active - invalid */
pci_err(zr->pci_dev, "%s - codec in wrong mode\n", __func__);
return -EINVAL;
@@ -751,9 +749,6 @@ static void zoran_open_init_session(struct zoran_fh *fh)
fh->overlay_settings.format = zr->overlay_settings.format;
fh->overlay_active = ZORAN_FREE;

- /* jpg settings */
- fh->jpg_settings = zr->jpg_settings;
-
/* buffers */
memset(&fh->buffers, 0, sizeof(fh->buffers));
for (i = 0; i < MAX_FRAME; i++) {
@@ -1237,11 +1232,11 @@ static int zoran_v4l2_buffer_status(struct zoran_fh *fh,
}

/* which fields are these? */
- if (fh->jpg_settings.TmpDcm != 1)
- buf->field = fh->jpg_settings.odd_even ?
+ if (zr->jpg_settings.TmpDcm != 1)
+ buf->field = zr->jpg_settings.odd_even ?
V4L2_FIELD_TOP : V4L2_FIELD_BOTTOM;
else
- buf->field = fh->jpg_settings.odd_even ?
+ buf->field = zr->jpg_settings.odd_even ?
V4L2_FIELD_SEQ_TB : V4L2_FIELD_SEQ_BT;

break;
@@ -1389,18 +1384,18 @@ static int zoran_enum_fmt_vid_overlay(struct file *file, void *__fh,

static int zoran_g_fmt_vid_out(struct file *file, void *__fh, struct v4l2_format *fmt)
{
- struct zoran_fh *fh = __fh;
+ struct zoran *zr = video_drvdata(file);

- fmt->fmt.pix.width = fh->jpg_settings.img_width / fh->jpg_settings.HorDcm;
- fmt->fmt.pix.height = fh->jpg_settings.img_height * 2 /
- (fh->jpg_settings.VerDcm * fh->jpg_settings.TmpDcm);
- fmt->fmt.pix.sizeimage = zoran_v4l2_calc_bufsize(&fh->jpg_settings);
+ fmt->fmt.pix.width = zr->jpg_settings.img_width / zr->jpg_settings.HorDcm;
+ fmt->fmt.pix.height = zr->jpg_settings.img_height * 2 /
+ (zr->jpg_settings.VerDcm * zr->jpg_settings.TmpDcm);
+ fmt->fmt.pix.sizeimage = zoran_v4l2_calc_bufsize(&zr->jpg_settings);
fmt->fmt.pix.pixelformat = V4L2_PIX_FMT_MJPEG;
- if (fh->jpg_settings.TmpDcm == 1)
- fmt->fmt.pix.field = (fh->jpg_settings.odd_even ?
+ if (zr->jpg_settings.TmpDcm == 1)
+ fmt->fmt.pix.field = (zr->jpg_settings.odd_even ?
V4L2_FIELD_SEQ_TB : V4L2_FIELD_SEQ_BT);
else
- fmt->fmt.pix.field = (fh->jpg_settings.odd_even ?
+ fmt->fmt.pix.field = (zr->jpg_settings.odd_even ?
V4L2_FIELD_TOP : V4L2_FIELD_BOTTOM);
fmt->fmt.pix.bytesperline = 0;
fmt->fmt.pix.colorspace = V4L2_COLORSPACE_SMPTE170M;
@@ -1468,15 +1463,14 @@ static int zoran_try_fmt_vid_overlay(struct file *file, void *__fh,
static int zoran_try_fmt_vid_out(struct file *file, void *__fh,
struct v4l2_format *fmt)
{
- struct zoran_fh *fh = __fh;
- struct zoran *zr = fh->zr;
+ struct zoran *zr = video_drvdata(file);
struct zoran_jpg_settings settings;
int res = 0;

if (fmt->fmt.pix.pixelformat != V4L2_PIX_FMT_MJPEG)
return -EINVAL;

- settings = fh->jpg_settings;
+ settings = zr->jpg_settings;

/* we actually need to set 'real' parameters now */
if ((fmt->fmt.pix.height * 2) > BUZ_MAX_HEIGHT)
@@ -1484,13 +1478,13 @@ static int zoran_try_fmt_vid_out(struct file *file, void *__fh,
else
settings.TmpDcm = 2;
settings.decimation = 0;
- if (fmt->fmt.pix.height <= fh->jpg_settings.img_height / 2)
+ if (fmt->fmt.pix.height <= zr->jpg_settings.img_height / 2)
settings.VerDcm = 2;
else
settings.VerDcm = 1;
- if (fmt->fmt.pix.width <= fh->jpg_settings.img_width / 4)
+ if (fmt->fmt.pix.width <= zr->jpg_settings.img_width / 4)
settings.HorDcm = 4;
- else if (fmt->fmt.pix.width <= fh->jpg_settings.img_width / 2)
+ else if (fmt->fmt.pix.width <= zr->jpg_settings.img_width / 2)
settings.HorDcm = 2;
else
settings.HorDcm = 1;
@@ -1517,10 +1511,10 @@ static int zoran_try_fmt_vid_out(struct file *file, void *__fh,
fmt->fmt.pix.height = settings.img_height * 2 /
(settings.TmpDcm * settings.VerDcm);
if (settings.TmpDcm == 1)
- fmt->fmt.pix.field = (fh->jpg_settings.odd_even ?
+ fmt->fmt.pix.field = (zr->jpg_settings.odd_even ?
V4L2_FIELD_SEQ_TB : V4L2_FIELD_SEQ_BT);
else
- fmt->fmt.pix.field = (fh->jpg_settings.odd_even ?
+ fmt->fmt.pix.field = (zr->jpg_settings.odd_even ?
V4L2_FIELD_TOP : V4L2_FIELD_BOTTOM);

fmt->fmt.pix.sizeimage = zoran_v4l2_calc_bufsize(&settings);
@@ -1594,7 +1588,7 @@ static int zoran_s_fmt_vid_out(struct file *file, void *__fh, struct v4l2_format
return res;
}

- settings = fh->jpg_settings;
+ settings = zr->jpg_settings;

/* we actually need to set 'real' parameters now */
if (fmt->fmt.pix.height * 2 > BUZ_MAX_HEIGHT)
@@ -1602,13 +1596,13 @@ static int zoran_s_fmt_vid_out(struct file *file, void *__fh, struct v4l2_format
else
settings.TmpDcm = 2;
settings.decimation = 0;
- if (fmt->fmt.pix.height <= fh->jpg_settings.img_height / 2)
+ if (fmt->fmt.pix.height <= zr->jpg_settings.img_height / 2)
settings.VerDcm = 2;
else
settings.VerDcm = 1;
- if (fmt->fmt.pix.width <= fh->jpg_settings.img_width / 4)
+ if (fmt->fmt.pix.width <= zr->jpg_settings.img_width / 4)
settings.HorDcm = 4;
- else if (fmt->fmt.pix.width <= fh->jpg_settings.img_width / 2)
+ else if (fmt->fmt.pix.width <= zr->jpg_settings.img_width / 2)
settings.HorDcm = 2;
else
settings.HorDcm = 1;
@@ -1631,19 +1625,19 @@ static int zoran_s_fmt_vid_out(struct file *file, void *__fh, struct v4l2_format
return res;

/* it's ok, so set them */
- fh->jpg_settings = settings;
+ zr->jpg_settings = settings;

map_mode_jpg(fh, fmt->type == V4L2_BUF_TYPE_VIDEO_OUTPUT);
- zr->buffer_size = zoran_v4l2_calc_bufsize(&fh->jpg_settings);
+ zr->buffer_size = zoran_v4l2_calc_bufsize(&zr->jpg_settings);

/* tell the user what we actually did */
fmt->fmt.pix.width = settings.img_width / settings.HorDcm;
fmt->fmt.pix.height = settings.img_height * 2 / (settings.TmpDcm * settings.VerDcm);
if (settings.TmpDcm == 1)
- fmt->fmt.pix.field = (fh->jpg_settings.odd_even ?
+ fmt->fmt.pix.field = (zr->jpg_settings.odd_even ?
V4L2_FIELD_SEQ_TB : V4L2_FIELD_SEQ_BT);
else
- fmt->fmt.pix.field = (fh->jpg_settings.odd_even ?
+ fmt->fmt.pix.field = (zr->jpg_settings.odd_even ?
V4L2_FIELD_TOP : V4L2_FIELD_BOTTOM);
fmt->fmt.pix.bytesperline = 0;
fmt->fmt.pix.sizeimage = zr->buffer_size;
@@ -1798,7 +1792,7 @@ static int zoran_reqbufs(struct file *file, void *__fh, struct v4l2_requestbuffe
/* The next mmap will map the MJPEG buffers */
map_mode_jpg(fh, req->type == V4L2_BUF_TYPE_VIDEO_OUTPUT);
fh->buffers.num_buffers = req->count;
- zr->buffer_size = zoran_v4l2_calc_bufsize(&fh->jpg_settings);
+ zr->buffer_size = zoran_v4l2_calc_bufsize(&zr->jpg_settings);

if (jpg_fbuffer_alloc(fh)) {
res = -ENOMEM;
@@ -2162,10 +2156,10 @@ static int zoran_g_selection(struct file *file, void *__fh, struct v4l2_selectio

switch (sel->target) {
case V4L2_SEL_TGT_CROP:
- sel->r.top = fh->jpg_settings.img_y;
- sel->r.left = fh->jpg_settings.img_x;
- sel->r.width = fh->jpg_settings.img_width;
- sel->r.height = fh->jpg_settings.img_height;
+ sel->r.top = zr->jpg_settings.img_y;
+ sel->r.left = zr->jpg_settings.img_x;
+ sel->r.width = zr->jpg_settings.img_width;
+ sel->r.height = zr->jpg_settings.img_height;
break;
case V4L2_SEL_TGT_CROP_DEFAULT:
sel->r.top = sel->r.left = 0;
@@ -2202,7 +2196,7 @@ static int zoran_s_selection(struct file *file, void *__fh, struct v4l2_selectio
return -EINVAL;
}

- settings = fh->jpg_settings;
+ settings = zr->jpg_settings;

if (fh->buffers.allocated) {
pci_err(zr->pci_dev, "VIDIOC_S_SELECTION - cannot change settings while active\n");
@@ -2221,28 +2215,25 @@ static int zoran_s_selection(struct file *file, void *__fh, struct v4l2_selectio
return res;

/* accept */
- fh->jpg_settings = settings;
+ zr->jpg_settings = settings;
return res;
}

static int zoran_g_jpegcomp(struct file *file, void *__fh, struct v4l2_jpegcompression *params)
{
- struct zoran_fh *fh = __fh;
+ struct zoran *zr = video_drvdata(file);

memset(params, 0, sizeof(*params));

- params->quality = fh->jpg_settings.jpg_comp.quality;
- params->APPn = fh->jpg_settings.jpg_comp.APPn;
- memcpy(params->APP_data,
- fh->jpg_settings.jpg_comp.APP_data,
- fh->jpg_settings.jpg_comp.APP_len);
- params->APP_len = fh->jpg_settings.jpg_comp.APP_len;
- memcpy(params->COM_data,
- fh->jpg_settings.jpg_comp.COM_data,
- fh->jpg_settings.jpg_comp.COM_len);
- params->COM_len = fh->jpg_settings.jpg_comp.COM_len;
- params->jpeg_markers =
- fh->jpg_settings.jpg_comp.jpeg_markers;
+ params->quality = zr->jpg_settings.jpg_comp.quality;
+ params->APPn = zr->jpg_settings.jpg_comp.APPn;
+ memcpy(params->APP_data, zr->jpg_settings.jpg_comp.APP_data,
+ zr->jpg_settings.jpg_comp.APP_len);
+ params->APP_len = zr->jpg_settings.jpg_comp.APP_len;
+ memcpy(params->COM_data, zr->jpg_settings.jpg_comp.COM_data,
+ zr->jpg_settings.jpg_comp.COM_len);
+ params->COM_len = zr->jpg_settings.jpg_comp.COM_len;
+ params->jpeg_markers = zr->jpg_settings.jpg_comp.jpeg_markers;

return 0;
}
@@ -2255,7 +2246,7 @@ static int zoran_s_jpegcomp(struct file *file, void *__fh,
int res = 0;
struct zoran_jpg_settings settings;

- settings = fh->jpg_settings;
+ settings = zr->jpg_settings;

settings.jpg_comp = *params;

@@ -2269,8 +2260,8 @@ static int zoran_s_jpegcomp(struct file *file, void *__fh,
if (res)
return res;
if (!fh->buffers.allocated)
- zr->buffer_size = zoran_v4l2_calc_bufsize(&fh->jpg_settings);
- fh->jpg_settings.jpg_comp = settings.jpg_comp;
+ zr->buffer_size = zoran_v4l2_calc_bufsize(&zr->jpg_settings);
+ zr->jpg_settings.jpg_comp = settings.jpg_comp;
return res;
}

--
2.26.2
\
 
 \ /
  Last update: 2020-09-21 12:21    [W:0.165 / U:5.320 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site