-
-
Notifications
You must be signed in to change notification settings - Fork 6.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
VideoPlayer: fix and cleanup deinterlacing methods #10339
Conversation
There is some thing, that might confuse users: Whenever you play progressive only content, you only see Yadif and Yadif half, as those are the fallback methods we have when hw decoder does not overwrite. Is that intended? |
@@ -150,21 +150,19 @@ enum AVPixelFormat CDVDVideoCodecFFmpeg::GetFormat( struct AVCodecContext * avct | |||
const char* pixFmtName = av_get_pix_fmt_name(*fmt); | |||
|
|||
// if frame threading is enabled hw accel is not allowed | |||
if(ctx->m_decoderState != STATE_HW_SINGLE) | |||
// 2nd condition: |
This comment was marked as spam.
This comment was marked as spam.
Sorry, something went wrong.
This comment was marked as spam.
This comment was marked as spam.
Sorry, something went wrong.
@FernetMenta i am unsure what needs to be overiddn ... Only the new method in processinfo ? (You already took care of the vtb hw decoder as i see)... |
@Memphiz yes, this method |
@@ -39,7 +39,6 @@ class CRendererVTB : public CLinuxRendererGLES | |||
|
|||
// Feature support | |||
virtual bool Supports(EINTERLACEMETHOD method) override; | |||
virtual EINTERLACEMETHOD AutoInterlaceMethod() override; |
This comment was marked as spam.
This comment was marked as spam.
Sorry, something went wrong.
This comment was marked as spam.
This comment was marked as spam.
Sorry, something went wrong.
This comment was marked as spam.
This comment was marked as spam.
Sorry, something went wrong.
jenkins build this please |
jenkins build this please |
jenkins build this please |
I added a method to query the default de-interlacing method. That is used by the settings dialog in order to display something useful if current method is not supported. Codecs are supposed to set their desired default method. @afedchin is there anything to be done for Windows? |
I will check Windows tomorrow. Then we can get this in. @afedchin is back after Sept. 10th and can verify. objections? |
jenkins build this please |
No VAAPI hardware acceleration after this change, and all VAAPI deinterlace modes are missing (and those deinterlace modes that are present, don't work - everything is This had been working until a couple of days ago, before the cherry pick from FernetMenta#404. Maybe this is important...
Debug log playing 720p: http://sprunge.us/CQNY http://forum.kodi.tv/showthread.php?tid=269815&pid=2408161#pid2408161 Edit: VDPAU is working as expected (both HW acceleration and deinterlace). |
@FernetMenta windows changes looks good, but. I didn't understand how it will work with sw decoding and dxva rendering. On some hw dxva deinterlacing are better than ffmpeg. |
for that purpose you can override processInfo and provide different or additional methods. |
@FernetMenta I still don't see how to solve this.
In my mind I see that in case SW decoding and DXVAHD renderer user should be able to select the following deinterlacing methods: None, Auto - which actually is DXVA (as before), DXVA and YADIFF. But I do not see how to access to processInfo from WinRenderer which knows actual rendering method. |
I will think about it |
I wanted to do this for v18 but it is broken now and it makes no sense to implement another work-around for the old design flaw. Defining de-interlacing methods does not belong to renderer. It is defined by video decoder and platform. This change simplifies this:
@Memphiz could you add platform overrides for osx/ios? OSX can add render bob and bland, ios, render_bob
@afedchin could you please do the required changes for Windows
@fritsch vaapi, vdpau
@popcornmix mmal
@mk01 imx
Android is same as iOS or other platform that use GLES renderer.