* Re: [FFmpeg-devel] [FFmpeg-cvslog] avformat/tls_schannel: add DTLS support [not found] <20250711160418.F0282412864@natalya.videolan.org> @ 2025-07-13 0:32 ` Michael Niedermayer 2025-07-13 2:59 ` James Almer 2025-07-13 11:34 ` Timo Rothenpieler 0 siblings, 2 replies; 8+ messages in thread From: Michael Niedermayer @ 2025-07-13 0:32 UTC (permalink / raw) To: ffmpeg-devel [-- Attachment #1.1: Type: text/plain, Size: 8291 bytes --] On Fri, Jul 11, 2025 at 04:04:17PM +0000, Timo Rothenpieler wrote: > ffmpeg | branch: master | Timo Rothenpieler <timo@rothenpieler.org> | Tue Jun 24 19:30:19 2025 +0200| [90fa9636efff84ec5a4b06815722c08188dca551] | committer: Timo Rothenpieler > > avformat/tls_schannel: add DTLS support > > > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=90fa9636efff84ec5a4b06815722c08188dca551 > --- > > configure | 6 +- > libavformat/tls_schannel.c | 890 +++++++++++++++++++++++++++++++++++++++++---- > libavformat/version.h | 2 +- > 3 files changed, 833 insertions(+), 65 deletions(-) breaks on mingw64 src/libavformat/tls_schannel.c: In function ‘ff_dtls_export_materials’: src/libavformat/tls_schannel.c:606:5: error: unknown type name ‘SecPkgContext_KeyingMaterialInfo’; did you mean ‘SecPkgContext_NegotiationInfo’? 606 | SecPkgContext_KeyingMaterialInfo keying_info = { 0 }; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | SecPkgContext_NegotiationInfo src/libavformat/tls_schannel.c:607:5: error: unknown type name ‘SecPkgContext_KeyingMaterial’; did you mean ‘SecPkgContext_KeyInfoW’? 607 | SecPkgContext_KeyingMaterial keying_material = { 0 }; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ | SecPkgContext_KeyInfoW src/libavformat/tls_schannel.c:615:16: error: request for member ‘cbLabel’ in something not a structure or union 615 | keying_info.cbLabel = strlen(dst) + 1; | ^ src/libavformat/tls_schannel.c:616:16: error: request for member ‘pszLabel’ in something not a structure or union 616 | keying_info.pszLabel = (LPSTR)dst; | ^ src/libavformat/tls_schannel.c:617:16: error: request for member ‘cbContextValue’ in something not a structure or union 617 | keying_info.cbContextValue = 0; | ^ src/libavformat/tls_schannel.c:618:16: error: request for member ‘pbContextValue’ in something not a structure or union 618 | keying_info.pbContextValue = NULL; | ^ src/libavformat/tls_schannel.c:619:16: error: request for member ‘cbKeyingMaterial’ in something not a structure or union 619 | keying_info.cbKeyingMaterial = materials_sz; | ^ src/libavformat/tls_schannel.c:621:54: error: ‘SECPKG_ATTR_KEYING_MATERIAL_INFO’ undeclared (first use in this function); did you mean ‘SECPKG_ATTR_NEGOTIATION_INFO’? 621 | sspi_ret = SetContextAttributes(&c->ctxt_handle, SECPKG_ATTR_KEYING_MATERIAL_INFO, &keying_info, sizeof(keying_info)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | SECPKG_ATTR_NEGOTIATION_INFO src/libavformat/tls_schannel.c:621:54: note: each undeclared identifier is reported only once for each function it appears in src/libavformat/tls_schannel.c:627:56: error: ‘SECPKG_ATTR_KEYING_MATERIAL’ undeclared (first use in this function) 627 | sspi_ret = QueryContextAttributes(&c->ctxt_handle, SECPKG_ATTR_KEYING_MATERIAL, &keying_material); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ src/libavformat/tls_schannel.c:633:48: error: request for member ‘pbKeyingMaterial’ in something not a structure or union 633 | memcpy(dtls_srtp_materials, keying_material.pbKeyingMaterial, FFMIN(materials_sz, keying_material.cbKeyingMaterial)); | ^ In file included from src/libavutil/error.h:30, from src/libavutil/common.h:43, from src/libavutil/avutil.h:300, from src/libavcodec/codec_par.h:26, from src/libavformat/avformat.h:312, from src/libavformat/tls_schannel.c:24: src/libavformat/tls_schannel.c:633:102: error: request for member ‘cbKeyingMaterial’ in something not a structure or union 633 | memcpy(dtls_srtp_materials, keying_material.pbKeyingMaterial, FFMIN(materials_sz, keying_material.cbKeyingMaterial)); | ^ src/libavutil/macros.h:49:28: note: in definition of macro ‘FFMIN’ 49 | #define FFMIN(a,b) ((a) > (b) ? (b) : (a)) | ^ src/libavformat/tls_schannel.c:633:102: error: request for member ‘cbKeyingMaterial’ in something not a structure or union 633 | memcpy(dtls_srtp_materials, keying_material.pbKeyingMaterial, FFMIN(materials_sz, keying_material.cbKeyingMaterial)); | ^ src/libavutil/macros.h:49:34: note: in definition of macro ‘FFMIN’ 49 | #define FFMIN(a,b) ((a) > (b) ? (b) : (a)) | ^ src/libavformat/tls_schannel.c:634:38: error: request for member ‘pbKeyingMaterial’ in something not a structure or union 634 | FreeContextBuffer(keying_material.pbKeyingMaterial); | ^ src/libavformat/tls_schannel.c:636:24: error: request for member ‘cbKeyingMaterial’ in something not a structure or union 636 | if (keying_material.cbKeyingMaterial > materials_sz) { | ^ src/libavformat/tls_schannel.c:637:96: error: request for member ‘cbKeyingMaterial’ in something not a structure or union 637 | av_log(h, AV_LOG_WARNING, "Keying material size mismatch: %ld > %zu\n", keying_material.cbKeyingMaterial, materials_sz); | ^ src/libavformat/tls_schannel.c: In function ‘tls_shutdown_client’: src/libavformat/tls_schannel.c:710:29: error: ‘SEC_I_MESSAGE_FRAGMENT’ undeclared (first use in this function) 710 | } while(sspi_ret == SEC_I_MESSAGE_FRAGMENT || sspi_ret == SEC_I_CONTINUE_NEEDED); | ^~~~~~~~~~~~~~~~~~~~~~ src/libavformat/tls_schannel.c: In function ‘tls_handshake_loop’: src/libavformat/tls_schannel.c:862:62: error: ‘SEC_I_MESSAGE_FRAGMENT’ undeclared (first use in this function) 862 | if (sspi_ret == SEC_I_CONTINUE_NEEDED || sspi_ret == SEC_I_MESSAGE_FRAGMENT || sspi_ret == SEC_E_OK) { | ^~~~~~~~~~~~~~~~~~~~~~ src/libavformat/tls_schannel.c: In function ‘tls_handshake’: src/libavformat/tls_schannel.c:1016:58: error: ‘SECPKG_ATTR_DTLS_MTU’ undeclared (first use in this function); did you mean ‘SECPKG_ATTR_TARGET’? 1016 | sspi_ret = SetContextAttributes(&c->ctxt_handle, SECPKG_ATTR_DTLS_MTU, &mtu, sizeof(mtu)); | ^~~~~~~~~~~~~~~~~~~~ | SECPKG_ATTR_TARGET src/libavformat/tls_schannel.c: In function ‘tls_open’: src/libavformat/tls_schannel.c:1072:51: error: ‘SP_PROT_DTLS1_X_SERVER’ undeclared (first use in this function); did you mean ‘SP_PROT_TLS1_SERVER’? 1072 | schannel_cred.grbitEnabledProtocols = SP_PROT_DTLS1_X_SERVER; | ^~~~~~~~~~~~~~~~~~~~~~ | SP_PROT_TLS1_SERVER src/libavformat/tls_schannel.c:1083:51: error: ‘SP_PROT_DTLS1_X_CLIENT’ undeclared (first use in this function); did you mean ‘SP_PROT_TLS1_CLIENT’? 1083 | schannel_cred.grbitEnabledProtocols = SP_PROT_DTLS1_X_CLIENT; | ^~~~~~~~~~~~~~~~~~~~~~ | SP_PROT_TLS1_CLIENT make: *** [/home/michael/ffmpeg-git/ffmpeg/ffbuild/common.mak:81: libavformat/tls_schannel.o] Error 1 make: *** Waiting for unfinished jobs.... STRIP libavfilter/x86/colorspacedsp.o [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB Everything should be made as simple as possible, but not simpler. -- Albert Einstein [-- Attachment #1.2: signature.asc --] [-- Type: application/pgp-signature, Size: 195 bytes --] [-- Attachment #2: Type: text/plain, Size: 251 bytes --] _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [FFmpeg-devel] [FFmpeg-cvslog] avformat/tls_schannel: add DTLS support 2025-07-13 0:32 ` [FFmpeg-devel] [FFmpeg-cvslog] avformat/tls_schannel: add DTLS support Michael Niedermayer @ 2025-07-13 2:59 ` James Almer 2025-07-13 6:33 ` Hendrik Leppkes ` (2 more replies) 2025-07-13 11:34 ` Timo Rothenpieler 1 sibling, 3 replies; 8+ messages in thread From: James Almer @ 2025-07-13 2:59 UTC (permalink / raw) To: ffmpeg-devel [-- Attachment #1.1.1: Type: text/plain, Size: 1706 bytes --] On 7/12/2025 9:32 PM, Michael Niedermayer wrote: > On Fri, Jul 11, 2025 at 04:04:17PM +0000, Timo Rothenpieler wrote: >> ffmpeg | branch: master | Timo Rothenpieler <timo@rothenpieler.org> | Tue Jun 24 19:30:19 2025 +0200| [90fa9636efff84ec5a4b06815722c08188dca551] | committer: Timo Rothenpieler >> >> avformat/tls_schannel: add DTLS support >> >>> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=90fa9636efff84ec5a4b06815722c08188dca551 >> --- >> >> configure | 6 +- >> libavformat/tls_schannel.c | 890 +++++++++++++++++++++++++++++++++++++++++---- >> libavformat/version.h | 2 +- >> 3 files changed, 833 insertions(+), 65 deletions(-) > > breaks on mingw64 > > src/libavformat/tls_schannel.c: In function ‘ff_dtls_export_materials’: > src/libavformat/tls_schannel.c:606:5: error: unknown type name ‘SecPkgContext_KeyingMaterialInfo’; did you mean ‘SecPkgContext_NegotiationInfo’? This type (and probably everything below) is API introduced on Windows 10, so unless you build targeting _WIN32_WINNT >= 0x0A00, it will not be defined. So i guess we should make the tls_schannel.c force that value, like so: > diff --git a/libavformat/tls_openssl.c b/libavformat/tls_openssl.c > index 2a01fb387d..a5cc8d3e27 100644 > --- a/libavformat/tls_openssl.c > +++ b/libavformat/tls_openssl.c > @@ -20,6 +20,11 @@ > * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA > */ > > +#if !defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0A00 > +#undef _WIN32_WINNT > +#define _WIN32_WINNT 0x0A00 > +#endif > + > #include "libavutil/mem.h" > #include "network.h" > #include "os_support.h" [-- Attachment #1.2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 495 bytes --] [-- Attachment #2: Type: text/plain, Size: 251 bytes --] _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [FFmpeg-devel] [FFmpeg-cvslog] avformat/tls_schannel: add DTLS support 2025-07-13 2:59 ` James Almer @ 2025-07-13 6:33 ` Hendrik Leppkes 2025-07-13 11:36 ` Timo Rothenpieler 2025-07-13 11:35 ` Timo Rothenpieler 2025-07-13 13:55 ` James Almer 2 siblings, 1 reply; 8+ messages in thread From: Hendrik Leppkes @ 2025-07-13 6:33 UTC (permalink / raw) To: FFmpeg development discussions and patches On Sun, Jul 13, 2025 at 4:59 AM James Almer <jamrial@gmail.com> wrote: > > On 7/12/2025 9:32 PM, Michael Niedermayer wrote: > > On Fri, Jul 11, 2025 at 04:04:17PM +0000, Timo Rothenpieler wrote: > >> ffmpeg | branch: master | Timo Rothenpieler <timo@rothenpieler.org> | Tue Jun 24 19:30:19 2025 +0200| [90fa9636efff84ec5a4b06815722c08188dca551] | committer: Timo Rothenpieler > >> > >> avformat/tls_schannel: add DTLS support > >> > >>> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=90fa9636efff84ec5a4b06815722c08188dca551 > >> --- > >> > >> configure | 6 +- > >> libavformat/tls_schannel.c | 890 +++++++++++++++++++++++++++++++++++++++++---- > >> libavformat/version.h | 2 +- > >> 3 files changed, 833 insertions(+), 65 deletions(-) > > > > breaks on mingw64 > > > > src/libavformat/tls_schannel.c: In function ‘ff_dtls_export_materials’: > > src/libavformat/tls_schannel.c:606:5: error: unknown type name ‘SecPkgContext_KeyingMaterialInfo’; did you mean ‘SecPkgContext_NegotiationInfo’? > > This type (and probably everything below) is API introduced on Windows > 10, so unless you build targeting _WIN32_WINNT >= 0x0A00, it will not be > defined. > So i guess we should make the tls_schannel.c force that value, like so: > > > diff --git a/libavformat/tls_openssl.c b/libavformat/tls_openssl.c > > index 2a01fb387d..a5cc8d3e27 100644 > > --- a/libavformat/tls_openssl.c > > +++ b/libavformat/tls_openssl.c > > @@ -20,6 +20,11 @@ > > * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA > > */ > > > > +#if !defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0A00 > > +#undef _WIN32_WINNT > > +#define _WIN32_WINNT 0x0A00 > > +#endif > > + Does it introduce a runtime dependency on the new OS? If so the user should perhaps get to control that and the new feature perhaps disabled if build for older Windows. Its a rather niche feature afterall. - Hendrik _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [FFmpeg-devel] [FFmpeg-cvslog] avformat/tls_schannel: add DTLS support 2025-07-13 6:33 ` Hendrik Leppkes @ 2025-07-13 11:36 ` Timo Rothenpieler 0 siblings, 0 replies; 8+ messages in thread From: Timo Rothenpieler @ 2025-07-13 11:36 UTC (permalink / raw) To: ffmpeg-devel On 7/13/2025 8:33 AM, Hendrik Leppkes wrote: > On Sun, Jul 13, 2025 at 4:59 AM James Almer <jamrial@gmail.com> wrote: >> >> On 7/12/2025 9:32 PM, Michael Niedermayer wrote: >>> On Fri, Jul 11, 2025 at 04:04:17PM +0000, Timo Rothenpieler wrote: >>>> ffmpeg | branch: master | Timo Rothenpieler <timo@rothenpieler.org> | Tue Jun 24 19:30:19 2025 +0200| [90fa9636efff84ec5a4b06815722c08188dca551] | committer: Timo Rothenpieler >>>> >>>> avformat/tls_schannel: add DTLS support >>>> >>>>> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=90fa9636efff84ec5a4b06815722c08188dca551 >>>> --- >>>> >>>> configure | 6 +- >>>> libavformat/tls_schannel.c | 890 +++++++++++++++++++++++++++++++++++++++++---- >>>> libavformat/version.h | 2 +- >>>> 3 files changed, 833 insertions(+), 65 deletions(-) >>> >>> breaks on mingw64 >>> >>> src/libavformat/tls_schannel.c: In function ‘ff_dtls_export_materials’: >>> src/libavformat/tls_schannel.c:606:5: error: unknown type name ‘SecPkgContext_KeyingMaterialInfo’; did you mean ‘SecPkgContext_NegotiationInfo’? >> >> This type (and probably everything below) is API introduced on Windows >> 10, so unless you build targeting _WIN32_WINNT >= 0x0A00, it will not be >> defined. >> So i guess we should make the tls_schannel.c force that value, like so: Only that keying material function would fail at runtime, which would impact whip/srtp. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [FFmpeg-devel] [FFmpeg-cvslog] avformat/tls_schannel: add DTLS support 2025-07-13 2:59 ` James Almer 2025-07-13 6:33 ` Hendrik Leppkes @ 2025-07-13 11:35 ` Timo Rothenpieler 2025-07-13 14:12 ` James Almer 2025-07-13 13:55 ` James Almer 2 siblings, 1 reply; 8+ messages in thread From: Timo Rothenpieler @ 2025-07-13 11:35 UTC (permalink / raw) To: ffmpeg-devel On 7/13/2025 4:59 AM, James Almer wrote: > On 7/12/2025 9:32 PM, Michael Niedermayer wrote: >> On Fri, Jul 11, 2025 at 04:04:17PM +0000, Timo Rothenpieler wrote: >>> ffmpeg | branch: master | Timo Rothenpieler <timo@rothenpieler.org> | >>> Tue Jun 24 19:30:19 2025 +0200| >>> [90fa9636efff84ec5a4b06815722c08188dca551] | committer: Timo >>> Rothenpieler >>> >>> avformat/tls_schannel: add DTLS support >>> >>>> http://git.videolan.org/gitweb.cgi/ffmpeg.git/? >>>> a=commit;h=90fa9636efff84ec5a4b06815722c08188dca551 >>> --- >>> >>> configure | 6 +- >>> libavformat/tls_schannel.c | 890 ++++++++++++++++++++++++++++++++++ >>> +++++++---- >>> libavformat/version.h | 2 +- >>> 3 files changed, 833 insertions(+), 65 deletions(-) >> >> breaks on mingw64 >> >> src/libavformat/tls_schannel.c: In function ‘ff_dtls_export_materials’: >> src/libavformat/tls_schannel.c:606:5: error: unknown type name >> ‘SecPkgContext_KeyingMaterialInfo’; did you mean >> ‘SecPkgContext_NegotiationInfo’? > > This type (and probably everything below) is API introduced on Windows > 10, so unless you build targeting _WIN32_WINNT >= 0x0A00, it will not be > defined. > So i guess we should make the tls_schannel.c force that value, like so: It builds fine for me without doing that. It's just structs and macros after all, the functions are long existing ones. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [FFmpeg-devel] [FFmpeg-cvslog] avformat/tls_schannel: add DTLS support 2025-07-13 11:35 ` Timo Rothenpieler @ 2025-07-13 14:12 ` James Almer 0 siblings, 0 replies; 8+ messages in thread From: James Almer @ 2025-07-13 14:12 UTC (permalink / raw) To: ffmpeg-devel [-- Attachment #1.1.1: Type: text/plain, Size: 2072 bytes --] On 7/13/2025 8:35 AM, Timo Rothenpieler wrote: > > On 7/13/2025 4:59 AM, James Almer wrote: >> On 7/12/2025 9:32 PM, Michael Niedermayer wrote: >>> On Fri, Jul 11, 2025 at 04:04:17PM +0000, Timo Rothenpieler wrote: >>>> ffmpeg | branch: master | Timo Rothenpieler <timo@rothenpieler.org> >>>> | Tue Jun 24 19:30:19 2025 +0200| >>>> [90fa9636efff84ec5a4b06815722c08188dca551] | committer: Timo >>>> Rothenpieler >>>> >>>> avformat/tls_schannel: add DTLS support >>>> >>>>> http://git.videolan.org/gitweb.cgi/ffmpeg.git/? >>>>> a=commit;h=90fa9636efff84ec5a4b06815722c08188dca551 >>>> --- >>>> >>>> configure | 6 +- >>>> libavformat/tls_schannel.c | 890 +++++++++++++++++++++++++++++++++ >>>> + +++++++---- >>>> libavformat/version.h | 2 +- >>>> 3 files changed, 833 insertions(+), 65 deletions(-) >>> >>> breaks on mingw64 >>> >>> src/libavformat/tls_schannel.c: In function ‘ff_dtls_export_materials’: >>> src/libavformat/tls_schannel.c:606:5: error: unknown type name >>> ‘SecPkgContext_KeyingMaterialInfo’; did you mean >>> ‘SecPkgContext_NegotiationInfo’? >> >> This type (and probably everything below) is API introduced on Windows >> 10, so unless you build targeting _WIN32_WINNT >= 0x0A00, it will not >> be defined. >> So i guess we should make the tls_schannel.c force that value, like so: > > It builds fine for me without doing that. It may be you're using a newer mingw64 release that doesn't wrap those structs and defines in _WIN32_WINNT wrappers whereas Michael is using an older one provided by a stable distro as a crosscompiler package which does. That, or Michael's mingw64 release doesn't even have them, which is the most likely scenario. If it's the latter, then a configure check would need to be added like > check_type "windows.h security.h schnlsp.h" "SecPkgContext_KeyingMaterialInfo" And then make the dtls_protocol depend on it if using schannel, and wrappers added to tls_schannel.c where needed. [-- Attachment #1.2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 495 bytes --] [-- Attachment #2: Type: text/plain, Size: 251 bytes --] _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [FFmpeg-devel] [FFmpeg-cvslog] avformat/tls_schannel: add DTLS support 2025-07-13 2:59 ` James Almer 2025-07-13 6:33 ` Hendrik Leppkes 2025-07-13 11:35 ` Timo Rothenpieler @ 2025-07-13 13:55 ` James Almer 2 siblings, 0 replies; 8+ messages in thread From: James Almer @ 2025-07-13 13:55 UTC (permalink / raw) To: ffmpeg-devel [-- Attachment #1.1.1: Type: text/plain, Size: 1925 bytes --] On 7/12/2025 11:59 PM, James Almer wrote: > On 7/12/2025 9:32 PM, Michael Niedermayer wrote: >> On Fri, Jul 11, 2025 at 04:04:17PM +0000, Timo Rothenpieler wrote: >>> ffmpeg | branch: master | Timo Rothenpieler <timo@rothenpieler.org> | >>> Tue Jun 24 19:30:19 2025 +0200| >>> [90fa9636efff84ec5a4b06815722c08188dca551] | committer: Timo >>> Rothenpieler >>> >>> avformat/tls_schannel: add DTLS support >>> >>>> http://git.videolan.org/gitweb.cgi/ffmpeg.git/? >>>> a=commit;h=90fa9636efff84ec5a4b06815722c08188dca551 >>> --- >>> >>> configure | 6 +- >>> libavformat/tls_schannel.c | 890 ++++++++++++++++++++++++++++++++++ >>> +++++++---- >>> libavformat/version.h | 2 +- >>> 3 files changed, 833 insertions(+), 65 deletions(-) >> >> breaks on mingw64 >> >> src/libavformat/tls_schannel.c: In function ‘ff_dtls_export_materials’: >> src/libavformat/tls_schannel.c:606:5: error: unknown type name >> ‘SecPkgContext_KeyingMaterialInfo’; did you mean >> ‘SecPkgContext_NegotiationInfo’? > > This type (and probably everything below) is API introduced on Windows > 10, so unless you build targeting _WIN32_WINNT >= 0x0A00, it will not be > defined. > So i guess we should make the tls_schannel.c force that value, like so: > >> diff --git a/libavformat/tls_openssl.c b/libavformat/tls_openssl.c >> index 2a01fb387d..a5cc8d3e27 100644 >> --- a/libavformat/tls_openssl.c >> +++ b/libavformat/tls_openssl.c Err, not here, but in tls_schannel.c >> @@ -20,6 +20,11 @@ >> * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA >> 02110-1301 USA >> */ >> >> +#if !defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0A00 >> +#undef _WIN32_WINNT >> +#define _WIN32_WINNT 0x0A00 >> +#endif >> + >> #include "libavutil/mem.h" >> #include "network.h" >> #include "os_support.h" > [-- Attachment #1.2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 495 bytes --] [-- Attachment #2: Type: text/plain, Size: 251 bytes --] _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [FFmpeg-devel] [FFmpeg-cvslog] avformat/tls_schannel: add DTLS support 2025-07-13 0:32 ` [FFmpeg-devel] [FFmpeg-cvslog] avformat/tls_schannel: add DTLS support Michael Niedermayer 2025-07-13 2:59 ` James Almer @ 2025-07-13 11:34 ` Timo Rothenpieler 1 sibling, 0 replies; 8+ messages in thread From: Timo Rothenpieler @ 2025-07-13 11:34 UTC (permalink / raw) To: ffmpeg-devel On 7/13/2025 2:32 AM, Michael Niedermayer wrote: > On Fri, Jul 11, 2025 at 04:04:17PM +0000, Timo Rothenpieler wrote: >> ffmpeg | branch: master | Timo Rothenpieler <timo@rothenpieler.org> | Tue Jun 24 19:30:19 2025 +0200| [90fa9636efff84ec5a4b06815722c08188dca551] | committer: Timo Rothenpieler >> >> avformat/tls_schannel: add DTLS support >> >>> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=90fa9636efff84ec5a4b06815722c08188dca551 >> --- >> >> configure | 6 +- >> libavformat/tls_schannel.c | 890 +++++++++++++++++++++++++++++++++++++++++---- >> libavformat/version.h | 2 +- >> 3 files changed, 833 insertions(+), 65 deletions(-) > > breaks on mingw64 > > src/libavformat/tls_schannel.c: In function ‘ff_dtls_export_materials’: > src/libavformat/tls_schannel.c:606:5: error: unknown type name ‘SecPkgContext_KeyingMaterialInfo’; did you mean ‘SecPkgContext_NegotiationInfo’? > 606 | SecPkgContext_KeyingMaterialInfo keying_info = { 0 }; > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > | SecPkgContext_NegotiationInfo > src/libavformat/tls_schannel.c:607:5: error: unknown type name ‘SecPkgContext_KeyingMaterial’; did you mean ‘SecPkgContext_KeyInfoW’? > 607 | SecPkgContext_KeyingMaterial keying_material = { 0 }; > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ > | SecPkgContext_KeyInfoW > src/libavformat/tls_schannel.c:615:16: error: request for member ‘cbLabel’ in something not a structure or union > 615 | keying_info.cbLabel = strlen(dst) + 1; > | ^ > src/libavformat/tls_schannel.c:616:16: error: request for member ‘pszLabel’ in something not a structure or union > 616 | keying_info.pszLabel = (LPSTR)dst; > | ^ > src/libavformat/tls_schannel.c:617:16: error: request for member ‘cbContextValue’ in something not a structure or union > 617 | keying_info.cbContextValue = 0; > | ^ > src/libavformat/tls_schannel.c:618:16: error: request for member ‘pbContextValue’ in something not a structure or union > 618 | keying_info.pbContextValue = NULL; > | ^ > src/libavformat/tls_schannel.c:619:16: error: request for member ‘cbKeyingMaterial’ in something not a structure or union > 619 | keying_info.cbKeyingMaterial = materials_sz; > | ^ > src/libavformat/tls_schannel.c:621:54: error: ‘SECPKG_ATTR_KEYING_MATERIAL_INFO’ undeclared (first use in this function); did you mean ‘SECPKG_ATTR_NEGOTIATION_INFO’? > 621 | sspi_ret = SetContextAttributes(&c->ctxt_handle, SECPKG_ATTR_KEYING_MATERIAL_INFO, &keying_info, sizeof(keying_info)); > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > | SECPKG_ATTR_NEGOTIATION_INFO > src/libavformat/tls_schannel.c:621:54: note: each undeclared identifier is reported only once for each function it appears in > src/libavformat/tls_schannel.c:627:56: error: ‘SECPKG_ATTR_KEYING_MATERIAL’ undeclared (first use in this function) > 627 | sspi_ret = QueryContextAttributes(&c->ctxt_handle, SECPKG_ATTR_KEYING_MATERIAL, &keying_material); > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ > src/libavformat/tls_schannel.c:633:48: error: request for member ‘pbKeyingMaterial’ in something not a structure or union > 633 | memcpy(dtls_srtp_materials, keying_material.pbKeyingMaterial, FFMIN(materials_sz, keying_material.cbKeyingMaterial)); > | ^ > In file included from src/libavutil/error.h:30, > from src/libavutil/common.h:43, > from src/libavutil/avutil.h:300, > from src/libavcodec/codec_par.h:26, > from src/libavformat/avformat.h:312, > from src/libavformat/tls_schannel.c:24: > src/libavformat/tls_schannel.c:633:102: error: request for member ‘cbKeyingMaterial’ in something not a structure or union > 633 | memcpy(dtls_srtp_materials, keying_material.pbKeyingMaterial, FFMIN(materials_sz, keying_material.cbKeyingMaterial)); > | ^ > src/libavutil/macros.h:49:28: note: in definition of macro ‘FFMIN’ > 49 | #define FFMIN(a,b) ((a) > (b) ? (b) : (a)) > | ^ > src/libavformat/tls_schannel.c:633:102: error: request for member ‘cbKeyingMaterial’ in something not a structure or union > 633 | memcpy(dtls_srtp_materials, keying_material.pbKeyingMaterial, FFMIN(materials_sz, keying_material.cbKeyingMaterial)); > | ^ > src/libavutil/macros.h:49:34: note: in definition of macro ‘FFMIN’ > 49 | #define FFMIN(a,b) ((a) > (b) ? (b) : (a)) > | ^ > src/libavformat/tls_schannel.c:634:38: error: request for member ‘pbKeyingMaterial’ in something not a structure or union > 634 | FreeContextBuffer(keying_material.pbKeyingMaterial); > | ^ > src/libavformat/tls_schannel.c:636:24: error: request for member ‘cbKeyingMaterial’ in something not a structure or union > 636 | if (keying_material.cbKeyingMaterial > materials_sz) { > | ^ > src/libavformat/tls_schannel.c:637:96: error: request for member ‘cbKeyingMaterial’ in something not a structure or union > 637 | av_log(h, AV_LOG_WARNING, "Keying material size mismatch: %ld > %zu\n", keying_material.cbKeyingMaterial, materials_sz); > | ^ > src/libavformat/tls_schannel.c: In function ‘tls_shutdown_client’: > src/libavformat/tls_schannel.c:710:29: error: ‘SEC_I_MESSAGE_FRAGMENT’ undeclared (first use in this function) > 710 | } while(sspi_ret == SEC_I_MESSAGE_FRAGMENT || sspi_ret == SEC_I_CONTINUE_NEEDED); > | ^~~~~~~~~~~~~~~~~~~~~~ > src/libavformat/tls_schannel.c: In function ‘tls_handshake_loop’: > src/libavformat/tls_schannel.c:862:62: error: ‘SEC_I_MESSAGE_FRAGMENT’ undeclared (first use in this function) > 862 | if (sspi_ret == SEC_I_CONTINUE_NEEDED || sspi_ret == SEC_I_MESSAGE_FRAGMENT || sspi_ret == SEC_E_OK) { > | ^~~~~~~~~~~~~~~~~~~~~~ > src/libavformat/tls_schannel.c: In function ‘tls_handshake’: > src/libavformat/tls_schannel.c:1016:58: error: ‘SECPKG_ATTR_DTLS_MTU’ undeclared (first use in this function); did you mean ‘SECPKG_ATTR_TARGET’? > 1016 | sspi_ret = SetContextAttributes(&c->ctxt_handle, SECPKG_ATTR_DTLS_MTU, &mtu, sizeof(mtu)); > | ^~~~~~~~~~~~~~~~~~~~ > | SECPKG_ATTR_TARGET > src/libavformat/tls_schannel.c: In function ‘tls_open’: > src/libavformat/tls_schannel.c:1072:51: error: ‘SP_PROT_DTLS1_X_SERVER’ undeclared (first use in this function); did you mean ‘SP_PROT_TLS1_SERVER’? > 1072 | schannel_cred.grbitEnabledProtocols = SP_PROT_DTLS1_X_SERVER; > | ^~~~~~~~~~~~~~~~~~~~~~ > | SP_PROT_TLS1_SERVER > src/libavformat/tls_schannel.c:1083:51: error: ‘SP_PROT_DTLS1_X_CLIENT’ undeclared (first use in this function); did you mean ‘SP_PROT_TLS1_CLIENT’? > 1083 | schannel_cred.grbitEnabledProtocols = SP_PROT_DTLS1_X_CLIENT; > | ^~~~~~~~~~~~~~~~~~~~~~ > | SP_PROT_TLS1_CLIENT > make: *** [/home/michael/ffmpeg-git/ffmpeg/ffbuild/common.mak:81: libavformat/tls_schannel.o] Error 1 > make: *** Waiting for unfinished jobs.... > STRIP libavfilter/x86/colorspacedsp.o > Builds fine for me on latest mingw64. These structs and defines are relatively new ones, not exactly sure how new. But given they're just structs and defines, the function will just fail on a Windows version that doesn't know them. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2025-07-13 14:13 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [not found] <20250711160418.F0282412864@natalya.videolan.org> 2025-07-13 0:32 ` [FFmpeg-devel] [FFmpeg-cvslog] avformat/tls_schannel: add DTLS support Michael Niedermayer 2025-07-13 2:59 ` James Almer 2025-07-13 6:33 ` Hendrik Leppkes 2025-07-13 11:36 ` Timo Rothenpieler 2025-07-13 11:35 ` Timo Rothenpieler 2025-07-13 14:12 ` James Almer 2025-07-13 13:55 ` James Almer 2025-07-13 11:34 ` Timo Rothenpieler
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel This inbox may be cloned and mirrored by anyone: git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \ ffmpegdev@gitmailbox.com public-inbox-index ffmpegdev Example config snippet for mirrors. AGPL code for this site: git clone https://public-inbox.org/public-inbox.git