---
 libavcodec/4xm.c         |  769 ++++++++++++++++++++++++----------------------
 libavdevice/timefilter.c |   97 ++++---
 2 files changed, 453 insertions(+), 413 deletions(-)

diff --git a/libavcodec/4xm.c b/libavcodec/4xm.c
index 21bde52..cc887e5 100644
--- a/libavcodec/4xm.c
+++ b/libavcodec/4xm.c
@@ -38,74 +38,74 @@
 
 #define CFRAME_BUFFER_COUNT 100
 
-static const uint8_t block_type_tab[2][4][8][2]={
+static const uint8_t block_type_tab[2][4][8][2] = {
  {
-  {   //{8,4,2}x{8,4,2}
-    { 0,1}, { 2,2}, { 6,3}, {14,4}, {30,5}, {31,5}, { 0,0}
-  },{ //{8,4}x1
-    { 0,1}, { 0,0}, { 2,2}, { 6,3}, {14,4}, {15,4}, { 0,0}
-  },{ //1x{8,4}
-    { 0,1}, { 2,2}, { 0,0}, { 6,3}, {14,4}, {15,4}, { 0,0}
-  },{ //1x2, 2x1
-    { 0,1}, { 0,0}, { 0,0}, { 2,2}, { 6,3}, {14,4}, {15,4}
+  {    //{ 8, 4, 2 }x{ 8, 4, 2}
+     { 0, 1 }, { 2, 2 }, { 6, 3 }, { 14, 4 }, { 30, 5 }, { 31, 5 }, { 0, 0 }
+  }, { //{ 8, 4 }x1
+     { 0, 1 }, { 0, 0 }, { 2, 2 }, { 6, 3 }, { 14, 4 }, { 15, 4 }, { 0, 0 }
+  }, { //1x{ 8, 4 }
+     { 0, 1 }, { 2, 2 }, { 0, 0 }, { 6, 3 }, { 14, 4 }, { 15, 4 }, { 0, 0 }
+  }, { //1x2, 2x1
+     { 0, 1 }, { 0, 0 }, { 0, 0 }, { 2, 2 }, { 6, 3 }, { 14, 4 }, { 15, 4 }
   }
- },{
-  {  //{8,4,2}x{8,4,2}
-    { 1,2}, { 4,3}, { 5,3}, {0,2}, {6,3}, {7,3}, {0,0}
-  },{//{8,4}x1
-    { 1,2}, { 0,0}, { 2,2}, {0,2}, {6,3}, {7,3}, {0,0}
-  },{//1x{8,4}
-    { 1,2}, { 2,2}, { 0,0}, {0,2}, {6,3}, {7,3}, {0,0}
-  },{//1x2, 2x1
-    { 1,2}, { 0,0}, { 0,0}, {0,2}, {2,2}, {6,3}, {7,3}
+ }, {
+  {   //{ 8, 4, 2 }x{ 8, 4, 2}
+     { 1, 2 }, { 4, 3 }, { 5, 3 }, { 0, 2 }, { 6, 3 }, { 7, 3 }, { 0, 0 }
+  }, {//{ 8, 4 }x1
+     { 1, 2 }, { 0, 0 }, { 2, 2 }, { 0, 2 }, { 6, 3 }, { 7, 3 }, { 0, 0 }
+  }, {//1x{ 8, 4 }
+     { 1, 2 }, { 2, 2 }, { 0, 0 }, { 0, 2 }, { 6, 3 }, { 7, 3 }, { 0, 0 }
+  }, {//1x2, 2x1
+     { 1, 2 }, { 0, 0 }, { 0, 0 }, { 0, 2 }, { 2, 2 }, { 6, 3 }, { 7, 3 }
   }
  }
 };
 
-static const uint8_t size2index[4][4]={
-  {-1, 3, 1, 1},
-  { 3, 0, 0, 0},
-  { 2, 0, 0, 0},
-  { 2, 0, 0, 0},
+static const uint8_t size2index[4][4] = {
+  {-1, 3, 1, 1 },
+  { 3, 0, 0, 0 },
+  { 2, 0, 0, 0 },
+  { 2, 0, 0, 0 },
 };
 
-static const int8_t mv[256][2]={
-{  0,  0},{  0, -1},{ -1,  0},{  1,  0},{  0,  1},{ -1, -1},{  1, -1},{ -1,  
1},
-{  1,  1},{  0, -2},{ -2,  0},{  2,  0},{  0,  2},{ -1, -2},{  1, -2},{ -2, 
-1},
-{  2, -1},{ -2,  1},{  2,  1},{ -1,  2},{  1,  2},{ -2, -2},{  2, -2},{ -2,  
2},
-{  2,  2},{  0, -3},{ -3,  0},{  3,  0},{  0,  3},{ -1, -3},{  1, -3},{ -3, 
-1},
-{  3, -1},{ -3,  1},{  3,  1},{ -1,  3},{  1,  3},{ -2, -3},{  2, -3},{ -3, 
-2},
-{  3, -2},{ -3,  2},{  3,  2},{ -2,  3},{  2,  3},{  0, -4},{ -4,  0},{  4,  
0},
-{  0,  4},{ -1, -4},{  1, -4},{ -4, -1},{  4, -1},{  4,  1},{ -1,  4},{  1,  
4},
-{ -3, -3},{ -3,  3},{  3,  3},{ -2, -4},{ -4, -2},{  4, -2},{ -4,  2},{ -2,  
4},
-{  2,  4},{ -3, -4},{  3, -4},{  4, -3},{ -5,  0},{ -4,  3},{ -3,  4},{  3,  
4},
-{ -1, -5},{ -5, -1},{ -5,  1},{ -1,  5},{ -2, -5},{  2, -5},{  5, -2},{  5,  
2},
-{ -4, -4},{ -4,  4},{ -3, -5},{ -5, -3},{ -5,  3},{  3,  5},{ -6,  0},{  0,  
6},
-{ -6, -1},{ -6,  1},{  1,  6},{  2, -6},{ -6,  2},{  2,  6},{ -5, -4},{  5,  
4},
-{  4,  5},{ -6, -3},{  6,  3},{ -7,  0},{ -1, -7},{  5, -5},{ -7,  1},{ -1,  
7},
-{  4, -6},{  6,  4},{ -2, -7},{ -7,  2},{ -3, -7},{  7, -3},{  3,  7},{  6, 
-5},
-{  0, -8},{ -1, -8},{ -7, -4},{ -8,  1},{  4,  7},{  2, -8},{ -2,  8},{  6,  
6},
-{ -8,  3},{  5, -7},{ -5,  7},{  8, -4},{  0, -9},{ -9, -1},{  1,  9},{  7, 
-6},
-{ -7,  6},{ -5, -8},{ -5,  8},{ -9,  3},{  9, -4},{  7, -7},{  8, -6},{  6,  
8},
-{ 10,  1},{-10,  2},{  9, -5},{ 10, -3},{ -8, -7},{-10, -4},{  6, -9},{-11,  
0},
-{ 11,  1},{-11, -2},{ -2, 11},{  7, -9},{ -7,  9},{ 10,  6},{ -4, 11},{  8, 
-9},
-{  8,  9},{  5, 11},{  7,-10},{ 12, -3},{ 11,  6},{ -9, -9},{  8, 10},{  5, 
12},
-{-11,  7},{ 13,  2},{  6,-12},{ 10,  9},{-11,  8},{ -7, 12},{  0, 14},{ 14, 
-2},
-{ -9, 11},{ -6, 13},{-14, -4},{ -5,-14},{  5, 14},{-15, -1},{-14, -6},{  
3,-15},
-{ 11,-11},{ -7, 14},{ -5, 15},{  8,-14},{ 15,  6},{  3, 16},{  7,-15},{-16,  
5},
-{  0, 17},{-16, -6},{-10, 14},{-16,  7},{ 12, 13},{-16,  8},{-17,  6},{-18,  
3},
-{ -7, 17},{ 15, 11},{ 16, 10},{  2,-19},{  3,-19},{-11,-16},{-18,  8},{-19, 
-6},
-{  2,-20},{-17,-11},{-10,-18},{  8, 19},{-21, -1},{-20,  7},{ -4, 21},{ 21,  
5},
-{ 15, 16},{  2,-22},{-10,-20},{-22,  5},{ 20,-11},{ -7,-22},{-12, 20},{ 23, 
-5},
-{ 13,-20},{ 24, -2},{-15, 19},{-11, 22},{ 16, 19},{ 23,-10},{-18,-18},{ 
-9,-24},
-{ 24,-10},{ -3, 26},{-23, 13},{-18,-20},{ 17, 21},{ -4, 27},{ 27,  6},{  
1,-28},
-{-11, 26},{-17,-23},{  7, 28},{ 11,-27},{ 29,  5},{-23,-19},{-28,-11},{-21, 
22},
-{-30,  7},{-17, 26},{-27, 16},{ 13, 29},{ 19,-26},{ 10,-31},{-14,-30},{ 
20,-27},
-{-29, 18},{-16,-31},{-28,-22},{ 21,-30},{-25, 28},{ 26,-29},{ 25,-32},{-32,-32}
+static const int8_t mv[256][2] = {
+{  0,  0 }, {  0, -1 }, { -1,  0 }, {  1,  0 }, {  0,  1 }, { -1, -1 }, {  1, 
-1 }, { -1,  1 },
+{  1,  1 }, {  0, -2 }, { -2,  0 }, {  2,  0 }, {  0,  2 }, { -1, -2 }, {  1, 
-2 }, { -2, -1 },
+{  2, -1 }, { -2,  1 }, {  2,  1 }, { -1,  2 }, {  1,  2 }, { -2, -2 }, {  2, 
-2 }, { -2,  2 },
+{  2,  2 }, {  0, -3 }, { -3,  0 }, {  3,  0 }, {  0,  3 }, { -1, -3 }, {  1, 
-3 }, { -3, -1 },
+{  3, -1 }, { -3,  1 }, {  3,  1 }, { -1,  3 }, {  1,  3 }, { -2, -3 }, {  2, 
-3 }, { -3, -2 },
+{  3, -2 }, { -3,  2 }, {  3,  2 }, { -2,  3 }, {  2,  3 }, {  0, -4 }, { -4,  
0 }, {  4,  0 },
+{  0,  4 }, { -1, -4 }, {  1, -4 }, { -4, -1 }, {  4, -1 }, {  4,  1 }, { -1,  
4 }, {  1,  4 },
+{ -3, -3 }, { -3,  3 }, {  3,  3 }, { -2, -4 }, { -4, -2 }, {  4, -2 }, { -4,  
2 }, { -2,  4 },
+{  2,  4 }, { -3, -4 }, {  3, -4 }, {  4, -3 }, { -5,  0 }, { -4,  3 }, { -3,  
4 }, {  3,  4 },
+{ -1, -5 }, { -5, -1 }, { -5,  1 }, { -1,  5 }, { -2, -5 }, {  2, -5 }, {  5, 
-2 }, {  5,  2 },
+{ -4, -4 }, { -4,  4 }, { -3, -5 }, { -5, -3 }, { -5,  3 }, {  3,  5 }, { -6,  
0 }, {  0,  6 },
+{ -6, -1 }, { -6,  1 }, {  1,  6 }, {  2, -6 }, { -6,  2 }, {  2,  6 }, { -5, 
-4 }, {  5,  4 },
+{  4,  5 }, { -6, -3 }, {  6,  3 }, { -7,  0 }, { -1, -7 }, {  5, -5 }, { -7,  
1 }, { -1,  7 },
+{  4, -6 }, {  6,  4 }, { -2, -7 }, { -7,  2 }, { -3, -7 }, {  7, -3 }, {  3,  
7 }, {  6, -5 },
+{  0, -8 }, { -1, -8 }, { -7, -4 }, { -8,  1 }, {  4,  7 }, {  2, -8 }, { -2,  
8 }, {  6,  6 },
+{ -8,  3 }, {  5, -7 }, { -5,  7 }, {  8, -4 }, {  0, -9 }, { -9, -1 }, {  1,  
9 }, {  7, -6 },
+{ -7,  6 }, { -5, -8 }, { -5,  8 }, { -9,  3 }, {  9, -4 }, {  7, -7 }, {  8, 
-6 }, {  6,  8 },
+{ 10,  1 }, {-10,  2 }, {  9, -5 }, { 10, -3 }, { -8, -7 }, {-10, -4 }, {  6, 
-9 }, {-11,  0 },
+{ 11,  1 }, {-11, -2 }, { -2, 11 }, {  7, -9 }, { -7,  9 }, { 10,  6 }, { -4, 
11 }, {  8, -9 },
+{  8,  9 }, {  5, 11 }, {  7,-10 }, { 12, -3 }, { 11,  6 }, { -9, -9 }, {  8, 
10 }, {  5, 12 },
+{-11,  7 }, { 13,  2 }, {  6,-12 }, { 10,  9 }, {-11,  8 }, { -7, 12 }, {  0, 
14 }, { 14, -2 },
+{ -9, 11 }, { -6, 13 }, {-14, -4 }, { -5,-14 }, {  5, 14 }, {-15, -1 }, {-14, 
-6 }, {  3,-15 },
+{ 11,-11 }, { -7, 14 }, { -5, 15 }, {  8,-14 }, { 15,  6 }, {  3, 16 }, {  
7,-15 }, {-16,  5 },
+{  0, 17 }, {-16, -6 }, {-10, 14 }, {-16,  7 }, { 12, 13 }, {-16,  8 }, {-17,  
6 }, {-18,  3 },
+{ -7, 17 }, { 15, 11 }, { 16, 10 }, {  2,-19 }, {  3,-19 }, {-11,-16 }, {-18,  
8 }, {-19, -6 },
+{  2,-20 }, {-17,-11 }, {-10,-18 }, {  8, 19 }, {-21, -1 }, {-20,  7 }, { -4, 
21 }, { 21,  5 },
+{ 15, 16 }, {  2,-22 }, {-10,-20 }, {-22,  5 }, { 20,-11 }, { -7,-22 }, {-12, 
20 }, { 23, -5 },
+{ 13,-20 }, { 24, -2 }, {-15, 19 }, {-11, 22 }, { 16, 19 }, { 23,-10 }, 
{-18,-18 }, { -9,-24 },
+{ 24,-10 }, { -3, 26 }, {-23, 13 }, {-18,-20 }, { 17, 21 }, { -4, 27 }, { 27,  
6 }, {  1,-28 },
+{-11, 26 }, {-17,-23 }, {  7, 28 }, { 11,-27 }, { 29,  5 }, {-23,-19 }, 
{-28,-11 }, {-21, 22 },
+{-30,  7 }, {-17, 26 }, {-27, 16 }, { 13, 29 }, { 19,-26 }, { 10,-31 }, 
{-14,-30 }, { 20,-27 },
+{-29, 18 }, {-16,-31 }, {-28,-22 }, { 21,-30 }, {-25, 28 }, { 26,-29 }, { 
25,-32 }, {-32,-32 }
 };
 
 // this is simply the scaled down elementwise product of the standard jpeg 
quantizer table and the AAN premul table
-static const uint8_t dequant_table[64]={
+static const uint8_t dequant_table[64] = {
  16, 15, 13, 19, 24, 31, 28, 17,
  17, 23, 25, 31, 36, 63, 45, 21,
  18, 24, 27, 37, 52, 59, 49, 20,
@@ -119,21 +119,21 @@ static const uint8_t dequant_table[64]={
 static VLC block_type_vlc[2][4];
 
 
-typedef struct CFrameBuffer{
+typedef struct CFrameBuffer {
     unsigned int allocated_size;
     unsigned int size;
     int id;
     uint8_t *data;
-}CFrameBuffer;
+} CFrameBuffer;
 
-typedef struct FourXContext{
+typedef struct FourXContext {
     AVCodecContext *avctx;
     DSPContext dsp;
     AVFrame current_picture, last_picture;
     GetBitContext pre_gb;          ///< ac/dc prefix
     GetBitContext gb;
-    const uint8_t *bytestream;
-    const uint16_t *wordstream;
+    GetByteContext g;
+    GetByteContext g2;
     int mv[256];
     VLC pre_vlc;
     int last_dc;
@@ -150,31 +150,32 @@ typedef struct FourXContext{
 #define FIX_1_847759065 121095
 #define FIX_2_613125930 171254
 
-#define MULTIPLY(var,const)  (((var)*(const)) >> 16)
+#define MULTIPLY(var, const)  (((var) * (const)) >> 16)
 
-static void idct(DCTELEM block[64]){
+static void idct(DCTELEM block[64])
+{
     int tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
     int tmp10, tmp11, tmp12, tmp13;
     int z5, z10, z11, z12, z13;
     int i;
     int temp[64];
 
-    for(i=0; i<8; i++){
-        tmp10 = block[8*0 + i] + block[8*4 + i];
-        tmp11 = block[8*0 + i] - block[8*4 + i];
+    for (i = 0; i < 8; i++) {
+        tmp10 = block[8 * 0 + i] + block[8 * 4 + i];
+        tmp11 = block[8 * 0 + i] - block[8 * 4 + i];
 
-        tmp13 =          block[8*2 + i] + block[8*6 + i];
-        tmp12 = MULTIPLY(block[8*2 + i] - block[8*6 + i], FIX_1_414213562) - 
tmp13;
+        tmp13 =          block[8 * 2 + i] + block[8 * 6 + i];
+        tmp12 = MULTIPLY(block[8 * 2 + i] - block[8 * 6 + i], FIX_1_414213562) 
- tmp13;
 
         tmp0 = tmp10 + tmp13;
         tmp3 = tmp10 - tmp13;
         tmp1 = tmp11 + tmp12;
         tmp2 = tmp11 - tmp12;
 
-        z13 = block[8*5 + i] + block[8*3 + i];
-        z10 = block[8*5 + i] - block[8*3 + i];
-        z11 = block[8*1 + i] + block[8*7 + i];
-        z12 = block[8*1 + i] - block[8*7 + i];
+        z13 = block[8 * 5 + i] + block[8 * 3 + i];
+        z10 = block[8 * 5 + i] - block[8 * 3 + i];
+        z11 = block[8 * 1 + i] + block[8 * 7 + i];
+        z12 = block[8 * 1 + i] - block[8 * 7 + i];
 
         tmp7  =          z11 + z13;
         tmp11 = MULTIPLY(z11 - z13, FIX_1_414213562);
@@ -187,17 +188,17 @@ static void idct(DCTELEM block[64]){
         tmp5 = tmp11 - tmp6;
         tmp4 = tmp10 + tmp5;
 
-        temp[8*0 + i] = tmp0 + tmp7;
-        temp[8*7 + i] = tmp0 - tmp7;
-        temp[8*1 + i] = tmp1 + tmp6;
-        temp[8*6 + i] = tmp1 - tmp6;
-        temp[8*2 + i] = tmp2 + tmp5;
-        temp[8*5 + i] = tmp2 - tmp5;
-        temp[8*4 + i] = tmp3 + tmp4;
-        temp[8*3 + i] = tmp3 - tmp4;
+        temp[8 * 0 + i] = tmp0 + tmp7;
+        temp[8 * 7 + i] = tmp0 - tmp7;
+        temp[8 * 1 + i] = tmp1 + tmp6;
+        temp[8 * 6 + i] = tmp1 - tmp6;
+        temp[8 * 2 + i] = tmp2 + tmp5;
+        temp[8 * 5 + i] = tmp2 - tmp5;
+        temp[8 * 4 + i] = tmp3 + tmp4;
+        temp[8 * 3 + i] = tmp3 - tmp4;
     }
 
-    for(i=0; i<8*8; i+=8){
+    for (i = 0; i < 8 * 8; i += 8) {
         tmp10 = temp[0 + i] + temp[4 + i];
         tmp11 = temp[0 + i] - temp[4 + i];
 
@@ -218,45 +219,47 @@ static void idct(DCTELEM block[64]){
         tmp11 = MULTIPLY(z11 - z13, FIX_1_414213562);
 
         z5 = MULTIPLY(z10 + z12, FIX_1_847759065);
-        tmp10 = MULTIPLY(z12, FIX_1_082392200) - z5;
-        tmp12 = MULTIPLY(z10, - FIX_2_613125930) + z5;
+        tmp10 = MULTIPLY(z12,    FIX_1_082392200) - z5;
+        tmp12 = MULTIPLY(z10, -  FIX_2_613125930) + z5;
 
         tmp6 = tmp12 - tmp7;
         tmp5 = tmp11 - tmp6;
         tmp4 = tmp10 + tmp5;
 
-        block[0 + i] = (tmp0 + tmp7)>>6;
-        block[7 + i] = (tmp0 - tmp7)>>6;
-        block[1 + i] = (tmp1 + tmp6)>>6;
-        block[6 + i] = (tmp1 - tmp6)>>6;
-        block[2 + i] = (tmp2 + tmp5)>>6;
-        block[5 + i] = (tmp2 - tmp5)>>6;
-        block[4 + i] = (tmp3 + tmp4)>>6;
-        block[3 + i] = (tmp3 - tmp4)>>6;
+        block[0 + i] = (tmp0 + tmp7) >> 6;
+        block[7 + i] = (tmp0 - tmp7) >> 6;
+        block[1 + i] = (tmp1 + tmp6) >> 6;
+        block[6 + i] = (tmp1 - tmp6) >> 6;
+        block[2 + i] = (tmp2 + tmp5) >> 6;
+        block[5 + i] = (tmp2 - tmp5) >> 6;
+        block[4 + i] = (tmp3 + tmp4) >> 6;
+        block[3 + i] = (tmp3 - tmp4) >> 6;
     }
 }
 
-static av_cold void init_vlcs(FourXContext *f){
+static av_cold void init_vlcs(FourXContext *f)
+{
     static VLC_TYPE table[8][32][2];
     int i;
 
-    for(i=0; i<8; i++){
-        block_type_vlc[0][i].table= table[i];
-        block_type_vlc[0][i].table_allocated= 32;
+    for (i = 0; i < 8; i++) {
+        block_type_vlc[0][i].table = table[i];
+        block_type_vlc[0][i].table_allocated = 32;
         init_vlc(&block_type_vlc[0][i], BLOCK_TYPE_VLC_BITS, 7,
                  &block_type_tab[0][i][0][1], 2, 1,
                  &block_type_tab[0][i][0][0], 2, 1, INIT_VLC_USE_NEW_STATIC);
     }
 }
 
-static void init_mv(FourXContext *f){
+static void init_mv(FourXContext *f)
+{
     int i;
 
-    for(i=0; i<256; i++){
-        if(f->version>1)
-            f->mv[i] = mv[i][0]   + mv[i][1]  
*f->current_picture.linesize[0]/2;
+    for (i = 0; i < 256; i++) {
+        if (f->version > 1)
+            f->mv[i] = mv[i][0] + mv[i][1]           * 
f->current_picture.linesize[0] / 2;
         else
-            f->mv[i] = (i&15) - 8 + 
((i>>4)-8)*f->current_picture.linesize[0]/2;
+            f->mv[i] = (i & 15) - 8 + ((i >> 4) - 8) * 
f->current_picture.linesize[0] / 2;
     }
 }
 
@@ -277,40 +280,45 @@ static void init_mv(FourXContext *f){
     }
 #endif
 
-static inline void mcdc(uint16_t *dst, uint16_t *src, int log2w, int h, int 
stride, int scale, unsigned dc){
+static inline void mcdc(uint16_t *dst, uint16_t *src, int log2w, int h, int 
stride, int scale, unsigned dc)
+{
    int i;
-   dc*= 0x10001;
+   dc *= 0x10001;
 
-   switch(log2w){
+   switch(log2w) {
    case 0:
-        for(i=0; i<h; i++){
-            dst[0] = scale*src[0] + dc;
-            if(scale) src += stride;
+        for (i = 0; i < h; i++) {
+            dst[0] = scale * src[0] + dc;
+            if (scale) 
+                src += stride;
             dst += stride;
         }
         break;
     case 1:
-        for(i=0; i<h; i++){
+        for (i = 0; i < h; i++) {
             LE_CENTRIC_MUL(dst, src, scale, dc);
-            if(scale) src += stride;
+            if (scale) 
+                src += stride;
             dst += stride;
         }
         break;
     case 2:
-        for(i=0; i<h; i++){
+        for (i = 0; i < h; i++) {
             LE_CENTRIC_MUL(dst,     src,     scale, dc);
             LE_CENTRIC_MUL(dst + 2, src + 2, scale, dc);
-            if(scale) src += stride;
+            if (scale) 
+                src += stride;
             dst += stride;
         }
         break;
     case 3:
-        for(i=0; i<h; i++){
+        for (i = 0; i < h; i++) {
             LE_CENTRIC_MUL(dst,     src,     scale, dc);
             LE_CENTRIC_MUL(dst + 2, src + 2, scale, dc);
             LE_CENTRIC_MUL(dst + 4, src + 4, scale, dc);
             LE_CENTRIC_MUL(dst + 6, src + 6, scale, dc);
-            if(scale) src += stride;
+            if (scale) 
+                src += stride;
             dst += stride;
         }
         break;
@@ -318,112 +326,106 @@ static inline void mcdc(uint16_t *dst, uint16_t *src, 
int log2w, int h, int stri
     }
 }
 
-static void decode_p_block(FourXContext *f, uint16_t *dst, uint16_t *src, int 
log2w, int log2h, int stride){
-    const int index= size2index[log2h][log2w];
-    const int h= 1<<log2h;
-    int code= get_vlc2(&f->gb, block_type_vlc[1-(f->version>1)][index].table, 
BLOCK_TYPE_VLC_BITS, 1);
-    uint16_t *start= (uint16_t*)f->last_picture.data[0];
-    uint16_t *end= start + stride*(f->avctx->height-h+1) - (1<<log2w);
+static void decode_p_block(FourXContext *f, uint16_t *dst, uint16_t *src, int 
log2w, int log2h, int stride) 
+{
+    const int index = size2index[log2h][log2w];
+    const int h = 1 << log2h;
+    int code = get_vlc2(&f->gb, block_type_vlc[1 - (f->version > 
1)][index].table, BLOCK_TYPE_VLC_BITS, 1);
+    uint16_t *start = (uint16_t *)f->last_picture.data[0];
+    uint16_t *end = start + stride * (f->avctx->height-h + 1) - (1 << log2w);
 
-    assert(code>=0 && code<=6);
+    assert(code >= 0 && code <= 6);
 
-    if(code == 0){
-        src += f->mv[ *f->bytestream++ ];
-        if(start > src || src > end){
+    if (code == 0) {
+        src += f->mv[bytestream2_get_byte(&f->g)];
+        if (start > src || src > end) {
             av_log(f->avctx, AV_LOG_ERROR, "mv out of pic\n");
             return;
         }
         mcdc(dst, src, log2w, h, stride, 1, 0);
-    }else if(code == 1){
+    } else if (code == 1) {
         log2h--;
-        decode_p_block(f, dst                  , src                  , log2w, 
log2h, stride);
-        decode_p_block(f, dst + (stride<<log2h), src + (stride<<log2h), log2w, 
log2h, stride);
-    }else if(code == 2){
+        decode_p_block(f, dst, src, log2w, log2h, stride);
+        decode_p_block(f, dst + (stride << log2h), src + (stride << log2h), 
log2w, log2h, stride);
+    } else if (code == 2) {
         log2w--;
-        decode_p_block(f, dst             , src             , log2w, log2h, 
stride);
-        decode_p_block(f, dst + (1<<log2w), src + (1<<log2w), log2w, log2h, 
stride);
-    }else if(code == 3 && f->version<2){
+        decode_p_block(f, dst               , src               , log2w, 
log2h, stride);
+        decode_p_block(f, dst + (1 << log2w), src + (1 << log2w), log2w, 
log2h, stride);
+    } else if (code == 3 && f->version < 2) {
         mcdc(dst, src, log2w, h, stride, 1, 0);
-    }else if(code == 4){
-        src += f->mv[ *f->bytestream++ ];
-        if(start > src || src > end){
+    } else if (code == 4) {
+        src += f->mv[bytestream2_get_byte(&f->g)];
+        if (start > src || src > end) {
             av_log(f->avctx, AV_LOG_ERROR, "mv out of pic\n");
             return;
         }
-        mcdc(dst, src, log2w, h, stride, 1, av_le2ne16(*f->wordstream++));
-    }else if(code == 5){
-        mcdc(dst, src, log2w, h, stride, 0, av_le2ne16(*f->wordstream++));
-    }else if(code == 6){
-        if(log2w){
-            dst[0] = av_le2ne16(*f->wordstream++);
-            dst[1] = av_le2ne16(*f->wordstream++);
-        }else{
-            dst[0     ] = av_le2ne16(*f->wordstream++);
-            dst[stride] = av_le2ne16(*f->wordstream++);
+        mcdc(dst, src, log2w, h, stride, 1, bytestream2_get_le16(&f->g2));
+    } else if (code == 5) {
+        mcdc(dst, src, log2w, h, stride, 0, bytestream2_get_le16(&f->g2));
+    } else if (code == 6) {
+        if (log2w) {
+            dst[0] = bytestream2_get_le16(&f->g2);
+            dst[1] = bytestream2_get_le16(&f->g2);
+        } else {
+            dst[0     ] = bytestream2_get_le16(&f->g2);
+            dst[stride] = bytestream2_get_le16(&f->g2);
         }
     }
 }
 
-static int decode_p_frame(FourXContext *f, const uint8_t *buf, int length){
+static int decode_p_frame(FourXContext *f, const uint8_t *buf, int length)
+{
     int x, y;
-    const int width= f->avctx->width;
-    const int height= f->avctx->height;
-    uint16_t *src= (uint16_t*)f->last_picture.data[0];
-    uint16_t *dst= (uint16_t*)f->current_picture.data[0];
-    const int stride= f->current_picture.linesize[0]>>1;
-    unsigned int bitstream_size, bytestream_size, wordstream_size, extra;
-
-    if(f->version>1){
-        extra=20;
-        bitstream_size= AV_RL32(buf+8);
-        wordstream_size= AV_RL32(buf+12);
-        bytestream_size= AV_RL32(buf+16);
-    }else{
-        extra=0;
-        bitstream_size = AV_RL16(buf-4);
-        wordstream_size= AV_RL16(buf-2);
-        bytestream_size= FFMAX(length - bitstream_size - wordstream_size, 0);
+    const int width  = f->avctx->width;
+    const int heigh t= f->avctx->height;
+    uint16_t *src = (uint16_t *)f->last_picture.data[0];
+    uint16_t *dst = (uint16_t *)f->current_picture.data[0];
+    const int stride     =      f->current_picture.linesize[0] >> 1;
+    unsigned int bitstream_size, bytestream_size, wordstream_size, extra, 
bytestream_offset, wordstream_offset;
+
+    if (f->version > 1) {
+        extra = 20;
+        bitstream_size  = AV_RL32(buf + 8);
+        wordstream_size = AV_RL32(buf + 12);
+        bytestream_size = AV_RL32(buf + 16);
+    } else {
+        extra = 0;
+        bitstream_size  = AV_RL16(buf - 4);
+        wordstream_size = AV_RL16(buf - 2);
+        bytestream_size = FFMAX(length - bitstream_size - wordstream_size, 0);
     }
 
-    if(bitstream_size+ bytestream_size+ wordstream_size + extra != length
-       || bitstream_size  > (1<<26)
-       || bytestream_size > (1<<26)
-       || wordstream_size > (1<<26)
-       ){
+    if (bitstream_size + bytestream_size + wordstream_size + extra != length
+       || bitstream_size  > (1 << 26)
+       || bytestream_size > (1 << 26)
+       || wordstream_size > (1 << 26)) {
         av_log(f->avctx, AV_LOG_ERROR, "lengths %d %d %d %d\n", 
bitstream_size, bytestream_size, wordstream_size,
-        bitstream_size+ bytestream_size+ wordstream_size - length);
+        bitstream_size + bytestream_size + wordstream_size - length);
         return -1;
     }
 
     av_fast_malloc(&f->bitstream_buffer, &f->bitstream_buffer_size, 
bitstream_size + FF_INPUT_BUFFER_PADDING_SIZE);
     if (!f->bitstream_buffer)
         return AVERROR(ENOMEM);
-    f->dsp.bswap_buf(f->bitstream_buffer, (const uint32_t*)(buf + extra), 
bitstream_size/4);
+    f->dsp.bswap_buf(f->bitstream_buffer, (const uint32_t*)(buf + extra), 
bitstream_size / 4);
     memset((uint8_t*)f->bitstream_buffer + bitstream_size, 0, 
FF_INPUT_BUFFER_PADDING_SIZE);
-    init_get_bits(&f->gb, f->bitstream_buffer, 8*bitstream_size);
+    init_get_bits(&f->gb, f->bitstream_buffer, 8 * bitstream_size);
 
-    f->wordstream= (const uint16_t*)(buf + extra + bitstream_size);
-    f->bytestream= buf + extra + bitstream_size + wordstream_size;
+    wordstream_offset = extra + bitstream_size;
+    bytestream_offset = extra + bitstream_size + wordstream_size;
+    bytestream2_init(&f->g2, buf + wordstream_offset, length - 
wordstream_offset);
+    bytestream2_init(&f->g,  buf + bytestream_offset, length - 
bytestream_offset);
 
     init_mv(f);
 
-    for(y=0; y<height; y+=8){
-        for(x=0; x<width; x+=8){
+    for (y = 0; y < height; y += 8) {
+        for (x = 0; x < width; x += 8) {
             decode_p_block(f, dst + x, src + x, 3, 3, stride);
         }
-        src += 8*stride;
-        dst += 8*stride;
+        src += 8 * stride;
+        dst += 8 * stride;
     }
 
-    if(   bitstream_size != (get_bits_count(&f->gb)+31)/32*4
-       || (((const char*)f->wordstream - (const char*)buf + 2)&~2) != extra + 
bitstream_size + wordstream_size
-       || (((const char*)f->bytestream - (const char*)buf + 3)&~3) != extra + 
bitstream_size + wordstream_size + bytestream_size)
-        av_log(f->avctx, AV_LOG_ERROR, " %d %td %td bytes left\n",
-            bitstream_size - (get_bits_count(&f->gb)+31)/32*4,
-            -(((const char*)f->bytestream - (const char*)buf + 3)&~3) + (extra 
+ bitstream_size + wordstream_size + bytestream_size),
-            -(((const char*)f->wordstream - (const char*)buf + 2)&~2) + (extra 
+ bitstream_size + wordstream_size)
-        );
-
     return 0;
 }
 
@@ -431,16 +433,17 @@ static int decode_p_frame(FourXContext *f, const uint8_t 
*buf, int length){
  * decode block and dequantize.
  * Note this is almost identical to MJPEG.
  */
-static int decode_i_block(FourXContext *f, DCTELEM *block){
+static int decode_i_block(FourXContext *f, DCTELEM *block)
+{
     int code, i, j, level, val;
 
     /* DC coef */
     val = get_vlc2(&f->pre_gb, f->pre_vlc.table, ACDC_VLC_BITS, 3);
-    if (val>>4){
+    if (val >> 4) {
         av_log(f->avctx, AV_LOG_ERROR, "error dc run != 0\n");
     }
 
-    if(val)
+    if (val)
         val = get_xbits(&f->gb, val);
 
     val = val * dequant_table[0] + f->last_dc;
@@ -448,7 +451,7 @@ static int decode_i_block(FourXContext *f, DCTELEM *block){
     block[0] = val;
     /* AC coefs */
     i = 1;
-    for(;;) {
+    for (; ; ) {
         code = get_vlc2(&f->pre_gb, f->pre_vlc.table, ACDC_VLC_BITS, 3);
 
         /* EOB */
@@ -475,64 +478,68 @@ static int decode_i_block(FourXContext *f, DCTELEM 
*block){
     return 0;
 }
 
-static inline void idct_put(FourXContext *f, int x, int y){
-    DCTELEM (*block)[64]= f->block;
-    int stride= f->current_picture.linesize[0]>>1;
+static inline void idct_put(FourXContext *f, int x, int y)
+{
+    DCTELEM (*block)[64] = f->block;
+    int stride = f->current_picture.linesize[0] >> 1;
     int i;
     uint16_t *dst = ((uint16_t*)f->current_picture.data[0]) + y * stride + x;
 
-    for(i=0; i<4; i++){
-        block[i][0] += 0x80*8*8;
+    for (i = 0; i < 4; i++) {
+        block[i][0] += 0x80 * 8 * 8;
         idct(block[i]);
     }
 
-    if(!(f->avctx->flags&CODEC_FLAG_GRAY)){
-        for(i=4; i<6; i++) idct(block[i]);
+    if (!(f->avctx->flags&CODEC_FLAG_GRAY)) {
+        for (i = 4; i < 6; i++) 
+            idct(block[i]);
     }
 
 /* Note transform is:
-y= ( 1b + 4g + 2r)/14
-cb=( 3b - 2g - 1r)/14
-cr=(-1b - 4g + 5r)/14
+y  = ( 1b + 4g + 2r) / 14
+cb = ( 3b - 2g - 1r) / 14
+cr = (-1b - 4g + 5r) / 14
 */
-    for(y=0; y<8; y++){
-        for(x=0; x<8; x++){
-            DCTELEM *temp= block[(x>>2) + 2*(y>>2)] + 2*(x&3) + 2*8*(y&3); 
//FIXME optimize
-            int cb= block[4][x + 8*y];
-            int cr= block[5][x + 8*y];
-            int cg= (cb + cr)>>1;
+    for (y = 0; y < 8; y++) {
+        for (x=0; x < 8; x++) {
+            DCTELEM *temp = block[(x >> 2) + 2 * (y >> 2)] + 2 * (x & 3) + 2 * 
8 * (y & 3); //FIXME optimize
+            int cb = block[4][x + 8 * y];
+            int cr = block[5][x + 8 * y];
+            int cg = (cb + cr) >> 1;
             int y;
 
-            cb+=cb;
+            cb += cb;
 
             y = temp[0];
-            dst[0       ]= ((y+cb)>>3) + (((y-cg)&0xFC)<<3) + 
(((y+cr)&0xF8)<<8);
+            dst[0         ] = ((y + cb) >> 3) + (((y - cg) & 0xFC) << 3) + 
(((y + cr) & 0xF8) << 8);
             y = temp[1];
-            dst[1       ]= ((y+cb)>>3) + (((y-cg)&0xFC)<<3) + 
(((y+cr)&0xF8)<<8);
+            dst[1         ] = ((y + cb) >> 3) + (((y - cg) & 0xFC) << 3) + 
(((y + cr) & 0xF8) << 8);
             y = temp[8];
-            dst[  stride]= ((y+cb)>>3) + (((y-cg)&0xFC)<<3) + 
(((y+cr)&0xF8)<<8);
+            dst[    stride] = ((y + cb) >> 3) + (((y - cg) & 0xFC) << 3) + 
(((y + cr) & 0xF8) << 8);
             y = temp[9];
-            dst[1+stride]= ((y+cb)>>3) + (((y-cg)&0xFC)<<3) + 
(((y+cr)&0xF8)<<8);
+            dst[1 + stride] = ((y + cb) >> 3) + (((y - cg) & 0xFC) << 3) + 
(((y + cr) & 0xF8) << 8);
             dst += 2;
         }
-        dst += 2*stride - 2*8;
+        dst += 2 * stride - 2 * 8;
     }
 }
 
-static int decode_i_mb(FourXContext *f){
+static int decode_i_mb(FourXContext *f)
+{
     int i;
 
     f->dsp.clear_blocks(f->block[0]);
 
-    for(i=0; i<6; i++){
-        if(decode_i_block(f, f->block[i]) < 0)
+    for ( i = 0; i < 6; i++) {
+        if (decode_i_block(f, f->block[i]) < 0)
             return -1;
     }
 
     return 0;
 }
 
-static const uint8_t *read_huffman_tables(FourXContext *f, const uint8_t * 
const buf){
+static const uint8_t *read_huffman_tables(FourXContext *f, const uint8_t * 
const buf)
+{
     int frequency[512];
     uint8_t flag[512];
     int up[512];
@@ -545,61 +552,65 @@ static const uint8_t *read_huffman_tables(FourXContext 
*f, const uint8_t * const
     memset(frequency, 0, sizeof(frequency));
     memset(up, -1, sizeof(up));
 
-    start= *ptr++;
-    end= *ptr++;
-    for(;;){
+    start = *ptr++;
+    end   = *ptr++;
+    for (; ; ) {
         int i;
 
-        for(i=start; i<=end; i++){
-            frequency[i]= *ptr++;
+        for (i = start; i <= end; i++) {
+            frequency[i] = *ptr++;
         }
-        start= *ptr++;
-        if(start==0) break;
+        start = *ptr++;
+        if (start == 0) 
+            break;
 
-        end= *ptr++;
+        end = *ptr++;
     }
-    frequency[256]=1;
+    frequency[256] = 1;
 
-    while((ptr - buf)&3) ptr++; // 4byte align
+    while ((ptr - buf) & 3) ptr++; // 4byte align
 
-    for(j=257; j<512; j++){
-        int min_freq[2]= {256*256, 256*256};
-        int smallest[2]= {0, 0};
+    for (j = 257; j < 512; j++) {
+        int min_freq[2] = { 256 * 256, 256 * 256 };
+        int smallest[2] = { 0, 0 };
         int i;
-        for(i=0; i<j; i++){
-            if(frequency[i] == 0) continue;
-            if(frequency[i] < min_freq[1]){
-                if(frequency[i] < min_freq[0]){
-                    min_freq[1]= min_freq[0]; smallest[1]= smallest[0];
-                    min_freq[0]= frequency[i];smallest[0]= i;
-                }else{
-                    min_freq[1]= frequency[i];smallest[1]= i;
+        for (i = 0; i < j; i++) {
+            if (frequency[i] == 0) 
+                continue;
+            if (frequency[i] < min_freq[1]) {
+                if (frequency[i] < min_freq[0]) {
+                    min_freq[1] = min_freq[0]; smallest[1]= smallest[0];
+                    min_freq[0] = frequency[i];smallest[0]= i;
+                } else {
+                    min_freq[1] = frequency[i];smallest[1]= i;
                 }
             }
         }
-        if(min_freq[1] == 256*256) break;
-
-        frequency[j]= min_freq[0] + min_freq[1];
-        flag[ smallest[0] ]= 0;
-        flag[ smallest[1] ]= 1;
-        up[ smallest[0] ]=
-        up[ smallest[1] ]= j;
-        frequency[ smallest[0] ]= frequency[ smallest[1] ]= 0;
+        if (min_freq[1] == 256 * 256) 
+            break;
+
+        frequency[j] = min_freq[0] + min_freq[1];
+        flag[ smallest[0] ] = 0;
+        flag[ smallest[1] ] = 1;
+        up[ smallest[0] ] =
+        up[ smallest[1] ] = j;
+        frequency[ smallest[0] ] = frequency[ smallest[1] ] = 0;
     }
 
-    for(j=0; j<257; j++){
+    for (j = 0; j < 257; j++) {
         int node;
-        int len=0;
-        int bits=0;
+        int len = 0;
+        int bits = 0;
 
-        for(node= j; up[node] != -1; node= up[node]){
-            bits += flag[node]<<len;
+        for (node = j; up[node] != -1; node = up[node]) {
+            bits += flag[node] << len;
             len++;
-            if(len > 31) av_log(f->avctx, AV_LOG_ERROR, "vlc length 
overflow\n"); //can this happen at all ?
+            if (len > 31) 
+                av_log(f->avctx, AV_LOG_ERROR, "vlc length overflow\n"); //can 
this happen at all ?
         }
 
-        bits_tab[j]= bits;
-        len_tab[j]= len;
+        bits_tab[j] = bits;
+        len_tab[j] = len;
     }
 
     if (init_vlc(&f->pre_vlc, ACDC_VLC_BITS, 257,
@@ -610,93 +621,104 @@ static const uint8_t *read_huffman_tables(FourXContext 
*f, const uint8_t * const
     return ptr;
 }
 
-static int mix(int c0, int c1){
-    int blue = 2*(c0&0x001F) + (c1&0x001F);
-    int green= (2*(c0&0x03E0) + (c1&0x03E0))>>5;
-    int red  = 2*(c0>>10) + (c1>>10);
-    return red/3*1024 + green/3*32 + blue/3;
+static int mix(int c0, int c1)
+{
+    int blue  = 2 * (c0 & 0x001F) + (c1 & 0x001F);
+    int green = (2 * (c0 & 0x03E0) + (c1 & 0x03E0)) >> 5;
+    int red   = 2 * (c0 >> 10) + (c1 >> 10);
+    return red / 3 * 1024 + green / 3 * 32 + blue / 3;
 }
 
-static int decode_i2_frame(FourXContext *f, const uint8_t *buf, int length){
+static int decode_i2_frame(FourXContext *f, const uint8_t *buf, int length)
+{
     int x, y, x2, y2;
-    const int width= f->avctx->width;
-    const int height= f->avctx->height;
-    uint16_t *dst= (uint16_t*)f->current_picture.data[0];
-    const int stride= f->current_picture.linesize[0]>>1;
+    const int width  = f->avctx->width;
+    const int height = f->avctx->height;
+    uint16_t *dst = (uint16_t*)f->current_picture.data[0];
+    const int stride = f->current_picture.linesize[0]>>1;
 
-    for(y=0; y<height; y+=16){
-        for(x=0; x<width; x+=16){
+    for (y = 0; y < height; y += 16) {
+        for (x = 0; x < width; x += 16) {
             unsigned int color[4], bits;
             memset(color, 0, sizeof(color));
 //warning following is purely guessed ...
-            color[0]= bytestream_get_le16(&buf);
-            color[1]= bytestream_get_le16(&buf);
-
-            if(color[0]&0x8000) av_log(NULL, AV_LOG_ERROR, "unk bit 1\n");
-            if(color[1]&0x8000) av_log(NULL, AV_LOG_ERROR, "unk bit 2\n");
-
-            color[2]= mix(color[0], color[1]);
-            color[3]= mix(color[1], color[0]);
-
-            bits= bytestream_get_le32(&buf);
-            for(y2=0; y2<16; y2++){
-                for(x2=0; x2<16; x2++){
-                    int index= 2*(x2>>2) + 8*(y2>>2);
-                    dst[y2*stride+x2]= color[(bits>>index)&3];
+            color[0] = bytestream_get_le16(&buf);
+            color[1] = bytestream_get_le16(&buf);
+
+            if (color[0] & 0x8000) 
+                av_log(NULL, AV_LOG_ERROR, "unk bit 1\n");
+            if (color[1] & 0x8000) 
+                av_log(NULL, AV_LOG_ERROR, "unk bit 2\n");
+
+            color[2] = mix(color[0], color[1]);
+            color[3] = mix(color[1], color[0]);
+
+            bits = bytestream_get_le32(&buf);
+            for( y2 = 0; y2 < 16; y2++) {
+                for (x2 = 0; x2 < 16; x2++) {
+                    int index = 2 * (x2 >> 2) + 8 * (y2 >> 2);
+                    dst[y2 * stride + x2]= color[(bits >> index) & 3];
                 }
             }
-            dst+=16;
+            dst += 16;
         }
-        dst += 16*stride - width;
+        dst += 16 * stride - width;
     }
 
     return 0;
 }
 
-static int decode_i_frame(FourXContext *f, const uint8_t *buf, int length){
+static int decode_i_frame(FourXContext *f, const uint8_t *buf, int length)
+{
     int x, y;
-    const int width= f->avctx->width;
-    const int height= f->avctx->height;
-    uint16_t *dst= (uint16_t*)f->current_picture.data[0];
-    const int stride= f->current_picture.linesize[0]>>1;
-    const unsigned int bitstream_size= AV_RL32(buf);
-    const int token_count av_unused = AV_RL32(buf + bitstream_size + 8);
-    unsigned int prestream_size= 4*AV_RL32(buf + bitstream_size + 4);
-    const uint8_t *prestream= buf + bitstream_size + 12;
-
-    if(prestream_size + bitstream_size + 12 != length
-       || bitstream_size > (1<<26)
-       || prestream_size > (1<<26)){
+    const int width  = f->avctx->width;
+    const int height = f->avctx->height;
+    const unsigned int bitstream_size = AV_RL32(buf);
+    int token_count av_unused;
+    unsigned int prestream_size;
+    const uint8_t *prestream;
+
+    if (length < bitstream_size + 12) {
+        av_log(f->avctx, AV_LOG_ERROR, "packet size too small\n");
+        return AVERROR_INVALIDDATA;
+    }
+
+    token_count    = AV_RL32(buf + bitstream_size + 8);
+    prestream_size = 4 * AV_RL32(buf + bitstream_size + 4);
+    prestream      = buf + bitstream_size + 12;
+
+    if (prestream_size + bitstream_size + 12 != length
+       || bitstream_size > (1 << 26)
+       || prestream_size > (1 << 26)) {
         av_log(f->avctx, AV_LOG_ERROR, "size mismatch %d %d %d\n", 
prestream_size, bitstream_size, length);
         return -1;
     }
 
-    prestream= read_huffman_tables(f, prestream);
+    prestream = read_huffman_tables(f, prestream);
 
-    init_get_bits(&f->gb, buf + 4, 8*bitstream_size);
+    init_get_bits(&f->gb, buf + 4, 8 * bitstream_size);
 
-    prestream_size= length + buf - prestream;
+    prestream_size = length + buf - prestream;
 
     av_fast_malloc(&f->bitstream_buffer, &f->bitstream_buffer_size, 
prestream_size + FF_INPUT_BUFFER_PADDING_SIZE);
     if (!f->bitstream_buffer)
         return AVERROR(ENOMEM);
-    f->dsp.bswap_buf(f->bitstream_buffer, (const uint32_t*)prestream, 
prestream_size/4);
+    f->dsp.bswap_buf(f->bitstream_buffer, (const uint32_t*)prestream, 
prestream_size / 4);
     memset((uint8_t*)f->bitstream_buffer + prestream_size, 0, 
FF_INPUT_BUFFER_PADDING_SIZE);
-    init_get_bits(&f->pre_gb, f->bitstream_buffer, 8*prestream_size);
+    init_get_bits(&f->pre_gb, f->bitstream_buffer, 8 * prestream_size);
 
-    f->last_dc= 0*128*8*8;
+    f->last_dc = 0 * 128 * 8 * 8;
 
-    for(y=0; y<height; y+=16){
-        for(x=0; x<width; x+=16){
-            if(decode_i_mb(f) < 0)
+    for (y = 0; y < height; y += 16) {
+        for (x = 0; x < width; x += 16) {
+            if (decode_i_mb(f) < 0)
                 return -1;
 
             idct_put(f, x, y);
         }
-        dst += 16*stride;
     }
 
-    if(get_vlc2(&f->pre_gb, f->pre_vlc.table, ACDC_VLC_BITS, 3) != 256)
+    if (get_vlc2(&f->pre_gb, f->pre_vlc.table, ACDC_VLC_BITS, 3) != 256)
         av_log(f->avctx, AV_LOG_ERROR, "end mismatch\n");
 
     return 0;
@@ -713,107 +735,109 @@ static int decode_frame(AVCodecContext *avctx,
     AVFrame *p, temp;
     int i, frame_4cc, frame_size;
 
-    frame_4cc= AV_RL32(buf);
-    if(buf_size != AV_RL32(buf+4)+8 || buf_size < 20){
-        av_log(f->avctx, AV_LOG_ERROR, "size mismatch %d %d\n", buf_size, 
AV_RL32(buf+4));
+    frame_4cc = AV_RL32(buf);
+    if (buf_size != AV_RL32(buf + 4) + 8 || buf_size < 20) {
+        av_log(f->avctx, AV_LOG_ERROR, "size mismatch %d %d\n", buf_size, 
AV_RL32(buf + 4));
     }
 
-    if(frame_4cc == AV_RL32("cfrm")){
-        int free_index=-1;
-        const int data_size= buf_size - 20;
-        const int id= AV_RL32(buf+12);
-        const int whole_size= AV_RL32(buf+16);
+    if (frame_4cc == AV_RL32("cfrm")) {
+        int free_index = -1;
+        const int data_size = buf_size - 20;
+        const int id = AV_RL32(buf + 12);
+        const int whole_size = AV_RL32(buf + 16);
         CFrameBuffer *cfrm;
 
-        for(i=0; i<CFRAME_BUFFER_COUNT; i++){
-            if(f->cfrm[i].id && f->cfrm[i].id < avctx->frame_number)
+        for (i = 0; i<CFRAME_BUFFER_COUNT; i++) {
+            if (f->cfrm[i].id && f->cfrm[i].id < avctx->frame_number)
                 av_log(f->avctx, AV_LOG_ERROR, "lost c frame %d\n", 
f->cfrm[i].id);
         }
 
-        for(i=0; i<CFRAME_BUFFER_COUNT; i++){
-            if(f->cfrm[i].id   == id) break;
-            if(f->cfrm[i].size == 0 ) free_index= i;
+        for (i = 0; i < CFRAME_BUFFER_COUNT; i++) {
+            if (f->cfrm[i].id   == id) 
+               break;
+            if (f->cfrm[i].size == 0 ) 
+               free_index = i;
         }
 
-        if(i>=CFRAME_BUFFER_COUNT){
-            i= free_index;
-            f->cfrm[i].id= id;
+        if (i >= CFRAME_BUFFER_COUNT) {
+            i = free_index;
+            f->cfrm[i].id = id;
         }
-        cfrm= &f->cfrm[i];
+        cfrm = &f->cfrm[i];
 
-        cfrm->data= av_fast_realloc(cfrm->data, &cfrm->allocated_size, 
cfrm->size + data_size + FF_INPUT_BUFFER_PADDING_SIZE);
-        if(!cfrm->data){ //explicit check needed as memcpy below might not 
catch a NULL
+        cfrm->data = av_fast_realloc(cfrm->data, &cfrm->allocated_size, 
cfrm->size + data_size + FF_INPUT_BUFFER_PADDING_SIZE);
+        if (!cfrm->data) { //explicit check needed as memcpy below might not 
catch a NULL
             av_log(f->avctx, AV_LOG_ERROR, "realloc falure");
             return -1;
         }
 
-        memcpy(cfrm->data + cfrm->size, buf+20, data_size);
+        memcpy(cfrm->data + cfrm->size, buf + 20, data_size);
         cfrm->size += data_size;
 
-        if(cfrm->size >= whole_size){
-            buf= cfrm->data;
-            frame_size= cfrm->size;
+        if (cfrm->size >= whole_size) {
+            buf = cfrm->data;
+            frame_size = cfrm->size;
 
-            if(id != avctx->frame_number){
+            if (id != avctx->frame_number) {
                 av_log(f->avctx, AV_LOG_ERROR, "cframe id mismatch %d %d\n", 
id, avctx->frame_number);
             }
 
-            cfrm->size= cfrm->id= 0;
-            frame_4cc= AV_RL32("pfrm");
-        }else
+            cfrm->size = cfrm->id = 0;
+            frame_4cc = AV_RL32("pfrm");
+        } else
             return buf_size;
-    }else{
-        buf= buf + 12;
-        frame_size= buf_size - 12;
+    } else {
+        buf = buf + 12;
+        frame_size = buf_size - 12;
     }
 
-    temp= f->current_picture;
-    f->current_picture= f->last_picture;
-    f->last_picture= temp;
+    temp = f->current_picture;
+    f->current_picture = f->last_picture;
+    f->last_picture = temp;
 
-    p= &f->current_picture;
-    avctx->coded_frame= p;
+    p = &f->current_picture;
+    avctx->coded_frame = p;
 
     avctx->flags |= CODEC_FLAG_EMU_EDGE; // alternatively we would have to use 
our own buffer management
 
-    if(p->data[0])
+    if (p->data[0])
         avctx->release_buffer(avctx, p);
 
-    p->reference= 1;
-    if(avctx->get_buffer(avctx, p) < 0){
+    p->reference = 1;
+    if (avctx->get_buffer(avctx, p) < 0 ) {
         av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
         return -1;
     }
 
-    if(frame_4cc == AV_RL32("ifr2")){
-        p->pict_type= AV_PICTURE_TYPE_I;
-        if(decode_i2_frame(f, buf-4, frame_size) < 0)
+    if (frame_4cc == AV_RL32("ifr2")) {
+        p->pict_type = AV_PICTURE_TYPE_I;
+        if (decode_i2_frame(f, buf - 4, frame_size) < 0)
             return -1;
-    }else if(frame_4cc == AV_RL32("ifrm")){
-        p->pict_type= AV_PICTURE_TYPE_I;
-        if(decode_i_frame(f, buf, frame_size) < 0)
+    } else if (frame_4cc == AV_RL32("ifrm")) {
+        p->pict_type = AV_PICTURE_TYPE_I;
+        if (decode_i_frame(f, buf, frame_size) < 0)
             return -1;
-    }else if(frame_4cc == AV_RL32("pfrm") || frame_4cc == AV_RL32("pfr2")){
-        if(!f->last_picture.data[0]){
-            f->last_picture.reference= 1;
-            if(avctx->get_buffer(avctx, &f->last_picture) < 0){
+    } else if (frame_4cc == AV_RL32("pfrm") || frame_4cc == AV_RL32("pfr2")) {
+        if (!f->last_picture.data[0]) {
+            f->last_picture.reference = 1;
+            if (avctx->get_buffer(avctx, &f->last_picture) < 0) {
                 av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
                 return -1;
             }
         }
 
-        p->pict_type= AV_PICTURE_TYPE_P;
-        if(decode_p_frame(f, buf, frame_size) < 0)
+        p->pict_type = AV_PICTURE_TYPE_P;
+        if (decode_p_frame(f, buf, frame_size) < 0)
             return -1;
-    }else if(frame_4cc == AV_RL32("snd_")){
+    } else if (frame_4cc == AV_RL32("snd_")) {
         av_log(avctx, AV_LOG_ERROR, "ignoring snd_ chunk length:%d\n", 
buf_size);
-    }else{
+    } else {
         av_log(avctx, AV_LOG_ERROR, "ignoring unknown chunk length:%d\n", 
buf_size);
     }
 
-    p->key_frame= p->pict_type == AV_PICTURE_TYPE_I;
+    p->key_frame = p->pict_type == AV_PICTURE_TYPE_I;
 
-    *picture= *p;
+    *picture = *p;
     *data_size = sizeof(AVPicture);
 
     emms_c();
@@ -822,47 +846,52 @@ static int decode_frame(AVCodecContext *avctx,
 }
 
 
-static av_cold void common_init(AVCodecContext *avctx){
+static av_cold void common_init(AVCodecContext *avctx)
+{
     FourXContext * const f = avctx->priv_data;
 
     dsputil_init(&f->dsp, avctx);
 
-    f->avctx= avctx;
+    f->avctx = avctx;
 }
 
-static av_cold int decode_init(AVCodecContext *avctx){
+static av_cold int decode_init(AVCodecContext *avctx)
+{
     FourXContext * const f = avctx->priv_data;
 
-    if(avctx->extradata_size != 4 || !avctx->extradata) {
+    if (avctx->extradata_size != 4 || !avctx->extradata) {
         av_log(avctx, AV_LOG_ERROR, "extradata wrong or missing\n");
         return 1;
     }
 
-    f->version= AV_RL32(avctx->extradata)>>16;
+    f->version = AV_RL32(avctx->extradata) >> 16;
     common_init(avctx);
     init_vlcs(f);
 
-    if(f->version>2) avctx->pix_fmt= PIX_FMT_RGB565;
-    else             avctx->pix_fmt= PIX_FMT_BGR555;
+    if (f->version > 2) 
+        avctx->pix_fmt = PIX_FMT_RGB565;
+    else                
+        avctx->pix_fmt = PIX_FMT_BGR555;
 
     return 0;
 }
 
 
-static av_cold int decode_end(AVCodecContext *avctx){
+static av_cold int decode_end(AVCodecContext *avctx)
+{
     FourXContext * const f = avctx->priv_data;
     int i;
 
     av_freep(&f->bitstream_buffer);
-    f->bitstream_buffer_size=0;
-    for(i=0; i<CFRAME_BUFFER_COUNT; i++){
+    f->bitstream_buffer_size = 0;
+    for (i = 0; i < CFRAME_BUFFER_COUNT; i++) {
         av_freep(&f->cfrm[i].data);
-        f->cfrm[i].allocated_size= 0;
+        f->cfrm[i].allocated_size = 0;
     }
     free_vlc(&f->pre_vlc);
-    if(f->current_picture.data[0])
+    if (f->current_picture.data[0])
         avctx->release_buffer(avctx, &f->current_picture);
-    if(f->last_picture.data[0])
+    if (f->last_picture.data[0])
         avctx->release_buffer(avctx, &f->last_picture);
 
     return 0;
diff --git a/libavdevice/timefilter.c b/libavdevice/timefilter.c
index 332d33b..ebbf564 100644
--- a/libavdevice/timefilter.c
+++ b/libavdevice/timefilter.c
@@ -37,29 +37,33 @@ struct TimeFilter {
     int count;
 };
 
-TimeFilter * ff_timefilter_new(double clock_period, double feedback2_factor, 
double feedback3_factor)
+TimeFilter * ff_timefilter_new(double clock_period, 
+                               double feedback2_factor, 
+                               double feedback3_factor) 
 {
-    TimeFilter *self        = av_mallocz(sizeof(TimeFilter));
-    self->clock_period      = clock_period;
-    self->feedback2_factor  = feedback2_factor;
-    self->feedback3_factor  = feedback3_factor;
+    TimeFilter *self       = av_mallocz(sizeof(TimeFilter));
+    self->clock_period     = clock_period;
+    self->feedback2_factor = feedback2_factor;
+    self->feedback3_factor = feedback3_factor;
     return self;
 }
 
-void ff_timefilter_destroy(TimeFilter *self)
+void ff_timefilter_destroy(TimeFilter *self) 
 {
     av_freep(&self);
 }
 
-void ff_timefilter_reset(TimeFilter *self)
+void ff_timefilter_reset(TimeFilter *self) 
 {
-    self->count      = 0;
+    self->count = 0;
 }
 
-double ff_timefilter_update(TimeFilter *self, double system_time, double 
period)
+double ff_timefilter_update(TimeFilter *self, 
+                            double system_time, 
+                            double period) 
 {
     self->count++;
-    if (self->count==1) {
+    if (self->count == 1) {
         /// init loop
         self->cycle_time    = system_time;
     } else {
@@ -69,7 +73,8 @@ double ff_timefilter_update(TimeFilter *self, double 
system_time, double period)
         loop_error          = system_time - self->cycle_time;
 
         /// update loop
-        self->cycle_time   += FFMAX(self->feedback2_factor, 1.0/(self->count)) 
* loop_error;
+        self->cycle_time   += FFMAX(self->feedback2_factor, 
+                                    1.0 / (self->count)) * loop_error;
         self->clock_period += self->feedback3_factor * loop_error / period;
     }
     return self->cycle_time;
@@ -81,7 +86,7 @@ double ff_timefilter_update(TimeFilter *self, double 
system_time, double period)
 
 #undef printf
 
-int main(void)
+int main(void) 
 {
     AVLFG prng;
     double n0,n1;
@@ -89,55 +94,61 @@ int main(void)
     double ideal[SAMPLES];
     double samples[SAMPLES];
 #if 1
-    for(n0= 0; n0<40; n0=2*n0+1){
-        for(n1= 0; n1<10; n1=2*n1+1){
+    for (n0 = 0; n0 < 40; n0 = 2 * n0 + 1) {
+        for (n1 = 0; n1 < 10; n1 = 2 * n1 + 1) {
 #else
     {{
-        n0=7;
-        n1=1;
+        n0 = 7;
+        n1 = 1;
 #endif
-            double best_error= 1000000000;
-            double bestpar0=1;
-            double bestpar1=0.001;
+            double best_error = 1000000000;
+            double bestpar0   = 1;
+            double bestpar1   = 0.001;
             int better, i;
 
             av_lfg_init(&prng, 123);
-            for(i=0; i<SAMPLES; i++){
-                ideal[i]  = 10 + i + n1*i/(1000);
-                samples[i] = ideal[i] + n0 * (av_lfg_get(&prng) - LFG_MAX / 2)
-                                           / (LFG_MAX * 10LL);
+            for (i = 0; i < SAMPLES; i++) {
+                ideal[i] = 10 + i + n1 * i / (1000);
+                samples[i] = ideal[i] + n0 * (av_lfg_get(&prng) - 
+                             LFG_MAX / 2) / (LFG_MAX * 10LL);
             }
 
-            do{
+            do {
                 double par0, par1;
-                better=0;
-                for(par0= bestpar0*0.8; par0<=bestpar0*1.21; 
par0+=bestpar0*0.05){
-                    for(par1= bestpar1*0.8; par1<=bestpar1*1.21; 
par1+=bestpar1*0.05){
-                        double error=0;
-                        TimeFilter *tf= ff_timefilter_new(1, par0, par1);
-                        for(i=0; i<SAMPLES; i++){
+                better = 0;
+                for (par0  = bestpar0 * 0.8; par0 <= bestpar0 * 1.21; 
+                     par0 += bestpar0 * 0.05) {
+                    for (par1  = bestpar1 * 0.8; par1 <= bestpar1 * 1.21; 
+                         par1 += bestpar1 * 0.05) {
+                        double error = 0;
+                        TimeFilter *tf = ff_timefilter_new(1, par0, par1);
+                        for (i = 0; i < SAMPLES; i++) {
                             double filtered;
-                            filtered=  ff_timefilter_update(tf, samples[i], 1);
-                            error += (filtered - ideal[i]) * (filtered - 
ideal[i]);
+                            filtered = ff_timefilter_update(tf, samples[i], 1);
+                            error += (filtered - ideal[i]) * 
+                                     (filtered - ideal[i]);
                         }
                         ff_timefilter_destroy(tf);
-                        if(error < best_error){
-                            best_error= error;
-                            bestpar0= par0;
-                            bestpar1= par1;
-                            better=1;
+                        if (error < best_error) {
+                            best_error = error;
+                            bestpar0 = par0;
+                            bestpar1 = par1;
+                            better = 1;
                         }
                     }
                 }
-            }while(better);
+            } while (better);
 #if 0
-            double lastfil=9;
-            TimeFilter *tf= ff_timefilter_new(1, bestpar0, bestpar1);
+            double lastfil = 9;
+            TimeFilter *tf = ff_timefilter_new(1, bestpar0, bestpar1);
             for(i=0; i<SAMPLES; i++){
                 double filtered;
-                filtered=  ff_timefilter_update(tf, samples[i], 1);
-                printf("%f %f %f %f\n", i - samples[i] + 10, filtered - 
samples[i], samples[FFMAX(i, 1)] - samples[FFMAX(i-1, 0)], filtered - lastfil);
-                lastfil= filtered;
+                filtered   =  ff_timefilter_update(tf, samples[i], 1);
+                printf("%f %f %f %f\n", i - samples[i] + 10, 
+                       filtered - samples[i], 
+                       samples[FFMAX(i, 1)] - samples[FFMAX(i-1, 0)], 
+                       filtered - lastfil);
+                lastfil = filtered;
             }
             ff_timefilter_destroy(tf);
 #else
-- 
1.7.1

_______________________________________________
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to