|
@@ -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
|