diff --git a/app/src/compat.h b/app/src/compat.h index 9d9a7884..8e2d18f4 100644 --- a/app/src/compat.h +++ b/app/src/compat.h @@ -22,6 +22,18 @@ # define SCRCPY_LAVF_REQUIRES_REGISTER_ALL #endif + +// In ffmpeg/doc/APIchanges: +// 2018-01-28 - ea3672b7d6 - lavf 58.7.100 - avformat.h +// Deprecate AVFormatContext filename field which had limited length, use the +// new dynamically allocated url field instead. +// +// 2018-01-28 - ea3672b7d6 - lavf 58.7.100 - avformat.h +// Add url field to AVFormatContext and add ff_format_set_url helper function. +#if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(58, 7, 100) +# define SCRCPY_LAVF_HAS_AVFORMATCONTEXT_URL +#endif + #if SDL_VERSION_ATLEAST(2, 0, 5) // # define SCRCPY_SDL_HAS_HINT_MOUSE_FOCUS_CLICKTHROUGH diff --git a/app/src/v4l2_sink.c b/app/src/v4l2_sink.c index fd0bda12..177ddd9a 100644 --- a/app/src/v4l2_sink.c +++ b/app/src/v4l2_sink.c @@ -180,7 +180,12 @@ sc_v4l2_sink_open(struct sc_v4l2_sink *vs) { // still expects a pointer-to-non-const (it has not be updated accordingly) // vs->format_ctx->oformat = (AVOutputFormat *) format; - vs->format_ctx->url = strdup(vs->device_name); +#ifdef SCRCPY_LAVF_HAS_AVFORMATCONTEXT_URL +# define CTX_URL_FIELD url +#else +# define CTX_URL_FIELD filename +#endif + vs->format_ctx->CTX_URL_FIELD = strdup(vs->device_name); if (!vs->format_ctx->url) { LOGE("Could not strdup v4l2 device name"); goto error_avformat_free_context;