[FFmpeg-cvslog] h264: er: Copy from the previous reference only if compatible
Andreas Cadhalpun
git at videolan.org
Tue Jul 28 03:21:30 CEST 2015
ffmpeg | branch: release/2.5 | Andreas Cadhalpun <andreas.cadhalpun at googlemail.com> | Sun Jun 14 12:40:18 2015 +0200| [58a0dc1bdf67d11fbb2a46a1726ba9abc2550a9f] | committer: Michael Niedermayer
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: Luca Barbato <lu_zero at gentoo.org>
Reviewed-by: Michael Niedermayer <michaelni at gmx.at>
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun at googlemail.com>
(cherry picked from commit fdc64a104410f5fcc7f35b62287b0ae502b7061a)
Conflicts:
libavcodec/h264_slice.c
Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=58a0dc1bdf67d11fbb2a46a1726ba9abc2550a9f
---
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 d439f9b..13b7482 100644
--- a/libavcodec/h264_slice.c
+++ b/libavcodec/h264_slice.c
@@ -1687,12 +1687,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;
More information about the ffmpeg-cvslog
mailing list