[cvs] / xvidcore / src / xvid.c Repository:
ViewVC logotype

Diff of /xvidcore/src/xvid.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.81, Tue Jun 2 13:06:49 2009 UTC revision 1.86, Fri Dec 31 11:30:38 2010 UTC
# Line 4  Line 4 
4   *  - Native API implementation  -   *  - Native API implementation  -
5   *   *
6   *  Copyright(C) 2001-2004 Peter Ross <pross@xvid.org>   *  Copyright(C) 2001-2004 Peter Ross <pross@xvid.org>
7     *               2002-2010 Michael Militzer <isibaar@xvid.org>
8   *   *
9   *  This program is free software ; you can redistribute it and/or modify   *  This program is free software ; you can redistribute it and/or modify
10   *  it under the terms of the GNU General Public License as published by   *  it under the terms of the GNU General Public License as published by
# Line 43  Line 44 
44  #endif  #endif
45  #endif  #endif
46    
47    #if defined(__amigaos4__)
48    #include <exec/exec.h>
49    #include <proto/exec.h>
50    #endif
51    
52  #include "xvid.h"  #include "xvid.h"
53  #include "decoder.h"  #include "decoder.h"
54  #include "encoder.h"  #include "encoder.h"
# Line 69  Line 75 
75    
76  #if (defined(ARCH_IS_IA32) || defined(ARCH_IS_X86_64)) && defined(_MSC_VER)  #if (defined(ARCH_IS_IA32) || defined(ARCH_IS_X86_64)) && defined(_MSC_VER)
77  #       include <windows.h>  #       include <windows.h>
78  #elif defined(ARCH_IS_IA32) || defined(ARCH_IS_X86_64) || defined(ARCH_IS_PPC)  #elif defined(ARCH_IS_IA32) || defined(ARCH_IS_X86_64) || (defined(ARCH_IS_PPC) && !defined(__amigaos4__))
79  #       include <signal.h>  #       include <signal.h>
80  #       include <setjmp.h>  #       include <setjmp.h>
81    
# Line 82  Line 88 
88          }          }
89  #endif  #endif
90    
   
