diff options
author | Michael Niedermayer <michael@niedermayer.cc> | 2016-10-21 14:33:42 +0200 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2016-10-22 13:45:59 +0200 |
commit | 70dc6bbf1bf0c78d6d5f8a0a195b57b6d66a56c0 (patch) | |
tree | 47a85c7a0fb2196a49e00693ebaf3d8947b44ba2 | |
parent | 6969bed12c6fc53509aa694aab32d01838318f30 (diff) | |
download | ffmpeg-70dc6bbf1bf0c78d6d5f8a0a195b57b6d66a56c0.tar.gz |
avcodec/svq1enc: Clear MMX state after svq1_encode_plane()
svq1_encode_plane() uses SIMD and we call libc memory allocation functions after it
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
-rw-r--r-- | libavcodec/svq1enc.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/libavcodec/svq1enc.c b/libavcodec/svq1enc.c index cb7c4a14a4..d78ede72cd 100644 --- a/libavcodec/svq1enc.c +++ b/libavcodec/svq1enc.c @@ -641,15 +641,17 @@ FF_ENABLE_DEPRECATION_WARNINGS ff_side_data_set_encoder_stats(pkt, pict->quality, NULL, 0, s->pict_type); svq1_write_header(s, s->pict_type); - for (i = 0; i < 3; i++) - if (svq1_encode_plane(s, i, + for (i = 0; i < 3; i++) { + int ret = svq1_encode_plane(s, i, pict->data[i], s->last_picture->data[i], s->current_picture->data[i], s->frame_width / (i ? 4 : 1), s->frame_height / (i ? 4 : 1), pict->linesize[i], - s->current_picture->linesize[i]) < 0) { + s->current_picture->linesize[i]); + emms_c(); + if (ret < 0) { int j; for (j = 0; j < i; j++) { av_freep(&s->motion_val8[j]); @@ -658,6 +660,7 @@ FF_ENABLE_DEPRECATION_WARNINGS av_freep(&s->scratchbuf); return -1; } + } // avpriv_align_put_bits(&s->pb); while (put_bits_count(&s->pb) & 31) |