Отключаем swscale в ffmpeg

В новых чекаутах ffmpeg появились опции :

–disable-swscale disable libswscale build
–disable-swscale-alpha disable alpha channel support in swscale

Но они не работают в должном объеме, так как при использовании опции собираются все бинарники , кроме ffmpeg ( в исходники жестко вшиты либы, необходимые для работы ).

Наша задача – почистить исходники от этой либы, чтобы ffmpeg даже не знал о ее существовании.
Итак, начнем :

Качаем через svn checkout ffmpeg

cd /usr/src/

svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg

Pедактируем configure

nano configure

– swscale

– swscale_alpha

– scale_filter_deps=»swscale»

– ffmpeg_deps=»avcodec avformat swscale»
+ ffmpeg_deps=»avcodec avformat

– ffplay_deps=»avcodec avformat swscale sdl»
+ ffplay_deps=»avcodec avformat sdl»

– enable swscale
– enable swscale_alpha

– libswscale

– libswscale/$arch

– libswscale/Makefile

– get_version LIBSWSCALE libswscale/swscale.h

– pkgconfig_generate libswscale «FFmpeg image rescaling library» «$LIBSWSCALE_VERSION» «» «libavutil = $LIBAVUTIL_VERSION»

– check_ldflags ‘-Wl,-rpath-link,\$(BUILD_ROOT)/libpostproc -Wl,-rpath-link,\$(BUILD_ROOT)/libswscale -Wl,-rpath-link,\$(BUILD_ROOT)/libavfilter -Wl,-rpath-link,\$(BUILD_ROOT)/libavdevice -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavcore -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil’
+ check_ldflags ‘-Wl,-rpath-link,\$(BUILD_ROOT)/libpostproc -Wl,-rpath-link,\$(BUILD_ROOT)/libavfilter -Wl,-rpath-link,\$(BUILD_ROOT)/libavdevice -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavcore -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil’

Pедактируем ffmpeg.c

nano ffmpeg.c

– static unsigned int sws_flags = SWS_BICUBIC;

– sws_freeContext(ost->img_resample_ctx);

Pедактируем cmdutils.c

nano cmdutils.c

– PRINT_LIB_INFO(outstream, swscale, SWSCALE, flags);

Pедактируем ffmpeg/libavfilter/vf_scale.c

nano ffmpeg/libavfilter/vf_scale.c

– scale->sws = sws_getContext(inlink ->w, inlink ->h, inlink ->format,
– outlink->w, outlink->h, outlink->format,
– scale->flags, NULL, NULL, NULL);

– out_h = sws_scale(scale->sws, data, cur_pic->linesize, y, h,
– link->dst->outputs[0]->out_buf->data,
– link->dst->outputs[0]->out_buf->linesize);

– if ( sws_isSupportedInput(pix_fmt)
– && (ret = avfilter_add_format(&formats, pix_fmt)) < 0) {
– avfilter_formats_unref(&formats);
– return ret;
– }

– if ( sws_isSupportedOutput(pix_fmt)
– && (ret = avfilter_add_format(&formats, pix_fmt)) < 0) {
– avfilter_formats_unref(&formats);
– return ret;
– }

– sws_freeContext(scale->sws);
– scale->sws = NULL;

Собираем исходники и ставим ffmpeg на сервер :

./configure
make
make install

Вуаля :

server:/usr/src/ffmpeg# ffmpeg
FFmpeg version SVN-r26402, Copyright (c) 2000-2011 the FFmpeg developers
built on Sep 28 2011 12:27:14 with gcc 4.3.2
configuration:
libavutil 50.36. 0 / 50.36. 0
libavcore 0.16. 1 / 0.16. 1
libavcodec 52.108. 0 / 52.108. 0
libavformat 52.93. 0 / 52.93. 0
libavdevice 52. 2. 3 / 52. 2. 3
libavfilter 1.74. 0 / 1.74. 0
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]… {[outfile options] outfile}…

Use -h to get full help or, even better, run ‘man ffmpeg’

Теги:

Ви повинні залогінитися ,щоб залишити коментар.