91  /*  /*
92   * Calls the funcptr, and returns whether SIGILL (illegal instruction) was   * Calls the funcptr, and returns whether SIGILL (illegal instruction) was
93   * signalled   * signalled
# Line 105  Line 110 
110          }          }
111          return(0);          return(0);
112  }  }
113  #elif defined(ARCH_IS_IA32) || defined(ARCH_IS_X86_64) || defined(ARCH_IS_PPC)  #elif defined(ARCH_IS_IA32) || defined(ARCH_IS_X86_64) || (defined(ARCH_IS_PPC) && !defined(__amigaos4__))
114  static int  static int
115  sigill_check(void (*func)())  sigill_check(void (*func)())
116  {  {
# Line 157  Line 162 
162  #endif  #endif
163    
164  #if defined(ARCH_IS_PPC)  #if defined(ARCH_IS_PPC)
165    #if defined(__amigaos4__)
166            {
167                    uint32_t vector_unit = VECTORTYPE_NONE;
168                    IExec->GetCPUInfoTags(GCIT_VectorUnit, &vector_unit, TAG_END);
169                    if (vector_unit == VECTORTYPE_ALTIVEC) {
170                            cpu_flags |= XVID_CPU_ALTIVEC;
171                    }
172            }
173    #else
174          if (!sigill_check(altivec_trigger))          if (!sigill_check(altivec_trigger))
175                  cpu_flags |= XVID_CPU_ALTIVEC;                  cpu_flags |= XVID_CPU_ALTIVEC;
176  #endif  #endif
177    #endif
178    
179          return cpu_flags;          return cpu_flags;
180  }  }
181    
182    
183  /*****************************************************************************  /*****************************************************************************
184   * XviD Init Entry point   * Xvid Init Entry point
185   *   *
186   * Well this function initialize all internal function pointers according   * Well this function initialize all internal function pointers according
187   * to the CPU features forced by the library client or autodetected (depending   * to the CPU features forced by the library client or autodetected (depending
# Line 324  Line 339 
339          sse8_16bit = sse8_16bit_c;          sse8_16bit = sse8_16bit_c;
340          sse8_8bit  = sse8_8bit_c;          sse8_8bit  = sse8_8bit_c;
341    
342            sseh8_16bit   = sseh8_16bit_c;
343            coeff8_energy = coeff8_energy_c;
344            blocksum8     = blocksum8_c;
345    
346          init_GMC(cpu_flags);          init_GMC(cpu_flags);
347    
348  #if defined(ARCH_IS_IA32) || defined(ARCH_IS_X86_64)  #if defined(ARCH_IS_IA32) || defined(ARCH_IS_X86_64)
# Line 555  Line 574 
574                  sad16    = sad16_sse2;                  sad16    = sad16_sse2;
575                  dev16    = dev16_sse2;                  dev16    = dev16_sse2;
576    
577                    /* PSNR-HVS-M distortion metric */
578                    sseh8_16bit   = sseh8_16bit_sse2;
579                    coeff8_energy = coeff8_energy_sse2;
580                    blocksum8     = blocksum8_sse2;
581    
582                  /* DCT operators */                  /* DCT operators */
583                  fdct = fdct_sse2_skal;                  fdct = fdct_sse2_skal;
584                  idct = idct_sse2_skal;   /* Is now IEEE1180 and Walken compliant. */                  idct = idct_sse2_skal;   /* Is now IEEE1180 and Walken compliant. */
# Line 676  Line 700 
700                  return XVID_ERR_VERSION;                  return XVID_ERR_VERSION;
701    
702          info->actual_version = XVID_VERSION;          info->actual_version = XVID_VERSION;
703          info->build = "xvid-1.3.0-dev";          info->build = "xvid-1.4.0-dev";
704          info->cpu_flags = detect_cpu_flags();          info->cpu_flags = detect_cpu_flags();
705          info->num_threads = 0; /* single-thread */          info->num_threads = 0; /* single-thread */
706    
# Line 707  Line 731 
731        info -> num_threads = 1;        info -> num_threads = 1;
732    }    }
733    
734    #elif defined(__amigaos4__)
735    
736      {
737        uint32_t num_threads = 1;
738        IExec->GetCPUInfoTags(GCIT_NumberOfCPUs, &num_threads, TAG_END);
739        info->num_threads = num_threads;
740      }
741    
742  #endif  #endif
743    
744          return 0;          return 0;
# Line 744  Line 776 
776                                                  convert->output.csp, convert->interlacing);                                                  convert->output.csp, convert->interlacing);
777                          break;                          break;
778    
779                    case XVID_CSP_INTERNAL :
780                            img.y = (uint8_t*)convert->input.plane[0];
781                            img.u = (uint8_t*)convert->input.plane[1];
782                            img.v = (uint8_t*)convert->input.plane[2];
783                            image_output(&img, width, height, convert->input.stride[0],
784                                                    (uint8_t**)convert->output.plane, convert->output.stride,
785                                                    convert->output.csp, convert->interlacing);
786                            break;
787    
788                  default :                  default :
789                          return XVID_ERR_FORMAT;                          return XVID_ERR_FORMAT;
790          }          }
# Line 754  Line 795 
795  }  }
796    
797  /*****************************************************************************  /*****************************************************************************
798   * XviD Global Entry point   * Xvid Global Entry point
799   *   *
800   * Well this function initialize all internal function pointers according   * Well this function initialize all internal function pointers according
801   * to the CPU features forced by the library client or autodetected (depending   * to the CPU features forced by the library client or autodetected (depending
# Line 787  Line 828 
828  }  }
829    
830  /*****************************************************************************  /*****************************************************************************
831   * XviD Native decoder entry point   * Xvid Native decoder entry point
832   *   *
833   * This function is just a wrapper to all the option cases.   * This function is just a wrapper to all the option cases.
834   *   *
# Line 819  Line 860 
860    
861    
862  /*****************************************************************************  /*****************************************************************************
863   * XviD Native encoder entry point   * Xvid Native encoder entry point
864   *   *
865   * This function is just a wrapper to all the option cases.   * This function is just a wrapper to all the option cases.
866   *   *

Legend:
Removed from v.1.81  
changed lines
  Added in v.1.86

No admin address has been configured
ViewVC Help
Powered by ViewVC 1.0.4