[xiph-commits] r12842 - in experimental/j/theora-mashup: lib lib/enc macosx/Theora.xcodeproj

j at svn.xiph.org j at svn.xiph.org
Mon Apr 9 12:12:25 PDT 2007


Author: j
Date: 2007-04-09 12:12:19 -0700 (Mon, 09 Apr 2007)
New Revision: 12842

Added:
   experimental/j/theora-mashup/lib/enc/encoder_huffman.c
   experimental/j/theora-mashup/lib/enc/encoder_huffman.h
Removed:
   experimental/j/theora-mashup/lib/enc/huffman.c
   experimental/j/theora-mashup/lib/enc/huffman.h
Modified:
   experimental/j/theora-mashup/lib/Makefile.am
   experimental/j/theora-mashup/lib/cpu.c
   experimental/j/theora-mashup/lib/enc/codec_internal.h
   experimental/j/theora-mashup/macosx/Theora.xcodeproj/project.pbxproj
Log:
- rename huffman.[hc] in from the encoder to avoid problems with dec/huffman.h
- update XCode Project



Modified: experimental/j/theora-mashup/lib/Makefile.am
===================================================================
--- experimental/j/theora-mashup/lib/Makefile.am	2007-04-09 18:14:16 UTC (rev 12841)
+++ experimental/j/theora-mashup/lib/Makefile.am	2007-04-09 19:12:19 UTC (rev 12842)
@@ -28,6 +28,7 @@
 encoder_sources = \
 	enc/dct_encode.c \
 	enc/encode.c \
+	enc/encoder_huffman.c \
 	enc/encoder_idct.c \
 	enc/encoder_toplevel.c \
 	enc/encoder_quant.c \
@@ -37,7 +38,6 @@
 	enc/dct_decode.c \
 	enc/frarray.c \
 	enc/frinit.c \
-	enc/huffman.c \
 	enc/mcomp.c \
 	enc/misc_common.c \
 	enc/pb.c \
@@ -112,7 +112,7 @@
 	enc/block_inline.h \
 	enc/codec_internal.h \
 	enc/encoder_lookup.h \
-	enc/huffman.h \
+	enc/encoder_huffman.h \
 	enc/hufftables.h \
 	enc/pp.h \
 	enc/quant_lookup.h \

Modified: experimental/j/theora-mashup/lib/cpu.c
===================================================================
--- experimental/j/theora-mashup/lib/cpu.c	2007-04-09 18:14:16 UTC (rev 12841)
+++ experimental/j/theora-mashup/lib/cpu.c	2007-04-09 19:12:19 UTC (rev 12842)
@@ -14,14 +14,14 @@
 
 #include "cpu.h"
 
-#if defined(USE_ASM)
 
 ogg_uint32_t oc_cpu_flags_get(void){
+  ogg_uint32_t flags;
+#if defined(USE_ASM)
   ogg_uint32_t eax;
   ogg_uint32_t ebx;
   ogg_uint32_t ecx;
   ogg_uint32_t edx;
-  ogg_uint32_t flags;
 #if (defined(__amd64__) || defined(__x86_64__))
 # define cpuid(_op,_eax,_ebx,_ecx,_edx) \
   __asm__ __volatile__( \
@@ -107,8 +107,8 @@
     TH_DEBUG("\n");
   }
 #endif
+#endif
   
   return flags;
 }
 
-#endif

Modified: experimental/j/theora-mashup/lib/enc/codec_internal.h
===================================================================
--- experimental/j/theora-mashup/lib/enc/codec_internal.h	2007-04-09 18:14:16 UTC (rev 12841)
+++ experimental/j/theora-mashup/lib/enc/codec_internal.h	2007-04-09 19:12:19 UTC (rev 12842)
@@ -23,7 +23,7 @@
 #endif
 
 #include "theora/theora.h"
-#include "huffman.h"
+#include "encoder_huffman.h"
 #include "dsp.h"
 
 #ifndef LIBOGG2

Copied: experimental/j/theora-mashup/lib/enc/encoder_huffman.c (from rev 12737, experimental/j/theora-mashup/lib/enc/huffman.c)

Copied: experimental/j/theora-mashup/lib/enc/encoder_huffman.h (from rev 12737, experimental/j/theora-mashup/lib/enc/huffman.h)

