You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

642 lines
14 KiB

  1. #
  2. # Copyright (C) 2006-2016 OpenWrt.org
  3. #
  4. # This is free software, licensed under the GNU General Public License v2.
  5. # See /LICENSE for more information.
  6. #
  7. include $(TOPDIR)/rules.mk
  8. PKG_NAME:=ffmpeg
  9. PKG_VERSION:=2.8.8
  10. PKG_RELEASE:=1
  11. PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
  12. PKG_SOURCE_URL:=http://ffmpeg.org/releases/
  13. PKG_MD5SUM:=5fae1ba5a5d37a2d0de750479b7270d4
  14. PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
  15. PKG_LICENSE:=LGPL-2.1+ GPL-2+ LGPL-3
  16. PKG_LICENSE_FILES:=COPYING.GPLv2 COPYING.GPLv3 COPYING.LGPLv2.1 COPYING.LGPLv3
  17. FFMPEG_CUSTOM_ENCODERS:= \
  18. ac3 \
  19. jpegls \
  20. mpeg1video \
  21. mpeg2video \
  22. mpeg4 \
  23. pcm_s16be \
  24. pcm_s16le \
  25. png \
  26. vorbis \
  27. zlib \
  28. FFMPEG_CUSTOM_DECODERS:= \
  29. aac \
  30. ac3 \
  31. alac \
  32. amrnb \
  33. amrwb \
  34. ape \
  35. atrac3 \
  36. flac \
  37. gif \
  38. h264 \
  39. hevc \
  40. jpegls \
  41. mp2 \
  42. mp3 \
  43. mpeg1video \
  44. mpeg2video \
  45. mpeg4 \
  46. mpegvideo \
  47. mpc7 \
  48. mpc8 \
  49. pcm_s16be \
  50. pcm_s16le \
  51. png \
  52. vc1 \
  53. vorbis \
  54. wavpack \
  55. wmav1 \
  56. wmav2 \
  57. zlib \
  58. FFMPEG_CUSTOM_MUXERS:= \
  59. ac3 \
  60. ffm \
  61. h264 \
  62. hevc \
  63. mp3 \
  64. mp4 \
  65. mpeg1video \
  66. mpeg2video \
  67. mpegts \
  68. ogg \
  69. rtp \
  70. FFMPEG_CUSTOM_DEMUXERS:= \
  71. aac \
  72. ac3 \
  73. amr \
  74. ape \
  75. avi \
  76. flac \
  77. ffm \
  78. h264 \
  79. hevc \
  80. matroska \
  81. mov \
  82. mp3 \
  83. mpegps \
  84. mpegts \
  85. mpegvideo \
  86. mpc \
  87. mpc8 \
  88. ogg \
  89. rm \
  90. rtsp \
  91. rtp \
  92. sdp \
  93. v4l2 \
  94. vc1 \
  95. wav \
  96. wv \
  97. FFMPEG_CUSTOM_PARSERS:= \
  98. aac \
  99. flac \
  100. ac3 \
  101. h264 \
  102. hevc \
  103. mpegaudio \
  104. mpeg4video \
  105. mpegvideo \
  106. vc1 \
  107. FFMPEG_CUSTOM_PROTOCOLS:= \
  108. file http icecast pipe rtp tcp udp
  109. FFMPEG_MINI_DECODERS:= \
  110. aac \
  111. ac3 \
  112. flac \
  113. h264 \
  114. hevc \
  115. jpegls \
  116. mp3 \
  117. mpeg1video \
  118. mpeg2video \
  119. mpeg4 \
  120. mpegvideo \
  121. opus \
  122. png \
  123. vc1 \
  124. vorbis \
  125. wmav1 \
  126. wmav2 \
  127. FFMPEG_MINI_DEMUXERS:= \
  128. avi \
  129. flac \
  130. matroska \
  131. mov \
  132. mp3 \
  133. mpegts \
  134. mpegvideo \
  135. ogg \
  136. FFMPEG_MINI_PROTOCOLS:= \
  137. file \
  138. FFMPEG_AUDIO_DECODERS:= \
  139. aac \
  140. aac_latm \
  141. ac3 \
  142. adpcm_* \
  143. alac \
  144. amrnb \
  145. amrwb \
  146. ape \
  147. atrac3 \
  148. flac \
  149. mp2 \
  150. mp3* \
  151. mpc7 \
  152. mpc8 \
  153. opus \
  154. pcm_* \
  155. vorbis \
  156. wavpack \
  157. wmav1 \
  158. wmav2 \
  159. wmalossless \
  160. wmapro \
  161. zlib \
  162. FFMPEG_AUDIO_DEMUXERS:= \
  163. aac \
  164. ac3 \
  165. aiff \
  166. amr \
  167. ape \
  168. avi \
  169. flac \
  170. ffm \
  171. matroska \
  172. mp3 \
  173. mov \
  174. mpc \
  175. mpc8 \
  176. mpegts \
  177. ogg \
  178. rm \
  179. rtsp \
  180. rtp \
  181. sdp \
  182. wav \
  183. wv \
  184. FFMPEG_AUDIO_PARSERS:= \
  185. aac \
  186. aac_latm \
  187. ac3 \
  188. flac \
  189. mpegaudio \
  190. opus \
  191. FFMPEG_AUDIO_PROTOCOLS:= \
  192. file http icecast rtp tcp udp
  193. PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
  194. PKG_CONFIG_DEPENDS:= \
  195. $(patsubst %,CONFIG_FFMPEG_CUSTOM_ENCODER_%,$(FFMPEG_CUSTOM_ENCODERS)) \
  196. $(patsubst %,CONFIG_FFMPEG_CUSTOM_DECODER_%,$(FFMPEG_CUSTOM_DECODERS)) \
  197. $(patsubst %,CONFIG_FFMPEG_CUSTOM_MUXER_%,$(FFMPEG_CUSTOM_DEMUXERS)) \
  198. $(patsubst %,CONFIG_FFMPEG_CUSTOM_DEMUXER_%,$(FFMPEG_CUSTOM_DEMUXERS)) \
  199. $(patsubst %,CONFIG_FFMPEG_CUSTOM_PARSER_%,$(FFMPEG_CUSTOM_PARSERS)) \
  200. $(patsubst %,CONFIG_FFMPEG_CUSTOM_PROTOCOL_%,$(FFMPEG_CUSTOM_PROTOCOLS))
  201. include $(INCLUDE_DIR)/package.mk
  202. define Package/ffmpeg/Default
  203. TITLE:=FFmpeg
  204. URL:=http://ffmpeg.mplayerhq.hu/
  205. endef
  206. define Package/ffmpeg/Default/description
  207. FFmpeg is a a software package that can record, convert and stream digital
  208. audio and video in numerous formats.
  209. endef
  210. define Package/ffmpeg
  211. $(call Package/ffmpeg/Default)
  212. SECTION:=multimedia
  213. CATEGORY:=Multimedia
  214. TITLE+= program
  215. DEPENDS+= +libpthread +libffmpeg-full
  216. VARIANT:=full
  217. endef
  218. define Package/ffmpeg/description
  219. $(call Package/ffmpeg/Default/description)
  220. .
  221. This package contains the FFmpeg command line tool.
  222. endef
  223. define Package/ffprobe
  224. $(call Package/ffmpeg/Default)
  225. SECTION:=multimedia
  226. CATEGORY:=Multimedia
  227. TITLE+= CLI media identifier
  228. DEPENDS+= +libffmpeg-full
  229. VARIANT:=full
  230. endef
  231. define Package/ffprobe/description
  232. $(call Package/ffmpeg/Default/description)
  233. .
  234. This package contains the FFprobe command line tool.
  235. endef
  236. define Package/ffserver
  237. $(call Package/ffserver/Default)
  238. SECTION:=multimedia
  239. CATEGORY:=Multimedia
  240. TITLE+= streaming server
  241. DEPENDS+= +libpthread +libffmpeg-full
  242. VARIANT:=full
  243. endef
  244. define Package/ffserver/description
  245. $(call Package/ffmpeg/Default/description)
  246. .
  247. This package contains the FFmpeg streaming server.
  248. endef
  249. define Package/libffmpeg/Default
  250. $(call Package/ffmpeg/Default)
  251. SECTION:=libs
  252. CATEGORY:=Libraries
  253. TITLE+= libraries
  254. DEPENDS+= @BUILD_PATENTED +libpthread +zlib +libbz2
  255. PROVIDES:= libffmpeg
  256. endef
  257. define Package/libffmpeg-custom
  258. $(call Package/libffmpeg/Default)
  259. TITLE+= (custom)
  260. DEPENDS+= +FFMPEG_CUSTOM_SELECT_libopus:libopus +FFMPEG_CUSTOM_SELECT_speex:libspeex \
  261. +PACKAGE_libx264:libx264 +PACKAGE_lame-lib:lame-lib
  262. VARIANT:=custom
  263. MENU:=1
  264. endef
  265. define Package/libffmpeg-custom/config
  266. source "$(SOURCE)/Config.in"
  267. endef
  268. define Package/libffmpeg-custom/description
  269. $(call Package/ffmpeg/Default/description)
  270. .
  271. This package contains customized FFmpeg shared libraries.
  272. endef
  273. define Package/libffmpeg-audio-dec
  274. $(call Package/libffmpeg/Default)
  275. TITLE+= (audio)
  276. DEPENDS+= +libspeex
  277. VARIANT:=audio-dec
  278. endef
  279. define Package/libffmpeg-audio-dec/description
  280. $(call Package/ffmpeg/Default/description)
  281. .
  282. This package contains FFmpeg shared libraries for audio decoding
  283. endef
  284. define Package/libffmpeg-full
  285. $(call Package/libffmpeg/Default)
  286. TITLE+= (full)
  287. DEPENDS+= +alsa-lib +PACKAGE_libx264:libx264 +PACKAGE_lame-lib:lame-lib +libopus +libspeex
  288. VARIANT:=full
  289. endef
  290. define Package/libffmpeg-full/description
  291. $(call Package/ffmpeg/Default/description)
  292. .
  293. This package contains full-featured FFmpeg shared libraries.
  294. endef
  295. define Package/libffmpeg-mini
  296. $(call Package/libffmpeg/Default)
  297. TITLE+= (mini)
  298. VARIANT:=mini
  299. endef
  300. define Package/libffmpeg-mini/description
  301. $(call Package/ffmpeg/Default/description)
  302. .
  303. This package contains minimal-featured FFmpeg shared libraries.
  304. endef
  305. FFMPEG_CONFIGURE:= \
  306. CFLAGS="$(TARGET_CFLAGS) $(TARGET_CPPFLAGS) $(FPIC)" \
  307. LDFLAGS="$(TARGET_LDFLAGS)" \
  308. ./configure \
  309. --enable-cross-compile \
  310. --cross-prefix="$(TARGET_CROSS)" \
  311. --arch="$(ARCH)" \
  312. --target-os=linux \
  313. --prefix="/usr" \
  314. --pkg-config="pkg-config" \
  315. --enable-shared \
  316. --enable-static \
  317. --enable-small \
  318. --enable-pthreads \
  319. --enable-zlib \
  320. --disable-doc \
  321. --disable-debug \
  322. \
  323. --enable-gpl \
  324. --enable-version3 \
  325. \
  326. --disable-dxva2 \
  327. --disable-lzma \
  328. --disable-vaapi \
  329. --disable-vda \
  330. --disable-vdpau \
  331. --disable-outdevs
  332. ifeq ($(CONFIG_SOFT_FLOAT),y)
  333. FFMPEG_CONFIGURE += \
  334. --disable-altivec \
  335. --disable-amd3dnow \
  336. --disable-amd3dnowext \
  337. --disable-mmx \
  338. --disable-mmxext \
  339. --disable-sse \
  340. --disable-sse2 \
  341. --disable-sse3 \
  342. --disable-ssse3 \
  343. --disable-sse4 \
  344. --disable-sse42 \
  345. --disable-avx \
  346. --disable-xop \
  347. --disable-fma3 \
  348. --disable-fma4 \
  349. --disable-avx2 \
  350. --disable-inline-asm \
  351. --disable-mips32r2 \
  352. --disable-mipsdspr1 \
  353. --disable-mipsdspr2 \
  354. --disable-mipsfpu \
  355. --disable-runtime-cpudetect
  356. else ifneq ($(findstring arm,$(CONFIG_ARCH)),)
  357. FFMPEG_CONFIGURE += \
  358. --disable-runtime-cpudetect
  359. endif
  360. ifneq ($(CONFIG_YASM),y)
  361. FFMPEG_CONFIGURE += \
  362. --disable-yasm
  363. endif
  364. #selectibly disable optimizations according to arch/cpu type
  365. ifneq ($(findstring arm,$(CONFIG_ARCH)),)
  366. ifeq (,$(findstring vfp,$(CONFIG_TARGET_OPTIMIZATION)))
  367. FFMPEG_CONFIGURE+= \
  368. --disable-vfp
  369. endif
  370. ifeq (,$(findstring neon,$(CONFIG_TARGET_OPTIMIZATION)))
  371. FFMPEG_CONFIGURE+= \
  372. --disable-neon
  373. endif
  374. endif
  375. ifeq ($(BUILD_VARIANT),full)
  376. FFMPEG_CONFIGURE+= \
  377. --enable-libopus --enable-decoder=libopus \
  378. --enable-libspeex --enable-decoder=libspeex \
  379. $(if $(CONFIG_PACKAGE_libx264),--enable-libx264) \
  380. $(if $(CONFIG_PACKAGE_lame-lib),--enable-libmp3lame)
  381. endif
  382. ifeq ($(BUILD_VARIANT),custom)
  383. FFMPEG_ENABLE= \
  384. $(foreach c, $(2), \
  385. $(if $($(3)_$(c)),--enable-$(1)="$(c)") \
  386. )
  387. FFMPEG_CONFIGURE+= \
  388. --disable-programs \
  389. --disable-avfilter \
  390. --disable-postproc \
  391. --disable-swresample \
  392. --disable-swscale \
  393. --disable-everything \
  394. $(call FFMPEG_ENABLE,encoder,$(FFMPEG_CUSTOM_ENCODERS),CONFIG_FFMPEG_CUSTOM_ENCODER) \
  395. $(call FFMPEG_ENABLE,decoder,$(FFMPEG_CUSTOM_DECODERS),CONFIG_FFMPEG_CUSTOM_DECODER) \
  396. $(call FFMPEG_ENABLE,muxer,$(FFMPEG_CUSTOM_MUXERS),CONFIG_FFMPEG_CUSTOM_MUXER) \
  397. $(call FFMPEG_ENABLE,demuxer,$(FFMPEG_CUSTOM_DEMUXERS),CONFIG_FFMPEG_CUSTOM_DEMUXER) \
  398. $(call FFMPEG_ENABLE,parser,$(FFMPEG_CUSTOM_PARSERS),CONFIG_FFMPEG_CUSTOM_PARSER) \
  399. $(call FFMPEG_ENABLE,protocol,$(FFMPEG_CUSTOM_PROTOCOLS),CONFIG_FFMPEG_CUSTOM_PROTOCOL) \
  400. ifeq ($(CONFIG_FFMPEG_CUSTOM_SELECT_adpcm),y)
  401. FFMPEG_CONFIGURE+= \
  402. --enable-decoder=adpcm_ima_wav \
  403. --enable-decoder=adpcm_ima_qt \
  404. --enable-decoder=adpcm_ms \
  405. endif
  406. ifeq ($(CONFIG_FFMPEG_CUSTOM_SELECT_libopus),y)
  407. FFMPEG_CONFIGURE+= \
  408. --enable-libopus --enable-decoder=libopus
  409. endif
  410. ifeq ($(CONFIG_FFMPEG_CUSTOM_SELECT_speex),y)
  411. FFMPEG_CONFIGURE+= \
  412. --enable-libspeex --enable-decoder=libspeex
  413. endif
  414. ifeq ($(CONFIG_FFMPEG_CUSTOM_SELECT_x264),y)
  415. FFMPEG_CONFIGURE+= \
  416. --enable-libx264
  417. endif
  418. ifeq ($(CONFIG_FFMPEG_CUSTOM_SELECT_mp3lame),y)
  419. FFMPEG_CONFIGURE+= \
  420. --enable-libmp3lame
  421. endif
  422. endif
  423. ifeq ($(BUILD_VARIANT),audio-dec)
  424. FFMPEG_ENABLE= \
  425. $(foreach c, $(2), \
  426. --enable-$(1)="$(c)" \
  427. )
  428. FFMPEG_CONFIGURE+= \
  429. --disable-programs \
  430. --disable-avfilter \
  431. --disable-postproc \
  432. --disable-swresample \
  433. --disable-swscale \
  434. --disable-everything \
  435. $(call FFMPEG_ENABLE,decoder,$(FFMPEG_AUDIO_DECODERS)) \
  436. $(call FFMPEG_ENABLE,demuxer,$(FFMPEG_AUDIO_DEMUXERS)) \
  437. $(call FFMPEG_ENABLE,parser,$(FFMPEG_AUDIO_PARSERS)) \
  438. $(call FFMPEG_ENABLE,protocol,$(FFMPEG_AUDIO_PROTOCOLS)) \
  439. --enable-libspeex --enable-decoder=libspeex \
  440. --disable-decoder=pcm_bluray,pcm_dvd \
  441. endif
  442. ifeq ($(BUILD_VARIANT),mini)
  443. FFMPEG_ENABLE= \
  444. $(foreach c, $(2), \
  445. --enable-$(1)="$(c)" \
  446. )
  447. FFMPEG_CONFIGURE+= \
  448. --disable-programs \
  449. --disable-avdevice \
  450. --disable-avfilter \
  451. --disable-postproc \
  452. --disable-swresample \
  453. --disable-swscale \
  454. --disable-everything \
  455. $(call FFMPEG_ENABLE,decoder,$(FFMPEG_MINI_DECODERS)) \
  456. $(call FFMPEG_ENABLE,demuxer,$(FFMPEG_MINI_DEMUXERS)) \
  457. $(call FFMPEG_ENABLE,protocol,$(FFMPEG_MINI_PROTOCOLS)) \
  458. endif
  459. ifneq ($(CONFIG_TARGET_x86),)
  460. TARGET_CFLAGS += -fomit-frame-pointer
  461. endif
  462. define Build/Configure
  463. ( cd $(PKG_BUILD_DIR); $(FFMPEG_CONFIGURE) )
  464. endef
  465. define Build/Compile
  466. $(MAKE) -C $(PKG_BUILD_DIR) \
  467. DESTDIR="$(PKG_INSTALL_DIR)" \
  468. all install
  469. endef
  470. define Build/InstallDev/custom
  471. $(INSTALL_DIR) $(1)/usr/include
  472. $(CP) $(PKG_INSTALL_DIR)/usr/include/lib{avcodec,avdevice,avformat,avutil} $(1)/usr/include/
  473. $(INSTALL_DIR) $(1)/usr/lib
  474. $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{avcodec,avdevice,avformat,avutil}.{a,so*} $(1)/usr/lib/
  475. $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
  476. $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/lib{avcodec,avdevice,avformat,avutil}.pc $(1)/usr/lib/pkgconfig/
  477. endef
  478. define Build/InstallDev/full
  479. $(INSTALL_DIR) $(1)/usr/include
  480. $(CP) $(PKG_INSTALL_DIR)/usr/include/lib{avcodec,avdevice,avfilter,avformat,avutil,postproc,swresample,swscale} $(1)/usr/include/
  481. $(INSTALL_DIR) $(1)/usr/lib
  482. $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{avcodec,avdevice,avfilter,avformat,avutil,postproc,swresample,swscale}.{a,so*} $(1)/usr/lib/
  483. $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
  484. $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/lib{avcodec,avdevice,avfilter,avformat,avutil,postproc,swresample,swscale}.pc $(1)/usr/lib/pkgconfig/
  485. endef
  486. define Build/InstallDev/mini
  487. $(INSTALL_DIR) $(1)/usr/include
  488. $(CP) $(PKG_INSTALL_DIR)/usr/include/lib{avcodec,avformat,avutil} $(1)/usr/include/
  489. $(INSTALL_DIR) $(1)/usr/lib
  490. $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{avcodec,avformat,avutil}.{a,so*} $(1)/usr/lib/
  491. $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
  492. $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/lib{avcodec,avformat,avutil}.pc $(1)/usr/lib/pkgconfig/
  493. endef
  494. Build/InstallDev/audio-dec = $(Build/InstallDev/custom)
  495. # XXX: attempt at installing "best" dev files available
  496. ifeq ($(BUILD_VARIANT),custom)
  497. # XXX: only install "custom" dev files if -full & -mini are not selected
  498. ifeq ($(CONFIG_PACKAGE_libffmpeg-full)$(CONFIG_PACKAGE_libffmpeg-mini),)
  499. Build/InstallDev = $(Build/InstallDev/custom)
  500. endif
  501. endif
  502. ifeq ($(BUILD_VARIANT),audio-dec)
  503. # XXX: only install "audio-dec" dev files if -full & -mini are not selected
  504. ifeq ($(CONFIG_PACKAGE_libffmpeg-full)$(CONFIG_PACKAGE_libffmpeg-mini),)
  505. Build/InstallDev = $(Build/InstallDev/audio-dec)
  506. endif
  507. endif
  508. ifeq ($(BUILD_VARIANT),full)
  509. # XXX: always install "full" dev files if -full is selected
  510. Build/InstallDev = $(Build/InstallDev/full)
  511. endif
  512. ifeq ($(BUILD_VARIANT),mini)
  513. # XXX: only install "mini" dev files if -full is not selected
  514. ifeq ($(CONFIG_PACKAGE_libffmpeg-full),)
  515. Build/InstallDev = $(Build/InstallDev/mini)
  516. endif
  517. endif
  518. define Package/ffmpeg/install
  519. $(INSTALL_DIR) $(1)/usr/bin
  520. $(CP) $(PKG_INSTALL_DIR)/usr/bin/ffmpeg $(1)/usr/bin/
  521. endef
  522. define Package/ffprobe/install
  523. $(INSTALL_DIR) $(1)/usr/bin
  524. $(CP) $(PKG_INSTALL_DIR)/usr/bin/ffprobe $(1)/usr/bin/
  525. endef
  526. define Package/ffserver/install
  527. $(INSTALL_DIR) $(1)/usr/bin
  528. $(CP) $(PKG_INSTALL_DIR)/usr/bin/ffserver $(1)/usr/bin/
  529. endef
  530. define Package/libffmpeg-custom/install
  531. $(INSTALL_DIR) $(1)/usr/lib
  532. $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{avcodec,avdevice,avformat,avutil}.so.* $(1)/usr/lib/
  533. endef
  534. define Package/libffmpeg-full/install
  535. $(INSTALL_DIR) $(1)/usr/lib
  536. $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{avcodec,avdevice,avfilter,avformat,avutil,postproc,swresample,swscale}.so.* $(1)/usr/lib/
  537. endef
  538. define Package/libffmpeg-mini/install
  539. $(INSTALL_DIR) $(1)/usr/lib
  540. $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{avcodec,avformat,avutil}.so.* $(1)/usr/lib/
  541. endef
  542. Package/libffmpeg-audio-dec/install = $(Package/libffmpeg-custom/install)
  543. $(eval $(call BuildPackage,ffmpeg))
  544. $(eval $(call BuildPackage,ffprobe))
  545. $(eval $(call BuildPackage,ffserver))
  546. $(eval $(call BuildPackage,libffmpeg-audio-dec))
  547. $(eval $(call BuildPackage,libffmpeg-full))
  548. $(eval $(call BuildPackage,libffmpeg-mini))
  549. ifneq ($(CONFIG_ALL),y)
  550. $(eval $(call BuildPackage,libffmpeg-custom))
  551. endif