Module: libav
Branch: release/11
Commit: 4ed3c340ae71ff40dc828fc2c35a00379efdb3be

Author:    Andreas Cadhalpun <[email protected]>
Committer: Anton Khirnov <[email protected]>
Date:      Sun Jun 14 12:40:18 2015 +0200

h264: er: Copy from the previous reference only if compatible

Also use the frame pixel format instead of the one from the codec
context, which is more robust.

Signed-off-by: Andreas Cadhalpun <[email protected]>
Signed-off-by: Luca Barbato <[email protected]>
(cherry picked from commit a4fbd55d6e03eabdbecc3b7892ec09eb8062d066)
Signed-off-by: Anton Khirnov <[email protected]>

Conflicts:
        libavcodec/h264_slice.c

---

 libavcodec/h264_slice.c |    7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c
index 8d4b342..23b2d4f 100644
--- a/libavcodec/h264_slice.c
+++ b/libavcodec/h264_slice.c
@@ -1510,12 +1510,15 @@ int ff_h264_decode_slice_header(H264Context *h, 
H264Context *h0)
              * vectors.  Given we are concealing a lost frame, this probably
              * is not noticeable by comparison, but it should be fixed. */
             if (h->short_ref_count) {
-                if (prev) {
+                if (prev &&
+                    h->short_ref[0]->f.width  == prev->f.width &&
+                    h->short_ref[0]->f.height == prev->f.height &&
+                    h->short_ref[0]->f.format == prev->f.format) {
                     av_image_copy(h->short_ref[0]->f.data,
                                   h->short_ref[0]->f.linesize,
                                   (const uint8_t **)prev->f.data,
                                   prev->f.linesize,
-                                  h->avctx->pix_fmt,
+                                  prev->f.format,
                                   h->mb_width  * 16,
                                   h->mb_height * 16);
                     h->short_ref[0]->poc = prev->poc + 2;

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

Reply via email to