Deleted: experimental/j/theora-mashup/lib/enc/huffman.c
===================================================================
--- experimental/j/theora-mashup/lib/enc/huffman.c	2007-04-09 18:14:16 UTC (rev 12841)
+++ experimental/j/theora-mashup/lib/enc/huffman.c	2007-04-09 19:12:19 UTC (rev 12842)
@@ -1,310 +0,0 @@
-/********************************************************************
- *                                                                  *
- * THIS FILE IS PART OF THE OggTheora SOFTWARE CODEC SOURCE CODE.   *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
- * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
- * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
- *                                                                  *
- * THE Theora SOURCE CODE IS COPYRIGHT (C) 2002-2003                *
- * by the Xiph.Org Foundation http://www.xiph.org/                  *
- *                                                                  *
- ********************************************************************
-
-  function:
-  last mod: $Id$
-
- ********************************************************************/
-
-#include <stdlib.h>
-#include <stdio.h>
-#include "codec_internal.h"
-#include "hufftables.h"
-
-static void CreateHuffmanList(HUFF_ENTRY ** HuffRoot,
-                              ogg_uint32_t HIndex,
-                              const ogg_uint32_t *FreqList ) {
-  int i;
-  HUFF_ENTRY *entry_ptr;
-  HUFF_ENTRY *search_ptr;
-
-  /* Create a HUFF entry for token zero. */
-  HuffRoot[HIndex] = (HUFF_ENTRY *)_ogg_calloc(1,sizeof(*HuffRoot[HIndex]));
-
-  HuffRoot[HIndex]->Previous = NULL;
-  HuffRoot[HIndex]->Next = NULL;
-  HuffRoot[HIndex]->ZeroChild = NULL;
-  HuffRoot[HIndex]->OneChild = NULL;
-  HuffRoot[HIndex]->Value = 0;
-  HuffRoot[HIndex]->Frequency = FreqList[0];
-
-  if ( HuffRoot[HIndex]->Frequency == 0 )
-    HuffRoot[HIndex]->Frequency = 1;
-
-  /* Now add entries for all the other possible tokens. */
-  for ( i = 1; i < MAX_ENTROPY_TOKENS; i++ ) {
-    entry_ptr = (HUFF_ENTRY *)_ogg_calloc(1,sizeof(*entry_ptr));
-
-    entry_ptr->Value = i;
-    entry_ptr->Frequency = FreqList[i];
-    entry_ptr->ZeroChild = NULL;
-    entry_ptr->OneChild = NULL;
-
-    /* Force min value of 1. This prevents the tree getting too deep. */
-    if ( entry_ptr->Frequency == 0 )
-      entry_ptr->Frequency = 1;
-
-    if ( entry_ptr->Frequency <= HuffRoot[HIndex]->Frequency ){
-      entry_ptr->Next = HuffRoot[HIndex];
-      HuffRoot[HIndex]->Previous = entry_ptr;
-      entry_ptr->Previous = NULL;
-      HuffRoot[HIndex] = entry_ptr;
-    }else{
-      search_ptr = HuffRoot[HIndex];
-      while ( (search_ptr->Next != NULL) &&
-              (search_ptr->Frequency < entry_ptr->Frequency) ){
-        search_ptr = (HUFF_ENTRY *)search_ptr->Next;
-      }
-
-      if ( search_ptr->Frequency < entry_ptr->Frequency ){
-        entry_ptr->Next = NULL;
-        entry_ptr->Previous = search_ptr;
-        search_ptr->Next = entry_ptr;
-      }else{
-        entry_ptr->Next = search_ptr;
-        entry_ptr->Previous = search_ptr->Previous;
-        search_ptr->Previous->Next = entry_ptr;
-        search_ptr->Previous = entry_ptr;
-      }
-    }
-  }
-}
-
-static void CreateCodeArray( HUFF_ENTRY * HuffRoot,
-                      ogg_uint32_t *HuffCodeArray,
-                      unsigned char *HuffCodeLengthArray,
-                      ogg_uint32_t CodeValue,
-                      unsigned char CodeLength ) {
-
-  /* If we are at a leaf then fill in a code array entry. */
-  if ( ( HuffRoot->ZeroChild == NULL ) && ( HuffRoot->OneChild == NULL ) ){
-    HuffCodeArray[HuffRoot->Value] = CodeValue;
-    HuffCodeLengthArray[HuffRoot->Value] = CodeLength;
-  }else{
-    /* Recursive calls to scan down the tree. */
-    CodeLength++;
-    CreateCodeArray(HuffRoot->ZeroChild, HuffCodeArray, HuffCodeLengthArray,
-                    ((CodeValue << 1) + 0), CodeLength);
-    CreateCodeArray(HuffRoot->OneChild, HuffCodeArray, HuffCodeLengthArray,
-                    ((CodeValue << 1) + 1), CodeLength);
-  }
-}
-
-static void  BuildHuffmanTree( HUFF_ENTRY **HuffRoot,
-                        ogg_uint32_t *HuffCodeArray,
-                        unsigned char *HuffCodeLengthArray,
-                        ogg_uint32_t HIndex,
-                        const ogg_uint32_t *FreqList ){
-
-  HUFF_ENTRY *entry_ptr;
-  HUFF_ENTRY *search_ptr;
-
-  /* First create a sorted linked list representing the frequencies of
-     each token. */
-  CreateHuffmanList( HuffRoot, HIndex, FreqList );
-
-  /* Now build the tree from the list. */
-
-  /* While there are at least two items left in the list. */
-  while ( HuffRoot[HIndex]->Next != NULL ){
-    /* Create the new node as the parent of the first two in the list. */
-    entry_ptr = (HUFF_ENTRY *)_ogg_calloc(1,sizeof(*entry_ptr));
-    entry_ptr->Value = -1;
-    entry_ptr->Frequency = HuffRoot[HIndex]->Frequency +
-      HuffRoot[HIndex]->Next->Frequency ;
-    entry_ptr->ZeroChild = HuffRoot[HIndex];
-    entry_ptr->OneChild = HuffRoot[HIndex]->Next;
-
-    /* If there are still more items in the list then insert the new
-       node into the list. */
-    if (entry_ptr->OneChild->Next != NULL ){
-      /* Set up the provisional 'new root' */
-      HuffRoot[HIndex] = entry_ptr->OneChild->Next;
-      HuffRoot[HIndex]->Previous = NULL;
-
-      /* Now scan through the remaining list to insert the new entry
-         at the appropriate point. */
-      if ( entry_ptr->Frequency <= HuffRoot[HIndex]->Frequency ){
-        entry_ptr->Next = HuffRoot[HIndex];
-        HuffRoot[HIndex]->Previous = entry_ptr;
-        entry_ptr->Previous = NULL;
-        HuffRoot[HIndex] = entry_ptr;
-      }else{
-        search_ptr = HuffRoot[HIndex];
-        while ( (search_ptr->Next != NULL) &&
-                (search_ptr->Frequency < entry_ptr->Frequency) ){
-          search_ptr = search_ptr->Next;
-        }
-
-        if ( search_ptr->Frequency < entry_ptr->Frequency ){
-          entry_ptr->Next = NULL;
-          entry_ptr->Previous = search_ptr;
-          search_ptr->Next = entry_ptr;
-        }else{
-          entry_ptr->Next = search_ptr;
-          entry_ptr->Previous = search_ptr->Previous;
-          search_ptr->Previous->Next = entry_ptr;
-          search_ptr->Previous = entry_ptr;
-        }
-      }
-    }else{
-      /* Build has finished. */
-      entry_ptr->Next = NULL;
-      entry_ptr->Previous = NULL;
-      HuffRoot[HIndex] = entry_ptr;
-    }
-
-    /* Delete the Next/Previous properties of the children (PROB NOT NEC). */
-    entry_ptr->ZeroChild->Next = NULL;
-    entry_ptr->ZeroChild->Previous = NULL;
-    entry_ptr->OneChild->Next = NULL;
-    entry_ptr->OneChild->Previous = NULL;
-
-  }
-
-  /* Now build a code array from the tree. */
-  CreateCodeArray( HuffRoot[HIndex], HuffCodeArray,
-                   HuffCodeLengthArray, 0, 0);
-}
-
-static void  DestroyHuffTree(HUFF_ENTRY *root_ptr){
-  if (root_ptr){
-    if ( root_ptr->ZeroChild )
-      DestroyHuffTree(root_ptr->ZeroChild);
-
-    if ( root_ptr->OneChild )
-      DestroyHuffTree(root_ptr->OneChild);
-
-    _ogg_free(root_ptr);
-  }
-}
-
-void ClearHuffmanSet( PB_INSTANCE *pbi ){
-  int i;
-
-  ClearHuffmanTrees(pbi->HuffRoot_VP3x);
-
-  for ( i = 0; i < NUM_HUFF_TABLES; i++ )
-    if (pbi->HuffCodeArray_VP3x[i])
-      _ogg_free (pbi->HuffCodeArray_VP3x[i]);
-
-  for ( i = 0; i < NUM_HUFF_TABLES; i++ )
-    if (pbi->HuffCodeLengthArray_VP3x[i])
-      _ogg_free (pbi->HuffCodeLengthArray_VP3x[i]);
-}
-
-void InitHuffmanSet( PB_INSTANCE *pbi ){
-  int i;
-
-  ClearHuffmanSet(pbi);
-
-  pbi->ExtraBitLengths_VP3x = ExtraBitLengths_VP31;
-
-  for ( i = 0; i < NUM_HUFF_TABLES; i++ ){
-    pbi->HuffCodeArray_VP3x[i] =
-      _ogg_calloc(MAX_ENTROPY_TOKENS,
-                  sizeof(*pbi->HuffCodeArray_VP3x[i]));
-    pbi->HuffCodeLengthArray_VP3x[i] =
-      _ogg_calloc(MAX_ENTROPY_TOKENS,
-                  sizeof(*pbi->HuffCodeLengthArray_VP3x[i]));
-    BuildHuffmanTree( pbi->HuffRoot_VP3x,
-                      pbi->HuffCodeArray_VP3x[i],
-                      pbi->HuffCodeLengthArray_VP3x[i],
-                      i, FrequencyCounts_VP3[i]);
-  }
-}
-
-static int ReadHuffTree(HUFF_ENTRY * HuffRoot, int depth,
-                        oggpack_buffer *opb) {
-  long bit;
-  long ret;
-  theora_read(opb,1,&bit);
-  if(bit < 0) return OC_BADHEADER;
-  else if(!bit) {
-    int ret;
-    if (++depth > 32) return OC_BADHEADER;
-    HuffRoot->ZeroChild = (HUFF_ENTRY *)_ogg_calloc(1, sizeof(HUFF_ENTRY));
-    ret = ReadHuffTree(HuffRoot->ZeroChild, depth, opb);
-    if (ret < 0) return ret;
-    HuffRoot->OneChild = (HUFF_ENTRY *)_ogg_calloc(1, sizeof(HUFF_ENTRY));
-    ret = ReadHuffTree(HuffRoot->OneChild, depth, opb);
-    if (ret < 0) return ret;
-    HuffRoot->Value = -1;
-  } else {
-    HuffRoot->ZeroChild = NULL;
-    HuffRoot->OneChild = NULL;
-    theora_read(opb,5,&ret);
-    HuffRoot->Value=ret;;
-    if (HuffRoot->Value < 0) return OC_BADHEADER;
-  }
-  return 0;
-}
-
-int ReadHuffmanTrees(codec_setup_info *ci, oggpack_buffer *opb) {
-  int i;
-  for (i=0; i<NUM_HUFF_TABLES; i++) {
-     int ret;
-     ci->HuffRoot[i] = (HUFF_ENTRY *)_ogg_calloc(1, sizeof(HUFF_ENTRY));
-     ret = ReadHuffTree(ci->HuffRoot[i], 0, opb);
-     if (ret) return ret;
-  }
-  return 0;
-}
-
-static void WriteHuffTree(HUFF_ENTRY *HuffRoot, oggpack_buffer *opb) {
-  if (HuffRoot->Value >= 0) {
-    oggpackB_write(opb, 1, 1);
-    oggpackB_write(opb, HuffRoot->Value, 5);
-  } else {
-    oggpackB_write(opb, 0, 1);
-    WriteHuffTree(HuffRoot->ZeroChild, opb);
-    WriteHuffTree(HuffRoot->OneChild, opb);
-  }
-}
-
-void WriteHuffmanTrees(HUFF_ENTRY *HuffRoot[NUM_HUFF_TABLES],
-                       oggpack_buffer *opb) {
-  int i;
-  for(i=0; i<NUM_HUFF_TABLES; i++) {
-    WriteHuffTree(HuffRoot[i], opb);
-  }
-}
-
-static HUFF_ENTRY *CopyHuffTree(const HUFF_ENTRY *HuffSrc) {
-  if(HuffSrc){
-    HUFF_ENTRY *HuffDst;
-    HuffDst = (HUFF_ENTRY *)_ogg_calloc(1, sizeof(HUFF_ENTRY));
-    HuffDst->Value = HuffSrc->Value;
-    if (HuffSrc->Value < 0) {
-      HuffDst->ZeroChild = CopyHuffTree(HuffSrc->ZeroChild);
-      HuffDst->OneChild = CopyHuffTree(HuffSrc->OneChild);
-    }
-    return HuffDst;
-  }
-  return NULL;
-}
-
-void InitHuffmanTrees(PB_INSTANCE *pbi, const codec_setup_info *ci) {
-  int i;
-  pbi->ExtraBitLengths_VP3x = ExtraBitLengths_VP31;
-  for(i=0; i<NUM_HUFF_TABLES; i++){
-    pbi->HuffRoot_VP3x[i] = CopyHuffTree(ci->HuffRoot[i]);
-  }
-}
-
-void  ClearHuffmanTrees(HUFF_ENTRY *HuffRoot[NUM_HUFF_TABLES]){
-  int i;
-  for(i=0; i<NUM_HUFF_TABLES; i++) {
-    DestroyHuffTree(HuffRoot[i]);
-    HuffRoot[i] = NULL;
-  }
-}

