Replies: 1 comment 6 replies
-
|
Beta Was this translation helpful? Give feedback.
6 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Currently, the MPV core does not allow for VO fallback, right? From what I see in the current reinit_video_chain_src code, it always prioritizes creating a VO, which almost certainly succeeds most of the time. Then it constructs the vo filter chain, followed by creating the decoder. When creating the decoder, it currently allows falling back from hardware decoder to software decoder. So, if you specifies a VO that is strongly related to a hardware decoder, then when the decoder falls back, the whole chain cannot work properly, For example, on the Android platform, if you want to use :
--vo=mediacodec_embed,
--hwdec=mediacodec,
--gpu-context=android,
--hwdec=mediacodec,
and if the hardware decoding fails, the mpv core will fall back to software decoding, but the entire chain still won't work because mediacodec_embed doesn't support software decoding formats (like yuv420p). Even worse, if you don't specify a VO, the default choice during autoprobe will also be video_out_mediacodec_embed because it's always at the top in video_out_drivers. So the current situation is, you must specify a versatile vo (either vo=gpu or vo=gpu-next) that supports both software and hardware decoding; otherwise, fallback will fail due to the VO not supporting certain formats.
If VO could also support fallback, like specifying vo=mediacodec_embed, gpu, then when the decoder falls back, it would automatically switch to vo=gpu, ensuring the whole chain works properly.
Beta Was this translation helpful? Give feedback.
All reactions