vlc | branch: master | Thomas Guillem <[email protected]> | Fri Jun 2 10:27:37 2017 +0200| [6c61c7e1718afe9588336b659558f41f0eec7c6e] | committer: Thomas Guillem
videotoolbox: check if the decoder supports deinterlacing > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=6c61c7e1718afe9588336b659558f41f0eec7c6e --- modules/codec/videotoolbox.m | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/modules/codec/videotoolbox.m b/modules/codec/videotoolbox.m index 09fae32bf2..e4b9499e5f 100644 --- a/modules/codec/videotoolbox.m +++ b/modules/codec/videotoolbox.m @@ -143,6 +143,7 @@ struct decoder_sys_t bool b_invalid_pic_reorder_max; bool b_poc_based_reorder; bool b_enable_temporal_processing; + bool b_handle_deint; bool b_format_propagated; bool b_abort; @@ -723,6 +724,23 @@ static int StartVideoToolbox(decoder_t *p_dec) if (HandleVTStatus(p_dec, status) != VLC_SUCCESS) return VLC_EGENERIC; + /* Check if the current session supports deinterlacing and temporal + * processing */ + CFDictionaryRef supportedProps = NULL; + status = VTSessionCopySupportedPropertyDictionary(p_sys->session, + &supportedProps); + p_sys->b_handle_deint = status == noErr && + CFDictionaryContainsKey(supportedProps, + kVTDecompressionPropertyKey_FieldMode); + p_sys->b_enable_temporal_processing = status == noErr && + CFDictionaryContainsKey(supportedProps, + kVTDecompressionProperty_DeinterlaceMode_Temporal); + if (!p_sys->b_handle_deint) + msg_Warn(p_dec, "VT decoder doesn't handle deinterlacing"); + + if (status == noErr) + CFRelease(supportedProps); + return VLC_SUCCESS; } @@ -1563,7 +1581,7 @@ static void DecoderCallback(void *decompressionOutputRefCon, p_info->p_picture = p_pic; p_pic->date = pts.value; - p_pic->b_progressive = p_info->b_progressive; + p_pic->b_progressive = p_sys->b_handle_deint || p_info->b_progressive; if(!p_pic->b_progressive) { p_pic->i_nb_fields = p_info->i_num_ts; _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
