Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 37437
b: refs/heads/master
c: 44b579d
h: refs/heads/master
i:
  37435: 134468e
v: v3
  • Loading branch information
Hans Verkuil authored and Mauro Carvalho Chehab committed Sep 26, 2006
1 parent db1de48 commit 277bfd4
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 4 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 299006612a811ba5acc92e2686f2e8b8bc10d4b7
refs/heads/master: 44b579d63678609a16265a0acdb6405fafd173d6
25 changes: 22 additions & 3 deletions trunk/drivers/media/video/cx2341x.c
Original file line number Diff line number Diff line change
Expand Up @@ -691,7 +691,7 @@ void cx2341x_fill_defaults(struct cx2341x_mpeg_params *p)
.video_luma_spatial_filter_type = V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_HOR,
.video_chroma_spatial_filter_type = V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_1D_HOR,
.video_temporal_filter_mode = V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_MANUAL,
.video_temporal_filter = 0,
.video_temporal_filter = 8,
.video_median_filter_type = V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_OFF,
.video_luma_median_filter_top = 255,
.video_luma_median_filter_bottom = 0,
Expand Down Expand Up @@ -731,6 +731,7 @@ int cx2341x_update(void *priv, cx2341x_mbox_func func,
};

int err = 0;
u16 temporal = new->video_temporal_filter;

cx2341x_api(priv, func, CX2341X_ENC_SET_OUTPUT_PORT, 2, new->port, 0);

Expand All @@ -741,6 +742,7 @@ int cx2341x_update(void *priv, cx2341x_mbox_func func,

if (old == NULL || old->width != new->width || old->height != new->height ||
old->video_encoding != new->video_encoding) {
int is_scaling;
u16 w = new->width;
u16 h = new->height;

Expand All @@ -750,6 +752,20 @@ int cx2341x_update(void *priv, cx2341x_mbox_func func,
}
err = cx2341x_api(priv, func, CX2341X_ENC_SET_FRAME_SIZE, 2, h, w);
if (err) return err;

/* Adjust temporal filter if necessary. The problem with the temporal
filter is that it works well with full resolution capturing, but
not when the capture window is scaled (the filter introduces
a ghosting effect). So if the capture window changed, and there is
no updated filter value, then the filter is set depending on whether
the new window is full resolution or not.
For full resolution a setting of 8 really improves the video
quality, especially if the original video quality is suboptimal. */
is_scaling = new->width != 720 || new->height != (new->is_50hz ? 576 : 480);
if (old && old->video_temporal_filter == temporal) {
temporal = is_scaling ? 0 : 8;
}
}

if (old == NULL || old->stream_type != new->stream_type) {
Expand Down Expand Up @@ -815,9 +831,9 @@ int cx2341x_update(void *priv, cx2341x_mbox_func func,
}
if (old == NULL ||
old->video_spatial_filter != new->video_spatial_filter ||
old->video_temporal_filter != new->video_temporal_filter) {
old->video_temporal_filter != temporal) {
err = cx2341x_api(priv, func, CX2341X_ENC_SET_DNR_FILTER_PROPS, 2,
new->video_spatial_filter, new->video_temporal_filter);
new->video_spatial_filter, temporal);
if (err) return err;
}
if (old == NULL || old->video_temporal_decimation != new->video_temporal_decimation) {
Expand Down Expand Up @@ -855,6 +871,9 @@ void cx2341x_log_status(struct cx2341x_mpeg_params *p, const char *prefix)
printk(KERN_INFO "%s: Stream: %s\n",
prefix,
cx2341x_menu_item(p, V4L2_CID_MPEG_STREAM_TYPE));
printk(KERN_INFO "%s: VBI Format: %s\n",
prefix,
cx2341x_menu_item(p, V4L2_CID_MPEG_STREAM_VBI_FMT));

/* Video */
printk(KERN_INFO "%s: Video: %dx%d, %d fps\n",
Expand Down

0 comments on commit 277bfd4

Please sign in to comment.