Deleted: experimental/j/theora-mashup/lib/enc/huffman.h
===================================================================
--- experimental/j/theora-mashup/lib/enc/huffman.h	2007-04-09 18:14:16 UTC (rev 12841)
+++ experimental/j/theora-mashup/lib/enc/huffman.h	2007-04-09 19:12:19 UTC (rev 12842)
@@ -1,74 +0,0 @@
-/********************************************************************
- *                                                                  *
- * THIS FILE IS PART OF THE OggTheora SOFTWARE CODEC SOURCE CODE.   *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
- * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
- * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
- *                                                                  *
- * THE Theora SOURCE CODE IS COPYRIGHT (C) 2002-2003                *
- * by the Xiph.Org Foundation http://www.xiph.org/                  *
- *                                                                  *
- ********************************************************************
-
-  function:
-  last mod: $Id$
-
- ********************************************************************/
-
-/********************************************************************
- *  Constants
- ********************************************************************/
-#define NUM_HUFF_TABLES         80
-#define DC_HUFF_OFFSET          0
-#define AC_HUFF_OFFSET          16
-#define AC_TABLE_2_THRESH       5
-#define AC_TABLE_3_THRESH       14
-#define AC_TABLE_4_THRESH       27
-
-#define DC_HUFF_CHOICES         16
-#define DC_HUFF_CHOICE_BITS     4
-
-#define AC_HUFF_CHOICES         16
-#define AC_HUFF_CHOICE_BITS     4
-
-/* Constants assosciated with entropy tokenisation. */
-#define MAX_SINGLE_TOKEN_VALUE  6
-#define DCT_VAL_CAT2_MIN        3
-#define DCT_VAL_CAT3_MIN        7
-#define DCT_VAL_CAT4_MIN        9
-#define DCT_VAL_CAT5_MIN        13
-#define DCT_VAL_CAT6_MIN        21
-#define DCT_VAL_CAT7_MIN        37
-#define DCT_VAL_CAT8_MIN        69
-
-#define DCT_EOB_TOKEN           0
-#define DCT_EOB_PAIR_TOKEN      1
-#define DCT_EOB_TRIPLE_TOKEN    2
-#define DCT_REPEAT_RUN_TOKEN    3
-#define DCT_REPEAT_RUN2_TOKEN   4
-#define DCT_REPEAT_RUN3_TOKEN   5
-#define DCT_REPEAT_RUN4_TOKEN   6
-
-#define DCT_SHORT_ZRL_TOKEN     7
-#define DCT_ZRL_TOKEN           8
-
-#define ONE_TOKEN               9       /* Special tokens for -1,1,-2,2 */
-#define MINUS_ONE_TOKEN         10
-#define TWO_TOKEN               11
-#define MINUS_TWO_TOKEN         12
-
-#define LOW_VAL_TOKENS          (MINUS_TWO_TOKEN + 1)
-#define DCT_VAL_CATEGORY3       (LOW_VAL_TOKENS + 4)
-#define DCT_VAL_CATEGORY4       (DCT_VAL_CATEGORY3 + 1)
-#define DCT_VAL_CATEGORY5       (DCT_VAL_CATEGORY4 + 1)
-#define DCT_VAL_CATEGORY6       (DCT_VAL_CATEGORY5 + 1)
-#define DCT_VAL_CATEGORY7       (DCT_VAL_CATEGORY6 + 1)
-#define DCT_VAL_CATEGORY8       (DCT_VAL_CATEGORY7 + 1)
-
-#define DCT_RUN_CATEGORY1       (DCT_VAL_CATEGORY8 + 1)
-#define DCT_RUN_CATEGORY1B      (DCT_RUN_CATEGORY1 + 5)
-#define DCT_RUN_CATEGORY1C      (DCT_RUN_CATEGORY1B + 1)
-#define DCT_RUN_CATEGORY2       (DCT_RUN_CATEGORY1C + 1)
-
-/* 32 */
-#define MAX_ENTROPY_TOKENS      (DCT_RUN_CATEGORY2 + 2)

Modified: experimental/j/theora-mashup/macosx/Theora.xcodeproj/project.pbxproj
===================================================================
--- experimental/j/theora-mashup/macosx/Theora.xcodeproj/project.pbxproj	2007-04-09 18:14:16 UTC (rev 12841)
+++ experimental/j/theora-mashup/macosx/Theora.xcodeproj/project.pbxproj	2007-04-09 19:12:19 UTC (rev 12842)
@@ -15,58 +15,111 @@
 		094A000A0B77F5EC0005C7B8 /* dsp_mmxext.c in Sources */ = {isa = PBXBuildFile; fileRef = 094A00020B77F5EC0005C7B8 /* dsp_mmxext.c */; };
 		094A000B0B77F5EC0005C7B8 /* fdct_mmx.c in Sources */ = {isa = PBXBuildFile; fileRef = 094A00030B77F5EC0005C7B8 /* fdct_mmx.c */; };
 		094A000C0B77F5EC0005C7B8 /* recon_mmx.c in Sources */ = {isa = PBXBuildFile; fileRef = 094A00040B77F5EC0005C7B8 /* recon_mmx.c */; };
