win-dshow: Fix format switching issue

If the format was one encoded format and changes to another encoded
format, it could cause it to continue to treat it as the old format.
This commit is contained in:
wanhongqing
2019-08-06 13:31:06 +08:00
committed by jp9000
parent 14d8f86745
commit 9b4d9c6788

View File

@@ -468,6 +468,12 @@ static inline enum speaker_layout convert_speaker_layout(uint8_t channels)
void DShowInput::OnEncodedVideoData(enum AVCodecID id, unsigned char *data,
size_t size, long long ts)
{
/* If format changes, free and allow it to recreate the decoder */
if (ffmpeg_decode_valid(video_decoder) &&
video_decoder->codec->id != id) {
ffmpeg_decode_free(video_decoder);
}
if (!ffmpeg_decode_valid(video_decoder)) {
/* Only use MJPEG hardware decoding on resolutions higher
* than 1920x1080. The reason why is because we want to strike