summaryrefslogtreecommitdiff
path: root/drivers/staging/tm6000/tm6000-core.c
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@redhat.com>2007-11-02 09:51:13 -0300
committerMauro Carvalho Chehab <mchehab@redhat.com>2010-05-18 00:39:52 -0300
commit5200401ad8a80b95b3ba5636580f10adc74b6b60 (patch)
treeb173c7a5a6cabff370d2bb18f9b4de391df41589 /drivers/staging/tm6000/tm6000-core.c
parentd544f2c33f39086fe08cfabe98bd2a36592c5ffb (diff)
V4L/DVB (12808): tm6000: Move analog tv standards to tm6000-stds
tm5600/6000/6010 requires a large config table for video standards. Better to move this to their own file. Also added register settings for tm6010 (needs testing. Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/staging/tm6000/tm6000-core.c')
-rw-r--r--drivers/staging/tm6000/tm6000-core.c340
1 files changed, 0 insertions, 340 deletions
diff --git a/drivers/staging/tm6000/tm6000-core.c b/drivers/staging/tm6000/tm6000-core.c
index bef528f2413b..ddd61ca3d1d0 100644
--- a/drivers/staging/tm6000/tm6000-core.c
+++ b/drivers/staging/tm6000/tm6000-core.c
@@ -380,346 +380,6 @@ int tm6000_init (struct tm6000_core *dev)
return 0;
}
-#define tm6000_wrt(dev,req,reg,val, data...) \
- { const static u8 _val[] = data; \
- tm6000_read_write_usb(dev,USB_DIR_OUT | USB_TYPE_VENDOR, \
- req,reg, val, (u8 *) _val, ARRAY_SIZE(_val)); \
- }
-
-/*
-TM5600/6000 register values to set video standards.
- There's an adjust, common to all, for composite video
- Additional adjustments are required for S-Video, based on std.
-
- Standards values for TV S-Video Changes
-REG PAL PAL_M PAL_N SECAM NTSC Comp. PAL PAL_M PAL_N SECAM NTSC
-0xdf 0x1f 0x1f 0x1f 0x1f 0x1f
-0xe2 0x00 0x00 0x00 0x00 0x00
-0xe8 0x0f 0x0f 0x0f 0x0f 0x0f 0x00 0x00 0x00 0x00 0x00
-0xeb 0x60 0x60 0x60 0x60 0x60 0x64 0x64 0x64 0x64 0x64 0x64
-0xd5 0x5f 0x5f 0x5f 0x4f 0x4f 0x4f 0x4f 0x4f 0x4f 0x4f
-0xe3 0x00 0x00 0x00 0x00 0x00 0x10 0x10 0x10 0x10 0x10 0x10
-0xe5 0x00 0x00 0x00 0x00 0x00 0x10 0x10 0x10 0x10 0x10
-0x3f 0x01 0x01 0x01 0x01 0x01
-0x00 0x32 0x04 0x36 0x38 0x00 0x33 0x05 0x37 0x39 0x01
-0x01 0x0e 0x0e 0x0e 0x0e 0x0f
-0x02 0x5f 0x5f 0x5f 0x5f 0x5f
-0x03 0x02 0x00 0x02 0x02 0x00 0x04 0x04 0x04 0x03 0x03
-0x07 0x01 0x01 0x01 0x01 0x01 0x00 0x00
-0x17 0xcd 0xcd 0xcd 0xcd 0xcd 0x8b
-0x18 0x25 0x1e 0x1e 0x24 0x1e
-0x19 0xd5 0x83 0x91 0x92 0x8b
-0x1a 0x63 0x0a 0x1f 0xe8 0xa2
-0x1b 0x50 0xe0 0x0c 0xed 0xe9
-0x1c 0x1c 0x1c 0x1c 0x1c 0x1c
-0x1d 0xcc 0xcc 0xcc 0xcc 0xcc
-0x1e 0xcc 0xcc 0xcc 0xcc 0xcc
-0x1f 0xcd 0xcd 0xcd 0xcd 0xcd
-0x2e 0x8c 0x88 0x8c 0x8c 0x88 0x88
-0x30 0x2c 0x20 0x2c 0x2c 0x22 0x2a 0x22 0x22 0x2a
-0x31 0xc1 0x61 0xc1 0xc1 0x61
-0x33 0x0c 0x0c 0x0c 0x2c 0x1c
-0x35 0x1c 0x1c 0x1c 0x18 0x1c
-0x82 0x52 0x52 0x52 0x42 0x42
-0x04 0xdc 0xdc 0xdc 0xdd
-0x0d 0x07 0x07 0x07 0x87 0x07
-0x3f 0x00 0x00 0x00 0x00 0x00
-*/
-
-
-void tm6000_get_std_res(struct tm6000_core *dev)
-{
- /* Currently, those are the only supported resoltions */
- if (dev->norm & V4L2_STD_525_60) {
- dev->height=480;
- } else {
- dev->height=576;
- }
- dev->width=720;
-
-printk("tm6000: res= %dx%d\n",dev->width,dev->height);
-}
-
-int tm6000_set_standard (struct tm6000_core *dev, v4l2_std_id *norm)
-{
- dev->norm=*norm;
- tm6000_get_std_res(dev);
-
- /* HACK: Should use, instead, the common code!!! */
- if (*norm & V4L2_STD_PAL_M) {
-printk("calling PAL/M hack\n");
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xdf, 0x1f);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xe2, 0x00);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xe8, 0x0f);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xeb, 0x60);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xd5, 0x5f);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xe3, 0x00);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xe5, 0x00);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x3f, 0x01);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x00, 0x04);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x01, 0x0e);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x02, 0x5f);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x03, 0x00);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x07, 0x01);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x18, 0x1e);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x19, 0x83);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1a, 0x0a);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1b, 0xe0);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1c, 0x1c);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1d, 0xcc);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1e, 0xcc);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1f, 0xcd);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x2e, 0x88);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x30, 0x20);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x31, 0x61);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x33, 0x0c);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x35, 0x1c);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x82, 0x52);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x04, 0xdc);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x0d, 0x07);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x3f, 0x00);
-
- /* Enables audio and AV */
- /* maybe it should be, instead, 0x20 */
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xcc, 0x60);
- tm6000_set_reg (dev, REQ_08_SET_GET_AVREG_BIT, 0x01, 0x80);
-
- return 0;
- }
-
- if (*norm & V4L2_STD_PAL) {
-printk("calling PAL hack\n");
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xdf, 0x1f);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xe2, 0x00);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xe8, 0x0f);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xeb, 0x60);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xd5, 0x5f);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xe3, 0x00);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xe5, 0x00);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x3f, 0x01);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x00, 0x32);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x01, 0x0e);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x02, 0x5f);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x03, 0x02);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x07, 0x01);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x18, 0x25);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x19, 0xd5);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1a, 0x63);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1b, 0x50);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1c, 0x1c);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1d, 0xcc);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1e, 0xcc);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1f, 0xcd);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x2e, 0x8c);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x30, 0x2c);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x31, 0xc1);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x33, 0x0c);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x35, 0x1c);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x82, 0x52);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x04, 0xdc);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x0d, 0x07);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x3f, 0x00);
-
- return 0;
- }
-
- /* */
-// tm6000_set_reg (dev, REQ_04_EN_DISABLE_MCU_INT, 0x02, 0x01);
-// tm6000_set_reg (dev, REQ_04_EN_DISABLE_MCU_INT, 0x02, 0x00);
-
- /* Set registers common to all standards */
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xdf, 0x1f);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xe2, 0x00);
-
- switch (dev->input) {
- case TM6000_INPUT_TV:
- /* Seems to disable ADC2 - needed for TV and RCA */
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xe8, 0x0f);
-
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xeb, 0x60);
-
- if (*norm & V4L2_STD_PAL) {
- /* Enable UV_FLT_EN */
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xd5, 0x5f);
- } else {
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xd5, 0x4f);
- }
-
- /* E3: Select input 0 */
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xe3, 0x00);
-
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xe5, 0x10);
-
- break;
- case TM6000_INPUT_COMPOSITE:
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xeb, 0x64);
- /* E3: Select input 1 */
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xe3, 0x10);
- break;
- case TM6000_INPUT_SVIDEO:
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xe8, 0x00);
-
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xeb, 0x64);
-
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xd5, 0x4f);
- /* E3: Select input 1 */
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xe3, 0x10);
-
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xe5, 0x10);
-
- break;
- }
-
- /* Software reset */
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x3f, 0x01);
-
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x02, 0x5f);
-
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x07, 0x01);
-// tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x17, 0xcd);
-
- /* Horizontal Sync DTO = 0x1ccccccd */
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1c, 0x1c);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1d, 0xcc);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1e, 0xcc);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1f, 0xcd);
-
- /* Vertical Height */
- if (*norm & V4L2_STD_525_60) {
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x31, 0x61);
- } else {
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x31, 0xc1);
- }
-
- /* Horizontal Length */
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x2f, 640/8);
-
- if (*norm & V4L2_STD_PAL) {
- /* Common to All PAL Standards */
-
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x01, 0x0e);
-
- /* Vsync Hsinc Lockout End */
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x33, 0x0c);
-
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x35, 0x1c);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x82, 0x52);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x04, 0xdc);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x0d, 0x07);
- if (*norm & V4L2_STD_PAL_M) {
-
- /* Chroma DTO */
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x18, 0x1e);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x19, 0x83);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1a, 0x0a);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1b, 0xe0);
-
- /* Active Video Horiz Start Time */
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x2e, 0x88);
-
- if (dev->input==TM6000_INPUT_SVIDEO) {
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x00, 0x05);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x03, 0x04);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x30, 0x22);
- } else {
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x00, 0x04);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x03, 0x00);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x30, 0x20);
- }
- } else if (*norm & V4L2_STD_PAL_N) {
- /* Chroma DTO */
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x18, 0x1e);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x19, 0x91);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1a, 0x1f);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1b, 0x0c);
-
- if (dev->input==TM6000_INPUT_SVIDEO) {
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x00, 0x37);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x03, 0x04);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x2e, 0x88);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x30, 0x22);
- } else {
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x00, 0x36);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x03, 0x02);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x2e, 0x8c);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x30, 0x2c);
- }
- } else { // Other PAL standards
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x18, 0x25);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x19, 0xd5);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1a, 0x63);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1b, 0x50);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x2e, 0x8c);
-
- if (dev->input==TM6000_INPUT_SVIDEO) {
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x00, 0x33);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x03, 0x04);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x30, 0x2a);
-
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x30, 0x2c);
- } else {
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x00, 0x32);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x03, 0x02);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x30, 0x2c);
- }
- }
- } if (*norm & V4L2_STD_SECAM) {
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x01, 0x0e);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x18, 0x24);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x19, 0x92);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1a, 0xe8);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1b, 0xed);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x2e, 0x8c);
-
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x33, 0x2c);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x35, 0x18);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x82, 0x42);
- // Register 0x04 is not initialized on SECAM
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x0d, 0x87);
-
- if (dev->input==TM6000_INPUT_SVIDEO) {
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x00, 0x39);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x03, 0x03);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x30, 0x2a);
- } else {
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x00, 0x38);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x03, 0x02);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x30, 0x2c);
- }
- } else { /* NTSC */
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x01, 0x0f);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x18, 0x1e);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x19, 0x8b);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1a, 0xa2);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1b, 0xe9);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x2e, 0x88);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x30, 0x22);
-
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x33, 0x1c);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x35, 0x1c);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x82, 0x42);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x0d, 0x07);
- if (dev->input==TM6000_INPUT_SVIDEO) {
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x00, 0x01);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x03, 0x03);
-
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x07, 0x00);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x17, 0x8b);
- } else {
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x00, 0x00);
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x03, 0x00);
- }
- }
-
-
- /* End of software reset */
- tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x3f, 0x00);
-
- msleep(40);
-
- return 0;
-}
-
int tm6000_set_audio_bitrate (struct tm6000_core *dev, int bitrate)
{
int val;