+		097728F70BCABCAA00303091 /* apiwrapper.c in Sources */ = {isa = PBXBuildFile; fileRef = 097728DD0BCABCAA00303091 /* apiwrapper.c */; };
+		097728F80BCABCAA00303091 /* dct.h in Headers */ = {isa = PBXBuildFile; fileRef = 097728DE0BCABCAA00303091 /* dct.h */; };
+		097728F90BCABCAA00303091 /* decinfo.c in Sources */ = {isa = PBXBuildFile; fileRef = 097728DF0BCABCAA00303091 /* decinfo.c */; };
+		097728FA0BCABCAA00303091 /* decint.h in Headers */ = {isa = PBXBuildFile; fileRef = 097728E00BCABCAA00303091 /* decint.h */; };
+		097728FB0BCABCAA00303091 /* decode.c in Sources */ = {isa = PBXBuildFile; fileRef = 097728E10BCABCAA00303091 /* decode.c */; };
+		097728FC0BCABCAA00303091 /* dequant.c in Sources */ = {isa = PBXBuildFile; fileRef = 097728E20BCABCAA00303091 /* dequant.c */; };
+		097728FD0BCABCAA00303091 /* dequant.h in Headers */ = {isa = PBXBuildFile; fileRef = 097728E30BCABCAA00303091 /* dequant.h */; };
+		097728FE0BCABCAA00303091 /* enquant.h in Headers */ = {isa = PBXBuildFile; fileRef = 097728E40BCABCAA00303091 /* enquant.h */; };
+		097728FF0BCABCAA00303091 /* fragment.c in Sources */ = {isa = PBXBuildFile; fileRef = 097728E50BCABCAA00303091 /* fragment.c */; };
+		097729000BCABCAA00303091 /* huffdec.c in Sources */ = {isa = PBXBuildFile; fileRef = 097728E60BCABCAA00303091 /* huffdec.c */; };
+		097729010BCABCAA00303091 /* huffdec.h in Headers */ = {isa = PBXBuildFile; fileRef = 097728E70BCABCAA00303091 /* huffdec.h */; };
+		097729020BCABCAA00303091 /* huffman.h in Headers */ = {isa = PBXBuildFile; fileRef = 097728E80BCABCAA00303091 /* huffman.h */; };
+		097729030BCABCAA00303091 /* idct.c in Sources */ = {isa = PBXBuildFile; fileRef = 097728E90BCABCAA00303091 /* idct.c */; };
+		097729040BCABCAA00303091 /* idct.h in Headers */ = {isa = PBXBuildFile; fileRef = 097728EA0BCABCAA00303091 /* idct.h */; };
+		097729050BCABCAA00303091 /* info.c in Sources */ = {isa = PBXBuildFile; fileRef = 097728EB0BCABCAA00303091 /* info.c */; };
+		097729060BCABCAA00303091 /* internal.c in Sources */ = {isa = PBXBuildFile; fileRef = 097728EC0BCABCAA00303091 /* internal.c */; };
+		097729070BCABCAA00303091 /* ocintrin.h in Headers */ = {isa = PBXBuildFile; fileRef = 097728ED0BCABCAA00303091 /* ocintrin.h */; };
+		097729080BCABCAA00303091 /* quant.c in Sources */ = {isa = PBXBuildFile; fileRef = 097728EE0BCABCAA00303091 /* quant.c */; };
+		097729090BCABCAA00303091 /* quant.h in Headers */ = {isa = PBXBuildFile; fileRef = 097728EF0BCABCAA00303091 /* quant.h */; };
+		0977290A0BCABCAA00303091 /* state.c in Sources */ = {isa = PBXBuildFile; fileRef = 097728F00BCABCAA00303091 /* state.c */; };
+		0977290B0BCABCAA00303091 /* mmxfrag.c in Sources */ = {isa = PBXBuildFile; fileRef = 097728F20BCABCAA00303091 /* mmxfrag.c */; };
+		0977290C0BCABCAA00303091 /* mmxidct.c in Sources */ = {isa = PBXBuildFile; fileRef = 097728F30BCABCAA00303091 /* mmxidct.c */; };
+		0977290D0BCABCAA00303091 /* mmxstate.c in Sources */ = {isa = PBXBuildFile; fileRef = 097728F40BCABCAA00303091 /* mmxstate.c */; };
+		0977290E0BCABCAA00303091 /* x86int.h in Headers */ = {isa = PBXBuildFile; fileRef = 097728F50BCABCAA00303091 /* x86int.h */; };
+		0977290F0BCABCAA00303091 /* x86state.c in Sources */ = {isa = PBXBuildFile; fileRef = 097728F60BCABCAA00303091 /* x86state.c */; };
+		097729100BCABCAA00303091 /* apiwrapper.c in Sources */ = {isa = PBXBuildFile; fileRef = 097728DD0BCABCAA00303091 /* apiwrapper.c */; };
+		097729110BCABCAA00303091 /* dct.h in Headers */ = {isa = PBXBuildFile; fileRef = 097728DE0BCABCAA00303091 /* dct.h */; };
+		097729120BCABCAA00303091 /* decinfo.c in Sources */ = {isa = PBXBuildFile; fileRef = 097728DF0BCABCAA00303091 /* decinfo.c */; };
+		097729130BCABCAA00303091 /* decint.h in Headers */ = {isa = PBXBuildFile; fileRef = 097728E00BCABCAA00303091 /* decint.h */; };
+		097729140BCABCAA00303091 /* decode.c in Sources */ = {isa = PBXBuildFile; fileRef = 097728E10BCABCAA00303091 /* decode.c */; };
+		097729150BCABCAA00303091 /* dequant.c in Sources */ = {isa = PBXBuildFile; fileRef = 097728E20BCABCAA00303091 /* dequant.c */; };
+		097729160BCABCAA00303091 /* dequant.h in Headers */ = {isa = PBXBuildFile; fileRef = 097728E30BCABCAA00303091 /* dequant.h */; };
+		097729170BCABCAA00303091 /* enquant.h in Headers */ = {isa = PBXBuildFile; fileRef = 097728E40BCABCAA00303091 /* enquant.h */; };
+		097729180BCABCAA00303091 /* fragment.c in Sources */ = {isa = PBXBuildFile; fileRef = 097728E50BCABCAA00303091 /* fragment.c */; };
+		097729190BCABCAA00303091 /* huffdec.c in Sources */ = {isa = PBXBuildFile; fileRef = 097728E60BCABCAA00303091 /* huffdec.c */; };
+		0977291A0BCABCAA00303091 /* huffdec.h in Headers */ = {isa = PBXBuildFile; fileRef = 097728E70BCABCAA00303091 /* huffdec.h */; };
+		0977291B0BCABCAA00303091 /* huffman.h in Headers */ = {isa = PBXBuildFile; fileRef = 097728E80BCABCAA00303091 /* huffman.h */; };
+		0977291C0BCABCAA00303091 /* idct.c in Sources */ = {isa = PBXBuildFile; fileRef = 097728E90BCABCAA00303091 /* idct.c */; };
+		0977291D0BCABCAA00303091 /* idct.h in Headers */ = {isa = PBXBuildFile; fileRef = 097728EA0BCABCAA00303091 /* idct.h */; };
+		0977291E0BCABCAA00303091 /* info.c in Sources */ = {isa = PBXBuildFile; fileRef = 097728EB0BCABCAA00303091 /* info.c */; };
+		0977291F0BCABCAA00303091 /* internal.c in Sources */ = {isa = PBXBuildFile; fileRef = 097728EC0BCABCAA00303091 /* internal.c */; };
+		097729200BCABCAA00303091 /* ocintrin.h in Headers */ = {isa = PBXBuildFile; fileRef = 097728ED0BCABCAA00303091 /* ocintrin.h */; };
+		097729210BCABCAA00303091 /* quant.c in Sources */ = {isa = PBXBuildFile; fileRef = 097728EE0BCABCAA00303091 /* quant.c */; };
+		097729220BCABCAA00303091 /* quant.h in Headers */ = {isa = PBXBuildFile; fileRef = 097728EF0BCABCAA00303091 /* quant.h */; };
+		097729230BCABCAA00303091 /* state.c in Sources */ = {isa = PBXBuildFile; fileRef = 097728F00BCABCAA00303091 /* state.c */; };
+		097729240BCABCAA00303091 /* mmxfrag.c in Sources */ = {isa = PBXBuildFile; fileRef = 097728F20BCABCAA00303091 /* mmxfrag.c */; };
+		097729250BCABCAA00303091 /* mmxidct.c in Sources */ = {isa = PBXBuildFile; fileRef = 097728F30BCABCAA00303091 /* mmxidct.c */; };
+		097729260BCABCAA00303091 /* mmxstate.c in Sources */ = {isa = PBXBuildFile; fileRef = 097728F40BCABCAA00303091 /* mmxstate.c */; };
+		097729270BCABCAA00303091 /* x86int.h in Headers */ = {isa = PBXBuildFile; fileRef = 097728F50BCABCAA00303091 /* x86int.h */; };
+		097729280BCABCAA00303091 /* x86state.c in Sources */ = {isa = PBXBuildFile; fileRef = 097728F60BCABCAA00303091 /* x86state.c */; };
+		0977292E0BCABCFD00303091 /* dct_decode_mmx.c in Sources */ = {isa = PBXBuildFile; fileRef = 0977292C0BCABCFD00303091 /* dct_decode_mmx.c */; };
+		0977292F0BCABCFD00303091 /* idct_mmx.c in Sources */ = {isa = PBXBuildFile; fileRef = 0977292D0BCABCFD00303091 /* idct_mmx.c */; };
+		097729300BCABCFD00303091 /* dct_decode_mmx.c in Sources */ = {isa = PBXBuildFile; fileRef = 0977292C0BCABCFD00303091 /* dct_decode_mmx.c */; };
+		097729310BCABCFD00303091 /* idct_mmx.c in Sources */ = {isa = PBXBuildFile; fileRef = 0977292D0BCABCFD00303091 /* idct_mmx.c */; };
+		097729870BCAC57D00303091 /* common.c in Sources */ = {isa = PBXBuildFile; fileRef = 097729860BCAC57D00303091 /* common.c */; };
+		097729880BCAC57D00303091 /* common.c in Sources */ = {isa = PBXBuildFile; fileRef = 097729860BCAC57D00303091 /* common.c */; };
+		0977298D0BCAC5A800303091 /* encoder_quant.c in Sources */ = {isa = PBXBuildFile; fileRef = 0977298C0BCAC5A800303091 /* encoder_quant.c */; };
+		0977298E0BCAC5A800303091 /* encoder_quant.c in Sources */ = {isa = PBXBuildFile; fileRef = 0977298C0BCAC5A800303091 /* encoder_quant.c */; };
+		097729950BCAC60000303091 /* codec.h in Headers */ = {isa = PBXBuildFile; fileRef = 097729930BCAC60000303091 /* codec.h */; };
+		097729960BCAC60000303091 /* theoradec.h in Headers */ = {isa = PBXBuildFile; fileRef = 097729940BCAC60000303091 /* theoradec.h */; };
+		097729970BCAC60000303091 /* codec.h in Headers */ = {isa = PBXBuildFile; fileRef = 097729930BCAC60000303091 /* codec.h */; };
+		097729980BCAC60000303091 /* theoradec.h in Headers */ = {isa = PBXBuildFile; fileRef = 097729940BCAC60000303091 /* theoradec.h */; };
 		734A751909D76ADD002D8FAE /* Ogg.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 734A751809D76ADD002D8FAE /* Ogg.framework */; };
 		734A75BF09D76BB9002D8FAE /* theora.h in Headers */ = {isa = PBXBuildFile; fileRef = 734A75BE09D76BB9002D8FAE /* theora.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		734A75D809D76C7E002D8FAE /* blockmap.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75C409D76C7E002D8FAE /* blockmap.c */; };
-		734A75D909D76C7E002D8FAE /* comment.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75C509D76C7E002D8FAE /* comment.c */; };
 		734A75DA09D76C7E002D8FAE /* dct_decode.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75C609D76C7E002D8FAE /* dct_decode.c */; };
 		734A75DB09D76C7E002D8FAE /* dct_encode.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75C709D76C7E002D8FAE /* dct_encode.c */; };
 		734A75DC09D76C7E002D8FAE /* dct.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75C809D76C7E002D8FAE /* dct.c */; };
-		734A75DD09D76C7E002D8FAE /* decode.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75C909D76C7E002D8FAE /* decode.c */; };
 		734A75DE09D76C7E002D8FAE /* encode.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75CA09D76C7E002D8FAE /* encode.c */; };
 		734A75DF09D76C7E002D8FAE /* encoder_toplevel.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75CB09D76C7E002D8FAE /* encoder_toplevel.c */; };
 		734A75E009D76C7E002D8FAE /* frarray.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75CC09D76C7E002D8FAE /* frarray.c */; };
 		734A75E109D76C7E002D8FAE /* frinit.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75CD09D76C7E002D8FAE /* frinit.c */; };
-		734A75E209D76C7E002D8FAE /* huffman.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75CE09D76C7E002D8FAE /* huffman.c */; };
-		734A75E309D76C7E002D8FAE /* idct.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75CF09D76C7E002D8FAE /* idct.c */; };
+		734A75E209D76C7E002D8FAE /* encoder_huffman.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75CE09D76C7E002D8FAE /* encoder_huffman.c */; };
+		734A75E309D76C7E002D8FAE /* encoder_idct.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75CF09D76C7E002D8FAE /* encoder_idct.c */; };
 		734A75E409D76C7E002D8FAE /* mcomp.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75D009D76C7E002D8FAE /* mcomp.c */; };
 		734A75E509D76C7E002D8FAE /* misc_common.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75D109D76C7E002D8FAE /* misc_common.c */; };
 		734A75E609D76C7E002D8FAE /* pb.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75D209D76C7E002D8FAE /* pb.c */; };
 		734A75E709D76C7E002D8FAE /* pp.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75D309D76C7E002D8FAE /* pp.c */; };
-		734A75E809D76C7E002D8FAE /* quant.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75D409D76C7E002D8FAE /* quant.c */; };
 		734A75E909D76C7E002D8FAE /* reconstruct.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75D509D76C7E002D8FAE /* reconstruct.c */; };
 		734A75EA09D76C7E002D8FAE /* scan.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75D609D76C7E002D8FAE /* scan.c */; };
-		734A75EB09D76C7E002D8FAE /* toplevel.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75D709D76C7E002D8FAE /* toplevel.c */; };
 		734A75F509D76DCC002D8FAE /* block_inline.h in Headers */ = {isa = PBXBuildFile; fileRef = 734A75EC09D76DCC002D8FAE /* block_inline.h */; };
 		734A75F609D76DCC002D8FAE /* codec_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 734A75ED09D76DCC002D8FAE /* codec_internal.h */; };
 		734A75F709D76DCC002D8FAE /* encoder_lookup.h in Headers */ = {isa = PBXBuildFile; fileRef = 734A75EE09D76DCC002D8FAE /* encoder_lookup.h */; };
