summaryrefslogtreecommitdiffstats
path: root/drivers/media/video/cx2341x.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.osdl.org>2006-12-29 10:06:41 -0800
committerLinus Torvalds <torvalds@woody.osdl.org>2006-12-29 10:06:41 -0800
commit4945b8a553ec735f416596cbf5789c439d16fb38 (patch)
treec159093b9d7ae9395dcca30ebda0e8dc8284e4a6 /drivers/media/video/cx2341x.c
parent6c722e90d7ede7db2d2b28a3cc69a8545db67ea1 (diff)
parent69f7e75a9d45e5eaca16917a8d0dedf76149f13f (diff)
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/mchehab/v4l-dvb
* 'master' of master.kernel.org:/pub/scm/linux/kernel/git/mchehab/v4l-dvb: (28 commits) V4L/DVB (5010): Cx88: Fix leadtek_eeprom tagging V4L/DVB (5012): Usbvision fix: It was using "&&" instead "&" V4L/DVB (5001): Add two required headers on kernel 2.6.20-rc1 V4L/DVB (5014): Allyesconfig build fixes on some non x86 arch V4L/DVB (4997): Bttv: delete duplicated ioremap() V4L/DVB (4996): Msp3400: fix kthread_run error check V4L/DVB (4995): Vivi: fix kthread_run() error check V4L/DVB (4994): Vivi: fix use after free in list_for_each() V4L/DVB (4992): Fix typo in saa7134-dvb.c V4L/DVB (4991): Cafe_ccic.c: fix NULL dereference V4L/DVB (4990): Cpia2/cpia2_usb.c: fix error-path leak V4L/DVB (4988): Cx2341x audio_properties is an u16, not u8 V4L/DVB (4984): LOG_STATUS should show the real temporal filter value. V4L/DVB (4983): Force temporal filter to 0 when scaling to prevent ghosting. V4L/DVB (4982): Fix broken audio mode handling for line-in in msp3400. V4L/DVB (4980): Fixes bug 7267: PAL/60 is not working V4L/DVB (4979): Fixes compilation when CONFIG_V4L1_COMPAT is not selected V4L/DVB (4973): Dvb-core: fix printk type warning V4L/DVB (4972): Dvb-core: fix bug in CRC-32 checking on 64-bit systems V4L/DVB (4970): Usbvision memory fixes ...
Diffstat (limited to 'drivers/media/video/cx2341x.c')
-rw-r--r--drivers/media/video/cx2341x.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/drivers/media/video/cx2341x.c b/drivers/media/video/cx2341x.c
index 657e0b96914..2f5ca71e026 100644
--- a/drivers/media/video/cx2341x.c
+++ b/drivers/media/video/cx2341x.c
@@ -742,7 +742,6 @@ 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;
@@ -752,20 +751,18 @@ 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;
+ }
+ if (new->width != 720 || new->height != (new->is_50hz ? 576 : 480)) {
/* 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.
+ a ghosting effect). So if the capture window is scaled, then
+ force the filter to 0.
- For full resolution a setting of 8 really improves the video
+ For full resolution the filter 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;
- }
+ temporal = 0;
}
if (old == NULL || old->stream_type != new->stream_type) {
@@ -866,6 +863,7 @@ invalid:
void cx2341x_log_status(struct cx2341x_mpeg_params *p, const char *prefix)
{
int is_mpeg1 = p->video_encoding == V4L2_MPEG_VIDEO_ENCODING_MPEG_1;
+ int temporal = p->video_temporal_filter;
/* Stream */
printk(KERN_INFO "%s: Stream: %s\n",
@@ -922,10 +920,13 @@ void cx2341x_log_status(struct cx2341x_mpeg_params *p, const char *prefix)
cx2341x_menu_item(p, V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE),
cx2341x_menu_item(p, V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE),
p->video_spatial_filter);
+ if (p->width != 720 || p->height != (p->is_50hz ? 576 : 480)) {
+ temporal = 0;
+ }
printk(KERN_INFO "%s: Temporal Filter: %s, %d\n",
prefix,
cx2341x_menu_item(p, V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE),
- p->video_temporal_filter);
+ temporal);
printk(KERN_INFO "%s: Median Filter: %s, Luma [%d, %d], Chroma [%d, %d]\n",
prefix,
cx2341x_menu_item(p, V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE),