| 
																	
																	
																		
																	
																	
																 | 
																@@ -196,12 +196,59 @@ static int dxva_check_codec_compatibility(AVCodecContext *avctx, const dxva_mode | 
															
														
														
													
														
															
																 | 
																 | 
																    return 1; | 
																 | 
																 | 
																    return 1; | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																static void dxva_list_guids_debug(AVCodecContext *avctx, void *service, | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                                 unsigned guid_count, const GUID *guid_list) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																{ | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    FFDXVASharedContext *sctx = DXVA_SHARED_CONTEXT(avctx); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    int i; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    av_log(avctx, AV_LOG_VERBOSE, "Decoder GUIDs reported as supported:\n"); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    for (i = 0; i < guid_count; i++) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        const GUID *guid = &guid_list[i]; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        av_log(avctx, AV_LOG_VERBOSE, | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																             "{%8.8x-%4.4x-%4.4x-%2.2x%2.2x-%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x}", | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																             (unsigned) guid->Data1, guid->Data2, guid->Data3, | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																             guid->Data4[0], guid->Data4[1], | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																             guid->Data4[2], guid->Data4[3], | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																             guid->Data4[4], guid->Data4[5], | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																             guid->Data4[6], guid->Data4[7]); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																#if CONFIG_D3D11VA | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        if (sctx->pix_fmt == AV_PIX_FMT_D3D11) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            DXGI_FORMAT format; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            // We don't know the maximum valid DXGI_FORMAT, so use 200 as | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            // arbitrary upper bound (that could become outdated). | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            for (format = 0; format < 200; format++) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                if (d3d11va_validate_output(service, *guid, &format)) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                    av_log(avctx, AV_LOG_VERBOSE, " %d", (int)format); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            } | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        } | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																#endif | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																#if CONFIG_DXVA2 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        if (sctx->pix_fmt == AV_PIX_FMT_DXVA2_VLD) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            const D3DFORMAT formats[] = {MKTAG('N', 'V', '1', '2'), | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                                         MKTAG('P', '0', '1', '0')}; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            int i; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            for (i = 0; i < FF_ARRAY_ELEMS(formats); i++) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                if (dxva2_validate_output(service, *guid, &formats[i])) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                    av_log(avctx, AV_LOG_VERBOSE, " %d", i); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            } | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        } | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																#endif | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        av_log(avctx, AV_LOG_VERBOSE, "\n"); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    } | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																static int dxva_get_decoder_guid(AVCodecContext *avctx, void *service, void *surface_format, | 
																 | 
																 | 
																static int dxva_get_decoder_guid(AVCodecContext *avctx, void *service, void *surface_format, | 
															
														
														
													
														
															
																 | 
																 | 
																                                 unsigned guid_count, const GUID *guid_list, GUID *decoder_guid) | 
																 | 
																 | 
																                                 unsigned guid_count, const GUID *guid_list, GUID *decoder_guid) | 
															
														
														
													
														
															
																 | 
																 | 
																{ | 
																 | 
																 | 
																{ | 
															
														
														
													
														
															
																 | 
																 | 
																    FFDXVASharedContext *sctx = DXVA_SHARED_CONTEXT(avctx); | 
																 | 
																 | 
																    FFDXVASharedContext *sctx = DXVA_SHARED_CONTEXT(avctx); | 
															
														
														
													
														
															
																 | 
																 | 
																    unsigned i, j; | 
																 | 
																 | 
																    unsigned i, j; | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    dxva_list_guids_debug(avctx, service, guid_count, guid_list); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																    *decoder_guid = ff_GUID_NULL; | 
																 | 
																 | 
																    *decoder_guid = ff_GUID_NULL; | 
															
														
														
													
														
															
																 | 
																 | 
																    for (i = 0; dxva_modes[i].guid; i++) { | 
																 | 
																 | 
																    for (i = 0; dxva_modes[i].guid; i++) { | 
															
														
														
													
														
															
																 | 
																 | 
																        const dxva_mode *mode = &dxva_modes[i]; | 
																 | 
																 | 
																        const dxva_mode *mode = &dxva_modes[i]; | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																	
																 | 
																
  |