-		734A75F809D76DCC002D8FAE /* huffman.h in Headers */ = {isa = PBXBuildFile; fileRef = 734A75EF09D76DCC002D8FAE /* huffman.h */; };
+		734A75F809D76DCC002D8FAE /* encoder_huffman.h in Headers */ = {isa = PBXBuildFile; fileRef = 734A75EF09D76DCC002D8FAE /* encoder_huffman.h */; };
 		734A75F909D76DCC002D8FAE /* hufftables.h in Headers */ = {isa = PBXBuildFile; fileRef = 734A75F009D76DCC002D8FAE /* hufftables.h */; };
 		734A75FA09D76DCC002D8FAE /* pp.h in Headers */ = {isa = PBXBuildFile; fileRef = 734A75F109D76DCC002D8FAE /* pp.h */; };
 		734A75FB09D76DCC002D8FAE /* quant_lookup.h in Headers */ = {isa = PBXBuildFile; fileRef = 734A75F209D76DCC002D8FAE /* quant_lookup.h */; };
 		734A75FC09D76DCC002D8FAE /* toplevel_lookup.h in Headers */ = {isa = PBXBuildFile; fileRef = 734A75F309D76DCC002D8FAE /* toplevel_lookup.h */; };
-		734A75FD09D76DCC002D8FAE /* toplevel.h in Headers */ = {isa = PBXBuildFile; fileRef = 734A75F409D76DCC002D8FAE /* toplevel.h */; };
 		73514EC50B0C7E3200CEC060 /* cpu.c in Sources */ = {isa = PBXBuildFile; fileRef = 73514EC30B0C7E3200CEC060 /* cpu.c */; };
 		73514EC60B0C7E3200CEC060 /* dsp.c in Sources */ = {isa = PBXBuildFile; fileRef = 73514EC40B0C7E3200CEC060 /* dsp.c */; };
 		73514EC90B0C7E5700CEC060 /* cpu.h in Headers */ = {isa = PBXBuildFile; fileRef = 73514EC70B0C7E5700CEC060 /* cpu.h */; };
 		73514ECA0B0C7E5700CEC060 /* dsp.h in Headers */ = {isa = PBXBuildFile; fileRef = 73514EC80B0C7E5700CEC060 /* dsp.h */; };
 		738837140B19284D005C7A69 /* blockmap.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75C409D76C7E002D8FAE /* blockmap.c */; };
-		738837150B192850005C7A69 /* comment.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75C509D76C7E002D8FAE /* comment.c */; };
 		738837160B19285D005C7A69 /* dct.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75C809D76C7E002D8FAE /* dct.c */; };
 		738837170B19286C005C7A69 /* dct_decode.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75C609D76C7E002D8FAE /* dct_decode.c */; };
-		738837180B19287F005C7A69 /* decode.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75C909D76C7E002D8FAE /* decode.c */; };
 		738837190B192890005C7A69 /* frarray.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75CC09D76C7E002D8FAE /* frarray.c */; };
 		7388371A0B192896005C7A69 /* frinit.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75CD09D76C7E002D8FAE /* frinit.c */; };
-		7388371B0B1928A0005C7A69 /* huffman.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75CE09D76C7E002D8FAE /* huffman.c */; };
-		7388371C0B1928AF005C7A69 /* idct.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75CF09D76C7E002D8FAE /* idct.c */; };
+		7388371B0B1928A0005C7A69 /* encoder_huffman.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75CE09D76C7E002D8FAE /* encoder_huffman.c */; };
+		7388371C0B1928AF005C7A69 /* encoder_idct.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75CF09D76C7E002D8FAE /* encoder_idct.c */; };
 		7388371D0B1928BB005C7A69 /* mcomp.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75D009D76C7E002D8FAE /* mcomp.c */; };
 		7388371E0B1928C4005C7A69 /* misc_common.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75D109D76C7E002D8FAE /* misc_common.c */; };
 		7388371F0B1928C6005C7A69 /* pb.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75D209D76C7E002D8FAE /* pb.c */; };
 		738837200B1928CC005C7A69 /* pp.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75D309D76C7E002D8FAE /* pp.c */; };
-		738837210B1928CE005C7A69 /* quant.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75D409D76C7E002D8FAE /* quant.c */; };
 		738837220B1928D2005C7A69 /* reconstruct.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75D509D76C7E002D8FAE /* reconstruct.c */; };
 		738837230B1928D5005C7A69 /* scan.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75D609D76C7E002D8FAE /* scan.c */; };
-		738837240B1928D6005C7A69 /* toplevel.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75D709D76C7E002D8FAE /* toplevel.c */; };
 		738837250B1928DB005C7A69 /* cpu.c in Sources */ = {isa = PBXBuildFile; fileRef = 73514EC30B0C7E3200CEC060 /* cpu.c */; };
 		738837260B1928E1005C7A69 /* dsp.c in Sources */ = {isa = PBXBuildFile; fileRef = 73514EC40B0C7E3200CEC060 /* dsp.c */; };
 		738837270B1929EC005C7A69 /* dct_encode.c in Sources */ = {isa = PBXBuildFile; fileRef = 734A75C709D76C7E002D8FAE /* dct_encode.c */; };
