Mercurial > mplayer.hg
comparison drivers/mga_vid.c @ 470:8e101a5d9dc2
I420/IYUV support
author | arpi_esp |
---|---|
date | Mon, 16 Apr 2001 03:33:35 +0000 |
parents | c7c03bf70bb7 |
children | 4a959b73d51e |
comparison
equal
deleted
inserted
replaced
469:434889ca2340 | 470:8e101a5d9dc2 |
---|---|
393 | 393 |
394 regs.besglobctl = 0; | 394 regs.besglobctl = 0; |
395 | 395 |
396 switch(config->format){ | 396 switch(config->format){ |
397 case MGA_VID_FORMAT_YV12: | 397 case MGA_VID_FORMAT_YV12: |
398 case MGA_VID_FORMAT_I420: | |
399 case MGA_VID_FORMAT_IYUV: | |
398 regs.besctl = 1 // BES enabled | 400 regs.besctl = 1 // BES enabled |
399 + (0<<6) // even start polarity | 401 + (0<<6) // even start polarity |
400 + (1<<10) // x filtering enabled | 402 + (1<<10) // x filtering enabled |
401 + (1<<11) // y filtering enabled | 403 + (1<<11) // y filtering enabled |
402 + (1<<16) // chroma upsampling | 404 + (1<<16) // chroma upsampling |
482 regs.besa1org = (uint32_t) mga_src_base + baseadrofs; | 484 regs.besa1org = (uint32_t) mga_src_base + baseadrofs; |
483 regs.besa2org = (uint32_t) mga_src_base + baseadrofs + 1*frame_size; | 485 regs.besa2org = (uint32_t) mga_src_base + baseadrofs + 1*frame_size; |
484 regs.besb1org = (uint32_t) mga_src_base + baseadrofs + 2*frame_size; | 486 regs.besb1org = (uint32_t) mga_src_base + baseadrofs + 2*frame_size; |
485 regs.besb2org = (uint32_t) mga_src_base + baseadrofs + 3*frame_size; | 487 regs.besb2org = (uint32_t) mga_src_base + baseadrofs + 3*frame_size; |
486 | 488 |
487 if(config->format==MGA_VID_FORMAT_YV12){ | 489 if(config->format==MGA_VID_FORMAT_YV12 |
490 ||config->format==MGA_VID_FORMAT_IYUV | |
491 ||config->format==MGA_VID_FORMAT_I420 | |
492 ){ | |
488 // planar YUV frames: | 493 // planar YUV frames: |
489 if (is_g400) | 494 if (is_g400) |
490 baseadrofs = (((ofstop*regs.besviscal)/4)>>16)*regs.bespitch; | 495 baseadrofs = (((ofstop*regs.besviscal)/4)>>16)*regs.bespitch; |
491 else | 496 else |
492 baseadrofs = (((ofstop*regs.besviscal)/2)>>16)*regs.bespitch; | 497 baseadrofs = (((ofstop*regs.besviscal)/2)>>16)*regs.bespitch; |
493 | 498 |
499 if(config->format==MGA_VID_FORMAT_YV12){ | |
494 regs.besa1corg = (uint32_t) mga_src_base + baseadrofs + regs.bespitch * sh ; | 500 regs.besa1corg = (uint32_t) mga_src_base + baseadrofs + regs.bespitch * sh ; |
495 regs.besa2corg = (uint32_t) mga_src_base + baseadrofs + 1*frame_size + regs.bespitch * sh; | 501 regs.besa2corg = (uint32_t) mga_src_base + baseadrofs + 1*frame_size + regs.bespitch * sh; |
496 regs.besb1corg = (uint32_t) mga_src_base + baseadrofs + 2*frame_size + regs.bespitch * sh; | 502 regs.besb1corg = (uint32_t) mga_src_base + baseadrofs + 2*frame_size + regs.bespitch * sh; |
497 regs.besb2corg = (uint32_t) mga_src_base + baseadrofs + 3*frame_size + regs.bespitch * sh; | 503 regs.besb2corg = (uint32_t) mga_src_base + baseadrofs + 3*frame_size + regs.bespitch * sh; |
498 regs.besa1c3org = regs.besa1corg + ((regs.bespitch * sh) / 4); | 504 regs.besa1c3org = regs.besa1corg + ((regs.bespitch * sh) / 4); |
499 regs.besa2c3org = regs.besa2corg + ((regs.bespitch * sh) / 4); | 505 regs.besa2c3org = regs.besa2corg + ((regs.bespitch * sh) / 4); |
500 regs.besb1c3org = regs.besb1corg + ((regs.bespitch * sh) / 4); | 506 regs.besb1c3org = regs.besb1corg + ((regs.bespitch * sh) / 4); |
501 regs.besb2c3org = regs.besb2corg + ((regs.bespitch * sh) / 4); | 507 regs.besb2c3org = regs.besb2corg + ((regs.bespitch * sh) / 4); |
508 } else { | |
509 regs.besa1c3org = (uint32_t) mga_src_base + baseadrofs + regs.bespitch * sh ; | |
510 regs.besa2c3org = (uint32_t) mga_src_base + baseadrofs + 1*frame_size + regs.bespitch * sh; | |
511 regs.besb1c3org = (uint32_t) mga_src_base + baseadrofs + 2*frame_size + regs.bespitch * sh; | |
512 regs.besb2c3org = (uint32_t) mga_src_base + baseadrofs + 3*frame_size + regs.bespitch * sh; | |
513 regs.besa1corg = regs.besa1c3org + ((regs.bespitch * sh) / 4); | |
514 regs.besa2corg = regs.besa2c3org + ((regs.bespitch * sh) / 4); | |
515 regs.besb1corg = regs.besb1c3org + ((regs.bespitch * sh) / 4); | |
516 regs.besb2corg = regs.besb2c3org + ((regs.bespitch * sh) / 4); | |
517 } | |
518 | |
502 } | 519 } |
503 | 520 |
504 weight = ofstop * (regs.besviscal >> 2); | 521 weight = ofstop * (regs.besviscal >> 2); |
505 weights = weight < 0 ? 1 : 0; | 522 weights = weight < 0 ? 1 : 0; |
506 regs.besv2wght = regs.besv1wght = (weights << 16) + ((weight & 0x3FFF) << 2); | 523 regs.besv2wght = regs.besv1wght = (weights << 16) + ((weight & 0x3FFF) << 2); |