Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. help with QtAV
Qt 6.11 is out! See what's new in the release blog

help with QtAV

Scheduled Pinned Locked Moved Solved General and Desktop
5 Posts 2 Posters 2.3k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S Offline
    S Offline
    saber
    wrote on last edited by saber
    #1

    there is project called qtav here

    here is the nhj.pro

    TEMPLATE = subdirs
    
    SUBDIRS += libQtAV \
               coreplayer
    
    coreplayer.depends = libQtAV
    !no-widgets {
      SUBDIRS += libQtAVWidgets
      libqtavwidgets.file = libQtAVWidgets/libQtAVWidgets.pro
      libqtavwidgets.depends = libqtav
    }
    
    

    this is UNMODIFIED libQtAV.pro

    TEMPLATE = lib
    MODULE_INCNAME = QtAV # for mac framework. also used in install_sdk.pro
    TARGET = QtAV
    QT += core gui
    #CONFIG *= ltcg
    greaterThan(QT_MAJOR_VERSION, 4) {
      contains(QT_CONFIG, opengl) {
          CONFIG *= config_opengl
          greaterThan(QT_MINOR_VERSION, 3) {
            CONFIG *= config_openglwindow
          }
      }
    } else {
      config_gl: QT += opengl
    }
    CONFIG *= qtav-buildlib
    static: CONFIG *= static_ffmpeg
    INCLUDEPATH += $$[QT_INSTALL_HEADERS] # TODO: ffmpeg dir
    
    #mac: simd.prf will load qt_build_config and the result is soname will prefixed with QT_INSTALL_LIBS and link flag will append soname after QMAKE_LFLAGS_SONAME
    config_libcedarv: CONFIG *= neon config_simd #need by qt4 addSimdCompiler(). neon or config_neon is required because tests/arch can not detect neon
    ## sse2 sse4_1 may be defined in Qt5 qmodule.pri but is not included. Qt4 defines sse and sse2
    sse4_1|config_sse4_1|contains(TARGET_ARCH_SUB, sse4.1): CONFIG *= sse4_1 config_simd
    sse2|config_sse2|contains(TARGET_ARCH_SUB, sse2): CONFIG *= sse2 config_simd
    CONFIG(debug, debug|release): DEFINES += DEBUG
    #release: DEFINES += QT_NO_DEBUG_OUTPUT
    #var with '_' can not pass to pri?
    PROJECTROOT = $$PWD/..
    !include(libQtAV.pri): error("could not find libQtAV.pri")
    preparePaths($$OUT_PWD/../out)
    exists($$PROJECTROOT/extra/qtLongName(include)): INCLUDEPATH += $$PROJECTROOT/extra/qtLongName(include)
    exists($$PROJECTROOT/extra/qtLongName(lib)): LIBS += -L$$PROJECTROOT/extra/qtLongName(lib)
    staticlib: DEFINES += BUILD_QTAV_STATIC
    
    config_uchardet {
      DEFINES += LINK_UCHARDET
      LIBS *= -luchardet
    } else:exists($$PROJECTROOT/contrib/uchardet/src/uchardet.h) {
      include($$PROJECTROOT/contrib/uchardet.pri)
      DEFINES += BUILD_UCHARDET
    }
    exists($$PROJECTROOT/contrib/capi/capi.pri) {
      include($$PROJECTROOT/contrib/capi/capi.pri)
      DEFINES *= QTAV_HAVE_CAPI=1
    } else {
      warning("contrib/capi is missing. run 'git submodule update --init' first")
    }
    
    RESOURCES += QtAV.qrc \
        shaders/shaders.qrc
    
    !rc_file {
        RC_ICONS = QtAV.ico
        QMAKE_TARGET_COMPANY = "Shanghai University->S3 Graphics->Deepin | wbsecg1@gmail.com"
        QMAKE_TARGET_DESCRIPTION = "QtAV Multimedia framework. http://qtav.org"
        QMAKE_TARGET_COPYRIGHT = "Copyright (C) 2012-2017 WangBin, wbsecg1@gmail.com"
        QMAKE_TARGET_PRODUCT = "QtAV"
    } else:win32 {
        RC_FILE = QtAV.rc
    #no depends for rc file by default, even if rc includes a header. Makefile target use '/' as default, so not works iwth win cmd
        rc.target = $$clean_path($$RC_FILE) #rc obj depends on clean path target
        rc.depends = $$PWD/QtAV/version.h
    #why use multiple rule failed? i.e. add a rule without command
        isEmpty(QMAKE_SH) {
            rc.commands = @copy /B $$system_path($$RC_FILE)+,, #change file time
        } else {
            rc.commands = @touch $$RC_FILE #change file time
        }
        QMAKE_EXTRA_TARGETS += rc
    }
    
    OTHER_FILES += $$RC_FILE QtAV.svg
    TRANSLATIONS = i18n/QtAV_zh_CN.ts i18n/QtAV.ts
    
    sse4_1 {
      CONFIG += sse2 #only sse4.1 is checked. sse2 now can be disabled if sse4.1 is disabled
      DEFINES += QTAV_HAVE_SSE4_1=1
      !config_simd: CONFIG *= simd
      SSE4_1_SOURCES += utils/CopyFrame_SSE4.cpp
    }
    sse2 {
      DEFINES += QTAV_HAVE_SSE2=1
      !config_simd: CONFIG *= simd
      SSE2_SOURCES += utils/CopyFrame_SSE2.cpp
    }
    
    win32 {
    # cross build, old vc etc.
      !config_dx: INCLUDEPATH += $$PROJECTROOT/contrib/dxsdk
    }
    *msvc*:!winrt {
    #link FFmpeg and portaudio which are built by gcc need /SAFESEH:NO
      win32-msvc2010|win32-msvc2008|win32-msvc2012 {
        QMAKE_LFLAGS *= /DEBUG #workaround for CoInitializeEx() and other symbols not found at runtime
        INCLUDEPATH *= compat/msvc # vs2012 only has stdint.h
      }
        debug: QMAKE_LFLAGS += /SAFESEH:NO
    #CXXFLAGS debug: /MTd
        !static:QMAKE_LFLAGS *= /NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:libcmtd.lib #for msbuild vs2013
    }
    capi {
    contains(QT_CONFIG, egl)|contains(QT_CONFIG, dynamicgl)|contains(QT_CONFIG, opengles2) {
      CONFIG *= enable_egl
      !ios {
        winrt: DEFINES += CAPI_LINK_EGL #required by capi_egl.*
        DEFINES += QTAV_HAVE_EGL_CAPI=1
        HEADERS *= capi/egl_api.h
        SOURCES *= capi/egl_api.cpp
      }
    }
    }
    enable_egl:greaterThan(QT_MAJOR_VERSION,4):qtHaveModule(x11extras): QT *= x11extras
    
    config_gl|config_opengl {
      contains(QT_CONFIG, opengl):!contains(QT_CONFIG, opengles2): CONFIG *= enable_desktopgl
    }
    #UINT64_C: C99 math features, need -D__STDC_CONSTANT_MACROS in CXXFLAGS
    DEFINES += __STDC_CONSTANT_MACROS
    android {
      CONFIG *= config_opensl
      SOURCES *= jmi/jmi.cpp
      qtHaveModule(androidextras) { #qt5.2 has QAndroidJniObject
        QT *= androidextras #QPlatformNativeInterface get "QtActivity"
        SOURCES *= io/AndroidIO.cpp
        SOURCES *= codec/video/VideoDecoderMediaCodec.cpp
        exists($$[QT_INSTALL_HEADERS]/MediaCodecTextureStandalone.h) {
          DEFINES *= MEDIACODEC_TEXTURE
          LIBS *= -lqtav-mediacodec
        }
      }
    }
    config_x11 {
      DEFINES += QTAV_HAVE_X11=1
      SOURCES *= filter/X11FilterContext.cpp
      LIBS *= -lX11
    }
    config_swresample {
        DEFINES += QTAV_HAVE_SWRESAMPLE=1
        SOURCES += AudioResamplerFF.cpp
        LIBS += -lswresample
    }
    config_avresample {
        DEFINES += QTAV_HAVE_AVRESAMPLE=1
        SOURCES += AudioResamplerLibav.cpp
        LIBS += -lavresample
    }
    config_avdevice { #may depends on avfilter
        DEFINES += QTAV_HAVE_AVDEVICE=1
        LIBS *= -lavdevice
        static_ffmpeg {
          win32 {
            LIBS *= -lgdi32 -loleaut32 -lshlwapi #shlwapi: desktop >= xp only
          } else:linux {
            LIBS *= -lXv #-lX11 -lxcb -lxcb-shm -lxcb-xfixes -lxcb-render -lxcb-shape
          } else:mac { # static ffmpeg
            LIBS += -framework Foundation -framework CoreMedia -framework QuartzCore -framework CoreGraphics -framework CoreVideo
            ios {
              LIBS += -framework AVFoundation
            } else {
              LIBS += -framework QTKit
          # assume avdevice targets to the same version as Qt and always >= 10.6
             !isEqual(QMAKE_MACOSX_DEPLOYMENT_TARGET, 10.6): LIBS += -framework AVFoundation
            }
          }
        }
    }
    config_avfilter {
        DEFINES += QTAV_HAVE_AVFILTER=1
        LIBS += -lavfilter
        mac:!ios:static_ffmpeg: LIBS += -framework AppKit
    }
    config_ipp {
        DEFINES += QTAV_HAVE_IPP=1
        ICCROOT = $$(IPPROOT)/../compiler
        INCLUDEPATH += $$(IPPROOT)/include
        SOURCES += ImageConverterIPP.cpp
        message("QMAKE_TARGET.arch" $$QMAKE_TARGET.arch)
        *64|contains(QMAKE_TARGET.arch, x86_64)|contains(TARGET_ARCH, x86_64) {
            IPPARCH=intel64
        } else {
            IPPARCH=ia32
        }
        LIBS *= -L$$(IPPROOT)/lib/$$IPPARCH -lippcc -lippcore -lippi
        LIBS *= -L$$(IPPROOT)/../compiler/lib/$$IPPARCH -lsvml -limf
        #omp for static link. _t is multi-thread static link
    }
    mac|ios {
      CONFIG *= config_openal
      SOURCES += output/audio/AudioOutputAudioToolbox.cpp
      LIBS += -framework AudioToolbox
      LIBS += -Wl,-unexported_symbols_list,$$PWD/unexport.list
    } else:!win32 {
      #LIBS += -Wl,--exclude-libs,ALL
    }
    win32: {
      HEADERS += output/audio/xaudio2_compat.h
      SOURCES += output/audio/AudioOutputXAudio2.cpp
      DEFINES *= QTAV_HAVE_XAUDIO2=1
      winrt {
        LIBS += -lxaudio2 #only for xbox or >=win8
      } else {
        LIBS += -lole32 #CoInitializeEx for vs2008, but can not find the symbol at runtime
      }
    }
    config_dsound:!winrt {
        SOURCES += output/audio/AudioOutputDSound.cpp
        DEFINES *= QTAV_HAVE_DSOUND=1
    }
    config_portaudio {
        SOURCES += output/audio/AudioOutputPortAudio.cpp
        DEFINES *= QTAV_HAVE_PORTAUDIO=1
        LIBS *= -lportaudio
        #win32: LIBS *= -lwinmm #-lksguid #-luuid
    }
    config_openal {
        SOURCES *= output/audio/AudioOutputOpenAL.cpp
        HEADERS *= capi/openal_api.h
        SOURCES *= capi/openal_api.cpp
        DEFINES *= QTAV_HAVE_OPENAL=1
        static_openal: DEFINES += AL_LIBTYPE_STATIC # openal-soft AL_API dllimport error. mac's macro is AL_BUILD_LIBRARY
        ios: CONFIG *= config_openal_link
        !capi|config_openal_link|static_openal {
          DEFINES *= CAPI_LINK_OPENAL
          win32 {
            LIBS += -lOpenAL32 -lwinmm
          } else:mac {
            LIBS += -framework OpenAL
            DEFINES += HEADER_OPENAL_PREFIX
          } else:blackberry {
            LIBS += -lOpenAL
          } else {
            LIBS += -lopenal
            static_openal:!android: LIBS += -lasound
          }
        }
    }
    config_opensl {
        SOURCES += output/audio/AudioOutputOpenSL.cpp
        DEFINES *= QTAV_HAVE_OPENSL=1
        LIBS += -lOpenSLES
    }
    config_pulseaudio {
        SOURCES += output/audio/AudioOutputPulse.cpp
        DEFINES *= QTAV_HAVE_PULSEAUDIO=1
        LIBS += -lpulse
    }
    CONFIG += config_cuda
    #CONFIG += config_cuda_link
    config_cuda {
        DEFINES += QTAV_HAVE_CUDA=1
        HEADERS += cuda/dllapi/nv_inc.h cuda/helper_cuda.h
        SOURCES += codec/video/VideoDecoderCUDA.cpp
        #contains(QT_CONFIG, opengl) {
          HEADERS += codec/video/SurfaceInteropCUDA.h
          SOURCES += codec/video/SurfaceInteropCUDA.cpp
        #}
        INCLUDEPATH += $$PWD/cuda cuda/dllapi
        config_dllapi:config_dllapi_cuda {
            DEFINES += QTAV_HAVE_DLLAPI_CUDA=1
            INCLUDEPATH += ../depends/dllapi/src
    include(../depends/dllapi/src/libdllapi.pri)
            SOURCES += cuda/dllapi/cuda.cpp cuda/dllapi/nvcuvid.cpp cuda/dllapi/cuviddec.cpp
        } else:config_cuda_link {
            DEFINES += CUDA_LINK
            INCLUDEPATH += $$(CUDA_PATH)/include
            LIBS += -L$$(CUDA_PATH)/lib
            contains(TARGET_ARCH, x86): LIBS += -L$$(CUDA_PATH)/lib/Win32
            else: LIBS += -L$$(CUDA_PATH)/lib/x64
            LIBS += -lnvcuvid -lcuda
        }
        SOURCES += cuda/cuda_api.cpp
        HEADERS += cuda/cuda_api.h
    }
    config_d3d11va {
      CONFIG *= d3dva c++11
      DEFINES *= QTAV_HAVE_D3D11VA=1
      SOURCES += codec/video/VideoDecoderD3D11.cpp
      HEADERS += directx/SurfaceInteropD3D11.h
      SOURCES += directx/SurfaceInteropD3D11.cpp
      HEADERS += directx/D3D11VP.h
      SOURCES += directx/D3D11VP.cpp
      enable_egl {
        SOURCES += directx/SurfaceInteropD3D11EGL.cpp
      }
      enable_desktopgl {
        SOURCES += directx/SurfaceInteropD3D11GL.cpp
      }
      winrt: LIBS *= -ld3d11
    }
    win32:!winrt {
      HEADERS += directx/SurfaceInteropD3D9.h
      SOURCES += directx/SurfaceInteropD3D9.cpp
      enable_egl {
        SOURCES += directx/SurfaceInteropD3D9EGL.cpp
      }
      enable_desktopgl {
        SOURCES += directx/SurfaceInteropD3D9GL.cpp
      }
    }
    config_dxva {
      CONFIG *= d3dva
      DEFINES *= QTAV_HAVE_DXVA=1
      SOURCES += codec/video/VideoDecoderDXVA.cpp
      LIBS += -lole32
    }
    d3dva {
      HEADERS += codec/video/VideoDecoderD3D.h
      SOURCES += codec/video/VideoDecoderD3D.cpp
    }
    config_vaapi* {
        DEFINES *= QTAV_HAVE_VAAPI=1
        SOURCES += codec/video/VideoDecoderVAAPI.cpp  vaapi/vaapi_helper.cpp
        HEADERS += vaapi/vaapi_helper.h
      #contains(QT_CONFIG, opengl) {
        HEADERS += vaapi/SurfaceInteropVAAPI.h
        SOURCES += vaapi/SurfaceInteropVAAPI.cpp
      #}
        LIBS *= -lva -lX11 #dynamic load va-glx va-x11 using dllapi. -lX11: used by tfp
    }
    config_libcedarv {
        DEFINES *= QTAV_HAVE_CEDARV=1
        QMAKE_CXXFLAGS *= -march=armv7-a
    # Can not use NEON_SOURCE because it can not work with moc
        SOURCES += codec/video/VideoDecoderCedarv.cpp
        !config_simd: CONFIG *= simd #addSimdCompiler xxx_ASM
        CONFIG += no_clang_integrated_as #see qtbase/src/gui/painting/painting.pri. add -fno-integrated-as from simd.prf
        NEON_ASM += codec/video/tiled_yuv.S #from libvdpau-sunxi
        LIBS += -lvecore -lcedarv
        OTHER_FILES += $$NEON_ASM
    }
    mac {
      HEADERS *= codec/video/SurfaceInteropCV.h
      SOURCES *= codec/video/SurfaceInteropCV.cpp \
                 codec/video/SurfaceInteropIOSurface.mm
      ios {
        OBJECTIVE_SOURCES *= codec/video/SurfaceInteropCVOpenGLES.mm
      } else {
        #CONFIG += config_vda
        #SOURCES *= codec/video/SurfaceInteropCVOpenGL.cpp
      }
      LIBS += -framework CoreVideo -framework CoreFoundation
    }
    config_vda {
        DEFINES *= QTAV_HAVE_VDA=1
        SOURCES += codec/video/VideoDecoderVDA.cpp
        LIBS += -framework VideoDecodeAcceleration
    }
    config_videotoolbox {
      DEFINES *= QTAV_HAVE_VIDEOTOOLBOX=1
      SOURCES *= codec/video/VideoDecoderVideoToolbox.cpp
      LIBS += -framework CoreMedia -framework VideoToolbox
    }
    
    config_gl|config_opengl {
      contains(QT_CONFIG, egl) {
        DEFINES *= QTAV_HAVE_QT_EGL=1
    #if a platform plugin depends on egl (for example, eglfs), egl is defined
      }
      OTHER_FILES += shaders/planar.f.glsl shaders/rgb.f.glsl
      SDK_HEADERS *= \
        QtAV/Geometry.h \
        QtAV/GeometryRenderer.h \
        QtAV/GLSLFilter.h \
        QtAV/OpenGLRendererBase.h \
        QtAV/OpenGLTypes.h \
        QtAV/OpenGLVideo.h \
        QtAV/ConvolutionShader.h \
        QtAV/VideoShaderObject.h \
        QtAV/VideoShader.h
      SDK_PRIVATE_HEADERS = \
        QtAV/private/OpenGLRendererBase_p.h
      HEADERS *= \
        opengl/gl_api.h \
        opengl/OpenGLHelper.h \
        opengl/SubImagesGeometry.h \
        opengl/SubImagesRenderer.h \
        opengl/ShaderManager.h
      SOURCES *= \
        filter/GLSLFilter.cpp \
        output/video/OpenGLRendererBase.cpp \
        opengl/gl_api.cpp \
        opengl/OpenGLTypes.cpp \
        opengl/Geometry.cpp \
        opengl/GeometryRenderer.cpp \
        opengl/SubImagesGeometry.cpp \
        opengl/SubImagesRenderer.cpp \
        opengl/OpenGLVideo.cpp \
        opengl/VideoShaderObject.cpp \
        opengl/VideoShader.cpp \
        opengl/ShaderManager.cpp \
        opengl/ConvolutionShader.cpp \
        opengl/OpenGLHelper.cpp
    }
    config_openglwindow {
      SDK_HEADERS *= QtAV/OpenGLWindowRenderer.h
      SOURCES *= output/video/OpenGLWindowRenderer.cpp
    }
    config_libass {
    #link against libass instead of dynamic load
      !capi|winrt|android|ios|config_libass_link {
        LIBS += -lass #-lfribidi -lfontconfig -lxml2 -lfreetype -lharfbuzz -lz
        DEFINES += CAPI_LINK_ASS
      }
      DEFINES *= QTAV_HAVE_LIBASS=1
      HEADERS *= capi/ass_api.h
      SOURCES *= capi/ass_api.cpp
      SOURCES *= subtitle/SubtitleProcessorLibASS.cpp
    }
    # mac is -FQTDIR we need -LQTDIR
    LIBS *= -L$$[QT_INSTALL_LIBS] -lavcodec -lavformat -lswscale -lavutil
    win32 {
      HEADERS *= utils/DirectXHelper.h
      SOURCES *= utils/DirectXHelper.cpp
    #dynamicgl: __impl__GetDC __impl_ReleaseDC __impl_GetDesktopWindow
      !winrt:LIBS += -luser32
    }
    winrt {
      SOURCES *= io/WinRTIO.cpp
      LIBS *= -lshcore
    }
    # compat with old system
    # use old libva.so to link against
    glibc_compat: *linux*: LIBS += -lrt  # do not use clock_gettime in libc, GLIBC_2.17 is not available on old system
    static_ffmpeg {
    # libs needed by mac static ffmpeg. corefoundation: vda, avdevice. coca: vf_coreimage
      mac|ios: LIBS += -liconv -lbz2 -llzma -lz -framework CoreFoundation -framework Security # -framework Cocoa Cocoa is not available on ios10
      win32: LIBS *= -lws2_32 -lstrmiids -lvfw32 -luuid
      !mac:*g++* {
        LIBS *= -lz
        QMAKE_LFLAGS *= -Wl,-Bsymbolic #link to static lib, see http://ffmpeg.org/platform.html
      }
    }
    SOURCES += \
        AVCompat.cpp \
        QtAV_Global.cpp \
        subtitle/SubImage.cpp \
        subtitle/CharsetDetector.cpp \
        subtitle/PlainText.cpp \
        subtitle/PlayerSubtitle.cpp \
        subtitle/Subtitle.cpp \
        subtitle/SubtitleProcessor.cpp \
        subtitle/SubtitleProcessorFFmpeg.cpp \
        utils/GPUMemCopy.cpp \
        utils/Logger.cpp \
        AudioThread.cpp \
        utils/internal.cpp \
        AVThread.cpp \
        AudioFormat.cpp \
        AudioFrame.cpp \
        AudioResampler.cpp \
        AudioResamplerTemplate.cpp \
        codec/audio/AudioDecoder.cpp \
        codec/audio/AudioDecoderFFmpeg.cpp \
        codec/audio/AudioEncoder.cpp \
        codec/audio/AudioEncoderFFmpeg.cpp \
        codec/AVDecoder.cpp \
        codec/AVEncoder.cpp \
        AVMuxer.cpp \
        AVDemuxer.cpp \
        AVDemuxThread.cpp \
        ColorTransform.cpp \
        Frame.cpp \
        FrameReader.cpp \
        filter/Filter.cpp \
        filter/FilterContext.cpp \
        filter/FilterManager.cpp \
        filter/LibAVFilter.cpp \
        filter/SubtitleFilter.cpp \
        filter/EncodeFilter.cpp \
        ImageConverter.cpp \
        ImageConverterFF.cpp \
        Packet.cpp \
        PacketBuffer.cpp \
        AVError.cpp \
        AVPlayer.cpp \
        AVPlayerPrivate.cpp \
        AVTranscoder.cpp \
        AVClock.cpp \
        VideoCapture.cpp \
        VideoFormat.cpp \
        VideoFrame.cpp \
        io/MediaIO.cpp \
        io/QIODeviceIO.cpp \
        output/audio/AudioOutput.cpp \
        output/audio/AudioOutputBackend.cpp \
        output/audio/AudioOutputNull.cpp \
        output/video/VideoRenderer.cpp \
        output/video/VideoOutput.cpp \
        output/video/QPainterRenderer.cpp \
        output/AVOutput.cpp \
        output/OutputSet.cpp \
        Statistics.cpp \
        codec/video/VideoDecoder.cpp \
        codec/video/VideoDecoderFFmpegBase.cpp \
        codec/video/VideoDecoderFFmpeg.cpp \
        codec/video/VideoDecoderFFmpegHW.cpp \
        codec/video/VideoEncoder.cpp \
        codec/video/VideoEncoderFFmpeg.cpp \
        VideoThread.cpp \
        VideoFrameExtractor.cpp
    
    SDK_HEADERS *= \
        QtAV/QtAV \
        QtAV/QtAV.h \
        QtAV/dptr.h \
        QtAV/QtAV_Global.h \
        QtAV/AudioResampler.h \
        QtAV/AudioDecoder.h \
        QtAV/AudioEncoder.h \
        QtAV/AudioFormat.h \
        QtAV/AudioFrame.h \
        QtAV/AudioOutput.h \
        QtAV/AVDecoder.h \
        QtAV/AVEncoder.h \
        QtAV/AVDemuxer.h \
        QtAV/AVMuxer.h \
        QtAV/Filter.h \
        QtAV/FilterContext.h \
        QtAV/LibAVFilter.h \
        QtAV/EncodeFilter.h \
        QtAV/Frame.h \
        QtAV/FrameReader.h \
        QtAV/QPainterRenderer.h \
        QtAV/Packet.h \
        QtAV/AVError.h \
        QtAV/AVPlayer.h \
        QtAV/AVTranscoder.h \
        QtAV/VideoCapture.h \
        QtAV/VideoRenderer.h \
        QtAV/VideoOutput.h \
        QtAV/MediaIO.h \
        QtAV/AVOutput.h \
        QtAV/AVClock.h \
        QtAV/VideoDecoder.h \
        QtAV/VideoEncoder.h \
        QtAV/VideoFormat.h \
        QtAV/VideoFrame.h \
        QtAV/VideoFrameExtractor.h \
        QtAV/FactoryDefine.h \
        QtAV/Statistics.h \
        QtAV/SubImage.h \
        QtAV/Subtitle.h \
        QtAV/SubtitleFilter.h \
        QtAV/SurfaceInterop.h \
        QtAV/version.h
    
    SDK_PRIVATE_HEADERS *= \
        QtAV/private/factory.h \
        QtAV/private/mkid.h \
        QtAV/private/prepost.h \
        QtAV/private/singleton.h \
        QtAV/private/PlayerSubtitle.h \
        QtAV/private/SubtitleProcessor.h \
        QtAV/private/AVCompat.h \
        QtAV/private/AudioOutputBackend.h \
        QtAV/private/AudioResampler_p.h \
        QtAV/private/AVDecoder_p.h \
        QtAV/private/AVEncoder_p.h \
        QtAV/private/MediaIO_p.h \
        QtAV/private/AVOutput_p.h \
        QtAV/private/Filter_p.h \
        QtAV/private/Frame_p.h \
        QtAV/private/VideoShader_p.h \
        QtAV/private/VideoRenderer_p.h \
        QtAV/private/QPainterRenderer_p.h
    
    # QtAV/private/* may be used by developers to extend QtAV features without changing QtAV library
    # headers not in QtAV/ and it's subdirs are used only by QtAV internally
    HEADERS *= \
        $$SDK_HEADERS \
        $$SDK_PRIVATE_HEADERS \
        AVPlayerPrivate.h \
        AVDemuxThread.h \
        AVThread.h \
        AVThread_p.h \
        AudioThread.h \
        PacketBuffer.h \
        VideoThread.h \
        ImageConverter.h \
        ImageConverter_p.h \
        codec/video/VideoDecoderFFmpegBase.h \
        codec/video/VideoDecoderFFmpegHW.h \
        codec/video/VideoDecoderFFmpegHW_p.h \
        filter/FilterManager.h \
        subtitle/CharsetDetector.h \
        subtitle/PlainText.h \
        utils/BlockingQueue.h \
        utils/GPUMemCopy.h \
        utils/Logger.h \
        utils/SharedPtr.h \
        utils/ring.h \
        utils/internal.h \
        output/OutputSet.h \
        ColorTransform.h
    # from mkspecs/features/qt_module.prf
    # OS X and iOS frameworks
    mac_framework { # from common.pri
       #QMAKE_FRAMEWORK_VERSION = 4.0
       CONFIG += lib_bundle sliced_bundle qt_framework
       CONFIG -= qt_install_headers #no need to install these as well
       !debug_and_release|!build_all|CONFIG(release, debug|release) {
            FRAMEWORK_HEADERS.version = Versions
            FRAMEWORK_HEADERS.files = $$SDK_HEADERS
            FRAMEWORK_HEADERS.path = Headers
    # 5.4(beta) workaround for wrong include path
    # TODO: why <QtCore/qglobal.h> can be found?
            qtAtLeast(5,3): FRAMEWORK_HEADERS.path = Headers/$$MODULE_INCNAME
            FRAMEWORK_PRIVATE_HEADERS.version = Versions
            FRAMEWORK_PRIVATE_HEADERS.files = $$SDK_PRIVATE_HEADERS
            FRAMEWORK_PRIVATE_HEADERS.path = Headers/$$VERSION/$$MODULE_INCNAME/private
            QMAKE_BUNDLE_DATA += FRAMEWORK_HEADERS FRAMEWORK_PRIVATE_HEADERS
       }
    }
    
    mac {
       CONFIG += explicitlib
       macx-g++ {
           QMAKE_CFLAGS += -fconstant-cfstrings
           QMAKE_CXXFLAGS += -fconstant-cfstrings
       }
    }
    
    unix:!mac:!cross_compile {
    icon.files = $$PWD/$${TARGET}.svg
    icon.path = /usr/share/icons/hicolor/scalable/apps
    INSTALLS += icon
    #debian
    DEB_INSTALL_LIST = .$$[QT_INSTALL_LIBS]/libQt*AV.so.*
    libqtav.target = libqtav.install
    libqtav.commands = echo \"$$join(DEB_INSTALL_LIST, \\n)\" >$$PROJECTROOT/debian/$${libqtav.target}
    QMAKE_EXTRA_TARGETS += libqtav
    target.depends *= $${libqtav.target}
    
    DEB_INSTALL_LIST = $$join(SDK_HEADERS, \\n.$$[QT_INSTALL_HEADERS]/, .$$[QT_INSTALL_HEADERS]/)
    DEB_INSTALL_LIST += .$$[QT_INSTALL_LIBS]/libQt*AV.prl .$$[QT_INSTALL_LIBS]/libQt*AV.so
    MKSPECS_DIR=$$[QT_HOST_DATA]/mkspecs # we only build deb for qt5, so QT_HOST_DATA is fine. qt4 can use $$[QMAKE_MKSPECS]
    DEB_INSTALL_LIST += .$${MKSPECS_DIR}/features/av.prf .$${MKSPECS_DIR}/modules/qt_lib_av.pri
    qtav_dev.target = qtav-dev.install
    qtav_dev.commands = echo \"$$join(DEB_INSTALL_LIST, \\n)\" >$$PROJECTROOT/debian/$${qtav_dev.target}
    QMAKE_EXTRA_TARGETS += qtav_dev
    target.depends *= $${qtav_dev.target}
    
    DEB_INSTALL_LIST = $$join(SDK_PRIVATE_HEADERS, \\n.$$[QT_INSTALL_HEADERS]/QtAV/*/, .$$[QT_INSTALL_HEADERS]/QtAV/*/)
    DEB_INSTALL_LIST += .$${MKSPECS_DIR}/modules/qt_lib_av_private.pri
    qtav_private_dev.target = qtav-private-dev.install
    qtav_private_dev.commands = echo \"$$join(DEB_INSTALL_LIST, \\n)\" >$$PROJECTROOT/debian/$${qtav_private_dev.target}
    QMAKE_EXTRA_TARGETS += qtav_private_dev
    target.depends *= $${qtav_private_dev.target}
    
    greaterThan(QT_MAJOR_VERSION, 4) {
      qtav_dev_links.target = qtav-dev.links
      qtav_dev_links.commands = echo \"$$[QT_INSTALL_LIBS]/libQtAV.so $$[QT_INSTALL_LIBS]/libQt$${QT_MAJOR_VERSION}AV.so\" >$$PROJECTROOT/debian/$${qtav_dev_links.target}
      QMAKE_EXTRA_TARGETS *= qtav_dev_links
      target.depends *= $${qtav_dev_links.target}
    } #Qt>=5
    } #debian
    
    MODULE_INCNAME = QtAV
    MODULE_VERSION = $$VERSION
    #use Qt version. limited by qmake
    # windows: Qt5AV.dll, not Qt1AV.dll
    !mac_framework: MODULE_VERSION = $${QT_MAJOR_VERSION}.$${QT_MINOR_VERSION}.$${QT_PATCH_VERSION}
    !contains(QMAKE_HOST.os, Windows):include($$PROJECTROOT/deploy.pri)
    
    

    this is MODIFIED libQtAVWidgets.pro

    just this line
    !include($$PROJECTROOT/src/libQtAV.pri): error("could not find libQtAV.pri")

    to this
    !include($$PROJECTROOT/libQtAV/libQtAV.pri): error("could not find libQtAV.pri")

    TEMPLATE = lib
    MODULE_INCNAME = QtAVWidgets # for mac framework. also used in install_sdk.pro
    TARGET = QtAVWidgets
    QT += gui
    config_gl: QT += opengl
    greaterThan(QT_MAJOR_VERSION, 4) {
      # qtHaveModule does not exist in Qt5.0
      qtHaveModule(widgets) {
        QT *= widgets
      }
      qtHaveModule(opengl) {
        QT *= opengl
      }
    }
    CONFIG *= qtavwidgets-buildlib
    
    INCLUDEPATH += $$[QT_INSTALL_HEADERS]
    #release: DEFINES += QT_NO_DEBUG_OUTPUT
    #var with '_' can not pass to pri?
    PROJECTROOT = $$PWD/..
    !include($$PROJECTROOT/libQtAV/libQtAV.pri): error("could not find libQtAV.pri")
    !include(libQtAVWidgets.pri): error("could not find libQtAVWidgets.pri")
    preparePaths($$OUT_PWD/../out)
    
    !rc_file {
        RC_ICONS = $$PROJECTROOT/src/QtAV.ico
        QMAKE_TARGET_COMPANY = "Shanghai University->S3 Graphics->Deepin | wbsecg1@gmail.com"
        QMAKE_TARGET_DESCRIPTION = "QtAVWidgets module. QtAV Multimedia framework. http://qtav.org"
        QMAKE_TARGET_COPYRIGHT = "Copyright (C) 2012-2017 WangBin, wbsecg1@gmail.com"
        QMAKE_TARGET_PRODUCT = "QtAV Widgets"
    } else:win32 {
        RC_FILE = QtAVWidgets.rc
    #no depends for rc file by default, even if rc includes a header. Makefile target use '/' as default, so not works iwth win cmd
        rc.target = $$clean_path($$RC_FILE) #rc obj depends on clean path target
        rc.depends = QtAVWidgets/version.h
    #why use multiple rule failed? i.e. add a rule without command
        isEmpty(QMAKE_SH) {
            rc.commands = @copy /B $$system_path($$RC_FILE)+,, #change file time
        } else {
            rc.commands = @touch $$RC_FILE #change file time
        }
        QMAKE_EXTRA_TARGETS += rc
    }
    
    OTHER_FILES += $$RC_FILE
    
    win32 {
    #dynamicgl: __impl__GetDC __impl_ReleaseDC
      !winrt:LIBS *= -luser32
    }
    
    SDK_HEADERS *= \
        QtAVWidgets/QtAVWidgets \
        QtAVWidgets/QtAVWidgets.h \
        QtAVWidgets/global.h \
        QtAVWidgets/version.h \
        QtAVWidgets/VideoPreviewWidget.h \
        QtAVWidgets/GraphicsItemRenderer.h \
        QtAVWidgets/WidgetRenderer.h
    
    
    SOURCES *= \
        global.cpp \
        VideoPreviewWidget.cpp \
        GraphicsItemRenderer.cpp \
        WidgetRenderer.cpp
    
    contains(QT_CONFIG, opengl):greaterThan(QT_MAJOR_VERSION, 4) {
      SDK_HEADERS *= QtAVWidgets/OpenGLWidgetRenderer.h
      SOURCES *= OpenGLWidgetRenderer.cpp
      isEqual(QT_MAJOR_VERSION, 5):lessThan(QT_MINOR_VERSION, 4) {
        SDK_HEADERS *= QtAVWidgets/QOpenGLWidget.h
        SOURCES *= QOpenGLWidget.cpp
      }
    }
    
    config_gl {
      DEFINES *= QTAV_HAVE_GL=1
      SOURCES += GLWidgetRenderer2.cpp
      SDK_HEADERS += QtAVWidgets/GLWidgetRenderer2.h
      !contains(QT_CONFIG, dynamicgl) { #dynamicgl does not support old gl1 functions which used in GLWidgetRenderer
    #GLWidgetRenderer depends on internal functions of QtAV
        #DEFINES *= QTAV_HAVE_GL1
        #SOURCES += GLWidgetRenderer.cpp
        #SDK_HEADERS += QtAVWidgets/GLWidgetRenderer.h
      }
    }
    config_gdiplus {
      DEFINES *= QTAV_HAVE_GDIPLUS=1
      SOURCES += GDIRenderer.cpp
      LIBS *= -lgdiplus -lgdi32
    }
    config_direct2d {
      DEFINES *= QTAV_HAVE_DIRECT2D=1
      !*msvc*: INCLUDEPATH += $$PROJECTROOT/contrib/d2d1headers
      SOURCES += Direct2DRenderer.cpp
      #LIBS += -lD2d1
    }
    config_xv {
      DEFINES *= QTAV_HAVE_XV=1
      SOURCES += XVRenderer.cpp
      LIBS *= -lXv -lX11 -lXext
    }
    config_x11 {
      DEFINES *= QTAV_HAVE_X11=1
      SOURCES *= X11Renderer.cpp
      LIBS *= -lX11
    }
    # QtAV/private/* may be used by developers to extend QtAV features without changing QtAV library
    # headers not in QtAV/ and it's subdirs are used only by QtAV internally
    HEADERS *= \
        $$SDK_HEADERS \
        $$SDK_PRIVATE_HEADERS
    
    # from mkspecs/features/qt_module.prf
    # OS X and iOS frameworks
    mac_framework { # from common.pri
       #QMAKE_FRAMEWORK_VERSION = 4.0
       CONFIG += lib_bundle sliced_bundle qt_framework
       CONFIG -= qt_install_headers #no need to install these as well
       !debug_and_release|!build_all|CONFIG(release, debug|release) {
            FRAMEWORK_HEADERS.version = Versions
            FRAMEWORK_HEADERS.files = $$SDK_HEADERS
            FRAMEWORK_HEADERS.path = Headers
    # 5.4(beta) workaround for wrong include path
    # TODO: why <QtCore/qglobal.h> can be found?
            qtAtLeast(5,3): FRAMEWORK_HEADERS.path = Headers/$$MODULE_INCNAME
            FRAMEWORK_PRIVATE_HEADERS.version = Versions
            FRAMEWORK_PRIVATE_HEADERS.files = $$SDK_PRIVATE_HEADERS
            FRAMEWORK_PRIVATE_HEADERS.path = Headers/$$VERSION/$$MODULE_INCNAME/private
            QMAKE_BUNDLE_DATA += FRAMEWORK_HEADERS FRAMEWORK_PRIVATE_HEADERS
       }
    }
    
    mac {
       CONFIG += explicitlib
       macx-g++ {
           QMAKE_CFLAGS += -fconstant-cfstrings
           QMAKE_CXXFLAGS += -fconstant-cfstrings
       }
    }
    
    unix:!android:!mac {
    #debian
    DEB_INSTALL_LIST = .$$[QT_INSTALL_LIBS]/libQt*AVWidgets.so.*
    libqtavwidgets.target = libqtavwidgets.install
    libqtavwidgets.commands = echo \"$$join(DEB_INSTALL_LIST, \\n)\" >$$PROJECTROOT/debian/$${libqtavwidgets.target}
    QMAKE_EXTRA_TARGETS += libqtavwidgets
    target.depends *= $${libqtavwidgets.target}
    
    DEB_INSTALL_LIST = $$join(SDK_HEADERS, \\n.$$[QT_INSTALL_HEADERS]/, .$$[QT_INSTALL_HEADERS]/)
    DEB_INSTALL_LIST += .$$[QT_INSTALL_LIBS]/libQt*AVWidgets.prl .$$[QT_INSTALL_LIBS]/libQt*AVWidgets.so
    MKSPECS_DIR=$$[QT_HOST_DATA]/mkspecs
    DEB_INSTALL_LIST += .$${MKSPECS_DIR}/features/avwidgets.prf .$${MKSPECS_DIR}/modules/qt_lib_avwidgets.pri
    qtavwidgets_dev.target = qtav-dev.install #like qtmultimedia5-dev, contains widgets headers
    qtavwidgets_dev.commands = echo \"$$join(DEB_INSTALL_LIST, \\n)\" >>$$PROJECTROOT/debian/$${qtavwidgets_dev.target}
    QMAKE_EXTRA_TARGETS += qtavwidgets_dev
    target.depends *= $${qtavwidgets_dev.target}
    
    greaterThan(QT_MAJOR_VERSION, 4) {
      qtavwidgets_dev_links.target = qtav-dev.links #like qtmultimedia5-dev, contains widgets .so
      qtavwidgets_dev_links.commands = echo \"$$[QT_INSTALL_LIBS]/libQtAVWidgets.so $$[QT_INSTALL_LIBS]/libQt$${QT_MAJOR_VERSION}AVWidgets.so\" >>$$PROJECTROOT/debian/$${qtavwidgets_dev_links.target}
      QMAKE_EXTRA_TARGETS *= qtavwidgets_dev_links
      target.depends *= $${qtavwidgets_dev_links.target}
    } #Qt>=5
    } #debian
    
    MODULE_INCNAME = QtAVWidgets
    MODULE_VERSION = $$VERSION
    #use Qt version. limited by qmake
    # windows: Qt5AV.dll, not Qt1AV.dll
    !mac_framework: MODULE_VERSION = $${QT_MAJOR_VERSION}.$${QT_MINOR_VERSION}.$${QT_PATCH_VERSION}
    !contains(QMAKE_HOST.os, Windows):include($$PROJECTROOT/deploy.pri)
    
    

    here is folder stracture

    0_1526802472554_iu.png

    i am getting this error
    0_1526802531479_iy.png

    so i just want to build the library file to minimize the player that i build.

    so where is the problem?

    1 Reply Last reply
    0
    • SGaistS Offline
      SGaistS Offline
      SGaist
      Lifetime Qt Champion
      wrote on last edited by
      #2

      Hi,

      Why did you modify that file ?

      Interested in AI ? www.idiap.ch
      Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

      S 1 Reply Last reply
      0
      • SGaistS SGaist

        Hi,

        Why did you modify that file ?

        S Offline
        S Offline
        saber
        wrote on last edited by
        #3

        @SGaist to link libqtav to libqtavwidget as i am building only the library .

        1 Reply Last reply
        0
        • SGaistS Offline
          SGaistS Offline
          SGaist
          Lifetime Qt Champion
          wrote on last edited by
          #4

          What's the problem with building QtAV completely before using it ?

          Interested in AI ? www.idiap.ch
          Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

          1 Reply Last reply
          0
          • S Offline
            S Offline
            saber
            wrote on last edited by
            #5

            i opened a issue in qtav github page here

            and to build only the library add this line in QtAV.pro and then build.

            CONFIG+=no-examples no-tests
            

            thanks.

            1 Reply Last reply
            0

            • Login

            • Login or register to search.
            • First post
              Last post
            0
            • Categories
            • Recent
            • Tags
            • Popular
            • Users
            • Groups
            • Search
            • Get Qt Extensions
            • Unsolved