Module: libav
Branch: release/0.7
Commit: 20153fb8f6ce7f482298170d2700befe898fa1cd

Author:    Ronald Bultje <[email protected]>
Committer: Reinhard Tartler <[email protected]>
Date:      Mon Jun 20 15:07:56 2011 +0000

error_resilience: skip last-MV predictor step if MVs are not available.

Fixes crashes when playing broken MPEG2-TS streams.

---

 libavcodec/error_resilience.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/libavcodec/error_resilience.c b/libavcodec/error_resilience.c
index ad7a7c6..8906b49 100644
--- a/libavcodec/error_resilience.c
+++ b/libavcodec/error_resilience.c
@@ -534,6 +534,9 @@ skip_mean_and_median:
                             ff_thread_await_progress((AVFrame *) 
s->last_picture_ptr,
                                                      mb_y, 0);
                         }
+                        if (!s->last_picture.motion_val[0] ||
+                            !s->last_picture.ref_index[0])
+                            goto skip_last_mv;
                         prev_x = s->last_picture.motion_val[0][mot_index][0];
                         prev_y = s->last_picture.motion_val[0][mot_index][1];
                         prev_ref = s->last_picture.ref_index[0][4*mb_xy];
@@ -548,6 +551,7 @@ skip_mean_and_median:
                     mv_predictor[pred_count][1]= prev_y;
                     ref         [pred_count]   = prev_ref;
                     pred_count++;
+                skip_last_mv:
 
                     s->mv_dir = MV_DIR_FORWARD;
                     s->mb_intra=0;

_______________________________________________
libav-commits mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-commits

Reply via email to