mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-23 10:11:08 +00:00
avviddec: reset coded_width/_height before trying to open codec
If coded_width/_height is supplied, the codec might use it as the width/height and if it is wrong can lead to segfaults or video corruption. This is specially harmful on renegotiation scenarios where the resolution changed. There seems to be no specific function for reseting the AV Context in libav, so just set it directly. https://bugzilla.gnome.org/show_bug.cgi?id=702003
This commit is contained in:
parent
427deb9b34
commit
dce9d85695
1 changed files with 6 additions and 0 deletions
|
@ -395,6 +395,12 @@ gst_ffmpegviddec_set_format (GstVideoDecoder * decoder,
|
||||||
ffmpegdec->context->release_buffer = gst_ffmpegviddec_release_buffer;
|
ffmpegdec->context->release_buffer = gst_ffmpegviddec_release_buffer;
|
||||||
ffmpegdec->context->draw_horiz_band = NULL;
|
ffmpegdec->context->draw_horiz_band = NULL;
|
||||||
|
|
||||||
|
/* reset coded_width/_height to prevent it being reused from last time when
|
||||||
|
* the codec is opened again, causing a mismatch and possible
|
||||||
|
* segfault/corruption. (Common scenario when renegotiating caps) */
|
||||||
|
ffmpegdec->context->coded_width = 0;
|
||||||
|
ffmpegdec->context->coded_height = 0;
|
||||||
|
|
||||||
GST_LOG_OBJECT (ffmpegdec, "size %dx%d", ffmpegdec->context->width,
|
GST_LOG_OBJECT (ffmpegdec, "size %dx%d", ffmpegdec->context->width,
|
||||||
ffmpegdec->context->height);
|
ffmpegdec->context->height);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue