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);