If extradata is improperly parsed, avcodec_open may fail. Keep trying
avcodec_open as long as there is more data to parse.
Fixes https://github.com/HandBrake/HandBrake/issues/542
(cherry picked from commit
ca1dcccd09b5dfac93829d46fd6c7c9711898b77)
{
av_dict_free( &av_opts );
hb_log( "decavcodecvWork: avcodec_open failed" );
- *buf_out = hb_buffer_eof_init();
- return HB_WORK_DONE;
+ // avcodec_open can fail due to incorrectly parsed extradata
+ // so try again when this fails
+ av_freep( &pv->context->extradata );
+ pv->context->extradata_size = 0;
+ hb_buffer_close( &in );
+ return HB_WORK_OK;
}
av_dict_free( &av_opts );
pv->video_codec_opened = 1;