root / trunk / FindFFMPEG.cmake

Revision 1422, 5.3 kB (checked in by timdewhirst, 3 months ago)

cmake
- fix FindFFMPEG to handle cases when swscale or avdevice is not present
- cleanup

Line 
1# - Try to find FFMPEG
2# Once done this will define
3
4#  FFMPEG_FOUND        - system has FFMPEG
5#  FFMPEG_INCLUDE_DIR  - the include directory
6#  FFMPEG_LIBRARY_DIR  - the directory containing the libraries
7#  FFMPEG_LIBRARIES    - Link these to use FFMPEG
8#   
9
10SET( FFMPEG_HEADERS avformat.h avcodec.h avutil.h avdevice.h swscale.h )
11if( WIN32 )
12   SET( FFMPEG_LIBRARIES avformat.lib avcodec.lib avutil.lib avdevice.lib swscale.lib )
13   FIND_PATH( FFMPEG_INCLUDE_DIR ${FFMPEG_HEADERS}
14              PATHS $ENV{FFMPEGDIR}/include/ffmpeg )
15   FIND_PATH( FFMPEG_LIBRARY_DIR ${FFMPEG_LIBRARIES}
16              PATHS $ENV{FFMPEGDIR}/lib )
17else( WIN32 )
18    INCLUDE(FindPkgConfig)
19
20    #FindAvformat
21    if ( PKG_CONFIG_FOUND )
22       pkg_check_modules( AVFORMAT libavformat )
23    endif ( PKG_CONFIG_FOUND )
24 
25    FIND_PATH( AVFORMAT_INCLUDE_DIR avformat.h
26               PATHS ${AVFORMAT_INCLUDE_DIRS}
27                     /usr/include/
28                     /usr/include/ffmpeg/
29               PATH_SUFFIXES libavformat )
30
31    FIND_LIBRARY( AVFORMAT_LIBRARY avformat
32                  PATHS ${AVFORMAT_LIBRARY_DIRS}
33                        /usr/lib/
34                        /usr/lib/ffmpeg/ )
35    #FindAvcodec
36    if ( PKG_CONFIG_FOUND )
37       pkg_check_modules( AVCODEC libavcodec )
38    endif ( PKG_CONFIG_FOUND )
39 
40    FIND_PATH( AVCODEC_INCLUDE_DIR avcodec.h
41               PATHS ${AVCODEC_INCLUDE_DIRS}
42                     /usr/include/
43                     /usr/include/ffmpeg/
44               PATH_SUFFIXES libavcodec )
45
46    FIND_LIBRARY( AVCODEC_LIBRARY avcodec
47                  PATHS ${AVCODEC_LIBRARY_DIRS}
48                        /usr/lib/
49                        /usr/lib/ffmpeg/ )
50    #FindAvutil
51    if ( PKG_CONFIG_FOUND )
52       pkg_check_modules( AVUTIL libavutil )
53    endif ( PKG_CONFIG_FOUND )
54
55    FIND_PATH( AVUTIL_INCLUDE_DIR avutil.h
56               PATHS ${AVUTIL_INCLUDE_DIRS}
57                     /usr/include/
58                     /usr/include/ffmpeg/
59               PATH_SUFFIXES libavutil )
60
61    FIND_LIBRARY( AVUTIL_LIBRARY avutil
62                  PATHS ${AVUTIL_LIBRARY_DIRS}
63                        /usr/lib/
64                        /usr/lib/ffmpeg/ )
65
66    #FindAvdevice
67    if ( PKG_CONFIG_FOUND )
68       pkg_check_modules( AVDEVICE libavdevice )
69    endif ( PKG_CONFIG_FOUND )
70
71    FIND_PATH( AVDEVICE_INCLUDE_DIR avdevice.h
72               PATHS ${AVDEVICE_INCLUDE_DIRS}
73                     /usr/include/
74                     /usr/include/ffmpeg/
75               PATH_SUFFIXES libavdevice )
76
77    FIND_LIBRARY( AVDEVICE_LIBRARY avdevice
78                  PATHS ${AVDEVICE_LIBRARY_DIRS}       
79                        /usr/lib/
80                        /usr/lib/ffmpeg/ )
81    #FindSwscale
82    if ( PKG_CONFIG_FOUND )
83       pkg_check_modules( SWSCALE libswscale )
84    endif ( PKG_CONFIG_FOUND )
85
86    FIND_PATH( SWSCALE_INCLUDE_DIR swscale.h
87               PATHS ${SWSCALE_INCLUDE_DIRS}
88                     /usr/include/
89                     /usr/include/ffmpeg/
90               PATH_SUFFIXES libswscale )
91
92    FIND_LIBRARY( SWSCALE_LIBRARY swscale
93                  PATHS ${SWSCALE_LIBRARY_DIRS}
94                        /usr/lib/
95                        /usr/lib/ffmpeg/ )
96
97endif( WIN32 )
98
99SET( FFMPEG_FOUND FALSE )
100
101IF ( AVFORMAT_INCLUDE_DIR AND AVFORMAT_LIBRARY )
102    SET ( AVFORMAT_FOUND TRUE )
103ENDIF ( AVFORMAT_INCLUDE_DIR AND AVFORMAT_LIBRARY )
104
105IF ( AVCODEC_INCLUDE_DIR AND AVCODEC_LIBRARY )
106    SET ( AVCODEC_FOUND TRUE )
107ENDIF ( AVCODEC_INCLUDE_DIR AND AVCODEC_LIBRARY )
108
109IF ( AVUTIL_INCLUDE_DIR AND AVUTIL_LIBRARY )
110    SET ( AVUTIL_FOUND TRUE )
111ENDIF ( AVUTIL_INCLUDE_DIR AND AVUTIL_LIBRARY )
112
113# it is possible that avdevice and swscale are not present;
114# - avdevice was introduced in [11077] 23/11/2007
115# - swscale is an optional GPL module; a stub exists within avcodec
116#   that is used if swscale is not present
117IF ( AVDEVICE_INCLUDE_DIR AND AVDEVICE_LIBRARY )
118    SET ( AVDEVICE_FOUND TRUE )
119ELSE ( AVDEVICE_INCLUDE_DIR AND AVDEVICE_LIBRARY )
120    SET( AVDEVICE_FOUND FALSE )
121    SET( AVDEVICE_INCLUDE_DIR "" )
122    SET( AVDEVICE_LIBRARY "" )
123ENDIF ( AVDEVICE_INCLUDE_DIR AND AVDEVICE_LIBRARY )
124
125IF ( SWSCALE_INCLUDE_DIR AND SWSCALE_LIBRARY )
126    SET ( SWSCALE_FOUND TRUE )
127ELSE ( SWSCALE_INCLUDE_DIR AND SWSCALE_LIBRARY )
128    SET( SWSCALE_FOUND FALSE )
129    SET( SWSCALE_INCLUDE_DIR "" )
130    SET( SWSCALE_LIBRARY "" )
131ENDIF ( SWSCALE_INCLUDE_DIR AND SWSCALE_LIBRARY )
132
133
134IF ( WIN32 )
135    IF ( FFMPEG_INCLUDE_DIR AND FFMPEG_LIBRARY_DIR )
136        SET( FFMPEG_FOUND TRUE )
137    ENDIF ( FFMPEG_INCLUDE_DIR AND FFMPEG_LIBRARY_DIR )
138ELSE ( WIN32 )
139    IF ( AVFORMAT_INCLUDE_DIR AND AVCODEC_INCLUDE_DIR AND AVUTIL_INCLUDE_DIR )
140        SET ( FFMPEG_FOUND TRUE )
141
142        SET ( FFMPEG_INCLUDE_DIR
143              ${AVFORMAT_INCLUDE_DIR}
144              ${AVCODEC_INCLUDE_DIR}
145              ${AVUTIL_INCLUDE_DIR}
146              ${AVDEVICE_INCLUDE_DIR}
147              ${SWSCALE_INCLUDE_DIR} )
148       
149        SET ( FFMPEG_LIBRARIES
150              ${AVFORMAT_LIBRARY}
151              ${AVCODEC_LIBRARY}
152              ${AVUTIL_LIBRARY}
153              ${AVDEVICE_LIBRARY}
154              ${SWSCALE_LIBRARY} )
155    ENDIF ( AVFORMAT_INCLUDE_DIR AND AVCODEC_INCLUDE_DIR AND AVUTIL_INCLUDE_DIR )
156ENDIF ( WIN32 )
157
Note: See TracBrowser for help on using the browser.