git.videolan.org
/
ffmpeg.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
h264: er: Copy from the previous reference only if compatible
[ffmpeg.git]
/
libavcodec
/
h264_slice.c
diff --git
a/libavcodec/h264_slice.c
b/libavcodec/h264_slice.c
index
4561285
..
4e8ee4f
100644
(file)
--- a/
libavcodec/h264_slice.c
+++ b/
libavcodec/h264_slice.c
@@
-1357,12
+1357,15
@@
int ff_h264_decode_slice_header(H264Context *h, H264SliceContext *sl)
* 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) {
* 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,
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_fm
t,
+
prev->f->forma
t,
h->mb_width * 16,
h->mb_height * 16);
h->short_ref[0]->poc = prev->poc + 2;
h->mb_width * 16,
h->mb_height * 16);
h->short_ref[0]->poc = prev->poc + 2;