Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mpc-hc/mpc-hc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXhmikosR <xhmikosr@users.sourceforge.net>2010-04-09 18:12:59 +0400
committerXhmikosR <xhmikosr@users.sourceforge.net>2010-04-09 18:12:59 +0400
commitefbc9d9043ff8ff92716ddd00a5f61412d535593 (patch)
tree8f3e621f756cf1f5b4d64d97964c7e7abd8aaf08 /src/filters/transform/MPCVideoDec/ffmpeg/libavcodec/vp3.c
parentdf6b139a6d9027156f614b68687e039e3a5854db (diff)
revert r1783
git-svn-id: https://mpc-hc.svn.sourceforge.net/svnroot/mpc-hc/trunk@1785 10f7b99b-c216-0410-bff0-8a66a9350fd8
Diffstat (limited to 'src/filters/transform/MPCVideoDec/ffmpeg/libavcodec/vp3.c')
-rw-r--r--src/filters/transform/MPCVideoDec/ffmpeg/libavcodec/vp3.c1371
1 files changed, 560 insertions, 811 deletions
diff --git a/src/filters/transform/MPCVideoDec/ffmpeg/libavcodec/vp3.c b/src/filters/transform/MPCVideoDec/ffmpeg/libavcodec/vp3.c
index 171f5bdcc..e3595e718 100644
--- a/src/filters/transform/MPCVideoDec/ffmpeg/libavcodec/vp3.c
+++ b/src/filters/transform/MPCVideoDec/ffmpeg/libavcodec/vp3.c
@@ -44,16 +44,14 @@
static av_cold int vp3_decode_end(AVCodecContext *avctx);
-typedef struct Coeff
-{
+typedef struct Coeff {
struct Coeff *next;
DCTELEM coeff;
uint8_t index;
} Coeff;
//FIXME split things out into their own arrays
-typedef struct Vp3Fragment
-{
+typedef struct Vp3Fragment {
Coeff *next_coeff;
/* address of first pixel taking into account which plane the fragment
* lives on as well as the plane stride */
@@ -89,59 +87,46 @@ typedef struct Vp3Fragment
static const int ModeAlphabet[6][CODING_MODE_COUNT] =
{
/* scheme 1: Last motion vector dominates */
- {
- MODE_INTER_LAST_MV, MODE_INTER_PRIOR_LAST,
- MODE_INTER_PLUS_MV, MODE_INTER_NO_MV,
- MODE_INTRA, MODE_USING_GOLDEN,
- MODE_GOLDEN_MV, MODE_INTER_FOURMV
- },
+ { MODE_INTER_LAST_MV, MODE_INTER_PRIOR_LAST,
+ MODE_INTER_PLUS_MV, MODE_INTER_NO_MV,
+ MODE_INTRA, MODE_USING_GOLDEN,
+ MODE_GOLDEN_MV, MODE_INTER_FOURMV },
/* scheme 2 */
- {
- MODE_INTER_LAST_MV, MODE_INTER_PRIOR_LAST,
- MODE_INTER_NO_MV, MODE_INTER_PLUS_MV,
- MODE_INTRA, MODE_USING_GOLDEN,
- MODE_GOLDEN_MV, MODE_INTER_FOURMV
- },
+ { MODE_INTER_LAST_MV, MODE_INTER_PRIOR_LAST,
+ MODE_INTER_NO_MV, MODE_INTER_PLUS_MV,
+ MODE_INTRA, MODE_USING_GOLDEN,
+ MODE_GOLDEN_MV, MODE_INTER_FOURMV },
/* scheme 3 */
- {
- MODE_INTER_LAST_MV, MODE_INTER_PLUS_MV,
- MODE_INTER_PRIOR_LAST, MODE_INTER_NO_MV,
- MODE_INTRA, MODE_USING_GOLDEN,
- MODE_GOLDEN_MV, MODE_INTER_FOURMV
- },
+ { MODE_INTER_LAST_MV, MODE_INTER_PLUS_MV,
+ MODE_INTER_PRIOR_LAST, MODE_INTER_NO_MV,
+ MODE_INTRA, MODE_USING_GOLDEN,
+ MODE_GOLDEN_MV, MODE_INTER_FOURMV },
/* scheme 4 */
- {
- MODE_INTER_LAST_MV, MODE_INTER_PLUS_MV,
- MODE_INTER_NO_MV, MODE_INTER_PRIOR_LAST,
- MODE_INTRA, MODE_USING_GOLDEN,
- MODE_GOLDEN_MV, MODE_INTER_FOURMV
- },
+ { MODE_INTER_LAST_MV, MODE_INTER_PLUS_MV,
+ MODE_INTER_NO_MV, MODE_INTER_PRIOR_LAST,
+ MODE_INTRA, MODE_USING_GOLDEN,
+ MODE_GOLDEN_MV, MODE_INTER_FOURMV },
/* scheme 5: No motion vector dominates */
- {
- MODE_INTER_NO_MV, MODE_INTER_LAST_MV,
- MODE_INTER_PRIOR_LAST, MODE_INTER_PLUS_MV,
- MODE_INTRA, MODE_USING_GOLDEN,
- MODE_GOLDEN_MV, MODE_INTER_FOURMV
- },
+ { MODE_INTER_NO_MV, MODE_INTER_LAST_MV,
+ MODE_INTER_PRIOR_LAST, MODE_INTER_PLUS_MV,
+ MODE_INTRA, MODE_USING_GOLDEN,
+ MODE_GOLDEN_MV, MODE_INTER_FOURMV },
/* scheme 6 */
- {
- MODE_INTER_NO_MV, MODE_USING_GOLDEN,
- MODE_INTER_LAST_MV, MODE_INTER_PRIOR_LAST,
- MODE_INTER_PLUS_MV, MODE_INTRA,
- MODE_GOLDEN_MV, MODE_INTER_FOURMV
- },
+ { MODE_INTER_NO_MV, MODE_USING_GOLDEN,
+ MODE_INTER_LAST_MV, MODE_INTER_PRIOR_LAST,
+ MODE_INTER_PLUS_MV, MODE_INTRA,
+ MODE_GOLDEN_MV, MODE_INTER_FOURMV },
};
#define MIN_DEQUANT_VAL 2
-typedef struct Vp3DecodeContext
-{
+typedef struct Vp3DecodeContext {
AVCodecContext *avctx;
int theora, theora_tables;
int version;
@@ -258,9 +243,9 @@ typedef struct Vp3DecodeContext
DECLARE_ALIGNED_8(int, bounding_values_array)[256+2];
/* ffdshow custom stuffs (begin) */
- int fps_numerator, fps_denumerator;
+ int fps_numerator,fps_denumerator;
int64_t granulepos;
- int keyframe_granule_shift, keyframe_frequency_force;
+ int keyframe_granule_shift,keyframe_frequency_force;
/* ffdshow custom stuffs (end) */
} Vp3DecodeContext;
@@ -291,30 +276,26 @@ static int init_block_mapping(Vp3DecodeContext *s)
int current_macroblock;
int c_fragment;
- static const signed char travel_width[16] =
- {
- 1, 1, 0, -1,
- 0, 0, 1, 0,
- 1, 0, 1, 0,
- 0, -1, 0, 1
+ static const signed char travel_width[16] = {
+ 1, 1, 0, -1,
+ 0, 0, 1, 0,
+ 1, 0, 1, 0,
+ 0, -1, 0, 1
};
- static const signed char travel_height[16] =
- {
- 0, 0, 1, 0,
- 1, 1, 0, -1,
- 0, 1, 0, -1,
+ static const signed char travel_height[16] = {
+ 0, 0, 1, 0,
+ 1, 1, 0, -1,
+ 0, 1, 0, -1,
-1, 0, -1, 0
};
- static const signed char travel_width_mb[4] =
- {
- 1, 0, 1, 0
+ static const signed char travel_width_mb[4] = {
+ 1, 0, 1, 0
};
- static const signed char travel_height_mb[4] =
- {
- 0, 1, 0, -1
+ static const signed char travel_height_mb[4] = {
+ 0, 1, 0, -1
};
hilbert_walk_mb[0] = 1;
@@ -323,11 +304,9 @@ static int init_block_mapping(Vp3DecodeContext *s)
hilbert_walk_mb[3] = -s->macroblock_width;
/* iterate through each superblock (all planes) and map the fragments */
- for(i = 0; i < s->superblock_count; i++)
- {
+ for (i = 0; i < s->superblock_count; i++) {
/* time to re-assign the limits? */
- if(i == 0)
- {
+ if (i == 0) {
/* start of Y superblocks */
right_edge = s->fragment_width;
@@ -335,14 +314,12 @@ static int init_block_mapping(Vp3DecodeContext *s)
current_width = -1;
current_height = 0;
superblock_row_inc = 3 * s->fragment_width -
- (s->y_superblock_width * 4 - s->fragment_width);
+ (s->y_superblock_width * 4 - s->fragment_width);
/* the first operation for this variable is to advance by 1 */
current_fragment = -1;
- }
- else if(i == s->u_superblock_start)
- {
+ } else if (i == s->u_superblock_start) {
/* start of U superblocks */
right_edge = s->fragment_width / 2;
@@ -350,14 +327,12 @@ static int init_block_mapping(Vp3DecodeContext *s)
current_width = -1;
current_height = 0;
superblock_row_inc = 3 * (s->fragment_width / 2) -
- (s->c_superblock_width * 4 - s->fragment_width / 2);
+ (s->c_superblock_width * 4 - s->fragment_width / 2);
/* the first operation for this variable is to advance by 1 */
current_fragment = s->fragment_start[1] - 1;
- }
- else if(i == s->v_superblock_start)
- {
+ } else if (i == s->v_superblock_start) {
/* start of V superblocks */
right_edge = s->fragment_width / 2;
@@ -365,15 +340,14 @@ static int init_block_mapping(Vp3DecodeContext *s)
current_width = -1;
current_height = 0;
superblock_row_inc = 3 * (s->fragment_width / 2) -
- (s->c_superblock_width * 4 - s->fragment_width / 2);
+ (s->c_superblock_width * 4 - s->fragment_width / 2);
/* the first operation for this variable is to advance by 1 */
current_fragment = s->fragment_start[2] - 1;
}
- if(current_width >= right_edge - 1)
- {
+ if (current_width >= right_edge - 1) {
/* reset width and move to next superblock row */
current_width = -1;
current_height += 4;
@@ -383,20 +357,16 @@ static int init_block_mapping(Vp3DecodeContext *s)
}
/* iterate through all 16 fragments in a superblock */
- for(j = 0; j < 16; j++)
- {
+ for (j = 0; j < 16; j++) {
current_fragment += travel_width[j] + right_edge * travel_height[j];
current_width += travel_width[j];
current_height += travel_height[j];
/* check if the fragment is in bounds */
- if((current_width < right_edge) &&
- (current_height < bottom_edge))
- {
+ if ((current_width < right_edge) &&
+ (current_height < bottom_edge)) {
s->superblock_fragments[mapping_index] = current_fragment;
- }
- else
- {
+ } else {
s->superblock_fragments[mapping_index] = -1;
}
@@ -411,14 +381,12 @@ static int init_block_mapping(Vp3DecodeContext *s)
current_width = -1;
current_height = 0;
superblock_row_inc = s->macroblock_width -
- (s->y_superblock_width * 2 - s->macroblock_width);
+ (s->y_superblock_width * 2 - s->macroblock_width);
mapping_index = 0;
current_macroblock = -1;
- for(i = 0; i < s->u_superblock_start; i++)
- {
+ for (i = 0; i < s->u_superblock_start; i++) {
- if(current_width >= right_edge - 1)
- {
+ if (current_width >= right_edge - 1) {
/* reset width and move to next superblock row */
current_width = -1;
current_height += 2;
@@ -428,20 +396,16 @@ static int init_block_mapping(Vp3DecodeContext *s)
}
/* iterate through each potential macroblock in the superblock */
- for(j = 0; j < 4; j++)
- {
+ for (j = 0; j < 4; j++) {
current_macroblock += hilbert_walk_mb[j];
current_width += travel_width_mb[j];
current_height += travel_height_mb[j];
/* check if the macroblock is in bounds */
- if((current_width < right_edge) &&
- (current_height < bottom_edge))
- {
+ if ((current_width < right_edge) &&
+ (current_height < bottom_edge)) {
s->superblock_macroblocks[mapping_index] = current_macroblock;
- }
- else
- {
+ } else {
s->superblock_macroblocks[mapping_index] = -1;
}
@@ -453,55 +417,47 @@ static int init_block_mapping(Vp3DecodeContext *s)
current_fragment = 0;
current_macroblock = 0;
mapping_index = 0;
- for(i = 0; i < s->fragment_height; i += 2)
- {
+ for (i = 0; i < s->fragment_height; i += 2) {
- for(j = 0; j < s->fragment_width; j += 2)
- {
+ for (j = 0; j < s->fragment_width; j += 2) {
s->all_fragments[current_fragment].macroblock = current_macroblock;
s->macroblock_fragments[mapping_index++] = current_fragment;
- if(j + 1 < s->fragment_width)
- {
+ if (j + 1 < s->fragment_width) {
s->all_fragments[current_fragment + 1].macroblock = current_macroblock;
s->macroblock_fragments[mapping_index++] = current_fragment + 1;
- }
- else
+ } else
s->macroblock_fragments[mapping_index++] = -1;
- if(i + 1 < s->fragment_height)
- {
+ if (i + 1 < s->fragment_height) {
s->all_fragments[current_fragment + s->fragment_width].macroblock =
current_macroblock;
s->macroblock_fragments[mapping_index++] =
current_fragment + s->fragment_width;
- }
- else
+ } else
s->macroblock_fragments[mapping_index++] = -1;
- if((j + 1 < s->fragment_width) && (i + 1 < s->fragment_height))
- {
+ if ((j + 1 < s->fragment_width) && (i + 1 < s->fragment_height)) {
s->all_fragments[current_fragment + s->fragment_width + 1].macroblock =
current_macroblock;
s->macroblock_fragments[mapping_index++] =
current_fragment + s->fragment_width + 1;
- }
- else
+ } else
s->macroblock_fragments[mapping_index++] = -1;
/* C planes */
c_fragment = s->fragment_start[1] +
- (i * s->fragment_width / 4) + (j / 2);
+ (i * s->fragment_width / 4) + (j / 2);
s->all_fragments[c_fragment].macroblock = s->macroblock_count;
s->macroblock_fragments[mapping_index++] = c_fragment;
c_fragment = s->fragment_start[2] +
- (i * s->fragment_width / 4) + (j / 2);
+ (i * s->fragment_width / 4) + (j / 2);
s->all_fragments[c_fragment].macroblock = s->macroblock_count;
s->macroblock_fragments[mapping_index++] = c_fragment;
- if(j + 2 <= s->fragment_width)
+ if (j + 2 <= s->fragment_width)
current_fragment += 2;
else
current_fragment++;
@@ -523,16 +479,15 @@ static void init_frame(Vp3DecodeContext *s, GetBitContext *gb)
/* zero out all of the fragment information */
s->coded_fragment_list_index = 0;
- for(i = 0; i < s->fragment_count; i++)
- {
+ for (i = 0; i < s->fragment_count; i++) {
s->coeff_counts[i] = 0;
s->all_fragments[i].motion_x = 127;
s->all_fragments[i].motion_y = 127;
- s->all_fragments[i].next_coeff = NULL;
+ s->all_fragments[i].next_coeff= NULL;
s->all_fragments[i].qpi = 0;
- s->coeffs[i].index =
- s->coeffs[i].coeff = 0;
- s->coeffs[i].next = NULL;
+ s->coeffs[i].index=
+ s->coeffs[i].coeff=0;
+ s->coeffs[i].next= NULL;
}
}
@@ -546,38 +501,34 @@ static void init_dequantizer(Vp3DecodeContext *s, int qpi)
int dc_scale_factor = s->coded_dc_scale_factor[s->qps[qpi]];
int i, plane, inter, qri, bmi, bmj, qistart;
- for(inter = 0; inter < 2; inter++)
- {
- for(plane = 0; plane < 3; plane++)
- {
- int sum = 0;
- for(qri = 0; qri < s->qr_count[inter][plane]; qri++)
- {
- sum += s->qr_size[inter][plane][qri];
+ for(inter=0; inter<2; inter++){
+ for(plane=0; plane<3; plane++){
+ int sum=0;
+ for(qri=0; qri<s->qr_count[inter][plane]; qri++){
+ sum+= s->qr_size[inter][plane][qri];
if(s->qps[qpi] <= sum)
break;
}
- qistart = sum - s->qr_size[inter][plane][qri];
- bmi = s->qr_base[inter][plane][qri ];
- bmj = s->qr_base[inter][plane][qri+1];
- for(i = 0; i < 64; i++)
- {
- int coeff = (2 * (sum - s->qps[qpi]) * s->base_matrix[bmi][i]
- - 2 * (qistart - s->qps[qpi]) * s->base_matrix[bmj][i]
- + s->qr_size[inter][plane][qri])
- / (2 * s->qr_size[inter][plane][qri]);
-
- int qmin = 8 << (inter + !i);
- int qscale = i ? ac_scale_factor : dc_scale_factor;
-
- s->qmat[qpi][inter][plane][s->dsp.idct_permutation[i]] = av_clip((qscale * coeff) / 100 * 4, qmin, 4096);
+ qistart= sum - s->qr_size[inter][plane][qri];
+ bmi= s->qr_base[inter][plane][qri ];
+ bmj= s->qr_base[inter][plane][qri+1];
+ for(i=0; i<64; i++){
+ int coeff= ( 2*(sum -s->qps[qpi])*s->base_matrix[bmi][i]
+ - 2*(qistart-s->qps[qpi])*s->base_matrix[bmj][i]
+ + s->qr_size[inter][plane][qri])
+ / (2*s->qr_size[inter][plane][qri]);
+
+ int qmin= 8<<(inter + !i);
+ int qscale= i ? ac_scale_factor : dc_scale_factor;
+
+ s->qmat[qpi][inter][plane][s->dsp.idct_permutation[i]]= av_clip((qscale * coeff)/100 * 4, qmin, 4096);
}
// all DC coefficients use the same quant so as not to interfere with DC prediction
s->qmat[qpi][inter][plane][0] = s->qmat[0][inter][plane][0];
}
}
- memset(s->qscale_table, (FFMAX(s->qmat[0][0][0][1], s->qmat[0][0][1][1]) + 8) / 16, 512); //FIXME finetune
+ memset(s->qscale_table, (FFMAX(s->qmat[0][0][0][1], s->qmat[0][0][1][1])+8)/16, 512); //FIXME finetune
}
/*
@@ -588,7 +539,7 @@ static void init_dequantizer(Vp3DecodeContext *s, int qpi)
*/
static void init_loop_filter(Vp3DecodeContext *s)
{
- int *bounding_values = s->bounding_values_array + 127;
+ int *bounding_values= s->bounding_values_array+127;
int filter_limit;
int x;
int value;
@@ -597,17 +548,15 @@ static void init_loop_filter(Vp3DecodeContext *s)
/* set up the bounding values */
memset(s->bounding_values_array, 0, 256 * sizeof(int));
- for(x = 0; x < filter_limit; x++)
- {
+ for (x = 0; x < filter_limit; x++) {
bounding_values[-x] = -x;
bounding_values[x] = x;
}
- for(x = value = filter_limit; x < 128 && value; x++, value--)
- {
+ for (x = value = filter_limit; x < 128 && value; x++, value--) {
bounding_values[ x] = value;
bounding_values[-x] = -value;
}
- if(value)
+ if (value)
bounding_values[128] = value;
bounding_values[129] = bounding_values[130] = filter_limit * 0x02020202;
}
@@ -628,37 +577,29 @@ static int unpack_superblocks(Vp3DecodeContext *s, GetBitContext *gb)
int i, j;
int current_fragment;
- if(s->keyframe)
- {
+ if (s->keyframe) {
memset(s->superblock_coding, SB_FULLY_CODED, s->superblock_count);
- }
- else
- {
+ } else {
/* unpack the list of partially-coded superblocks */
bit = get_bits1(gb);
/* toggle the bit because as soon as the first run length is
* fetched the bit will be toggled again */
bit ^= 1;
- while(current_superblock < s->superblock_count)
- {
- if(current_run-- == 0)
- {
+ while (current_superblock < s->superblock_count) {
+ if (current_run-- == 0) {
bit ^= 1;
current_run = get_vlc2(gb,
- s->superblock_run_length_vlc.table, 6, 2);
- if(current_run == 33)
+ s->superblock_run_length_vlc.table, 6, 2);
+ if (current_run == 33)
current_run += get_bits(gb, 12);
/* if any of the superblocks are not partially coded, flag
* a boolean to decode the list of fully-coded superblocks */
- if(bit == 0)
- {
+ if (bit == 0) {
decode_fully_flags = 1;
- }
- else
- {
+ } else {
/* make a note of the fact that there are partially coded
* superblocks */
@@ -670,8 +611,7 @@ static int unpack_superblocks(Vp3DecodeContext *s, GetBitContext *gb)
/* unpack the list of fully coded superblocks if any of the blocks were
* not marked as partially coded in the previous step */
- if(decode_fully_flags)
- {
+ if (decode_fully_flags) {
current_superblock = 0;
current_run = 0;
@@ -679,22 +619,19 @@ static int unpack_superblocks(Vp3DecodeContext *s, GetBitContext *gb)
/* toggle the bit because as soon as the first run length is
* fetched the bit will be toggled again */
bit ^= 1;
- while(current_superblock < s->superblock_count)
- {
+ while (current_superblock < s->superblock_count) {
/* skip any superblocks already marked as partially coded */
- if(s->superblock_coding[current_superblock] == SB_NOT_CODED)
- {
+ if (s->superblock_coding[current_superblock] == SB_NOT_CODED) {
- if(current_run-- == 0)
- {
+ if (current_run-- == 0) {
bit ^= 1;
current_run = get_vlc2(gb,
- s->superblock_run_length_vlc.table, 6, 2);
- if(current_run == 33)
+ s->superblock_run_length_vlc.table, 6, 2);
+ if (current_run == 33)
current_run += get_bits(gb, 12);
}
- s->superblock_coding[current_superblock] = 2 * bit;
+ s->superblock_coding[current_superblock] = 2*bit;
}
current_superblock++;
}
@@ -702,8 +639,7 @@ static int unpack_superblocks(Vp3DecodeContext *s, GetBitContext *gb)
/* if there were partial blocks, initialize bitstream for
* unpacking fragment codings */
- if(decode_partial_blocks)
- {
+ if (decode_partial_blocks) {
current_run = 0;
bit = get_bits1(gb);
@@ -716,90 +652,75 @@ static int unpack_superblocks(Vp3DecodeContext *s, GetBitContext *gb)
/* figure out which fragments are coded; iterate through each
* superblock (all planes) */
s->coded_fragment_list_index = 0;
- s->next_coeff = s->coeffs + s->fragment_count;
+ s->next_coeff= s->coeffs + s->fragment_count;
s->first_coded_y_fragment = s->first_coded_c_fragment = 0;
s->last_coded_y_fragment = s->last_coded_c_fragment = -1;
first_c_fragment_seen = 0;
memset(s->macroblock_coding, MODE_COPY, s->macroblock_count);
- for(i = 0; i < s->superblock_count; i++)
- {
+ for (i = 0; i < s->superblock_count; i++) {
/* iterate through all 16 fragments in a superblock */
- for(j = 0; j < 16; j++)
- {
+ for (j = 0; j < 16; j++) {
/* if the fragment is in bounds, check its coding status */
current_fragment = s->superblock_fragments[i * 16 + j];
- if(current_fragment >= s->fragment_count)
- {
+ if (current_fragment >= s->fragment_count) {
av_log(s->avctx, AV_LOG_ERROR, " vp3:unpack_superblocks(): bad fragment number (%d >= %d)\n",
- current_fragment, s->fragment_count);
+ current_fragment, s->fragment_count);
return 1;
}
- if(current_fragment != -1)
- {
- if(s->superblock_coding[i] == SB_NOT_CODED)
- {
+ if (current_fragment != -1) {
+ if (s->superblock_coding[i] == SB_NOT_CODED) {
/* copy all the fragments from the prior frame */
s->all_fragments[current_fragment].coding_method =
MODE_COPY;
- }
- else if(s->superblock_coding[i] == SB_PARTIALLY_CODED)
- {
+ } else if (s->superblock_coding[i] == SB_PARTIALLY_CODED) {
/* fragment may or may not be coded; this is the case
* that cares about the fragment coding runs */
- if(current_run-- == 0)
- {
+ if (current_run-- == 0) {
bit ^= 1;
current_run = get_vlc2(gb,
- s->fragment_run_length_vlc.table, 5, 2);
+ s->fragment_run_length_vlc.table, 5, 2);
}
- if(bit)
- {
+ if (bit) {
/* default mode; actual mode will be decoded in
* the next phase */
s->all_fragments[current_fragment].coding_method =
MODE_INTER_NO_MV;
- s->all_fragments[current_fragment].next_coeff = s->coeffs + current_fragment;
+ s->all_fragments[current_fragment].next_coeff= s->coeffs + current_fragment;
s->coded_fragment_list[s->coded_fragment_list_index] =
current_fragment;
- if((current_fragment >= s->fragment_start[1]) &&
- (s->last_coded_y_fragment == -1) &&
- (!first_c_fragment_seen))
- {
+ if ((current_fragment >= s->fragment_start[1]) &&
+ (s->last_coded_y_fragment == -1) &&
+ (!first_c_fragment_seen)) {
s->first_coded_c_fragment = s->coded_fragment_list_index;
s->last_coded_y_fragment = s->first_coded_c_fragment - 1;
first_c_fragment_seen = 1;
}
s->coded_fragment_list_index++;
s->macroblock_coding[s->all_fragments[current_fragment].macroblock] = MODE_INTER_NO_MV;
- }
- else
- {
+ } else {
/* not coded; copy this fragment from the prior frame */
s->all_fragments[current_fragment].coding_method =
MODE_COPY;
}
- }
- else
- {
+ } else {
/* fragments are fully coded in this superblock; actual
* coding will be determined in next step */
s->all_fragments[current_fragment].coding_method =
MODE_INTER_NO_MV;
- s->all_fragments[current_fragment].next_coeff = s->coeffs + current_fragment;
+ s->all_fragments[current_fragment].next_coeff= s->coeffs + current_fragment;
s->coded_fragment_list[s->coded_fragment_list_index] =
current_fragment;
- if((current_fragment >= s->fragment_start[1]) &&
- (s->last_coded_y_fragment == -1) &&
- (!first_c_fragment_seen))
- {
+ if ((current_fragment >= s->fragment_start[1]) &&
+ (s->last_coded_y_fragment == -1) &&
+ (!first_c_fragment_seen)) {
s->first_coded_c_fragment = s->coded_fragment_list_index;
s->last_coded_y_fragment = s->first_coded_c_fragment - 1;
first_c_fragment_seen = 1;
@@ -811,31 +732,28 @@ static int unpack_superblocks(Vp3DecodeContext *s, GetBitContext *gb)
}
}
- if(!first_c_fragment_seen)
+ if (!first_c_fragment_seen)
/* only Y fragments coded in this frame */
s->last_coded_y_fragment = s->coded_fragment_list_index - 1;
else
/* end the list of coded C fragments */
s->last_coded_c_fragment = s->coded_fragment_list_index - 1;
- for(i = 0; i < s->fragment_count - 1; i++)
- {
+ for (i = 0; i < s->fragment_count - 1; i++) {
s->fast_fragment_list[i] = i + 1;
}
s->fast_fragment_list[s->fragment_count - 1] = -1;
- if(s->last_coded_y_fragment == -1)
+ if (s->last_coded_y_fragment == -1)
s->fragment_list_y_head = -1;
- else
- {
+ else {
s->fragment_list_y_head = s->first_coded_y_fragment;
s->fast_fragment_list[s->last_coded_y_fragment] = -1;
}
- if(s->last_coded_c_fragment == -1)
+ if (s->last_coded_c_fragment == -1)
s->fragment_list_c_head = -1;
- else
- {
+ else {
s->fragment_list_c_head = s->first_coded_c_fragment;
s->fast_fragment_list[s->last_coded_c_fragment] = -1;
}
@@ -856,70 +774,61 @@ static int unpack_modes(Vp3DecodeContext *s, GetBitContext *gb)
int coding_mode;
int custom_mode_alphabet[CODING_MODE_COUNT];
- if(s->keyframe)
- {
- for(i = 0; i < s->fragment_count; i++)
+ if (s->keyframe) {
+ for (i = 0; i < s->fragment_count; i++)
s->all_fragments[i].coding_method = MODE_INTRA;
- }
- else
- {
+ } else {
/* fetch the mode coding scheme for this frame */
scheme = get_bits(gb, 3);
/* is it a custom coding scheme? */
- if(scheme == 0)
- {
- for(i = 0; i < 8; i++)
+ if (scheme == 0) {
+ for (i = 0; i < 8; i++)
custom_mode_alphabet[i] = MODE_INTER_NO_MV;
- for(i = 0; i < 8; i++)
+ for (i = 0; i < 8; i++)
custom_mode_alphabet[get_bits(gb, 3)] = i;
}
/* iterate through all of the macroblocks that contain 1 or more
* coded fragments */
- for(i = 0; i < s->u_superblock_start; i++)
- {
+ for (i = 0; i < s->u_superblock_start; i++) {
- for(j = 0; j < 4; j++)
- {
+ for (j = 0; j < 4; j++) {
current_macroblock = s->superblock_macroblocks[i * 4 + j];
- if((current_macroblock == -1) ||
- (s->macroblock_coding[current_macroblock] == MODE_COPY))
+ if ((current_macroblock == -1) ||
+ (s->macroblock_coding[current_macroblock] == MODE_COPY))
continue;
- if(current_macroblock >= s->macroblock_count)
- {
+ if (current_macroblock >= s->macroblock_count) {
av_log(s->avctx, AV_LOG_ERROR, " vp3:unpack_modes(): bad macroblock number (%d >= %d)\n",
- current_macroblock, s->macroblock_count);
+ current_macroblock, s->macroblock_count);
return 1;
}
/* mode 7 means get 3 bits for each coding mode */
- if(scheme == 7)
+ if (scheme == 7)
coding_mode = get_bits(gb, 3);
else if(scheme == 0)
coding_mode = custom_mode_alphabet
- [get_vlc2(gb, s->mode_code_vlc.table, 3, 3)];
+ [get_vlc2(gb, s->mode_code_vlc.table, 3, 3)];
else
coding_mode = ModeAlphabet[scheme-1]
- [get_vlc2(gb, s->mode_code_vlc.table, 3, 3)];
+ [get_vlc2(gb, s->mode_code_vlc.table, 3, 3)];
s->macroblock_coding[current_macroblock] = coding_mode;
- for(k = 0; k < 6; k++)
- {
+ for (k = 0; k < 6; k++) {
current_fragment =
s->macroblock_fragments[current_macroblock * 6 + k];
- if(current_fragment == -1)
+ if (current_fragment == -1)
continue;
- if(current_fragment >= s->fragment_count)
- {
+ if (current_fragment >= s->fragment_count) {
av_log(s->avctx, AV_LOG_ERROR, " vp3:unpack_modes(): bad fragment number (%d >= %d)\n",
- current_fragment, s->fragment_count);
+ current_fragment, s->fragment_count);
return 1;
}
- if(s->all_fragments[current_fragment].coding_method !=
- MODE_COPY)
+ if (s->all_fragments[current_fragment].coding_method !=
+ MODE_COPY)
s->all_fragments[current_fragment].coding_method =
coding_mode;
}
@@ -947,7 +856,7 @@ static int unpack_vectors(Vp3DecodeContext *s, GetBitContext *gb)
int current_macroblock;
int current_fragment;
- if(s->keyframe)
+ if (s->keyframe)
return 0;
memset(motion_x, 0, 6 * sizeof(int));
@@ -958,50 +867,41 @@ static int unpack_vectors(Vp3DecodeContext *s, GetBitContext *gb)
/* iterate through all of the macroblocks that contain 1 or more
* coded fragments */
- for(i = 0; i < s->u_superblock_start; i++)
- {
+ for (i = 0; i < s->u_superblock_start; i++) {
- for(j = 0; j < 4; j++)
- {
+ for (j = 0; j < 4; j++) {
current_macroblock = s->superblock_macroblocks[i * 4 + j];
- if((current_macroblock == -1) ||
- (s->macroblock_coding[current_macroblock] == MODE_COPY))
+ if ((current_macroblock == -1) ||
+ (s->macroblock_coding[current_macroblock] == MODE_COPY))
continue;
- if(current_macroblock >= s->macroblock_count)
- {
+ if (current_macroblock >= s->macroblock_count) {
av_log(s->avctx, AV_LOG_ERROR, " vp3:unpack_vectors(): bad macroblock number (%d >= %d)\n",
- current_macroblock, s->macroblock_count);
+ current_macroblock, s->macroblock_count);
return 1;
}
current_fragment = s->macroblock_fragments[current_macroblock * 6];
- if(current_fragment >= s->fragment_count)
- {
+ if (current_fragment >= s->fragment_count) {
av_log(s->avctx, AV_LOG_ERROR, " vp3:unpack_vectors(): bad fragment number (%d >= %d\n",
- current_fragment, s->fragment_count);
+ current_fragment, s->fragment_count);
return 1;
}
- switch(s->macroblock_coding[current_macroblock])
- {
+ switch (s->macroblock_coding[current_macroblock]) {
case MODE_INTER_PLUS_MV:
case MODE_GOLDEN_MV:
/* all 6 fragments use the same motion vector */
- if(coding_mode == 0)
- {
+ if (coding_mode == 0) {
motion_x[0] = motion_vector_table[get_vlc2(gb, s->motion_vector_vlc.table, 6, 2)];
motion_y[0] = motion_vector_table[get_vlc2(gb, s->motion_vector_vlc.table, 6, 2)];
- }
- else
- {
+ } else {
motion_x[0] = fixed_motion_vector_table[get_bits(gb, 6)];
motion_y[0] = fixed_motion_vector_table[get_bits(gb, 6)];
}
/* vector maintenance, only on MODE_INTER_PLUS_MV */
- if(s->macroblock_coding[current_macroblock] ==
- MODE_INTER_PLUS_MV)
- {
+ if (s->macroblock_coding[current_macroblock] ==
+ MODE_INTER_PLUS_MV) {
prior_last_motion_x = last_motion_x;
prior_last_motion_y = last_motion_y;
last_motion_x = motion_x[0];
@@ -1017,28 +917,21 @@ static int unpack_vectors(Vp3DecodeContext *s, GetBitContext *gb)
/* fetch 4 vectors from the bitstream, one for each
* Y fragment, then average for the C fragment vectors */
motion_x[4] = motion_y[4] = 0;
- for(k = 0; k < 4; k++)
- {
- for(l = 0; l < s->coded_fragment_list_index; l++)
- if(s->coded_fragment_list[l] == s->macroblock_fragments[6*current_macroblock + k])
+ for (k = 0; k < 4; k++) {
+ for (l = 0; l < s->coded_fragment_list_index; l++)
+ if (s->coded_fragment_list[l] == s->macroblock_fragments[6*current_macroblock + k])
break;
- if(l < s->coded_fragment_list_index)
- {
- if(coding_mode == 0)
- {
+ if (l < s->coded_fragment_list_index) {
+ if (coding_mode == 0) {
motion_x[k] = motion_vector_table[get_vlc2(gb, s->motion_vector_vlc.table, 6, 2)];
motion_y[k] = motion_vector_table[get_vlc2(gb, s->motion_vector_vlc.table, 6, 2)];
- }
- else
- {
+ } else {
motion_x[k] = fixed_motion_vector_table[get_bits(gb, 6)];
motion_y[k] = fixed_motion_vector_table[get_bits(gb, 6)];
}
last_motion_x = motion_x[k];
last_motion_y = motion_y[k];
- }
- else
- {
+ } else {
motion_x[k] = 0;
motion_y[k] = 0;
}
@@ -1046,10 +939,10 @@ static int unpack_vectors(Vp3DecodeContext *s, GetBitContext *gb)
motion_y[4] += motion_y[k];
}
- motion_x[5] =
- motion_x[4] = RSHIFT(motion_x[4], 2);
- motion_y[5] =
- motion_y[4] = RSHIFT(motion_y[4], 2);
+ motion_x[5]=
+ motion_x[4]= RSHIFT(motion_x[4], 2);
+ motion_y[5]=
+ motion_y[4]= RSHIFT(motion_y[4], 2);
break;
case MODE_INTER_LAST_MV:
@@ -1084,25 +977,20 @@ static int unpack_vectors(Vp3DecodeContext *s, GetBitContext *gb)
}
/* assign the motion vectors to the correct fragments */
- for(k = 0; k < 6; k++)
- {
+ for (k = 0; k < 6; k++) {
current_fragment =
s->macroblock_fragments[current_macroblock * 6 + k];
- if(current_fragment == -1)
+ if (current_fragment == -1)
continue;
- if(current_fragment >= s->fragment_count)
- {
+ if (current_fragment >= s->fragment_count) {
av_log(s->avctx, AV_LOG_ERROR, " vp3:unpack_vectors(): bad fragment number (%d >= %d)\n",
- current_fragment, s->fragment_count);
+ current_fragment, s->fragment_count);
return 1;
}
- if(s->macroblock_coding[current_macroblock] == MODE_INTER_FOURMV)
- {
+ if (s->macroblock_coding[current_macroblock] == MODE_INTER_FOURMV) {
s->all_fragments[current_fragment].motion_x = motion_x[k];
s->all_fragments[current_fragment].motion_y = motion_y[k];
- }
- else
- {
+ } else {
s->all_fragments[current_fragment].motion_x = motion_x[0];
s->all_fragments[current_fragment].motion_y = motion_y[0];
}
@@ -1118,40 +1006,35 @@ static int unpack_block_qpis(Vp3DecodeContext *s, GetBitContext *gb)
int qpi, i, j, bit, run_length, blocks_decoded, num_blocks_at_qpi;
int num_blocks = s->coded_fragment_list_index;
- for(qpi = 0; qpi < s->nqps - 1 && num_blocks > 0; qpi++)
- {
+ for (qpi = 0; qpi < s->nqps-1 && num_blocks > 0; qpi++) {
i = blocks_decoded = num_blocks_at_qpi = 0;
bit = get_bits1(gb);
- do
- {
+ do {
run_length = get_vlc2(gb, s->superblock_run_length_vlc.table, 6, 2) + 1;
- if(run_length == 34)
+ if (run_length == 34)
run_length += get_bits(gb, 12);
blocks_decoded += run_length;
- if(!bit)
+ if (!bit)
num_blocks_at_qpi += run_length;
- for(j = 0; j < run_length; i++)
- {
- if(i >= s->coded_fragment_list_index)
+ for (j = 0; j < run_length; i++) {
+ if (i >= s->coded_fragment_list_index)
return -1;
- if(s->all_fragments[s->coded_fragment_list[i]].qpi == qpi)
- {
+ if (s->all_fragments[s->coded_fragment_list[i]].qpi == qpi) {
s->all_fragments[s->coded_fragment_list[i]].qpi += bit;
j++;
}
}
- if(run_length == 4129)
+ if (run_length == 4129)
bit = get_bits1(gb);
else
bit ^= 1;
- }
- while(blocks_decoded < num_blocks);
+ } while (blocks_decoded < num_blocks);
num_blocks -= num_blocks_at_qpi;
}
@@ -1172,9 +1055,9 @@ static int unpack_block_qpis(Vp3DecodeContext *s, GetBitContext *gb)
* be passed into the next call to this same function.
*/
static int unpack_vlcs(Vp3DecodeContext *s, GetBitContext *gb,
- VLC *table, int coeff_index,
- int y_plane,
- int eob_run)
+ VLC *table, int coeff_index,
+ int y_plane,
+ int eob_run)
{
int i;
int token;
@@ -1188,83 +1071,70 @@ static int unpack_vlcs(Vp3DecodeContext *s, GetBitContext *gb,
int *list_head;
/* local references to structure members to avoid repeated deferences */
- uint8_t *perm = s->scantable.permutated;
+ uint8_t *perm= s->scantable.permutated;
int *coded_fragment_list = s->coded_fragment_list;
Vp3Fragment *all_fragments = s->all_fragments;
uint8_t *coeff_counts = s->coeff_counts;
- VLC_TYPE(*vlc_table)[2] = table->table;
+ VLC_TYPE (*vlc_table)[2] = table->table;
int *fast_fragment_list = s->fast_fragment_list;
- if(y_plane)
- {
+ if (y_plane) {
next_fragment = s->fragment_list_y_head;
list_head = &s->fragment_list_y_head;
- }
- else
- {
+ } else {
next_fragment = s->fragment_list_c_head;
list_head = &s->fragment_list_c_head;
}
i = next_fragment;
previous_fragment = -1; /* this indicates that the previous fragment is actually the list head */
- while(i != -1)
- {
+ while (i != -1) {
fragment_num = coded_fragment_list[i];
- if(coeff_counts[fragment_num] > coeff_index)
- {
+ if (coeff_counts[fragment_num] > coeff_index) {
previous_fragment = i;
i = fast_fragment_list[i];
continue;
}
fragment = &all_fragments[fragment_num];
- if(!eob_run)
- {
+ if (!eob_run) {
/* decode a VLC into a token */
token = get_vlc2(gb, vlc_table, 5, 3);
/* use the token to get a zero run, a coefficient, and an eob run */
- if(token <= 6)
- {
+ if (token <= 6) {
eob_run = eob_run_base[token];
- if(eob_run_get_bits[token])
+ if (eob_run_get_bits[token])
eob_run += get_bits(gb, eob_run_get_bits[token]);
coeff = zero_run = 0;
- }
- else
- {
+ } else {
bits_to_get = coeff_get_bits[token];
- if(bits_to_get)
+ if (bits_to_get)
bits_to_get = get_bits(gb, bits_to_get);
coeff = coeff_tables[token][bits_to_get];
zero_run = zero_run_base[token];
- if(zero_run_get_bits[token])
+ if (zero_run_get_bits[token])
zero_run += get_bits(gb, zero_run_get_bits[token]);
}
}
- if(!eob_run)
- {
+ if (!eob_run) {
coeff_counts[fragment_num] += zero_run;
- if(coeff_counts[fragment_num] < 64)
- {
- fragment->next_coeff->coeff = coeff;
- fragment->next_coeff->index = perm[coeff_counts[fragment_num]++]; //FIXME perm here already?
- fragment->next_coeff->next = s->next_coeff;
- s->next_coeff->next = NULL;
- fragment->next_coeff = s->next_coeff++;
+ if (coeff_counts[fragment_num] < 64){
+ fragment->next_coeff->coeff= coeff;
+ fragment->next_coeff->index= perm[coeff_counts[fragment_num]++]; //FIXME perm here already?
+ fragment->next_coeff->next= s->next_coeff;
+ s->next_coeff->next=NULL;
+ fragment->next_coeff= s->next_coeff++;
}
/* previous fragment is now this fragment */
previous_fragment = i;
- }
- else
- {
+ } else {
coeff_counts[fragment_num] |= 128;
eob_run--;
/* remove this fragment from the list */
- if(previous_fragment != -1)
+ if (previous_fragment != -1)
fast_fragment_list[previous_fragment] = fast_fragment_list[i];
else
*list_head = fast_fragment_list[i];
@@ -1302,22 +1172,22 @@ static int unpack_dct_coeffs(Vp3DecodeContext *s, GetBitContext *gb)
/* unpack the Y plane DC coefficients */
residual_eob_run = unpack_vlcs(s, gb, &s->dc_vlc[dc_y_table], 0,
- 1, residual_eob_run);
+ 1, residual_eob_run);
/* reverse prediction of the Y-plane DC coefficients */
reverse_dc_prediction(s, 0, s->fragment_width, s->fragment_height);
/* unpack the C plane DC coefficients */
residual_eob_run = unpack_vlcs(s, gb, &s->dc_vlc[dc_c_table], 0,
- 0, residual_eob_run);
+ 0, residual_eob_run);
/* reverse prediction of the C-plane DC coefficients */
- if(!(s->avctx->flags & CODEC_FLAG_GRAY))
+ if (!(s->avctx->flags & CODEC_FLAG_GRAY))
{
reverse_dc_prediction(s, s->fragment_start[1],
- s->fragment_width / 2, s->fragment_height / 2);
+ s->fragment_width / 2, s->fragment_height / 2);
reverse_dc_prediction(s, s->fragment_start[2],
- s->fragment_width / 2, s->fragment_height / 2);
+ s->fragment_width / 2, s->fragment_height / 2);
}
/* fetch the AC table indexes */
@@ -1325,37 +1195,32 @@ static int unpack_dct_coeffs(Vp3DecodeContext *s, GetBitContext *gb)
ac_c_table = get_bits(gb, 4);
/* build tables of AC VLC tables */
- for(i = 1; i <= 5; i++)
- {
+ for (i = 1; i <= 5; i++) {
y_tables[i] = &s->ac_vlc_1[ac_y_table];
c_tables[i] = &s->ac_vlc_1[ac_c_table];
}
- for(i = 6; i <= 14; i++)
- {
+ for (i = 6; i <= 14; i++) {
y_tables[i] = &s->ac_vlc_2[ac_y_table];
c_tables[i] = &s->ac_vlc_2[ac_c_table];
}
- for(i = 15; i <= 27; i++)
- {
+ for (i = 15; i <= 27; i++) {
y_tables[i] = &s->ac_vlc_3[ac_y_table];
c_tables[i] = &s->ac_vlc_3[ac_c_table];
}
- for(i = 28; i <= 63; i++)
- {
+ for (i = 28; i <= 63; i++) {
y_tables[i] = &s->ac_vlc_4[ac_y_table];
c_tables[i] = &s->ac_vlc_4[ac_c_table];
}
/* decode all AC coefficents */
- for(i = 1; i <= 63; i++)
- {
- if(s->fragment_list_y_head != -1)
+ for (i = 1; i <= 63; i++) {
+ if (s->fragment_list_y_head != -1)
residual_eob_run = unpack_vlcs(s, gb, y_tables[i], i,
- 1, residual_eob_run);
+ 1, residual_eob_run);
- if(s->fragment_list_c_head != -1)
+ if (s->fragment_list_c_head != -1)
residual_eob_run = unpack_vlcs(s, gb, c_tables[i], i,
- 0, residual_eob_run);
+ 0, residual_eob_run);
}
return 0;
@@ -1399,24 +1264,23 @@ static void reverse_dc_prediction(Vp3DecodeContext *s,
* 2: up-right multiplier
* 3: left multiplier
*/
- static const int predictor_transform[16][4] =
- {
+ static const int predictor_transform[16][4] = {
{ 0, 0, 0, 0},
- { 0, 0, 0, 128}, // PL
- { 0, 0, 128, 0}, // PUR
+ { 0, 0, 0,128}, // PL
+ { 0, 0,128, 0}, // PUR
{ 0, 0, 53, 75}, // PUR|PL
- { 0, 128, 0, 0}, // PU
+ { 0,128, 0, 0}, // PU
{ 0, 64, 0, 64}, // PU|PL
- { 0, 128, 0, 0}, // PU|PUR
+ { 0,128, 0, 0}, // PU|PUR
{ 0, 0, 53, 75}, // PU|PUR|PL
{128, 0, 0, 0}, // PUL
- { 0, 0, 0, 128}, // PUL|PL
+ { 0, 0, 0,128}, // PUL|PL
{ 64, 0, 64, 0}, // PUL|PUR
{ 0, 0, 53, 75}, // PUL|PUR|PL
- { 0, 128, 0, 0}, // PUL|PU
- { -104, 116, 0, 116}, // PUL|PU|PL
+ { 0,128, 0, 0}, // PUL|PU
+ {-104,116, 0,116}, // PUL|PU|PL
{ 24, 80, 24, 0}, // PUL|PU|PUR
- { -104, 116, 0, 116} // PUL|PU|PUR|PL
+ {-104,116, 0,116} // PUL|PU|PUR|PL
};
/* This table shows which types of blocks can use other blocks for
@@ -1425,8 +1289,7 @@ static void reverse_dc_prediction(Vp3DecodeContext *s,
* from other INTRA blocks. There are 2 golden frame coding types;
* blocks encoding in these modes can only predict from other blocks
* that were encoded with these 1 of these 2 modes. */
- static const unsigned char compatible_frame[9] =
- {
+ static const unsigned char compatible_frame[9] = {
1, /* MODE_INTER_NO_MV */
0, /* MODE_INTRA */
1, /* MODE_INTER_PLUS_MV */
@@ -1448,59 +1311,49 @@ static void reverse_dc_prediction(Vp3DecodeContext *s,
last_dc[0] = last_dc[1] = last_dc[2] = 0;
/* for each fragment row... */
- for(y = 0; y < fragment_height; y++)
- {
+ for (y = 0; y < fragment_height; y++) {
/* for each fragment in a row... */
- for(x = 0; x < fragment_width; x++, i++)
- {
+ for (x = 0; x < fragment_width; x++, i++) {
/* reverse prediction if this block was coded */
- if(s->all_fragments[i].coding_method != MODE_COPY)
- {
+ if (s->all_fragments[i].coding_method != MODE_COPY) {
current_frame_type =
compatible_frame[s->all_fragments[i].coding_method];
- transform = 0;
- if(x)
- {
- l = i - 1;
+ transform= 0;
+ if(x){
+ l= i-1;
vl = DC_COEFF(l);
if(COMPATIBLE_FRAME(l))
transform |= PL;
}
- if(y)
- {
- u = i - fragment_width;
+ if(y){
+ u= i-fragment_width;
vu = DC_COEFF(u);
if(COMPATIBLE_FRAME(u))
transform |= PU;
- if(x)
- {
- ul = i - fragment_width - 1;
+ if(x){
+ ul= i-fragment_width-1;
vul = DC_COEFF(ul);
if(COMPATIBLE_FRAME(ul))
transform |= PUL;
}
- if(x + 1 < fragment_width)
- {
- ur = i - fragment_width + 1;
+ if(x + 1 < fragment_width){
+ ur= i-fragment_width+1;
vur = DC_COEFF(ur);
if(COMPATIBLE_FRAME(ur))
transform |= PUR;
}
}
- if(transform == 0)
- {
+ if (transform == 0) {
/* if there were no fragments to predict from, use last
* DC saved */
predicted_dc = last_dc[current_frame_type];
- }
- else
- {
+ } else {
/* apply the appropriate predictor transform */
predicted_dc =
@@ -1513,34 +1366,31 @@ static void reverse_dc_prediction(Vp3DecodeContext *s,
/* check for outranging on the [ul u l] and
* [ul u ur l] predictors */
- if((transform == 15) || (transform == 13))
- {
- if(FFABS(predicted_dc - vu) > 128)
+ if ((transform == 15) || (transform == 13)) {
+ if (FFABS(predicted_dc - vu) > 128)
predicted_dc = vu;
- else if(FFABS(predicted_dc - vl) > 128)
+ else if (FFABS(predicted_dc - vl) > 128)
predicted_dc = vl;
- else if(FFABS(predicted_dc - vul) > 128)
+ else if (FFABS(predicted_dc - vul) > 128)
predicted_dc = vul;
}
}
/* at long last, apply the predictor */
- if(s->coeffs[i].index)
- {
- *s->next_coeff = s->coeffs[i];
- s->coeffs[i].index = 0;
- s->coeffs[i].coeff = 0;
- s->coeffs[i].next = s->next_coeff++;
+ if(s->coeffs[i].index){
+ *s->next_coeff= s->coeffs[i];
+ s->coeffs[i].index=0;
+ s->coeffs[i].coeff=0;
+ s->coeffs[i].next= s->next_coeff++;
}
s->coeffs[i].coeff += predicted_dc;
/* save the DC */
last_dc[current_frame_type] = DC_COEFF(i);
- if(DC_COEFF(i) && !(s->coeff_counts[i] & 127))
- {
- s->coeff_counts[i] = 129;
+ if(DC_COEFF(i) && !(s->coeff_counts[i]&127)){
+ s->coeff_counts[i]= 129;
// s->all_fragments[i].next_coeff= s->next_coeff;
- s->coeffs[i].next = s->next_coeff;
- (s->next_coeff++)->next = NULL;
+ s->coeffs[i].next= s->next_coeff;
+ (s->next_coeff++)->next=NULL;
}
}
}
@@ -1562,11 +1412,10 @@ static void render_slice(Vp3DecodeContext *s, int slice)
int plane;
int current_macroblock_entry = slice * s->macroblock_width * 6;
- if(slice >= s->macroblock_height)
+ if (slice >= s->macroblock_height)
return;
- for(plane = 0; plane < 3; plane++)
- {
+ for (plane = 0; plane < 3; plane++) {
uint8_t *output_plane = s->current_frame.data [plane];
uint8_t * last_plane = s-> last_frame.data [plane];
uint8_t *golden_plane = s-> golden_frame.data [plane];
@@ -1577,57 +1426,51 @@ static void render_slice(Vp3DecodeContext *s, int slice)
int slice_height = y + (FRAGMENT_PIXELS << !plane);
int i = s->macroblock_fragments[current_macroblock_entry + plane + 3*!!plane];
- if(!s->flipped_image) stride = -stride;
+ if (!s->flipped_image) stride = -stride;
if(FFABS(stride) > 2048)
return; //various tables are fixed size
/* for each fragment row in the slice (both of them)... */
- for(; y < slice_height; y += 8)
- {
+ for (; y < slice_height; y += 8) {
/* for each fragment in a row... */
- for(x = 0; x < plane_width; x += 8, i++)
- {
+ for (x = 0; x < plane_width; x += 8, i++) {
- if((i < 0) || (i >= s->fragment_count))
- {
+ if ((i < 0) || (i >= s->fragment_count)) {
av_log(s->avctx, AV_LOG_ERROR, " vp3:render_slice(): bad fragment number (%d)\n", i);
return;
}
/* transform if this block was coded */
- if((s->all_fragments[i].coding_method != MODE_COPY) &&
- !((s->avctx->flags & CODEC_FLAG_GRAY) && plane))
- {
+ if ((s->all_fragments[i].coding_method != MODE_COPY) &&
+ !((s->avctx->flags & CODEC_FLAG_GRAY) && plane)) {
- if((s->all_fragments[i].coding_method == MODE_USING_GOLDEN) ||
- (s->all_fragments[i].coding_method == MODE_GOLDEN_MV))
- motion_source = golden_plane;
+ if ((s->all_fragments[i].coding_method == MODE_USING_GOLDEN) ||
+ (s->all_fragments[i].coding_method == MODE_GOLDEN_MV))
+ motion_source= golden_plane;
else
- motion_source = last_plane;
+ motion_source= last_plane;
motion_source += s->all_fragments[i].first_pixel;
motion_halfpel_index = 0;
/* sort out the motion vector if this fragment is coded
* using a motion vector method */
- if((s->all_fragments[i].coding_method > MODE_INTRA) &&
- (s->all_fragments[i].coding_method != MODE_USING_GOLDEN))
- {
+ if ((s->all_fragments[i].coding_method > MODE_INTRA) &&
+ (s->all_fragments[i].coding_method != MODE_USING_GOLDEN)) {
int src_x, src_y;
motion_x = s->all_fragments[i].motion_x;
motion_y = s->all_fragments[i].motion_y;
- if(plane)
- {
- motion_x = (motion_x >> 1) | (motion_x & 1);
- motion_y = (motion_y >> 1) | (motion_y & 1);
+ if(plane){
+ motion_x= (motion_x>>1) | (motion_x&1);
+ motion_y= (motion_y>>1) | (motion_y&1);
}
- src_x = (motion_x >> 1) + x;
- src_y = (motion_y >> 1) + y;
- if((motion_x == 127) || (motion_y == 127))
+ src_x= (motion_x>>1) + x;
+ src_y= (motion_y>>1) + y;
+ if ((motion_x == 127) || (motion_y == 127))
av_log(s->avctx, AV_LOG_ERROR, " help! got invalid motion vector! (%X, %X)\n", motion_x, motion_y);
motion_halfpel_index = motion_x & 0x01;
@@ -1636,35 +1479,30 @@ static void render_slice(Vp3DecodeContext *s, int slice)
motion_halfpel_index |= (motion_y & 0x01) << 1;
motion_source += ((motion_y >> 1) * stride);
- if(src_x < 0 || src_y < 0 || src_x + 9 >= plane_width || src_y + 9 >= plane_height)
- {
- uint8_t *temp = s->edge_emu_buffer;
- if(stride < 0) temp -= 9 * stride;
- else temp += 9 * stride;
+ if(src_x<0 || src_y<0 || src_x + 9 >= plane_width || src_y + 9 >= plane_height){
+ uint8_t *temp= s->edge_emu_buffer;
+ if(stride<0) temp -= 9*stride;
+ else temp += 9*stride;
ff_emulated_edge_mc(temp, motion_source, stride, 9, 9, src_x, src_y, plane_width, plane_height);
- motion_source = temp;
+ motion_source= temp;
}
}
/* first, take care of copying a block from either the
* previous or the golden frame */
- if(s->all_fragments[i].coding_method != MODE_INTRA)
- {
+ if (s->all_fragments[i].coding_method != MODE_INTRA) {
/* Note, it is possible to implement all MC cases with
put_no_rnd_pixels_l2 which would look more like the
VP3 source but this would be slower as
put_no_rnd_pixels_tab is better optimzed */
- if(motion_halfpel_index != 3)
- {
+ if(motion_halfpel_index != 3){
s->dsp.put_no_rnd_pixels_tab[1][motion_halfpel_index](
output_plane + s->all_fragments[i].first_pixel,
motion_source, stride, 8);
- }
- else
- {
- int d = (motion_x ^ motion_y) >> 31; // d is 0 if motion_x and _y have the same sign, else -1
+ }else{
+ int d= (motion_x ^ motion_y)>>31; // d is 0 if motion_x and _y have the same sign, else -1
s->dsp.put_no_rnd_pixels_l2[1](
output_plane + s->all_fragments[i].first_pixel,
motion_source - d,
@@ -1672,55 +1510,43 @@ static void render_slice(Vp3DecodeContext *s, int slice)
stride, 8);
}
dequantizer = s->qmat[s->all_fragments[i].qpi][1][plane];
- }
- else
- {
+ }else{
dequantizer = s->qmat[s->all_fragments[i].qpi][0][plane];
}
/* dequantize the DCT coefficients */
- if(s->avctx->idct_algo == FF_IDCT_VP3)
- {
- Coeff *coeff = s->coeffs + i;
+ if(s->avctx->idct_algo==FF_IDCT_VP3){
+ Coeff *coeff= s->coeffs + i;
s->dsp.clear_block(block);
- while(coeff->next)
- {
- block[coeff->index] = coeff->coeff * dequantizer[coeff->index];
- coeff = coeff->next;
+ while(coeff->next){
+ block[coeff->index]= coeff->coeff * dequantizer[coeff->index];
+ coeff= coeff->next;
}
- }
- else
- {
- Coeff *coeff = s->coeffs + i;
+ }else{
+ Coeff *coeff= s->coeffs + i;
s->dsp.clear_block(block);
- while(coeff->next)
- {
- block[coeff->index] = (coeff->coeff * dequantizer[coeff->index] + 2) >> 2;
- coeff = coeff->next;
+ while(coeff->next){
+ block[coeff->index]= (coeff->coeff * dequantizer[coeff->index] + 2)>>2;
+ coeff= coeff->next;
}
}
/* invert DCT and place (or add) in final output */
- if(s->all_fragments[i].coding_method == MODE_INTRA)
- {
- if(s->avctx->idct_algo != FF_IDCT_VP3)
- block[0] += 128 << 3;
+ if (s->all_fragments[i].coding_method == MODE_INTRA) {
+ if(s->avctx->idct_algo!=FF_IDCT_VP3)
+ block[0] += 128<<3;
s->dsp.idct_put(
output_plane + s->all_fragments[i].first_pixel,
stride,
block);
- }
- else
- {
+ } else {
s->dsp.idct_add(
output_plane + s->all_fragments[i].first_pixel,
stride,
block);
}
- }
- else
- {
+ } else {
/* copy directly from the previous frame */
s->dsp.put_pixels_tab[1][0](
@@ -1733,13 +1559,13 @@ static void render_slice(Vp3DecodeContext *s, int slice)
}
}
- /* this looks like a good place for slice dispatch... */
- /* algorithm:
- * if (slice == s->macroblock_height - 1)
- * dispatch (both last slice & 2nd-to-last slice);
- * else if (slice > 0)
- * dispatch (slice - 1);
- */
+ /* this looks like a good place for slice dispatch... */
+ /* algorithm:
+ * if (slice == s->macroblock_height - 1)
+ * dispatch (both last slice & 2nd-to-last slice);
+ * else if (slice > 0)
+ * dispatch (slice - 1);
+ */
emms_c();
}
@@ -1748,39 +1574,34 @@ static void apply_loop_filter(Vp3DecodeContext *s)
{
int plane;
int x, y;
- int *bounding_values = s->bounding_values_array + 127;
+ int *bounding_values= s->bounding_values_array+127;
- for(plane = 0; plane < 3; plane++)
- {
+ for (plane = 0; plane < 3; plane++) {
int width = s->fragment_width >> !!plane;
int height = s->fragment_height >> !!plane;
int fragment = s->fragment_start [plane];
int stride = s->current_frame.linesize[plane];
uint8_t *plane_data = s->current_frame.data [plane];
- if(!s->flipped_image) stride = -stride;
+ if (!s->flipped_image) stride = -stride;
- for(y = 0; y < height; y++)
- {
+ for (y = 0; y < height; y++) {
- for(x = 0; x < width; x++)
- {
+ for (x = 0; x < width; x++) {
/* This code basically just deblocks on the edges of coded blocks.
* However, it has to be much more complicated because of the
* braindamaged deblock ordering used in VP3/Theora. Order matters
* because some pixels get filtered twice. */
- if(s->all_fragments[fragment].coding_method != MODE_COPY)
+ if( s->all_fragments[fragment].coding_method != MODE_COPY )
{
/* do not perform left edge filter for left columns frags */
- if(x > 0)
- {
+ if (x > 0) {
s->dsp.vp3_h_loop_filter(
plane_data + s->all_fragments[fragment].first_pixel,
stride, bounding_values);
}
/* do not perform top edge filter for top row fragments */
- if(y > 0)
- {
+ if (y > 0) {
s->dsp.vp3_v_loop_filter(
plane_data + s->all_fragments[fragment].first_pixel,
stride, bounding_values);
@@ -1789,9 +1610,8 @@ static void apply_loop_filter(Vp3DecodeContext *s)
/* do not perform right edge filter for right column
* fragments or if right fragment neighbor is also coded
* in this frame (it will be filtered in next iteration) */
- if((x < width - 1) &&
- (s->all_fragments[fragment + 1].coding_method == MODE_COPY))
- {
+ if ((x < width - 1) &&
+ (s->all_fragments[fragment + 1].coding_method == MODE_COPY)) {
s->dsp.vp3_h_loop_filter(
plane_data + s->all_fragments[fragment + 1].first_pixel,
stride, bounding_values);
@@ -1800,9 +1620,8 @@ static void apply_loop_filter(Vp3DecodeContext *s)
/* do not perform bottom edge filter for bottom row
* fragments or if bottom fragment neighbor is also coded
* in this frame (it will be filtered in the next row) */
- if((y < height - 1) &&
- (s->all_fragments[fragment + width].coding_method == MODE_COPY))
- {
+ if ((y < height - 1) &&
+ (s->all_fragments[fragment + width].coding_method == MODE_COPY)) {
s->dsp.vp3_v_loop_filter(
plane_data + s->all_fragments[fragment + width].first_pixel,
stride, bounding_values);
@@ -1831,40 +1650,34 @@ static void vp3_calculate_pixel_addresses(Vp3DecodeContext *s)
/* figure out the first pixel addresses for each of the fragments */
/* Y plane */
i = 0;
- for(y = Y_INITIAL(0); Y_FINISHED(0); y += y_inc)
- {
- for(x = 0; x < s->fragment_width; x++)
- {
+ for (y = Y_INITIAL(0); Y_FINISHED(0); y += y_inc) {
+ for (x = 0; x < s->fragment_width; x++) {
s->all_fragments[i++].first_pixel =
s->golden_frame.linesize[0] * y * FRAGMENT_PIXELS -
- s->golden_frame.linesize[0] +
- x * FRAGMENT_PIXELS;
+ s->golden_frame.linesize[0] +
+ x * FRAGMENT_PIXELS;
}
}
/* U plane */
i = s->fragment_start[1];
- for(y = Y_INITIAL(1); Y_FINISHED(1); y += y_inc)
- {
- for(x = 0; x < s->fragment_width / 2; x++)
- {
+ for (y = Y_INITIAL(1); Y_FINISHED(1); y += y_inc) {
+ for (x = 0; x < s->fragment_width / 2; x++) {
s->all_fragments[i++].first_pixel =
s->golden_frame.linesize[1] * y * FRAGMENT_PIXELS -
- s->golden_frame.linesize[1] +
- x * FRAGMENT_PIXELS;
+ s->golden_frame.linesize[1] +
+ x * FRAGMENT_PIXELS;
}
}
/* V plane */
i = s->fragment_start[2];
- for(y = Y_INITIAL(1); Y_FINISHED(1); y += y_inc)
- {
- for(x = 0; x < s->fragment_width / 2; x++)
- {
+ for (y = Y_INITIAL(1); Y_FINISHED(1); y += y_inc) {
+ for (x = 0; x < s->fragment_width / 2; x++) {
s->all_fragments[i++].first_pixel =
s->golden_frame.linesize[2] * y * FRAGMENT_PIXELS -
- s->golden_frame.linesize[2] +
- x * FRAGMENT_PIXELS;
+ s->golden_frame.linesize[2] +
+ x * FRAGMENT_PIXELS;
}
}
}
@@ -1881,7 +1694,7 @@ static av_cold int vp3_decode_init(AVCodecContext *avctx)
int y_superblock_count;
int c_superblock_count;
- if(avctx->codec_tag == MKTAG('V', 'P', '3', '0'))
+ if (avctx->codec_tag == MKTAG('V','P','3','0'))
s->version = 0;
else
s->version = 1;
@@ -1892,14 +1705,14 @@ static av_cold int vp3_decode_init(AVCodecContext *avctx)
avctx->pix_fmt = PIX_FMT_YUV420P;
avctx->chroma_sample_location = AVCHROMA_LOC_CENTER;
//if(avctx->idct_algo==FF_IDCT_AUTO)
- avctx->idct_algo = FF_IDCT_VP3;
+ avctx->idct_algo=FF_IDCT_VP3;
dsputil_init(&s->dsp, avctx);
ff_init_scantable(s->dsp.idct_permutation, &s->scantable, ff_zigzag_direct);
/* initialize to an impossible value which will force a recalculation
* in the first frame decode */
- for(i = 0; i < 3; i++)
+ for (i = 0; i < 3; i++)
s->qps[i] = -1;
s->y_superblock_width = (s->width + 31) / 32;
@@ -1936,17 +1749,15 @@ static av_cold int vp3_decode_init(AVCodecContext *avctx)
s->coded_fragment_list = av_malloc(s->fragment_count * sizeof(int));
s->fast_fragment_list = av_malloc(s->fragment_count * sizeof(int));
s->pixel_addresses_initialized = 0;
- if(!s->superblock_coding || !s->all_fragments || !s->coeff_counts ||
- !s->coeffs || !s->coded_fragment_list || !s->fast_fragment_list)
- {
+ if (!s->superblock_coding || !s->all_fragments || !s->coeff_counts ||
+ !s->coeffs || !s->coded_fragment_list || !s->fast_fragment_list) {
vp3_decode_end(avctx);
return -1;
}
- if(!s->theora_tables)
+ if (!s->theora_tables)
{
- for(i = 0; i < 64; i++)
- {
+ for (i = 0; i < 64; i++) {
s->coded_dc_scale_factor[i] = vp31_dc_scale_factor[i];
s->coded_ac_scale_factor[i] = vp31_ac_scale_factor[i];
s->base_matrix[0][i] = vp31_intra_y_dequant[i];
@@ -1955,115 +1766,107 @@ static av_cold int vp3_decode_init(AVCodecContext *avctx)
s->filter_limit_values[i] = vp31_filter_limit_values[i];
}
- for(inter = 0; inter < 2; inter++)
- {
- for(plane = 0; plane < 3; plane++)
- {
- s->qr_count[inter][plane] = 1;
- s->qr_size [inter][plane][0] = 63;
- s->qr_base [inter][plane][0] =
- s->qr_base [inter][plane][1] = 2 * inter + (!!plane)*!inter;
+ for(inter=0; inter<2; inter++){
+ for(plane=0; plane<3; plane++){
+ s->qr_count[inter][plane]= 1;
+ s->qr_size [inter][plane][0]= 63;
+ s->qr_base [inter][plane][0]=
+ s->qr_base [inter][plane][1]= 2*inter + (!!plane)*!inter;
}
}
/* init VLC tables */
- for(i = 0; i < 16; i++)
- {
+ for (i = 0; i < 16; i++) {
/* DC histograms */
init_vlc(&s->dc_vlc[i], 5, 32,
- &dc_bias[i][0][1], 4, 2,
- &dc_bias[i][0][0], 4, 2, 0);
+ &dc_bias[i][0][1], 4, 2,
+ &dc_bias[i][0][0], 4, 2, 0);
/* group 1 AC histograms */
init_vlc(&s->ac_vlc_1[i], 5, 32,
- &ac_bias_0[i][0][1], 4, 2,
- &ac_bias_0[i][0][0], 4, 2, 0);
+ &ac_bias_0[i][0][1], 4, 2,
+ &ac_bias_0[i][0][0], 4, 2, 0);
/* group 2 AC histograms */
init_vlc(&s->ac_vlc_2[i], 5, 32,
- &ac_bias_1[i][0][1], 4, 2,
- &ac_bias_1[i][0][0], 4, 2, 0);
+ &ac_bias_1[i][0][1], 4, 2,
+ &ac_bias_1[i][0][0], 4, 2, 0);
/* group 3 AC histograms */
init_vlc(&s->ac_vlc_3[i], 5, 32,
- &ac_bias_2[i][0][1], 4, 2,
- &ac_bias_2[i][0][0], 4, 2, 0);
+ &ac_bias_2[i][0][1], 4, 2,
+ &ac_bias_2[i][0][0], 4, 2, 0);
/* group 4 AC histograms */
init_vlc(&s->ac_vlc_4[i], 5, 32,
- &ac_bias_3[i][0][1], 4, 2,
- &ac_bias_3[i][0][0], 4, 2, 0);
+ &ac_bias_3[i][0][1], 4, 2,
+ &ac_bias_3[i][0][0], 4, 2, 0);
}
- }
- else
- {
- for(i = 0; i < 16; i++)
- {
+ } else {
+ for (i = 0; i < 16; i++) {
/* DC histograms */
- if(init_vlc(&s->dc_vlc[i], 5, 32,
- &s->huffman_table[i][0][1], 4, 2,
- &s->huffman_table[i][0][0], 4, 2, 0) < 0)
+ if (init_vlc(&s->dc_vlc[i], 5, 32,
+ &s->huffman_table[i][0][1], 4, 2,
+ &s->huffman_table[i][0][0], 4, 2, 0) < 0)
goto vlc_fail;
/* group 1 AC histograms */
- if(init_vlc(&s->ac_vlc_1[i], 5, 32,
- &s->huffman_table[i+16][0][1], 4, 2,
- &s->huffman_table[i+16][0][0], 4, 2, 0) < 0)
+ if (init_vlc(&s->ac_vlc_1[i], 5, 32,
+ &s->huffman_table[i+16][0][1], 4, 2,
+ &s->huffman_table[i+16][0][0], 4, 2, 0) < 0)
goto vlc_fail;
/* group 2 AC histograms */
- if(init_vlc(&s->ac_vlc_2[i], 5, 32,
- &s->huffman_table[i+16*2][0][1], 4, 2,
- &s->huffman_table[i+16*2][0][0], 4, 2, 0) < 0)
+ if (init_vlc(&s->ac_vlc_2[i], 5, 32,
+ &s->huffman_table[i+16*2][0][1], 4, 2,
+ &s->huffman_table[i+16*2][0][0], 4, 2, 0) < 0)
goto vlc_fail;
/* group 3 AC histograms */
- if(init_vlc(&s->ac_vlc_3[i], 5, 32,
- &s->huffman_table[i+16*3][0][1], 4, 2,
- &s->huffman_table[i+16*3][0][0], 4, 2, 0) < 0)
+ if (init_vlc(&s->ac_vlc_3[i], 5, 32,
+ &s->huffman_table[i+16*3][0][1], 4, 2,
+ &s->huffman_table[i+16*3][0][0], 4, 2, 0) < 0)
goto vlc_fail;
/* group 4 AC histograms */
- if(init_vlc(&s->ac_vlc_4[i], 5, 32,
- &s->huffman_table[i+16*4][0][1], 4, 2,
- &s->huffman_table[i+16*4][0][0], 4, 2, 0) < 0)
+ if (init_vlc(&s->ac_vlc_4[i], 5, 32,
+ &s->huffman_table[i+16*4][0][1], 4, 2,
+ &s->huffman_table[i+16*4][0][0], 4, 2, 0) < 0)
goto vlc_fail;
}
}
init_vlc(&s->superblock_run_length_vlc, 6, 34,
- &superblock_run_length_vlc_table[0][1], 4, 2,
- &superblock_run_length_vlc_table[0][0], 4, 2, 0);
+ &superblock_run_length_vlc_table[0][1], 4, 2,
+ &superblock_run_length_vlc_table[0][0], 4, 2, 0);
init_vlc(&s->fragment_run_length_vlc, 5, 30,
- &fragment_run_length_vlc_table[0][1], 4, 2,
- &fragment_run_length_vlc_table[0][0], 4, 2, 0);
+ &fragment_run_length_vlc_table[0][1], 4, 2,
+ &fragment_run_length_vlc_table[0][0], 4, 2, 0);
init_vlc(&s->mode_code_vlc, 3, 8,
- &mode_code_vlc_table[0][1], 2, 1,
- &mode_code_vlc_table[0][0], 2, 1, 0);
+ &mode_code_vlc_table[0][1], 2, 1,
+ &mode_code_vlc_table[0][0], 2, 1, 0);
init_vlc(&s->motion_vector_vlc, 6, 63,
- &motion_vector_vlc_table[0][1], 2, 1,
- &motion_vector_vlc_table[0][0], 2, 1, 0);
+ &motion_vector_vlc_table[0][1], 2, 1,
+ &motion_vector_vlc_table[0][0], 2, 1, 0);
/* work out the block mapping tables */
s->superblock_fragments = av_malloc(s->superblock_count * 16 * sizeof(int));
s->superblock_macroblocks = av_malloc(s->superblock_count * 4 * sizeof(int));
s->macroblock_fragments = av_malloc(s->macroblock_count * 6 * sizeof(int));
s->macroblock_coding = av_malloc(s->macroblock_count + 1);
- if(!s->superblock_fragments || !s->superblock_macroblocks ||
- !s->macroblock_fragments || !s->macroblock_coding)
- {
+ if (!s->superblock_fragments || !s->superblock_macroblocks ||
+ !s->macroblock_fragments || !s->macroblock_coding) {
vp3_decode_end(avctx);
return -1;
}
init_block_mapping(s);
- for(i = 0; i < 3; i++)
- {
+ for (i = 0; i < 3; i++) {
s->current_frame.data[i] = NULL;
s->last_frame.data[i] = NULL;
s->golden_frame.data[i] = NULL;
@@ -2077,16 +1880,13 @@ vlc_fail:
}
/* ffdshow custom code (begin) */
-static int64_t theora_granule_frame(Vp3DecodeContext *s, int64_t granulepos)
-{
- if(granulepos >= 0)
- {
- int64_t iframe = granulepos >> s->keyframe_granule_shift;
- int64_t pframe = granulepos - (iframe << s->keyframe_granule_shift);
- return iframe + pframe;
- }
- else
- {
+static int64_t theora_granule_frame(Vp3DecodeContext *s,int64_t granulepos)
+{
+ if(granulepos>=0){
+ int64_t iframe=granulepos>>s->keyframe_granule_shift;
+ int64_t pframe=granulepos-(iframe<<s->keyframe_granule_shift);
+ return iframe+pframe;
+ }else{
return -1;
}
}
@@ -2106,187 +1906,165 @@ static int vp3_decode_frame(AVCodecContext *avctx,
init_get_bits(&gb, buf, buf_size * 8);
- if(s->theora && get_bits1(&gb))
+ if (s->theora && get_bits1(&gb))
{
av_log(avctx, AV_LOG_ERROR, "Header packet passed to frame decoder, skipping\n");
return -1;
}
s->keyframe = !get_bits1(&gb);
- if(!s->theora)
+ if (!s->theora)
skip_bits(&gb, 1);
- for(i = 0; i < 3; i++)
+ for (i = 0; i < 3; i++)
s->last_qps[i] = s->qps[i];
- s->nqps = 0;
- do
- {
- s->qps[s->nqps++] = get_bits(&gb, 6);
- }
- while(s->theora >= 0x030200 && s->nqps < 3 && get_bits1(&gb));
- for(i = s->nqps; i < 3; i++)
+ s->nqps=0;
+ do{
+ s->qps[s->nqps++]= get_bits(&gb, 6);
+ } while(s->theora >= 0x030200 && s->nqps<3 && get_bits1(&gb));
+ for (i = s->nqps; i < 3; i++)
s->qps[i] = -1;
- if(s->avctx->debug & FF_DEBUG_PICT_INFO)
+ if (s->avctx->debug & FF_DEBUG_PICT_INFO)
av_log(s->avctx, AV_LOG_INFO, " VP3 %sframe #%d: Q index = %d\n",
- s->keyframe ? "key" : "", counter, s->qps[0]);
+ s->keyframe?"key":"", counter, s->qps[0]);
counter++;
- if(s->qps[0] != s->last_qps[0])
+ if (s->qps[0] != s->last_qps[0])
init_loop_filter(s);
- for(i = 0; i < s->nqps; i++)
+ for (i = 0; i < s->nqps; i++)
// reinit all dequantizers if the first one changed, because
// the DC of the first quantizer must be used for all matrices
- if(s->qps[i] != s->last_qps[i] || s->qps[0] != s->last_qps[0])
+ if (s->qps[i] != s->last_qps[i] || s->qps[0] != s->last_qps[0])
init_dequantizer(s, i);
- if(avctx->skip_frame >= AVDISCARD_NONKEY && !s->keyframe)
+ if (avctx->skip_frame >= AVDISCARD_NONKEY && !s->keyframe)
return buf_size;
- if(s->keyframe)
- {
- if(!s->theora)
+ if (s->keyframe) {
+ if (!s->theora)
{
skip_bits(&gb, 4); /* width code */
skip_bits(&gb, 4); /* height code */
- if(s->version)
+ if (s->version)
{
s->version = get_bits(&gb, 5);
- if(counter == 1)
+ if (counter == 1)
av_log(s->avctx, AV_LOG_DEBUG, "VP version: %d\n", s->version);
}
}
- if(s->version || s->theora)
+ if (s->version || s->theora)
{
- if(get_bits1(&gb))
- av_log(s->avctx, AV_LOG_ERROR, "Warning, unsupported keyframe coding type?!\n");
+ if (get_bits1(&gb))
+ av_log(s->avctx, AV_LOG_ERROR, "Warning, unsupported keyframe coding type?!\n");
skip_bits(&gb, 2); /* reserved? */
}
- if(s->last_frame.data[0] == s->golden_frame.data[0])
- {
- if(s->golden_frame.data[0])
+ if (s->last_frame.data[0] == s->golden_frame.data[0]) {
+ if (s->golden_frame.data[0])
avctx->release_buffer(avctx, &s->golden_frame);
- s->last_frame = s->golden_frame; /* ensure that we catch any access to this released frame */
- }
- else
- {
- if(s->golden_frame.data[0])
+ s->last_frame= s->golden_frame; /* ensure that we catch any access to this released frame */
+ } else {
+ if (s->golden_frame.data[0])
avctx->release_buffer(avctx, &s->golden_frame);
- if(s->last_frame.data[0])
+ if (s->last_frame.data[0])
avctx->release_buffer(avctx, &s->last_frame);
}
s->golden_frame.reference = 3;
- if(avctx->get_buffer(avctx, &s->golden_frame) < 0)
- {
+ if(avctx->get_buffer(avctx, &s->golden_frame) < 0) {
av_log(s->avctx, AV_LOG_ERROR, "vp3: get_buffer() failed\n");
return -1;
}
/* golden frame is also the current frame */
- s->current_frame = s->golden_frame;
+ s->current_frame= s->golden_frame;
/* time to figure out pixel addresses? */
- if(!s->pixel_addresses_initialized)
+ if (!s->pixel_addresses_initialized)
{
vp3_calculate_pixel_addresses(s);
s->pixel_addresses_initialized = 1;
}
- }
- else
- {
+ } else {
/* allocate a new current frame */
s->current_frame.reference = 3;
- if(!s->pixel_addresses_initialized)
- {
+ if (!s->pixel_addresses_initialized) {
av_log(s->avctx, AV_LOG_ERROR, "vp3: first frame not a keyframe\n");
return -1;
}
- if(avctx->get_buffer(avctx, &s->current_frame) < 0)
- {
+ if(avctx->get_buffer(avctx, &s->current_frame) < 0) {
av_log(s->avctx, AV_LOG_ERROR, "vp3: get_buffer() failed\n");
return -1;
}
}
- s->current_frame.qscale_table = s->qscale_table; //FIXME allocate individual tables per AVFrame
- s->current_frame.qstride = 0;
+ s->current_frame.qscale_table= s->qscale_table; //FIXME allocate individual tables per AVFrame
+ s->current_frame.qstride= 0;
init_frame(s, &gb);
- if(unpack_superblocks(s, &gb))
- {
+ if (unpack_superblocks(s, &gb)){
av_log(s->avctx, AV_LOG_ERROR, "error in unpack_superblocks\n");
return -1;
}
- if(unpack_modes(s, &gb))
- {
+ if (unpack_modes(s, &gb)){
av_log(s->avctx, AV_LOG_ERROR, "error in unpack_modes\n");
return -1;
}
- if(unpack_vectors(s, &gb))
- {
+ if (unpack_vectors(s, &gb)){
av_log(s->avctx, AV_LOG_ERROR, "error in unpack_vectors\n");
return -1;
}
- if(unpack_block_qpis(s, &gb))
- {
+ if (unpack_block_qpis(s, &gb)){
av_log(s->avctx, AV_LOG_ERROR, "error in unpack_block_qpis\n");
return -1;
}
- if(unpack_dct_coeffs(s, &gb))
- {
+ if (unpack_dct_coeffs(s, &gb)){
av_log(s->avctx, AV_LOG_ERROR, "error in unpack_dct_coeffs\n");
return -1;
}
- for(i = 0; i < s->macroblock_height; i++)
+ for (i = 0; i < s->macroblock_height; i++)
render_slice(s, i);
apply_loop_filter(s);
/* ffdshow custom code (begin) */
- if(s->theora && s->fps_numerator)
- {
- if(avctx->granulepos > -1)
- {
- s->granulepos = avctx->granulepos;
- }
- else
- {
- if(s->granulepos == -1)
- s->granulepos = 0;
- else if(s->keyframe)
- {
- long frames = s->granulepos & ((1 << s->keyframe_granule_shift) - 1);
- s->granulepos >>= s->keyframe_granule_shift;
- s->granulepos += frames + 1;
- s->granulepos <<= s->keyframe_granule_shift;
- }
+ if (s->theora && s->fps_numerator){
+ if (avctx->granulepos>-1){
+ s->granulepos=avctx->granulepos;
+ }else{
+ if (s->granulepos==-1)
+ s->granulepos=0;
else
- {
- s->granulepos++;
- }
+ if (s->keyframe){
+ long frames= s->granulepos & ((1<<s->keyframe_granule_shift)-1);
+ s->granulepos>>=s->keyframe_granule_shift;
+ s->granulepos+=frames+1;
+ s->granulepos<<=s->keyframe_granule_shift;
+ }else{
+ s->granulepos++;
+ }
}
- s->current_frame.reordered_opaque = 10000000LL * theora_granule_frame(s, s->granulepos) * s->fps_denumerator / s->fps_numerator;
- s->current_frame.pict_type = s->keyframe ? FF_I_TYPE : FF_P_TYPE;
+ s->current_frame.reordered_opaque = 10000000LL * theora_granule_frame(s,s->granulepos) * s->fps_denumerator / s->fps_numerator;
+ s->current_frame.pict_type=s->keyframe?FF_I_TYPE:FF_P_TYPE;
}
/* ffdshow custom code (end) */
- *data_size = sizeof(AVFrame);
- *(AVFrame*)data = s->current_frame;
+ *data_size=sizeof(AVFrame);
+ *(AVFrame*)data= s->current_frame;
/* release the last frame, if it is allocated and if it is not the
* golden frame */
- if((s->last_frame.data[0]) &&
- (s->last_frame.data[0] != s->golden_frame.data[0]))
+ if ((s->last_frame.data[0]) &&
+ (s->last_frame.data[0] != s->golden_frame.data[0]))
avctx->release_buffer(avctx, &s->last_frame);
/* shuffle frames (last = current) */
- s->last_frame = s->current_frame;
- s->current_frame.data[0] = NULL; /* ensure that we catch any access to this released frame */
+ s->last_frame= s->current_frame;
+ s->current_frame.data[0]= NULL; /* ensure that we catch any access to this released frame */
return buf_size;
}
@@ -2310,8 +2088,7 @@ static av_cold int vp3_decode_end(AVCodecContext *avctx)
av_free(s->macroblock_fragments);
av_free(s->macroblock_coding);
- for(i = 0; i < 16; i++)
- {
+ for (i = 0; i < 16; i++) {
free_vlc(&s->dc_vlc[i]);
free_vlc(&s->ac_vlc_1[i]);
free_vlc(&s->ac_vlc_2[i]);
@@ -2325,9 +2102,9 @@ static av_cold int vp3_decode_end(AVCodecContext *avctx)
free_vlc(&s->motion_vector_vlc);
/* release all frames */
- if(s->golden_frame.data[0] && s->golden_frame.data[0] != s->last_frame.data[0])
+ if (s->golden_frame.data[0] && s->golden_frame.data[0] != s->last_frame.data[0])
avctx->release_buffer(avctx, &s->golden_frame);
- if(s->last_frame.data[0])
+ if (s->last_frame.data[0])
avctx->release_buffer(avctx, &s->last_frame);
/* no need to release the current_frame since it will always be pointing
* to the same frame as either the golden or last frame */
@@ -2339,11 +2116,9 @@ static int read_huffman_tree(AVCodecContext *avctx, GetBitContext *gb)
{
Vp3DecodeContext *s = avctx->priv_data;
- if(get_bits1(gb))
- {
+ if (get_bits1(gb)) {
int token;
- if(s->entries >= 32) /* overflow */
- {
+ if (s->entries >= 32) { /* overflow */
av_log(avctx, AV_LOG_ERROR, "huffman tree overflow\n");
return -1;
}
@@ -2353,19 +2128,17 @@ static int read_huffman_tree(AVCodecContext *avctx, GetBitContext *gb)
s->huffman_table[s->hti][token][1] = s->huff_code_size;
s->entries++;
}
- else
- {
- if(s->huff_code_size >= 32) /* overflow */
- {
+ else {
+ if (s->huff_code_size >= 32) {/* overflow */
av_log(avctx, AV_LOG_ERROR, "huffman tree overflow\n");
return -1;
}
s->huff_code_size++;
s->hbits <<= 1;
- if(read_huffman_tree(avctx, gb))
+ if (read_huffman_tree(avctx, gb))
return -1;
s->hbits |= 1;
- if(read_huffman_tree(avctx, gb))
+ if (read_huffman_tree(avctx, gb))
return -1;
s->hbits >>= 1;
s->huff_code_size--;
@@ -2384,7 +2157,7 @@ static int theora_decode_header(AVCodecContext *avctx, GetBitContext *gb)
/* 3.2.0 aka alpha3 has the same frame orientation as original vp3 */
/* but previous versions have the image flipped relative to vp3 */
- if(s->theora < 0x030200)
+ if (s->theora < 0x030200)
{
s->flipped_image = 1;
av_log(avctx, AV_LOG_DEBUG, "Old (<alpha3) Theora bitstream, flipped image\n");
@@ -2393,14 +2166,13 @@ static int theora_decode_header(AVCodecContext *avctx, GetBitContext *gb)
visible_width = s->width = get_bits(gb, 16) << 4;
visible_height = s->height = get_bits(gb, 16) << 4;
- if(avcodec_check_dimensions(avctx, s->width, s->height))
- {
+ if(avcodec_check_dimensions(avctx, s->width, s->height)){
av_log(avctx, AV_LOG_ERROR, "Invalid dimensions (%dx%d)\n", s->width, s->height);
- s->width = s->height = 0;
+ s->width= s->height= 0;
return -1;
}
- if(s->theora >= 0x030400)
+ if (s->theora >= 0x030400)
{
skip_bits(gb, 32); /* total number of superblocks in a frame */
// fixme, the next field is 36bits long
@@ -2409,8 +2181,7 @@ static int theora_decode_header(AVCodecContext *avctx, GetBitContext *gb)
skip_bits(gb, 32); /* total number of macroblocks in a frame */
}
- if(s->theora >= 0x030200)
- {
+ if (s->theora >= 0x030200) {
visible_width = get_bits_long(gb, 24);
visible_height = get_bits_long(gb, 24);
@@ -2419,34 +2190,34 @@ static int theora_decode_header(AVCodecContext *avctx, GetBitContext *gb)
}
/* ffdshow custom code (begin) */
- s->fps_numerator = get_bits(gb, 32); /* fps numerator */
- s->fps_denumerator = get_bits(gb, 32); /* fps denumerator */
+ s->fps_numerator=get_bits(gb, 32); /* fps numerator */
+ s->fps_denumerator=get_bits(gb, 32); /* fps denumerator */
avctx->sample_aspect_ratio.num = get_bits(gb, 24); /* aspect numerator */
avctx->sample_aspect_ratio.den = get_bits(gb, 24); /* aspect denumerator */
/* ffdshow custom code (end) */
- if(s->theora < 0x030200)
- s->keyframe_frequency_force = 1 << get_bits(gb, 5); /* keyframe frequency force */ /* ffdshow custom code */
+ if (s->theora < 0x030200)
+ s->keyframe_frequency_force=1<<get_bits(gb, 5); /* keyframe frequency force */ /* ffdshow custom code */
skip_bits(gb, 8); /* colorspace */
- if(s->theora >= 0x030400)
+ if (s->theora >= 0x030400)
skip_bits(gb, 2); /* pixel format: 420,res,422,444 */
skip_bits(gb, 24); /* bitrate */
skip_bits(gb, 6); /* quality hint */
- if(s->theora >= 0x030200)
+ if (s->theora >= 0x030200)
{
- s->keyframe_frequency_force = 1 << get_bits(gb, 5); /* keyframe frequency force */ /* ffdshow custom code */
+ s->keyframe_frequency_force=1<<get_bits(gb, 5); /* keyframe frequency force */ /* ffdshow custom code */
- if(s->theora < 0x030400)
+ if (s->theora < 0x030400)
skip_bits(gb, 5); /* spare bits */
}
- s->keyframe_granule_shift = _ilog(s->keyframe_frequency_force - 1); // ffdshow custom code
+ s->keyframe_granule_shift=_ilog(s->keyframe_frequency_force-1); // ffdshow custom code
// align_get_bits(gb);
- if(visible_width <= s->width && visible_width > s->width - 16
- && visible_height <= s->height && visible_height > s->height - 16)
+ if ( visible_width <= s->width && visible_width > s->width-16
+ && visible_height <= s->height && visible_height > s->height-16)
avcodec_set_dimensions(avctx, visible_width, visible_height);
else
avcodec_set_dimensions(avctx, s->width, s->height);
@@ -2459,116 +2230,98 @@ static int theora_decode_tables(AVCodecContext *avctx, GetBitContext *gb)
Vp3DecodeContext *s = avctx->priv_data;
int i, n, matrices, inter, plane;
- if(s->theora >= 0x030200)
- {
+ if (s->theora >= 0x030200) {
n = get_bits(gb, 3);
/* loop filter limit values table */
- for(i = 0; i < 64; i++)
- {
+ for (i = 0; i < 64; i++) {
s->filter_limit_values[i] = get_bits(gb, n);
- if(s->filter_limit_values[i] > 127)
- {
+ if (s->filter_limit_values[i] > 127) {
av_log(avctx, AV_LOG_ERROR, "filter limit value too large (%i > 127), clamping\n", s->filter_limit_values[i]);
s->filter_limit_values[i] = 127;
}
}
}
- if(s->theora >= 0x030200)
+ if (s->theora >= 0x030200)
n = get_bits(gb, 4) + 1;
else
n = 16;
/* quality threshold table */
- for(i = 0; i < 64; i++)
+ for (i = 0; i < 64; i++)
s->coded_ac_scale_factor[i] = get_bits(gb, n);
- if(s->theora >= 0x030200)
+ if (s->theora >= 0x030200)
n = get_bits(gb, 4) + 1;
else
n = 16;
/* dc scale factor table */
- for(i = 0; i < 64; i++)
+ for (i = 0; i < 64; i++)
s->coded_dc_scale_factor[i] = get_bits(gb, n);
- if(s->theora >= 0x030200)
+ if (s->theora >= 0x030200)
matrices = get_bits(gb, 9) + 1;
else
matrices = 3;
- if(matrices > 384)
- {
+ if(matrices > 384){
av_log(avctx, AV_LOG_ERROR, "invalid number of base matrixes\n");
return -1;
}
- for(n = 0; n < matrices; n++)
- {
- for(i = 0; i < 64; i++)
- s->base_matrix[n][i] = get_bits(gb, 8);
+ for(n=0; n<matrices; n++){
+ for (i = 0; i < 64; i++)
+ s->base_matrix[n][i]= get_bits(gb, 8);
}
- for(inter = 0; inter <= 1; inter++)
- {
- for(plane = 0; plane <= 2; plane++)
- {
- int newqr = 1;
- if(inter || plane > 0)
+ for (inter = 0; inter <= 1; inter++) {
+ for (plane = 0; plane <= 2; plane++) {
+ int newqr= 1;
+ if (inter || plane > 0)
newqr = get_bits1(gb);
- if(!newqr)
- {
+ if (!newqr) {
int qtj, plj;
- if(inter && get_bits1(gb))
- {
+ if(inter && get_bits1(gb)){
qtj = 0;
plj = plane;
+ }else{
+ qtj= (3*inter + plane - 1) / 3;
+ plj= (plane + 2) % 3;
}
- else
- {
- qtj = (3 * inter + plane - 1) / 3;
- plj = (plane + 2) % 3;
- }
- s->qr_count[inter][plane] = s->qr_count[qtj][plj];
+ s->qr_count[inter][plane]= s->qr_count[qtj][plj];
memcpy(s->qr_size[inter][plane], s->qr_size[qtj][plj], sizeof(s->qr_size[0][0]));
memcpy(s->qr_base[inter][plane], s->qr_base[qtj][plj], sizeof(s->qr_base[0][0]));
- }
- else
- {
- int qri = 0;
+ } else {
+ int qri= 0;
int qi = 0;
- for(;;)
- {
- i = get_bits(gb, av_log2(matrices - 1) + 1);
- if(i >= matrices)
- {
+ for(;;){
+ i= get_bits(gb, av_log2(matrices-1)+1);
+ if(i>= matrices){
av_log(avctx, AV_LOG_ERROR, "invalid base matrix index\n");
return -1;
}
- s->qr_base[inter][plane][qri] = i;
+ s->qr_base[inter][plane][qri]= i;
if(qi >= 63)
break;
- i = get_bits(gb, av_log2(63 - qi) + 1) + 1;
- s->qr_size[inter][plane][qri++] = i;
+ i = get_bits(gb, av_log2(63-qi)+1) + 1;
+ s->qr_size[inter][plane][qri++]= i;
qi += i;
}
- if(qi > 63)
- {
+ if (qi > 63) {
av_log(avctx, AV_LOG_ERROR, "invalid qi %d > 63\n", qi);
return -1;
}
- s->qr_count[inter][plane] = qri;
+ s->qr_count[inter][plane]= qri;
}
}
}
/* Huffman tables */
- for(s->hti = 0; s->hti < 80; s->hti++)
- {
+ for (s->hti = 0; s->hti < 80; s->hti++) {
s->entries = 0;
s->huff_code_size = 1;
- if(!get_bits1(gb))
- {
+ if (!get_bits1(gb)) {
s->hbits = 0;
if(read_huffman_tree(avctx, gb))
return -1;
@@ -2594,63 +2347,60 @@ static av_cold int theora_decode_init(AVCodecContext *avctx)
s->theora = 1;
- if(!avctx->extradata_size)
+ if (!avctx->extradata_size)
{
av_log(avctx, AV_LOG_ERROR, "Missing extradata!\n");
return -1;
}
- if(ff_split_xiph_headers(avctx->extradata, avctx->extradata_size,
- 42, header_start, header_len) < 0)
- {
+ if (ff_split_xiph_headers(avctx->extradata, avctx->extradata_size,
+ 42, header_start, header_len) < 0) {
av_log(avctx, AV_LOG_ERROR, "Corrupt extradata\n");
return -1;
}
- for(i = 0; i < 3; i++)
- {
- init_get_bits(&gb, header_start[i], header_len[i] * 8);
+ for(i=0;i<3;i++) {
+ init_get_bits(&gb, header_start[i], header_len[i] * 8);
- ptype = get_bits(&gb, 8);
+ ptype = get_bits(&gb, 8);
- if(!(ptype & 0x80))
- {
- av_log(avctx, AV_LOG_ERROR, "Invalid extradata!\n");
+ if (!(ptype & 0x80))
+ {
+ av_log(avctx, AV_LOG_ERROR, "Invalid extradata!\n");
// return -1;
- }
+ }
- // FIXME: Check for this as well.
- skip_bits_long(&gb, 6 * 8); /* "theora" */
+ // FIXME: Check for this as well.
+ skip_bits_long(&gb, 6*8); /* "theora" */
- switch(ptype)
- {
+ switch(ptype)
+ {
case 0x80:
theora_decode_header(avctx, &gb);
- break;
+ break;
case 0x81:
// FIXME: is this needed? it breaks sometimes
// theora_decode_comments(avctx, gb);
break;
case 0x82:
- if(theora_decode_tables(avctx, &gb))
+ if (theora_decode_tables(avctx, &gb))
return -1;
break;
default:
av_log(avctx, AV_LOG_ERROR, "Unknown Theora config packet: %d\n", ptype&~0x80);
break;
- }
- if(ptype != 0x81 && 8 * header_len[i] != get_bits_count(&gb))
- av_log(avctx, AV_LOG_WARNING, "%d bits left in packet %X\n", 8 * header_len[i] - get_bits_count(&gb), ptype);
- if(s->theora < 0x030200)
- break;
}
+ if(ptype != 0x81 && 8*header_len[i] != get_bits_count(&gb))
+ av_log(avctx, AV_LOG_WARNING, "%d bits left in packet %X\n", 8*header_len[i] - get_bits_count(&gb), ptype);
+ if (s->theora < 0x030200)
+ break;
+ }
- s->granulepos = -1; /* ffdshow custom code */
+ s->granulepos=-1; /* ffdshow custom code */
return vp3_decode_init(avctx);
}
-AVCodec theora_decoder =
-{
+AVCodec theora_decoder = {
"theora",
CODEC_TYPE_VIDEO,
CODEC_ID_THEORA,
@@ -2668,8 +2418,7 @@ AVCodec theora_decoder =
};
#endif
-AVCodec vp3_decoder =
-{
+AVCodec vp3_decoder = {
"vp3",
CODEC_TYPE_VIDEO,
CODEC_ID_VP3,