summaryrefslogtreecommitdiff
path: root/src/combined/ffmpeg/Makefile.am
blob: 24cab7577c9d0ad0e5708eba4c2b537abbdf8dcf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
include $(top_builddir)/misc/Makefile.plugins
include $(top_srcdir)/misc/Makefile.common

DEFAULT_INCLUDES = -I.

if HAVE_FFMPEG
ff_cppflags =  $(FFMPEG_CFLAGS) $(FFMPEG_POSTPROC_CFLAGS)
link_ffmpeg = $(FFMPEG_LIBS) $(FFMPEG_UTIL_LIBS) $(FFMPEG_POSTPROC_LIBS)
else
ff_cppflags = -I$(top_builddir)/src/libffmpeg -I$(top_srcdir)/src/libffmpeg/libavcodec -I$(top_srcdir)/src/libffmpeg/libavutil
link_ffmpeg = \
  $(top_builddir)/src/libffmpeg/libavcodec/libavcodec.la \
  $(top_builddir)/src/libffmpeg/libavutil/libavutil.la \
  $(top_builddir)/src/libffmpeg/libavcodec/libpostproc/libpostprocess.la
endif

ff_generated = \
	avcodec_video.list avcodec_audio.list \
	ff_video_list.h ff_audio_list.h

BUILT_SOURCES = $(ff_generated)

# ffmpeg_config.h is generated by configure
DISTCLEANFILES = ffmpeg_config.h $(ff_generated)

# this must always be included, even if the current machine has no DXR3...
EXTRA_DIST = ffmpeg_encoder.c \
	xine_video.list xine_audio.list mkcodeclist.pl

xineplug_LTLIBRARIES = xineplug_decode_ff.la xineplug_decode_dvaudio.la

if HAVE_DXR3
AM_CPPFLAGS = -I$(top_srcdir)/src/dxr3 $(X_CFLAGS) $(ff_cppflags) \
              $(ZLIB_CPPFLAGS)
xineplug_decode_ff_la_SOURCES = ffmpeg_decoder.c ff_audio_decoder.c ff_video_decoder.c \
                                ffmpeg_encoder.c ff_mpeg_parser.c ffmpeg_decoder.h \
				ff_mpeg_parser.h
else
AM_CPPFLAGS = $(ff_cppflags) $(ZLIB_CPPFLAGS)
xineplug_decode_ff_la_SOURCES = ffmpeg_decoder.c ff_audio_decoder.c ff_video_decoder.c \
                                ff_mpeg_parser.c ffmpeg_decoder.h ff_mpeg_parser.h
endif

xineplug_decode_ff_la_CFLAGS = $(VISIBILITY_FLAG) $(AM_CFLAGS)
xineplug_decode_ff_la_LDFLAGS = $(xineplug_ldflags) $(IMPURE_TEXT_LDFLAGS)
xineplug_decode_ff_la_LIBADD = $(XINE_LIB) $(MLIB_LIBS) -lm $(ZLIB_LIBS) \
	$(link_ffmpeg) $(PTHREAD_LIBS) $(LTLIBINTL)

xineplug_decode_dvaudio_la_CFLAGS = $(VISIBILITY_FLAG) $(AM_CFLAGS)
xineplug_decode_dvaudio_la_LDFLAGS = $(xineplug_ldflags)
xineplug_decode_dvaudio_la_SOURCES = ff_dvaudio_decoder.c
xineplug_decode_dvaudio_la_LIBADD  = $(XINE_LIB) $(LTLIBINTL)

$(top_srcdir)/src/libffmpeg/libavcodec/libavcodec.la:
	make -C $(top_srcdir)/src/libffmpeg

# Generation of ffmpeg->xine codec mapping lists (see xine_*.list).

AV_CPP = $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS)

# Extract some CODEC_ID_* from avcodec.h. Requires some sed mangling.
avcodec_audio.list: AV_CODECS:=/CODEC_ID_PCM_S16LE/,/CODEC_ID_DVD_SUBTITLE/
avcodec_video.list: AV_CODECS:=/CODEC_ID_MPEG1VIDEO/,/CODEC_ID_PCM_S16LE/

avcodec_audio.list avcodec_video.list:
	echo '#include "$(srcdir)/ffmpeg_decoder.h"' | $(AV_CPP) - |\
	  sed -e $(AV_CODECS)'! d; s/^[ \t]*//; s/[=,].*//; /^$$/ d' >$@

# Generate the mappings. These are #included where needed.
ff_%_list.h: $(srcdir)/mkcodeclist.pl avcodec_%.list $(srcdir)/xine_%.list
	$(PERL) $^ $@

ff_audio_decoder.c: ff_audio_list.h
ff_video_decoder.c: ff_video_list.h

# 'make report' prints tokens corresponding to any unhandled codecs.
report: avcodec_audio.list avcodec_video.list
	@$(top_srcdir)/src/combined/ffmpeg/mkcodeclist.pl avcodec_audio.list xine_audio.list - audio
	@$(top_srcdir)/src/combined/ffmpeg/mkcodeclist.pl avcodec_video.list xine_video.list - video

.PHONY: report