]> git.sesse.net Git - ffmpeg/commit
pthread_frame: don't return stale error codes after flush
authorwm4 <nfxjfg@googlemail.com>
Thu, 6 Apr 2017 15:35:32 +0000 (17:35 +0200)
committerwm4 <nfxjfg@googlemail.com>
Thu, 6 Apr 2017 15:46:53 +0000 (17:46 +0200)
commit15a23a83326d70e470a6b5c8d71e55257bffd97b
treec40eaad5315b3dfda18b55dd5c74ac3cb72ecba8
parente5c11ab9cef60a6c9141d7a60145ea833dd88485
pthread_frame: don't return stale error codes after flush

Consider the following sequence of events:

- open a codec without AV_CODEC_CAP_DELAY
- decode call fails with an error
- ff_thread_flush() is called
- drain packet is sent

Then the last step would make ff_thread_decode_frame() return an error,
because p->result can still be set to an error value. This is because
submit_packet returns immediately if AV_CODEC_CAP_DELAY is not set, and
no worker thread gets the chance to reset p->result, yet its value is
trusted by ff_thread_decode_frame().

Fix this by clearing the error fields on flush.
libavcodec/pthread_frame.c