diff --git a/modules/gpucodec/CMakeLists.txt b/modules/gpucodec/CMakeLists.txt
index b1e0daeaa..7c3be5c0e 100644
--- a/modules/gpucodec/CMakeLists.txt
+++ b/modules/gpucodec/CMakeLists.txt
@@ -11,7 +11,7 @@ ocv_add_module(gpucodec opencv_highgui)
 ocv_module_include_directories()
 ocv_glob_module_sources()
 
-set(extra_libs ${HIGHGUI_LIBRARIES})
+set(extra_libs "")
 
 if(HAVE_NVCUVID)
   list(APPEND extra_libs ${CUDA_CUDA_LIBRARY} ${CUDA_nvcuvid_LIBRARY})
diff --git a/modules/gpucodec/src/ffmpeg_video_source.cpp b/modules/gpucodec/src/ffmpeg_video_source.cpp
index b5a73875b..86d1b5931 100644
--- a/modules/gpucodec/src/ffmpeg_video_source.cpp
+++ b/modules/gpucodec/src/ffmpeg_video_source.cpp
@@ -45,10 +45,6 @@
 
 #ifdef HAVE_NVCUVID
 
-#if defined(HAVE_FFMPEG) && defined(BUILD_SHARED_LIBS) && !defined(WIN32)
-    #include "../src/cap_ffmpeg_impl.hpp"
-#endif
-
 using namespace cv;
 using namespace cv::gpucodec;
 using namespace cv::gpucodec::detail;
diff --git a/modules/highgui/src/cap_ffmpeg_api.hpp b/modules/highgui/src/cap_ffmpeg_api.hpp
index 1fe488c04..f492a2552 100644
--- a/modules/highgui/src/cap_ffmpeg_api.hpp
+++ b/modules/highgui/src/cap_ffmpeg_api.hpp
@@ -7,9 +7,11 @@ extern "C"
 #endif
 
 #if defined WIN32 || defined _WIN32
-#define OPENCV_FFMPEG_API __declspec(dllexport)
+#   define OPENCV_FFMPEG_API __declspec(dllexport)
+#elif defined __GNUC__ && __GNUC__ >= 4
+#   define OPENCV_FFMPEG_API __attribute__ ((visibility ("default")))
 #else
-#define OPENCV_FFMPEG_API
+#   define OPENCV_FFMPEG_API
 #endif
 
 enum