summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVittorio Giovara <vittorio.giovara@gmail.com>2016-02-19 20:51:44 -0500
committerVittorio Giovara <vittorio.giovara@gmail.com>2016-03-22 16:51:09 -0400
commit0c6a70873fc6e43194b471d112c30823b6c8d0b4 (patch)
tree1279e3dc70f0c45f1afe87d3a984d1838b1ed8f4
parent709c0f79d8032fcf733bfe58e79ca7ff0858c8bc (diff)
intrax8: Move error resilience out of intrax8
The intrax8 decoding process does not imply any kind of error resilience, and the only call present is more related to how mpegvideo works rather than anything else. Therefore have the parent decoders carry out er when actually needed.
-rwxr-xr-xconfigure3
-rw-r--r--libavcodec/intrax8.c10
-rw-r--r--libavcodec/vc1_block.c4
-rw-r--r--libavcodec/wmv2dec.c4
4 files changed, 11 insertions, 10 deletions
diff --git a/configure b/configure
index ba1fd47d24..578a48d66d 100755
--- a/configure
+++ b/configure
@@ -1860,7 +1860,6 @@ error_resilience_select="me_cmp"
faandct_deps="faan fdctdsp"
faanidct_deps="faan idctdsp"
h264dsp_select="startcode"
-intrax8_select="error_resilience"
mdct_select="fft"
rdft_select="fft"
me_cmp_select="fdctdsp idctdsp pixblockdsp"
@@ -2083,7 +2082,7 @@ wmav2_encoder_select="mdct sinewin wma_freqs"
wmavoice_decoder_select="lsp rdft dct mdct sinewin"
wmv1_decoder_select="h263_decoder"
wmv1_encoder_select="h263_encoder"
-wmv2_decoder_select="blockdsp h263_decoder idctdsp intrax8 videodsp wmv2dsp"
+wmv2_decoder_select="blockdsp error_resilience h263_decoder idctdsp intrax8 videodsp wmv2dsp"
wmv2_encoder_select="h263_encoder wmv2dsp"
wmv3_decoder_select="vc1_decoder"
wmv3image_decoder_select="wmv3_decoder"
diff --git a/libavcodec/intrax8.c b/libavcodec/intrax8.c
index 3cd84dc170..45fff96888 100644
--- a/libavcodec/intrax8.c
+++ b/libavcodec/intrax8.c
@@ -22,7 +22,6 @@
*/
#include "avcodec.h"
-#include "error_resilience.h"
#include "get_bits.h"
#include "idctdsp.h"
#include "mpegvideo.h"
@@ -718,8 +717,8 @@ av_cold void ff_intrax8_common_end(IntraX8Context * w)
/**
* Decode single IntraX8 frame.
* The parent codec must fill s->loopfilter and s->gb (bitstream).
- * The parent codec must call ff_mpv_frame_start(), ff_er_frame_start() before calling this function.
- * The parent codec must call ff_er_frame_end(), ff_mpv_frame_end() after calling this function.
+ * The parent codec must call ff_mpv_frame_start() before calling this function.
+ * The parent codec must call ff_mpv_frame_end() after calling this function.
* This function does not use ff_mpv_decode_mb().
* @param w pointer to IntraX8Context
* @param dquant doubled quantizer, it would be odd in case of VC-1 halfpq==1.
@@ -745,8 +744,6 @@ int ff_intrax8_decode_picture(IntraX8Context * const w, int dquant, int quant_of
}
x8_reset_vlc_tables(w);
- s->resync_mb_x=0;
- s->resync_mb_y=0;
for(s->mb_y=0; s->mb_y < s->mb_height*2; s->mb_y++){
x8_init_block_index(s);
@@ -785,8 +782,5 @@ int ff_intrax8_decode_picture(IntraX8Context * const w, int dquant, int quant_of
}
error:
- ff_er_add_slice(&s->er, s->resync_mb_x, s->resync_mb_y,
- (s->mb_x>>1)-1, (s->mb_y>>1)-1,
- ER_MB_END );
return 0;
}
diff --git a/libavcodec/vc1_block.c b/libavcodec/vc1_block.c
index 4588af4100..8b46260ef2 100644
--- a/libavcodec/vc1_block.c
+++ b/libavcodec/vc1_block.c
@@ -3023,6 +3023,10 @@ void ff_vc1_decode_blocks(VC1Context *v)
v->s.esc3_level_length = 0;
if (v->x8_type) {
ff_intrax8_decode_picture(&v->x8, 2*v->pq + v->halfpq, v->pq * !v->pquantizer);
+
+ ff_er_add_slice(&v->s.er, 0, 0,
+ (v->s.mb_x >> 1) - 1, (v->s.mb_y >> 1) - 1,
+ ER_MB_END);
} else {
v->cur_blk_idx = 0;
v->left_blk_idx = -1;
diff --git a/libavcodec/wmv2dec.c b/libavcodec/wmv2dec.c
index c71fd3dfea..ca8afe6f09 100644
--- a/libavcodec/wmv2dec.c
+++ b/libavcodec/wmv2dec.c
@@ -229,6 +229,10 @@ int ff_wmv2_decode_secondary_picture_header(MpegEncContext *s)
if (w->j_type) {
ff_intrax8_decode_picture(&w->x8, 2 * s->qscale, (s->qscale - 1) | 1);
+
+ ff_er_add_slice(&w->s.er, 0, 0,
+ (w->s.mb_x >> 1) - 1, (w->s.mb_y >> 1) - 1,
+ ER_MB_END);
return 1;
}