@@ -82,43 +135,69 @@
 		094A00020B77F5EC0005C7B8 /* dsp_mmxext.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dsp_mmxext.c; sourceTree = "<group>"; };
 		094A00030B77F5EC0005C7B8 /* fdct_mmx.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.c; fileEncoding = 4; path = fdct_mmx.c; sourceTree = "<group>"; };
 		094A00040B77F5EC0005C7B8 /* recon_mmx.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = recon_mmx.c; sourceTree = "<group>"; };
+		097728DD0BCABCAA00303091 /* apiwrapper.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = apiwrapper.c; sourceTree = "<group>"; };
+		097728DE0BCABCAA00303091 /* dct.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dct.h; sourceTree = "<group>"; };
+		097728DF0BCABCAA00303091 /* decinfo.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = decinfo.c; sourceTree = "<group>"; };
+		097728E00BCABCAA00303091 /* decint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = decint.h; sourceTree = "<group>"; };
+		097728E10BCABCAA00303091 /* decode.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = decode.c; sourceTree = "<group>"; };
+		097728E20BCABCAA00303091 /* dequant.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dequant.c; sourceTree = "<group>"; };
+		097728E30BCABCAA00303091 /* dequant.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dequant.h; sourceTree = "<group>"; };
+		097728E40BCABCAA00303091 /* enquant.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = enquant.h; sourceTree = "<group>"; };
+		097728E50BCABCAA00303091 /* fragment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fragment.c; sourceTree = "<group>"; };
+		097728E60BCABCAA00303091 /* huffdec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = huffdec.c; sourceTree = "<group>"; };
+		097728E70BCABCAA00303091 /* huffdec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = huffdec.h; sourceTree = "<group>"; };
+		097728E80BCABCAA00303091 /* huffman.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = huffman.h; sourceTree = "<group>"; };
+		097728E90BCABCAA00303091 /* idct.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = idct.c; sourceTree = "<group>"; };
+		097728EA0BCABCAA00303091 /* idct.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = idct.h; sourceTree = "<group>"; };
+		097728EB0BCABCAA00303091 /* info.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = info.c; sourceTree = "<group>"; };
+		097728EC0BCABCAA00303091 /* internal.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = internal.c; sourceTree = "<group>"; };
+		097728ED0BCABCAA00303091 /* ocintrin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ocintrin.h; sourceTree = "<group>"; };
+		097728EE0BCABCAA00303091 /* quant.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = quant.c; sourceTree = "<group>"; };
+		097728EF0BCABCAA00303091 /* quant.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = quant.h; sourceTree = "<group>"; };
+		097728F00BCABCAA00303091 /* state.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = state.c; sourceTree = "<group>"; };
+		097728F20BCABCAA00303091 /* mmxfrag.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mmxfrag.c; sourceTree = "<group>"; };
+		097728F30BCABCAA00303091 /* mmxidct.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mmxidct.c; sourceTree = "<group>"; };
+		097728F40BCABCAA00303091 /* mmxstate.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mmxstate.c; sourceTree = "<group>"; };
+		097728F50BCABCAA00303091 /* x86int.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = x86int.h; sourceTree = "<group>"; };
+		097728F60BCABCAA00303091 /* x86state.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = x86state.c; sourceTree = "<group>"; };
+		0977292C0BCABCFD00303091 /* dct_decode_mmx.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dct_decode_mmx.c; sourceTree = "<group>"; };
+		0977292D0BCABCFD00303091 /* idct_mmx.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = idct_mmx.c; sourceTree = "<group>"; };
+		097729860BCAC57D00303091 /* common.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = common.c; path = ../lib/enc/common.c; sourceTree = SOURCE_ROOT; };
+		0977298C0BCAC5A800303091 /* encoder_quant.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = encoder_quant.c; path = ../lib/enc/encoder_quant.c; sourceTree = SOURCE_ROOT; };
+		097729930BCAC60000303091 /* codec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = codec.h; path = ../include/theora/codec.h; sourceTree = SOURCE_ROOT; };
+		097729940BCAC60000303091 /* theoradec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = theoradec.h; path = ../include/theora/theoradec.h; sourceTree = SOURCE_ROOT; };
 		32BAE0B70371A74B00C91783 /* Theora_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Theora_Prefix.pch; sourceTree = "<group>"; };
 		734A751809D76ADD002D8FAE /* Ogg.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Ogg.framework; path = /Library/Frameworks/Ogg.framework; sourceTree = "<absolute>"; };
 		734A75BE09D76BB9002D8FAE /* theora.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = theora.h; path = ../include/theora/theora.h; sourceTree = SOURCE_ROOT; };
-		734A75C409D76C7E002D8FAE /* blockmap.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = blockmap.c; path = ../lib/blockmap.c; sourceTree = SOURCE_ROOT; };
-		734A75C509D76C7E002D8FAE /* comment.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = comment.c; path = ../lib/comment.c; sourceTree = SOURCE_ROOT; };
-		734A75C609D76C7E002D8FAE /* dct_decode.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = dct_decode.c; path = ../lib/dct_decode.c; sourceTree = SOURCE_ROOT; };
-		734A75C709D76C7E002D8FAE /* dct_encode.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = dct_encode.c; path = ../lib/dct_encode.c; sourceTree = SOURCE_ROOT; };
-		734A75C809D76C7E002D8FAE /* dct.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = dct.c; path = ../lib/dct.c; sourceTree = SOURCE_ROOT; };
-		734A75C909D76C7E002D8FAE /* decode.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = decode.c; path = ../lib/decode.c; sourceTree = SOURCE_ROOT; };
-		734A75CA09D76C7E002D8FAE /* encode.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = encode.c; path = ../lib/encode.c; sourceTree = SOURCE_ROOT; };
-		734A75CB09D76C7E002D8FAE /* encoder_toplevel.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = encoder_toplevel.c; path = ../lib/encoder_toplevel.c; sourceTree = SOURCE_ROOT; };
-		734A75CC09D76C7E002D8FAE /* frarray.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = frarray.c; path = ../lib/frarray.c; sourceTree = SOURCE_ROOT; };
-		734A75CD09D76C7E002D8FAE /* frinit.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = frinit.c; path = ../lib/frinit.c; sourceTree = SOURCE_ROOT; };
-		734A75CE09D76C7E002D8FAE /* huffman.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = huffman.c; path = ../lib/huffman.c; sourceTree = SOURCE_ROOT; };
-		734A75CF09D76C7E002D8FAE /* idct.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = idct.c; path = ../lib/idct.c; sourceTree = SOURCE_ROOT; };
-		734A75D009D76C7E002D8FAE /* mcomp.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = mcomp.c; path = ../lib/mcomp.c; sourceTree = SOURCE_ROOT; };
-		734A75D109D76C7E002D8FAE /* misc_common.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = misc_common.c; path = ../lib/misc_common.c; sourceTree = SOURCE_ROOT; };
-		734A75D209D76C7E002D8FAE /* pb.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = pb.c; path = ../lib/pb.c; sourceTree = SOURCE_ROOT; };
-		734A75D309D76C7E002D8FAE /* pp.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = pp.c; path = ../lib/pp.c; sourceTree = SOURCE_ROOT; };
-		734A75D409D76C7E002D8FAE /* quant.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = quant.c; path = ../lib/quant.c; sourceTree = SOURCE_ROOT; };
-		734A75D509D76C7E002D8FAE /* reconstruct.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = reconstruct.c; path = ../lib/reconstruct.c; sourceTree = SOURCE_ROOT; };
-		734A75D609D76C7E002D8FAE /* scan.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = scan.c; path = ../lib/scan.c; sourceTree = SOURCE_ROOT; };
-		734A75D709D76C7E002D8FAE /* toplevel.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = toplevel.c; path = ../lib/toplevel.c; sourceTree = SOURCE_ROOT; };
-		734A75EC09D76DCC002D8FAE /* block_inline.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = block_inline.h; path = ../lib/block_inline.h; sourceTree = SOURCE_ROOT; };
-		734A75ED09D76DCC002D8FAE /* codec_internal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = codec_internal.h; path = ../lib/codec_internal.h; sourceTree = SOURCE_ROOT; };
-		734A75EE09D76DCC002D8FAE /* encoder_lookup.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = encoder_lookup.h; path = ../lib/encoder_lookup.h; sourceTree = SOURCE_ROOT; };
-		734A75EF09D76DCC002D8FAE /* huffman.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = huffman.h; path = ../lib/huffman.h; sourceTree = SOURCE_ROOT; };
-		734A75F009D76DCC002D8FAE /* hufftables.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = hufftables.h; path = ../lib/hufftables.h; sourceTree = SOURCE_ROOT; };
-		734A75F109D76DCC002D8FAE /* pp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = pp.h; path = ../lib/pp.h; sourceTree = SOURCE_ROOT; };
-		734A75F209D76DCC002D8FAE /* quant_lookup.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = quant_lookup.h; path = ../lib/quant_lookup.h; sourceTree = SOURCE_ROOT; };
-		734A75F309D76DCC002D8FAE /* toplevel_lookup.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = toplevel_lookup.h; path = ../lib/toplevel_lookup.h; sourceTree = SOURCE_ROOT; };
-		734A75F409D76DCC002D8FAE /* toplevel.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = toplevel.h; path = ../lib/toplevel.h; sourceTree = SOURCE_ROOT; };
-		734A75FE09D76E86002D8FAE /* encoder_disabled.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = encoder_disabled.c; path = ../lib/encoder_disabled.c; sourceTree = SOURCE_ROOT; };
-		73514EC30B0C7E3200CEC060 /* cpu.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = cpu.c; path = ../lib/cpu.c; sourceTree = SOURCE_ROOT; };
-		73514EC40B0C7E3200CEC060 /* dsp.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = dsp.c; path = ../lib/dsp.c; sourceTree = SOURCE_ROOT; };
-		73514EC70B0C7E5700CEC060 /* cpu.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = cpu.h; path = ../lib/cpu.h; sourceTree = SOURCE_ROOT; };
-		73514EC80B0C7E5700CEC060 /* dsp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = dsp.h; path = ../lib/dsp.h; sourceTree = SOURCE_ROOT; };
+		734A75C409D76C7E002D8FAE /* blockmap.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = blockmap.c; path = ../lib/enc/blockmap.c; sourceTree = SOURCE_ROOT; };
+		734A75C609D76C7E002D8FAE /* dct_decode.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = dct_decode.c; path = ../lib/enc/dct_decode.c; sourceTree = SOURCE_ROOT; };
+		734A75C709D76C7E002D8FAE /* dct_encode.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = dct_encode.c; path = ../lib/enc/dct_encode.c; sourceTree = SOURCE_ROOT; };
+		734A75C809D76C7E002D8FAE /* dct.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = dct.c; path = ../lib/enc/dct.c; sourceTree = SOURCE_ROOT; };
+		734A75CA09D76C7E002D8FAE /* encode.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = encode.c; path = ../lib/enc/encode.c; sourceTree = SOURCE_ROOT; };
+		734A75CB09D76C7E002D8FAE /* encoder_toplevel.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = encoder_toplevel.c; path = ../lib/enc/encoder_toplevel.c; sourceTree = SOURCE_ROOT; };
+		734A75CC09D76C7E002D8FAE /* frarray.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = frarray.c; path = ../lib/enc/frarray.c; sourceTree = SOURCE_ROOT; };
+		734A75CD09D76C7E002D8FAE /* frinit.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = frinit.c; path = ../lib/enc/frinit.c; sourceTree = SOURCE_ROOT; };
+		734A75CE09D76C7E002D8FAE /* encoder_huffman.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = encoder_huffman.c; path = ../lib/enc/encoder_huffman.c; sourceTree = SOURCE_ROOT; };
+		734A75CF09D76C7E002D8FAE /* encoder_idct.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = encoder_idct.c; path = ../lib/enc/encoder_idct.c; sourceTree = SOURCE_ROOT; };
+		734A75D009D76C7E002D8FAE /* mcomp.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = mcomp.c; path = ../lib/enc/mcomp.c; sourceTree = SOURCE_ROOT; };
+		734A75D109D76C7E002D8FAE /* misc_common.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = misc_common.c; path = ../lib/enc/misc_common.c; sourceTree = SOURCE_ROOT; };
+		734A75D209D76C7E002D8FAE /* pb.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = pb.c; path = ../lib/enc/pb.c; sourceTree = SOURCE_ROOT; };
+		734A75D309D76C7E002D8FAE /* pp.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = pp.c; path = ../lib/enc/pp.c; sourceTree = SOURCE_ROOT; };
+		734A75D509D76C7E002D8FAE /* reconstruct.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = reconstruct.c; path = ../lib/enc/reconstruct.c; sourceTree = SOURCE_ROOT; };
+		734A75D609D76C7E002D8FAE /* scan.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = scan.c; path = ../lib/enc/scan.c; sourceTree = SOURCE_ROOT; };
+		734A75EC09D76DCC002D8FAE /* block_inline.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = block_inline.h; path = ../lib/enc/block_inline.h; sourceTree = SOURCE_ROOT; };
+		734A75ED09D76DCC002D8FAE /* codec_internal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = codec_internal.h; path = ../lib/enc/codec_internal.h; sourceTree = SOURCE_ROOT; };
+		734A75EE09D76DCC002D8FAE /* encoder_lookup.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = encoder_lookup.h; path = ../lib/enc/encoder_lookup.h; sourceTree = SOURCE_ROOT; };
+		734A75EF09D76DCC002D8FAE /* encoder_huffman.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = encoder_huffman.h; path = ../lib/enc/encoder_huffman.h; sourceTree = SOURCE_ROOT; };
+		734A75F009D76DCC002D8FAE /* hufftables.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = hufftables.h; path = ../lib/enc/hufftables.h; sourceTree = SOURCE_ROOT; };
+		734A75F109D76DCC002D8FAE /* pp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = pp.h; path = ../lib/enc/pp.h; sourceTree = SOURCE_ROOT; };
+		734A75F209D76DCC002D8FAE /* quant_lookup.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = quant_lookup.h; path = ../lib/enc/quant_lookup.h; sourceTree = SOURCE_ROOT; };
+		734A75F309D76DCC002D8FAE /* toplevel_lookup.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = toplevel_lookup.h; path = ../lib/enc/toplevel_lookup.h; sourceTree = SOURCE_ROOT; };
+		734A75FE09D76E86002D8FAE /* encoder_disabled.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = encoder_disabled.c; path = ../lib/enc/encoder_disabled.c; sourceTree = SOURCE_ROOT; };
+		73514EC30B0C7E3200CEC060 /* cpu.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = cpu.c; path = "../lib//cpu.c"; sourceTree = SOURCE_ROOT; };
+		73514EC40B0C7E3200CEC060 /* dsp.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = dsp.c; path = ../lib/enc/dsp.c; sourceTree = SOURCE_ROOT; };
+		73514EC70B0C7E5700CEC060 /* cpu.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = cpu.h; path = "../lib//cpu.h"; sourceTree = SOURCE_ROOT; };
+		73514EC80B0C7E5700CEC060 /* dsp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = dsp.h; path = ../lib/enc/dsp.h; sourceTree = SOURCE_ROOT; };
 		738837100B192732005C7A69 /* libtheora.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libtheora.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		8D07F2C70486CC7A007CD1D0 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
 		8D07F2C80486CC7A007CD1D0 /* Theora.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Theora.framework; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -184,6 +263,9 @@
 		08FB77ACFE841707C02AAC07 /* Source */ = {
 			isa = PBXGroup;
 			children = (
+				0977298C0BCAC5A800303091 /* encoder_quant.c */,
+				097729860BCAC57D00303091 /* common.c */,
+				097728DC0BCABCAA00303091 /* dec */,
 				094A00000B77F5EC0005C7B8 /* x86_32 */,
 				73514EC70B0C7E5700CEC060 /* cpu.h */,
 				73514EC80B0C7E5700CEC060 /* dsp.h */,
@@ -193,32 +275,27 @@
 				734A75EC09D76DCC002D8FAE /* block_inline.h */,
 				734A75ED09D76DCC002D8FAE /* codec_internal.h */,
 				734A75EE09D76DCC002D8FAE /* encoder_lookup.h */,
-				734A75EF09D76DCC002D8FAE /* huffman.h */,
+				734A75EF09D76DCC002D8FAE /* encoder_huffman.h */,
 				734A75F009D76DCC002D8FAE /* hufftables.h */,
 				734A75F109D76DCC002D8FAE /* pp.h */,
 				734A75F209D76DCC002D8FAE /* quant_lookup.h */,
 				734A75F309D76DCC002D8FAE /* toplevel_lookup.h */,
-				734A75F409D76DCC002D8FAE /* toplevel.h */,
 				734A75C409D76C7E002D8FAE /* blockmap.c */,
-				734A75C509D76C7E002D8FAE /* comment.c */,
 				734A75C609D76C7E002D8FAE /* dct_decode.c */,
 				734A75C709D76C7E002D8FAE /* dct_encode.c */,
 				734A75C809D76C7E002D8FAE /* dct.c */,
-				734A75C909D76C7E002D8FAE /* decode.c */,
 				734A75CA09D76C7E002D8FAE /* encode.c */,
 				734A75CB09D76C7E002D8FAE /* encoder_toplevel.c */,
 				734A75CC09D76C7E002D8FAE /* frarray.c */,
 				734A75CD09D76C7E002D8FAE /* frinit.c */,
-				734A75CE09D76C7E002D8FAE /* huffman.c */,
-				734A75CF09D76C7E002D8FAE /* idct.c */,
+				734A75CE09D76C7E002D8FAE /* encoder_huffman.c */,
+				734A75CF09D76C7E002D8FAE /* encoder_idct.c */,
 				734A75D009D76C7E002D8FAE /* mcomp.c */,
 				734A75D109D76C7E002D8FAE /* misc_common.c */,
 				734A75D209D76C7E002D8FAE /* pb.c */,
 				734A75D309D76C7E002D8FAE /* pp.c */,
-				734A75D409D76C7E002D8FAE /* quant.c */,
 				734A75D509D76C7E002D8FAE /* reconstruct.c */,
 				734A75D609D76C7E002D8FAE /* scan.c */,
-				734A75D709D76C7E002D8FAE /* toplevel.c */,
 				32BAE0B70371A74B00C91783 /* Theora_Prefix.pch */,
 			);
 			name = Source;
@@ -227,18 +304,63 @@
 		094A00000B77F5EC0005C7B8 /* x86_32 */ = {
 			isa = PBXGroup;
 			children = (
+				0977292C0BCABCFD00303091 /* dct_decode_mmx.c */,
+				0977292D0BCABCFD00303091 /* idct_mmx.c */,
 				094A00010B77F5EC0005C7B8 /* dsp_mmx.c */,
 				094A00020B77F5EC0005C7B8 /* dsp_mmxext.c */,
 				094A00030B77F5EC0005C7B8 /* fdct_mmx.c */,
 				094A00040B77F5EC0005C7B8 /* recon_mmx.c */,
 			);
 			name = x86_32;
-			path = ../lib/x86_32;
+			path = ../lib/enc/x86_32;
 			sourceTree = SOURCE_ROOT;
 		};
+		097728DC0BCABCAA00303091 /* dec */ = {
+			isa = PBXGroup;
+			children = (
+				097728DD0BCABCAA00303091 /* apiwrapper.c */,
+				097728DE0BCABCAA00303091 /* dct.h */,
+				097728DF0BCABCAA00303091 /* decinfo.c */,
+				097728E00BCABCAA00303091 /* decint.h */,
+				097728E10BCABCAA00303091 /* decode.c */,
+				097728E20BCABCAA00303091 /* dequant.c */,
+				097728E30BCABCAA00303091 /* dequant.h */,
+				097728E40BCABCAA00303091 /* enquant.h */,
+				097728E50BCABCAA00303091 /* fragment.c */,
+				097728E60BCABCAA00303091 /* huffdec.c */,
+				097728E70BCABCAA00303091 /* huffdec.h */,
+				097728E80BCABCAA00303091 /* huffman.h */,
+				097728E90BCABCAA00303091 /* idct.c */,
+				097728EA0BCABCAA00303091 /* idct.h */,
+				097728EB0BCABCAA00303091 /* info.c */,
+				097728EC0BCABCAA00303091 /* internal.c */,
+				097728ED0BCABCAA00303091 /* ocintrin.h */,
+				097728EE0BCABCAA00303091 /* quant.c */,
+				097728EF0BCABCAA00303091 /* quant.h */,
+				097728F00BCABCAA00303091 /* state.c */,
+				097728F10BCABCAA00303091 /* x86 */,
+			);
+			name = dec;
+			path = ../lib/dec;
+			sourceTree = SOURCE_ROOT;
+		};
+		097728F10BCABCAA00303091 /* x86 */ = {
+			isa = PBXGroup;
+			children = (
+				097728F20BCABCAA00303091 /* mmxfrag.c */,
+				097728F30BCABCAA00303091 /* mmxidct.c */,
+				097728F40BCABCAA00303091 /* mmxstate.c */,
+				097728F50BCABCAA00303091 /* x86int.h */,
+				097728F60BCABCAA00303091 /* x86state.c */,
+			);
+			path = x86;
+			sourceTree = "<group>";
+		};
 		734A75BD09D76B96002D8FAE /* Headers */ = {
 			isa = PBXGroup;
 			children = (
+				097729930BCAC60000303091 /* codec.h */,
+				097729940BCAC60000303091 /* theoradec.h */,
 				734A75BE09D76BB9002D8FAE /* theora.h */,
 			);
 			name = Headers;
@@ -251,6 +373,18 @@
 			isa = PBXHeadersBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				097729110BCABCAA00303091 /* dct.h in Headers */,
+				097729130BCABCAA00303091 /* decint.h in Headers */,
+				097729160BCABCAA00303091 /* dequant.h in Headers */,
+				097729170BCABCAA00303091 /* enquant.h in Headers */,
+				0977291A0BCABCAA00303091 /* huffdec.h in Headers */,
+				0977291B0BCABCAA00303091 /* huffman.h in Headers */,
+				0977291D0BCABCAA00303091 /* idct.h in Headers */,
+				097729200BCABCAA00303091 /* ocintrin.h in Headers */,
+				097729220BCABCAA00303091 /* quant.h in Headers */,
+				097729270BCABCAA00303091 /* x86int.h in Headers */,
+				097729970BCAC60000303091 /* codec.h in Headers */,
+				097729980BCAC60000303091 /* theoradec.h in Headers */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -263,14 +397,25 @@
 				734A75F509D76DCC002D8FAE /* block_inline.h in Headers */,
 				734A75F609D76DCC002D8FAE /* codec_internal.h in Headers */,
 				734A75F709D76DCC002D8FAE /* encoder_lookup.h in Headers */,
-				734A75F809D76DCC002D8FAE /* huffman.h in Headers */,
+				734A75F809D76DCC002D8FAE /* encoder_huffman.h in Headers */,
 				734A75F909D76DCC002D8FAE /* hufftables.h in Headers */,
 				734A75FA09D76DCC002D8FAE /* pp.h in Headers */,
 				734A75FB09D76DCC002D8FAE /* quant_lookup.h in Headers */,
 				734A75FC09D76DCC002D8FAE /* toplevel_lookup.h in Headers */,
-				734A75FD09D76DCC002D8FAE /* toplevel.h in Headers */,
 				73514EC90B0C7E5700CEC060 /* cpu.h in Headers */,
 				73514ECA0B0C7E5700CEC060 /* dsp.h in Headers */,
+				097728F80BCABCAA00303091 /* dct.h in Headers */,
+				097728FA0BCABCAA00303091 /* decint.h in Headers */,
+				097728FD0BCABCAA00303091 /* dequant.h in Headers */,
+				097728FE0BCABCAA00303091 /* enquant.h in Headers */,
+				097729010BCABCAA00303091 /* huffdec.h in Headers */,
+				097729020BCABCAA00303091 /* huffman.h in Headers */,
+				097729040BCABCAA00303091 /* idct.h in Headers */,
+				097729070BCABCAA00303091 /* ocintrin.h in Headers */,
+				097729090BCABCAA00303091 /* quant.h in Headers */,
+				0977290E0BCABCAA00303091 /* x86int.h in Headers */,
+				097729950BCAC60000303091 /* codec.h in Headers */,
+				097729960BCAC60000303091 /* theoradec.h in Headers */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -358,22 +503,18 @@
 			buildActionMask = 2147483647;
 			files = (
 				738837140B19284D005C7A69 /* blockmap.c in Sources */,
-				738837150B192850005C7A69 /* comment.c in Sources */,
 				738837160B19285D005C7A69 /* dct.c in Sources */,
 				738837170B19286C005C7A69 /* dct_decode.c in Sources */,
-				738837180B19287F005C7A69 /* decode.c in Sources */,
 				738837190B192890005C7A69 /* frarray.c in Sources */,
 				7388371A0B192896005C7A69 /* frinit.c in Sources */,
-				7388371B0B1928A0005C7A69 /* huffman.c in Sources */,
-				7388371C0B1928AF005C7A69 /* idct.c in Sources */,
+				7388371B0B1928A0005C7A69 /* encoder_huffman.c in Sources */,
+				7388371C0B1928AF005C7A69 /* encoder_idct.c in Sources */,
 				7388371D0B1928BB005C7A69 /* mcomp.c in Sources */,
 				7388371E0B1928C4005C7A69 /* misc_common.c in Sources */,
 				7388371F0B1928C6005C7A69 /* pb.c in Sources */,
 				738837200B1928CC005C7A69 /* pp.c in Sources */,
-				738837210B1928CE005C7A69 /* quant.c in Sources */,
 				738837220B1928D2005C7A69 /* reconstruct.c in Sources */,
 				738837230B1928D5005C7A69 /* scan.c in Sources */,
-				738837240B1928D6005C7A69 /* toplevel.c in Sources */,
 				738837250B1928DB005C7A69 /* cpu.c in Sources */,
 				738837260B1928E1005C7A69 /* dsp.c in Sources */,
 				738837270B1929EC005C7A69 /* dct_encode.c in Sources */,
@@ -383,6 +524,25 @@
 				094A000A0B77F5EC0005C7B8 /* dsp_mmxext.c in Sources */,
 				094A000B0B77F5EC0005C7B8 /* fdct_mmx.c in Sources */,
 				094A000C0B77F5EC0005C7B8 /* recon_mmx.c in Sources */,
+				097729100BCABCAA00303091 /* apiwrapper.c in Sources */,
+				097729120BCABCAA00303091 /* decinfo.c in Sources */,
+				097729140BCABCAA00303091 /* decode.c in Sources */,
+				097729150BCABCAA00303091 /* dequant.c in Sources */,
+				097729180BCABCAA00303091 /* fragment.c in Sources */,
+				097729190BCABCAA00303091 /* huffdec.c in Sources */,
+				0977291C0BCABCAA00303091 /* idct.c in Sources */,
+				0977291E0BCABCAA00303091 /* info.c in Sources */,
+				0977291F0BCABCAA00303091 /* internal.c in Sources */,
+				097729210BCABCAA00303091 /* quant.c in Sources */,
+				097729230BCABCAA00303091 /* state.c in Sources */,
+				097729240BCABCAA00303091 /* mmxfrag.c in Sources */,
+				097729250BCABCAA00303091 /* mmxidct.c in Sources */,
+				097729260BCABCAA00303091 /* mmxstate.c in Sources */,
+				097729280BCABCAA00303091 /* x86state.c in Sources */,
+				097729300BCABCFD00303091 /* dct_decode_mmx.c in Sources */,
+				097729310BCABCFD00303091 /* idct_mmx.c in Sources */,
+				097729880BCAC57D00303091 /* common.c in Sources */,
+				0977298E0BCAC5A800303091 /* encoder_quant.c in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -391,31 +551,46 @@
 			buildActionMask = 2147483647;
 			files = (
 				734A75D809D76C7E002D8FAE /* blockmap.c in Sources */,
-				734A75D909D76C7E002D8FAE /* comment.c in Sources */,
 				734A75DA09D76C7E002D8FAE /* dct_decode.c in Sources */,
 				734A75DB09D76C7E002D8FAE /* dct_encode.c in Sources */,
 				734A75DC09D76C7E002D8FAE /* dct.c in Sources */,
-				734A75DD09D76C7E002D8FAE /* decode.c in Sources */,
 				734A75DE09D76C7E002D8FAE /* encode.c in Sources */,
 				734A75DF09D76C7E002D8FAE /* encoder_toplevel.c in Sources */,
 				734A75E009D76C7E002D8FAE /* frarray.c in Sources */,
 				734A75E109D76C7E002D8FAE /* frinit.c in Sources */,
-				734A75E209D76C7E002D8FAE /* huffman.c in Sources */,
-				734A75E309D76C7E002D8FAE /* idct.c in Sources */,
+				734A75E209D76C7E002D8FAE /* encoder_huffman.c in Sources */,
+				734A75E309D76C7E002D8FAE /* encoder_idct.c in Sources */,
 				734A75E409D76C7E002D8FAE /* mcomp.c in Sources */,
 				734A75E509D76C7E002D8FAE /* misc_common.c in Sources */,
 				734A75E609D76C7E002D8FAE /* pb.c in Sources */,
 				734A75E709D76C7E002D8FAE /* pp.c in Sources */,
-				734A75E809D76C7E002D8FAE /* quant.c in Sources */,
 				734A75E909D76C7E002D8FAE /* reconstruct.c in Sources */,
 				734A75EA09D76C7E002D8FAE /* scan.c in Sources */,
-				734A75EB09D76C7E002D8FAE /* toplevel.c in Sources */,
 				73514EC50B0C7E3200CEC060 /* cpu.c in Sources */,
 				73514EC60B0C7E3200CEC060 /* dsp.c in Sources */,
 				094A00050B77F5EC0005C7B8 /* dsp_mmx.c in Sources */,
 				094A00060B77F5EC0005C7B8 /* dsp_mmxext.c in Sources */,
 				094A00070B77F5EC0005C7B8 /* fdct_mmx.c in Sources */,
 				094A00080B77F5EC0005C7B8 /* recon_mmx.c in Sources */,
+				097728F70BCABCAA00303091 /* apiwrapper.c in Sources */,
+				097728F90BCABCAA00303091 /* decinfo.c in Sources */,
+				097728FB0BCABCAA00303091 /* decode.c in Sources */,
+				097728FC0BCABCAA00303091 /* dequant.c in Sources */,
+				097728FF0BCABCAA00303091 /* fragment.c in Sources */,
+				097729000BCABCAA00303091 /* huffdec.c in Sources */,
+				097729030BCABCAA00303091 /* idct.c in Sources */,
+				097729050BCABCAA00303091 /* info.c in Sources */,
+				097729060BCABCAA00303091 /* internal.c in Sources */,
+				097729080BCABCAA00303091 /* quant.c in Sources */,
+				0977290A0BCABCAA00303091 /* state.c in Sources */,
+				0977290B0BCABCAA00303091 /* mmxfrag.c in Sources */,
+				0977290C0BCABCAA00303091 /* mmxidct.c in Sources */,
+				0977290D0BCABCAA00303091 /* mmxstate.c in Sources */,
+				0977290F0BCABCAA00303091 /* x86state.c in Sources */,
+				0977292E0BCABCFD00303091 /* dct_decode_mmx.c in Sources */,
+				0977292F0BCABCFD00303091 /* idct_mmx.c in Sources */,
+				097729870BCAC57D00303091 /* common.c in Sources */,
+				0977298D0BCAC5A800303091 /* encoder_quant.c in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -491,7 +666,9 @@
 				);
 				GCC_WARN_ABOUT_RETURN_TYPE = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
-				PER_ARCH_CFLAGS_i386 = "-DUSE_ASM";
+				OTHER_CFLAGS = "";
+				OTHER_LDFLAGS_i386 = "-Wl,-read_only_relocs,suppress";
+				PER_ARCH_CFLAGS_i386 = "-DUSE_ASM -DOC_X86ASM";
 				PREBINDING = NO;
 				SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
 			};
@@ -515,6 +692,11 @@
 				);
 				GCC_WARN_ABOUT_RETURN_TYPE = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
+				HEADER_SEARCH_PATHS = (
+					../include,
+					"../lib/**",
+					"$(inherited)",
+				);
 				OTHER_CFLAGS = (
 					"$(OTHER_CFLAGS)",
 					"-falign-loops=16",
@@ -523,8 +705,10 @@
 					"-finline-functions",
 					"-funroll-loops",
 				);
-				PER_ARCH_CFLAGS_i386 = "-DUSE_ASM";
+				OTHER_LDFLAGS_i386 = "-Wl,-read_only_relocs,suppress";
+				PER_ARCH_CFLAGS_i386 = "-DUSE_ASM -DOC_X86ASM";
 				PREBINDING = NO;
+				SCAN_ALL_SOURCE_FILES_FOR_INCLUDES = NO;
 				SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
 			};
 			name = Release;



More information about the commits mailing list