VMware+Ubuntu16.04
jdk1.8.0_151,android-ndk-r10e(注意此处有大坑),android-sdk
Ubuntu下搭建android开发环境
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android
cd ijkplayer-android
git checkout -B latest k0.8.4
./init-android.sh
cd android/contrib
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all
cd ..
./compile-ijk.sh all
运行中可能会出现一些权限问题,通过手动chmod 777 file 或su root等逐个赋权限处理解决;
然后执行:
./compile-ffmpeg.sh all
有可能会出现一种情况,如下图所示:
configurate ffmpeg完就停了,output文件夹也确实创建了,但是里面是空的,不上不下的,日志里也不报错误,搞了好久,后来我觉得可能是ndk问题,把ndk-r13 ,r15,r16全试了一遍,结果都这样,结果换了个r10e,解决,下面是其中一个cpu版本的编译日志:
--------------------
[*] create files for shared ffmpeg
--------------------
====================
[*] check env x86_64
====================
FF_ARCH=x86_64
FF_BUILD_OPT=
--------------------
[*] make NDK standalone toolchain
--------------------
build on Linux x86_64
ANDROID_NDK=/home/lcp/Aislli/Dev/android-ndk-r10e
NDKr10e-rc4(64-bit) detected
WARNING: The shell running this script isn't bash. Although we try to avoid bashism in scripts, things can happen.
Auto-truncate: --toolchain=x86_64-4.9
Copying prebuilt binaries...
Copying sysroot headers and libraries...
Copying c++ runtime headers and libraries...
Copying files to: /home/lcp/Aislli/source/ijkplayer/ijkplayer-android/android/contrib/build/ffmpeg-x86_64/toolchain
Cleaning up...
Done.
--------------------
[*] check ffmpeg env
--------------------
--------------------
[*] configurate ffmpeg
--------------------
/home/lcp/Aislli/source/ijkplayer/ijkplayer-android/android/contrib/build/ffmpeg-x86_64/toolchain/bin//x86_64-linux-android-gcc
install prefix /home/lcp/Aislli/source/ijkplayer/ijkplayer-android/android/contrib/build/ffmpeg-x86_64/output
source path .
C compiler x86_64-linux-android-gcc
C library bionic
host C compiler gcc
host C library glibc
ARCH x86 (generic)
big-endian no
runtime cpu detection yes
yasm yes
MMX enabled yes
MMXEXT enabled yes
3DNow! enabled yes
3DNow! extended enabled yes
SSE enabled yes
SSSE3 enabled yes
AESNI enabled yes
AVX enabled yes
XOP enabled yes
FMA3 enabled yes
FMA4 enabled yes
i686 features enabled yes
CMOV is fast yes
EBX available yes
EBP available yes
debug symbols yes
strip symbols yes
optimize for size yes
optimizations yes
static yes
shared no
postprocessing support no
network support yes
threading support pthreads
safe bitstream reader yes
texi2html enabled no
perl enabled yes
pod2man enabled yes
makeinfo enabled no
makeinfo supports HTML no
External libraries:
xlib zlib
External libraries providing hardware acceleration:
cuda cuvid nvenc
Libraries:
avcodec avformat swresample
avfilter avutil swscale
Programs:
Enabled decoders:
aac aura ffv1
aac_fixed aura2 ffvhuff
aac_latm avrn ffwavesynth
aasc avrp fic
ac3 avs flac
ac3_fixed avui flashsv
adpcm_4xm ayuv flashsv2
adpcm_adx bethsoftvid flic
adpcm_afc bfi flv
adpcm_aica bink fmvc
adpcm_ct binkaudio_dct fourxm
adpcm_dtk binkaudio_rdft fraps
adpcm_ea bintext frwu
adpcm_ea_maxis_xa bmp g2m
adpcm_ea_r1 bmv_audio g723_1
adpcm_ea_r2 bmv_video g729
adpcm_ea_r3 brender_pix gif
adpcm_ea_xas c93 gsm
adpcm_g722 cavs gsm_ms
adpcm_g726 ccaption h261
adpcm_g726le cdgraphics h263
adpcm_ima_amv cdxl h263i
adpcm_ima_apc cfhd h263p
adpcm_ima_dat4 cinepak h264
adpcm_ima_dk3 clearvideo h264_cuvid
adpcm_ima_dk4 cljr hap
adpcm_ima_ea_eacs cllc hevc
adpcm_ima_ea_sead comfortnoise hevc_cuvid
adpcm_ima_iss cook hnm4_video
adpcm_ima_oki cpia hq_hqa
adpcm_ima_qt cscd hqx
adpcm_ima_rad cyuv huffyuv
adpcm_ima_smjpeg dca iac
adpcm_ima_wav dds idcin
adpcm_ima_ws dfa idf
adpcm_ms dirac iff_ilbm
adpcm_mtaf dnxhd imc
adpcm_psx dpx indeo2
adpcm_sbpro_2 dsd_lsbf indeo3
adpcm_sbpro_3 dsd_lsbf_planar indeo4
adpcm_sbpro_4 dsd_msbf indeo5
adpcm_swf dsd_msbf_planar interplay_acm
adpcm_thp dsicinaudio interplay_dpcm
adpcm_thp_le dsicinvideo interplay_video
adpcm_vima dss_sp jacosub
adpcm_xa dst jpeg2000
adpcm_yamaha dvaudio jpegls
aic dvbsub jv
alac dvdsub kgv1
alias_pix dvvideo kmvc
als dxa lagarith
amrnb dxtory loco
amrwb dxv m101
amv eac3 mace3
anm eacmv mace6
ansi eamad magicyuv
ape eatgq mdec
apng eatgv metasound
ass eatqi microdvd
asv1 eightbps mimic
asv2 eightsvx_exp mjpeg
atrac1 eightsvx_fib mjpeg_cuvid
atrac3 escape124 mjpegb
atrac3al escape130 mlp
atrac3p evrc mmvideo
atrac3pal exr motionpixels
movtext pcm_s8 ssa
mp1 pcm_s8_planar stl
mp1float pcm_u16be subrip
mp2 pcm_u16le subviewer
mp2float pcm_u24be subviewer1
mp3 pcm_u24le sunrast
mp3adu pcm_u32be svq1
mp3adufloat pcm_u32le svq3
mp3float pcm_u8 tak
mp3on4 pcm_zork targa
mp3on4float pcx targa_y216
mpc7 pgm tdsc
mpc8 pgmyuv text
mpeg1_cuvid pgssub theora
mpeg1video pictor thp
mpeg2_cuvid pixlet tiertexseqvideo
mpeg2video pjs tiff
mpeg4 png tmv
mpeg4_cuvid ppm truehd
mpegvideo prores truemotion1
mpl2 prores_lgpl truemotion2
msa1 psd truemotion2rt
msmpeg4v1 ptx truespeech
msmpeg4v2 qcelp tscc
msmpeg4v3 qdm2 tscc2
msrle qdmc tta
mss1 qdraw twinvq
mss2 qpeg txd
msvideo1 qtrle ulti
mszh r10k utvideo
mts2 r210 v210
mvc1 ra_144 v210x
mvc2 ra_288 v308
mxpeg ralf v408
nellymoser rawvideo v410
nuv realtext vb
on2avc rl2 vble
opus roq vc1
paf_audio roq_dpcm vc1_cuvid
paf_video rpza vc1image
pam rscc vcr1
pbm rv10 vmdaudio
pcm_alaw rv20 vmdvideo
pcm_bluray rv30 vmnc
pcm_dvd rv40 vorbis
pcm_f16le s302m vp3
pcm_f24le sami vp5
pcm_f32be sanm vp6
pcm_f32le scpr vp6a
pcm_f64be screenpresso vp6f
pcm_f64le sdx2_dpcm vp7
pcm_lxf sgi vp8
pcm_mulaw sgirle vp8_cuvid
pcm_s16be sheervideo vp9
pcm_s16be_planar shorten vp9_cuvid
pcm_s16le sipr vplayer
pcm_s16le_planar smackaud vqa
pcm_s24be smacker wavpack
pcm_s24daud smc webp
pcm_s24le smvjpeg webvtt
pcm_s24le_planar snow wmalossless
pcm_s32be sol_dpcm wmapro
pcm_s32le sonic wmav1
pcm_s32le_planar sp5x wmav2
pcm_s64be speedhq wmavoice
pcm_s64le srt wmv1
wmv2 xbm y41p
wmv3 xface ylc
wmv3image xl yop
wnv1 xma1 yuv4
ws_snd1 xma2 zero12v
xan_dpcm xpm zerocodec
xan_wc3 xsub zlib
xan_wc4 xwd zmbv
xbin
Enabled encoders:
Enabled hwaccels:
Enabled parsers:
aac dvdsub opus
aac_latm flac png
ac3 g729 pnm
adx gsm rv30
bmp h261 rv40
cavsvideo h263 sipr
cook h264 tak
dca hevc vc1
dirac mjpeg vorbis
dnxhd mlp vp3
dpx mpeg4video vp8
dvaudio mpegaudio vp9
dvbsub mpegvideo xma
dvd_nav
Enabled demuxers:
aa flic mgsts
aac flv microdvd
ac3 fourxm mjpeg
acm frm mjpeg_2000
act fsb mlp
adf g722 mlv
adp g723_1 mm
ads g729 mmf
adx genh mov
aea gif mp3
afc gsm mpc
aiff gxf mpc8
aix h261 mpegps
amr h263 mpegts
anm h264 mpegtsraw
apc hevc mpegvideo
ape hls mpjpeg
apng hnm mpl2
aqtitle ico mpsub
asf idcin msf
asf_o idf msnwc_tcp
ass iff mtaf
ast ilbc mtv
au image2 musx
avi image2_alias_pix mv
avr image2_brender_pix mvi
avs image2pipe mxf
bethsoftvid image_bmp_pipe mxg
bfi image_dds_pipe nc
bfstm image_dpx_pipe nistsphere
bink image_exr_pipe nsv
bintext image_j2k_pipe nut
bit image_jpeg_pipe nuv
bmv image_jpegls_pipe ogg
boa image_pam_pipe oma
brstm image_pbm_pipe paf
c93 image_pcx_pipe pcm_alaw
caf image_pgm_pipe pcm_f32be
cavsvideo image_pgmyuv_pipe pcm_f32le
cdg image_pictor_pipe pcm_f64be
cdxl image_png_pipe pcm_f64le
cine image_ppm_pipe pcm_mulaw
concat image_psd_pipe pcm_s16be
data image_qdraw_pipe pcm_s16le
daud image_sgi_pipe pcm_s24be
dcstr image_sunrast_pipe pcm_s24le
dfa image_tiff_pipe pcm_s32be
dirac image_webp_pipe pcm_s32le
dnxhd image_xpm_pipe pcm_s8
dsf ingenient pcm_u16be
dsicin ipmovie pcm_u16le
dss ircam pcm_u24be
dts iss pcm_u24le
dtshd iv8 pcm_u32be
dv ivf pcm_u32le
dvbsub ivr pcm_u8
dvbtxt jacosub pjs
dxa jv pmp
ea live_flv pva
ea_cdata lmlm4 pvf
eac3 loas qcp
epaf lrc r3d
ffm lvf rawvideo
ffmetadata lxf realtext
filmstrip m4v redspark
flac matroska rl2
rm srt vmd
roq stl vobsub
rpl str voc
rsd subviewer vpk
rso subviewer1 vplayer
rtp sup vqf
rtsp svag w64
sami swf wav
sap tak wc3
sbg tedcaptions webm_dash_manifest
scc thp webvtt
sdp threedostr wsaud
sdr2 tiertexseq wsd
sds tmv wsvqa
sdx truehd wtv
segafilm tta wv
shorten tty wve
siff txd xa
sln v210 xbin
smacker v210x xmv
smjpeg vag xvag
smush vc1 xwma
sol vc1t yop
sox vivo yuv4mpegpipe
spdif
Enabled muxers:
Enabled protocols:
async icecast prompeg
cache ijkhttphook rtmp
concat ijkio rtmpt
crypto ijklongurl rtp
data ijkmediadatasource srtp
ffrtmphttp ijksegment subfile
file ijktcphook tcp
ftp md5 tee
gopher mmsh udp
hls mmst udplite
http pipe unix
httpproxy
Enabled filters:
abench bwdif hqx
abitscope cellauto hstack
acompressor channelmap hue
acrossfade channelsplit hwdownload
acrusher chorus hwmap
adelay chromakey hwupload
adrawgraph ciescope hwupload_cuda
aecho codecview hysteresis
aemphasis color idet
aeval colorbalance il
aevalsrc colorchannelmixer inflate
afade colorkey interleave
afftfilt colorlevels join
aformat colorspace lenscorrection
agate compand life
ahistogram compensationdelay loop
ainterleave concat loudnorm
alimiter convolution lowpass
allpass copy lut
allrgb crop lut2
allyuv crystalizer lut3d
aloop curves lutrgb
alphaextract datascope lutyuv
alphamerge dcshift mandelbrot
amerge dctdnoiz maskedclamp
ametadata deband maskedmerge
amix decimate mergeplanes
amovie deflate mestimate
anequalizer dejudder metadata
anoisesrc deshake midequalizer
anull detelecine minterpolate
anullsink dilation movie
anullsrc displace negate
apad drawbox nlmeans
aperms drawgraph noformat
aphasemeter drawgrid noise
aphaser dynaudnorm null
apulsator earwax nullsink
arealtime ebur128 nullsrc
aresample edgedetect overlay
areverse elbg pad
aselect equalizer palettegen
asendcmd erosion paletteuse
asetnsamples extractplanes pan
asetpts extrastereo perms
asetrate fade pixdesctest
asettb fftfilt premultiply
ashowinfo field prewitt
asidedata fieldhint psnr
asplit fieldmatch qp
astats fieldorder random
astreamselect firequalizer readeia608
atadenoise flanger readvitc
atempo format realtime
atrim fps remap
avectorscope framepack removegrain
avgblur framerate removelogo
bandpass framestep replaygain
bandreject gblur reverse
bass gradfun rgbtestsrc
bbox haldclut rotate
bench haldclutsrc scale
biquad hdcd scale2ref
bitplanenoise hflip select
blackdetect highpass selectivecolor
blend histogram sendcmd
separatefields silencedetect tile
setdar silenceremove transpose
setfield sine treble
setpts smptebars tremolo
setsar smptehdbars trim
settb sobel unsharp
showcqt spectrumsynth vectorscope
showfreqs split vflip
showinfo ssim vibrato
showpalette stereotools vignette
showspectrum stereowiden volume
showspectrumpic streamselect volumedetect
showvolume swaprect vstack
showwaves swapuv w3fdif
showwavespic tblend waveform
shuffleframes telecine weave
shuffleplanes testsrc xbr
sidechaincompress testsrc2 yadif
sidechaingate threshold yuvtestsrc
sidedata thumbnail zoompan
signalstats
Enabled bsfs:
aac_adtstoasc hevc_mp4toannexb mpeg4_unpack_bframes
chomp imx_dump_header noise
dca_core mjpeg2jpeg remove_extradata
dump_extradata mjpega_dump_header text2movsub
extract_extradata mov2textsub vp9_superframe
h264_mp4toannexb mp3_header_decompress
Enabled indevs:
Enabled outdevs:
License: LGPL version 2.1 or later
Creating configuration files ...
WARNING: x86_64-linux-android-pkg-config not found, library detection may fail.
--------------------
[*] compile ffmpeg
--------------------
libavfilter/avfiltergraph.c: In function 'avfilter_graph_free':
libavfilter/avfiltergraph.c:132:5: warning: 'resample_lavr_opts' is deprecated (declared at libavfilter/avfilter.h:847) [-Wdeprecated-declarations]
av_freep(&(*graph)->resample_lavr_opts);
^
libavfilter/lavfutils.c: In function 'ff_load_image':
libavfilter/lavfutils.c:53:5: warning: 'codec' is deprecated (declared at ./libavformat/avformat.h:898) [-Wdeprecated-declarations]
codec_ctx = format_ctx->streams[0]->codec;
^
libavfilter/lavfutils.c:79:5: warning: 'avcodec_decode_video2' is deprecated (declared at ./libavcodec/avcodec.h:4892) [-Wdeprecated-declarations]
ret = avcodec_decode_video2(codec_ctx, frame, &frame_decoded, &pkt);
^
libavfilter/src_movie.c: In function 'movie_push_frame':
libavfilter/src_movie.c:524:9: warning: 'avcodec_decode_video2' is deprecated (declared at ./libavcodec/avcodec.h:4892) [-Wdeprecated-declarations]
ret = avcodec_decode_video2(st->codec_ctx, frame, &got_frame, pkt);
^
libavfilter/src_movie.c:527:9: warning: 'avcodec_decode_audio4' is deprecated (declared at ./libavcodec/avcodec.h:4843) [-Wdeprecated-declarations]
ret = avcodec_decode_audio4(st->codec_ctx, frame, &got_frame, pkt);
^
libavfilter/vf_colorspace.c: In function 'fill_rgb2xyz_table':
libavfilter/vf_colorspace.c:383:5: warning: passing argument 1 of 'invert_matrix3x3' from incompatible pointer type
invert_matrix3x3(rgb2xyz, i);
^
libavfilter/vf_colorspace.c:300:13: note: expected 'const double (*)[3]' but argument is of type 'double (*)[3]'
static void invert_matrix3x3(const double in[3][3], double out[3][3])
^
libavfilter/vf_colorspace.c: In function 'fill_whitepoint_conv_table':
libavfilter/vf_colorspace.c:447:5: warning: passing argument 3 of 'mul3x3' from incompatible pointer type
mul3x3(tmp, ma, fac);
^
libavfilter/vf_colorspace.c:399:13: note: expected 'const double (*)[3]' but argument is of type 'double (*)[3]'
static void mul3x3(double dst[3][3], const double src1[3][3], const double src2[3][3])
^
libavfilter/vf_colorspace.c:448:5: warning: passing argument 2 of 'mul3x3' from incompatible pointer type
mul3x3(out, tmp, mai);
^
libavfilter/vf_colorspace.c:399:13: note: expected 'const double (*)[3]' but argument is of type 'double (*)[3]'
static void mul3x3(double dst[3][3], const double src1[3][3], const double src2[3][3])
^
libavfilter/vf_colorspace.c:448:5: warning: passing argument 3 of 'mul3x3' from incompatible pointer type
mul3x3(out, tmp, mai);
^
libavfilter/vf_colorspace.c:399:13: note: expected 'const double (*)[3]' but argument is of type 'double (*)[3]'
static void mul3x3(double dst[3][3], const double src1[3][3], const double src2[3][3])
^
libavfilter/vf_colorspace.c: In function 'convert':
libavfilter/vf_colorspace.c:502:9: warning: passing argument 7 of 's->yuv2yuv' from incompatible pointer type
s->yuv2yuv(out_data, td->out_linesize, in_data, td->in_linesize, w, h,
^
libavfilter/vf_colorspace.c:502:9: note: expected 'const int16_t (*)[3][8]' but argument is of type 'int16_t (*)[3][8]'
libavfilter/vf_colorspace.c:502:9: warning: passing argument 8 of 's->yuv2yuv' from incompatible pointer type
libavfilter/vf_colorspace.c:502:9: note: expected 'const int16_t (*)[8]' but argument is of type 'int16_t (*)[8]'
libavfilter/vf_colorspace.c:524:9: warning: passing argument 7 of 's->yuv2rgb' from incompatible pointer type
s->yuv2rgb(rgb, s->rgb_stride, in_data, td->in_linesize, w, h,
^
libavfilter/vf_colorspace.c:524:9: note: expected 'const int16_t (*)[3][8]' but argument is of type 'int16_t (*)[3][8]'
libavfilter/vf_colorspace.c:529:17: warning: passing argument 5 of 's->dsp.multiply3x3' from incompatible pointer type
s->dsp.multiply3x3(rgb, s->rgb_stride, w, h, s->lrgb2lrgb_coeffs);
^
libavfilter/vf_colorspace.c:529:17: note: expected 'const int16_t (*)[3][8]' but argument is of type 'int16_t (*)[3][8]'
libavfilter/vf_colorspace.c:533:13: warning: passing argument 7 of 's->rgb2yuv_fsb' from incompatible pointer type
s->rgb2yuv_fsb(out_data, td->out_linesize, rgb, s->rgb_stride, w, h,
^
libavfilter/vf_colorspace.c:533:13: note: expected 'const int16_t (*)[3][8]' but argument is of type 'int16_t (*)[3][8]'
libavfilter/vf_colorspace.c:536:13: warning: passing argument 7 of 's->rgb2yuv' from incompatible pointer type
s->rgb2yuv(out_data, td->out_linesize, rgb, s->rgb_stride, w, h,
^
libavfilter/vf_colorspace.c:536:13: note: expected 'const int16_t (*)[3][8]' but argument is of type 'int16_t (*)[3][8]'
libavfilter/vf_colorspace.c: In function 'create_filtergraph':
libavfilter/vf_colorspace.c:651:13: warning: passing argument 1 of 'invert_matrix3x3' from incompatible pointer type
invert_matrix3x3(rgb2xyz, xyz2rgb);
^
libavfilter/vf_colorspace.c:300:13: note: expected 'const double (*)[3]' but argument is of type 'double (*)[3]'
static void invert_matrix3x3(const double in[3][3], double out[3][3])
^
libavfilter/vf_colorspace.c:659:17: warning: passing argument 2 of 'mul3x3' from incompatible pointer type
mul3x3(tmp, rgb2xyz, wpconv);
^
libavfilter/vf_colorspace.c:399:13: note: expected 'const double (*)[3]' but argument is of type 'double (*)[3]'
static void mul3x3(double dst[3][3], const double src1[3][3], const double src2[3][3])
^
libavfilter/vf_colorspace.c:659:17: warning: passing argument 3 of 'mul3x3' from incompatible pointer type
mul3x3(tmp, rgb2xyz, wpconv);
^
libavfilter/vf_colorspace.c:399:13: note: expected 'const double (*)[3]' but argument is of type 'double (*)[3]'
static void mul3x3(double dst[3][3], const double src1[3][3], const double src2[3][3])
^
libavfilter/vf_colorspace.c:660:17: warning: passing argument 2 of 'mul3x3' from incompatible pointer type
mul3x3(rgb2rgb, tmp, xyz2rgb);
^
libavfilter/vf_colorspace.c:399:13: note: expected 'const double (*)[3]' but argument is of type 'double (*)[3]'
static void mul3x3(double dst[3][3], const double src1[3][3], const double src2[3][3])
^
libavfilter/vf_colorspace.c:660:17: warning: passing argument 3 of 'mul3x3' from incompatible pointer type
mul3x3(rgb2rgb, tmp, xyz2rgb);
^
libavfilter/vf_colorspace.c:399:13: note: expected 'const double (*)[3]' but argument is of type 'double (*)[3]'
static void mul3x3(double dst[3][3], const double src1[3][3], const double src2[3][3])
^
libavfilter/vf_colorspace.c:662:17: warning: passing argument 2 of 'mul3x3' from incompatible pointer type
mul3x3(rgb2rgb, rgb2xyz, xyz2rgb);
^
libavfilter/vf_colorspace.c:399:13: note: expected 'const double (*)[3]' but argument is of type 'double (*)[3]'
static void mul3x3(double dst[3][3], const double src1[3][3], const double src2[3][3])
^
libavfilter/vf_colorspace.c:662:17: warning: passing argument 3 of 'mul3x3' from incompatible pointer type
mul3x3(rgb2rgb, rgb2xyz, xyz2rgb);
^
libavfilter/vf_colorspace.c:399:13: note: expected 'const double (*)[3]' but argument is of type 'double (*)[3]'
static void mul3x3(double dst[3][3], const double src1[3][3], const double src2[3][3])
^
libavfilter/vf_colorspace.c:787:13: warning: passing argument 1 of 'invert_matrix3x3' from incompatible pointer type
invert_matrix3x3(rgb2yuv, yuv2rgb);
^
libavfilter/vf_colorspace.c:300:13: note: expected 'const double (*)[3]' but argument is of type 'double (*)[3]'
static void invert_matrix3x3(const double in[3][3], double out[3][3])
^
libavfilter/vf_colorspace.c:843:13: warning: passing argument 2 of 'mul3x3' from incompatible pointer type
mul3x3(yuv2yuv, yuv2rgb, rgb2yuv);
^
libavfilter/vf_colorspace.c:399:13: note: expected 'const double (*)[3]' but argument is of type 'double (*)[3]'
static void mul3x3(double dst[3][3], const double src1[3][3], const double src2[3][3])
^
libavfilter/vf_colorspace.c:843:13: warning: passing argument 3 of 'mul3x3' from incompatible pointer type
mul3x3(yuv2yuv, yuv2rgb, rgb2yuv);
^
libavfilter/vf_colorspace.c:399:13: note: expected 'const double (*)[3]' but argument is of type 'double (*)[3]'
static void mul3x3(double dst[3][3], const double src1[3][3], const double src2[3][3])
^
libavformat/concatdec.c: In function 'detect_stream_specific':
libavformat/concatdec.c:208:9: warning: 'av_bitstream_filter_init' is deprecated (declared at ./libavcodec/avcodec.h:5929) [-Wdeprecated-declarations]
if (!(bsf = av_bitstream_filter_init("h264_mp4toannexb"))) {
^
libavformat/concatdec.c: In function 'concat_read_close':
libavformat/concatdec.c:400:17: warning: 'av_bitstream_filter_close' is deprecated (declared at ./libavcodec/avcodec.h:5973) [-Wdeprecated-declarations]
av_bitstream_filter_close(cat->files[i].streams[j].bsf);
^
libavformat/concatdec.c: In function 'filter_packet':
libavformat/concatdec.c:564:9: warning: 'av_bitstream_filter_filter' is deprecated (declared at ./libavcodec/avcodec.h:5961) [-Wdeprecated-declarations]
ret = av_bitstream_filter_filter(bsf, cs->avctx, NULL,
^
libavformat/dump.c: In function 'dump_stream_format':
libavformat/dump.c:462:5: warning: 'codec' is deprecated (declared at libavformat/avformat.h:898) [-Wdeprecated-declarations]
avctx->properties = st->codec->properties;
^
libavformat/dump.c:463:5: warning: 'codec' is deprecated (declared at libavformat/avformat.h:898) [-Wdeprecated-declarations]
avctx->codec = st->codec->codec;
^
libavformat/dump.c:464:5: warning: 'codec' is deprecated (declared at libavformat/avformat.h:898) [-Wdeprecated-declarations]
avctx->qmin = st->codec->qmin;
^
libavformat/dump.c:465:5: warning: 'codec' is deprecated (declared at libavformat/avformat.h:898) [-Wdeprecated-declarations]
avctx->qmax = st->codec->qmax;
^
libavformat/dump.c:466:5: warning: 'codec' is deprecated (declared at libavformat/avformat.h:898) [-Wdeprecated-declarations]
avctx->coded_width = st->codec->coded_width;
^
libavformat/dump.c:467:5: warning: 'codec' is deprecated (declared at libavformat/avformat.h:898) [-Wdeprecated-declarations]
avctx->coded_height = st->codec->coded_height;
^
libavformat/dump.c:502:9: warning: 'codec' is deprecated (declared at libavformat/avformat.h:898) [-Wdeprecated-declarations]
int tbc = st->codec->time_base.den && st->codec->time_base.num;
^
libavformat/dump.c:502:9: warning: 'codec' is deprecated (declared at libavformat/avformat.h:898) [-Wdeprecated-declarations]
libavformat/dump.c:514:13: warning: 'codec' is deprecated (declared at libavformat/avformat.h:898) [-Wdeprecated-declarations]
print_fps(1 / av_q2d(st->codec->time_base), "tbc");
^
libavformat/tcp.c: In function 'tcp_getaddrinfo_request_free_buffer':
libavformat/tcp.c:127:5: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
TCPAddrinfoRequest *req = (TCPAddrinfoRequest *)opaque;
^
libavformat/utils.c: In function 'avformat_transfer_internal_stream_timing_info':
libavformat/utils.c:5429:5: warning: 'codec' is deprecated (declared at libavformat/avformat.h:898) [-Wdeprecated-declarations]
const AVCodecContext *dec_ctx = ist->codec;
^
libavformat/utils.c:5430:5: warning: 'codec' is deprecated (declared at libavformat/avformat.h:898) [-Wdeprecated-declarations]
AVCodecContext *enc_ctx = ost->codec;
^
libavcodec/avrndec.c: In function 'decode_frame':
libavcodec/avrndec.c:110:9: warning: 'avcodec_decode_video2' is deprecated (declared at libavcodec/avcodec.h:4892) [-Wdeprecated-declarations]
ret = avcodec_decode_video2(a->mjpeg_avctx, data, got_frame, avpkt);
^
libavcodec/bitstream_filter.c: In function 'av_bitstream_filter_next':
libavcodec/bitstream_filter.c:39:5: warning: return discards 'const' qualifier from pointer target type
return av_bsf_next(&opaque);
^
libavcodec/bitstream_filter.c: In function 'av_bitstream_filter_filter':
libavcodec/bitstream_filter.c:132:14: warning: assignment discards 'const' qualifier from pointer target type
pkt.data = buf;
^
In file included from libavcodec/fft_fixed.c:21:0:
libavcodec/fft_template.c:467:6: warning: 'pass_big' defined but not used [-Wunused-function]
PASS(pass_big)
^
libavcodec/fft_template.c:444:13: note: in definition of macro 'PASS'
static void name(FFTComplex *z, const FFTSample *wre, unsigned int n)\
^
In file included from libavcodec/fft_float.c:21:0:
libavcodec/fft_template.c:467:6: warning: 'pass_big' defined but not used [-Wunused-function]
PASS(pass_big)
^
libavcodec/fft_template.c:444:13: note: in definition of macro 'PASS'
static void name(FFTComplex *z, const FFTSample *wre, unsigned int n)\
^
libavcodec/pcm.c:35:20: warning: 'pcm_encode_init' defined but not used [-Wunused-function]
static av_cold int pcm_encode_init(AVCodecContext *avctx)
^
libavcodec/pcm.c:84:12: warning: 'pcm_encode_frame' defined but not used [-Wunused-function]
static int pcm_encode_frame(AVCodecContext *avctx, AVPacket *avpkt,
^
libavcodec/smvjpegdec.c: In function 'smvjpeg_decode_frame':
libavcodec/smvjpegdec.c:162:9: warning: 'avcodec_decode_video2' is deprecated (declared at libavcodec/avcodec.h:4892) [-Wdeprecated-declarations]
ret = avcodec_decode_video2(s->avctx, mjpeg_data, &s->mjpeg_data_size, avpkt);
^
libavcodec/tscc.c: In function 'decode_frame':
libavcodec/tscc.c:81:26: warning: assignment discards 'const' qualifier from pointer target type
c->zstream.next_in = buf;
^
libavcodec/utils.c: In function 'avcodec_encode_audio2':
libavcodec/utils.c:1930:13: warning: 'av_dup_packet' is deprecated (declared at libavcodec/avcodec.h:4526) [-Wdeprecated-declarations]
if (av_dup_packet(avpkt) < 0) {
^
libavcodec/utils.c: In function 'avcodec_encode_video2':
libavcodec/utils.c:2026:13: warning: 'av_dup_packet' is deprecated (declared at libavcodec/avcodec.h:4526) [-Wdeprecated-declarations]
if (av_dup_packet(avpkt) < 0) {
^
libavcodec/utils.c: In function 'do_decode':
libavcodec/utils.c:2822:9: warning: 'avcodec_decode_video2' is deprecated (declared at libavcodec/utils.c:2227) [-Wdeprecated-declarations]
ret = avcodec_decode_video2(avctx, avctx->internal->buffer_frame,
^
libavcodec/utils.c:2827:9: warning: 'avcodec_decode_audio4' is deprecated (declared at libavcodec/utils.c:2336) [-Wdeprecated-declarations]
ret = avcodec_decode_audio4(avctx, avctx->internal->buffer_frame,
^
libavcodec/utils.c: In function 'do_encode':
libavcodec/utils.c:2979:9: warning: 'avcodec_encode_video2' is deprecated (declared at libavcodec/utils.c:1968) [-Wdeprecated-declarations]
ret = avcodec_encode_video2(avctx, avctx->internal->buffer_pkt,
^
libavcodec/utils.c:2982:9: warning: 'avcodec_encode_audio2' is deprecated (declared at libavcodec/utils.c:1822) [-Wdeprecated-declarations]
ret = avcodec_encode_audio2(avctx, avctx->internal->buffer_pkt,
^
libswscale/output.c:1273:21: warning: 'yuv2rgba64be_X_c' defined but not used [-Wunused-function]
YUV2PACKED16WRAPPER(yuv2, rgba64, rgba64be, AV_PIX_FMT_RGBA64BE, 1, 1)
^
libswscale/output.c:1224:13: note: in definition of macro 'YUV2PACKED16WRAPPER'
static void name ## ext ## _X_c(SwsContext *c, const int16_t *lumFilter, \
^
libswscale/output.c:1273:21: warning: 'yuv2rgba64be_2_c' defined but not used [-Wunused-function]
YUV2PACKED16WRAPPER(yuv2, rgba64, rgba64be, AV_PIX_FMT_RGBA64BE, 1, 1)
^
libswscale/output.c:1241:13: note: in definition of macro 'YUV2PACKED16WRAPPER'
static void name ## ext ## _2_c(SwsContext *c, const int16_t *_buf[2], \
^
libswscale/output.c:1273:21: warning: 'yuv2rgba64be_1_c' defined but not used [-Wunused-function]
YUV2PACKED16WRAPPER(yuv2, rgba64, rgba64be, AV_PIX_FMT_RGBA64BE, 1, 1)
^
libswscale/output.c:1255:13: note: in definition of macro 'YUV2PACKED16WRAPPER'
static void name ## ext ## _1_c(SwsContext *c, const int16_t *_buf0, \
^
libswscale/output.c:1274:21: warning: 'yuv2rgba64le_X_c' defined but not used [-Wunused-function]
YUV2PACKED16WRAPPER(yuv2, rgba64, rgba64le, AV_PIX_FMT_RGBA64LE, 1, 1)
^
libswscale/output.c:1224:13: note: in definition of macro 'YUV2PACKED16WRAPPER'
static void name ## ext ## _X_c(SwsContext *c, const int16_t *lumFilter, \
^
libswscale/output.c:1274:21: warning: 'yuv2rgba64le_2_c' defined but not used [-Wunused-function]
YUV2PACKED16WRAPPER(yuv2, rgba64, rgba64le, AV_PIX_FMT_RGBA64LE, 1, 1)
^
libswscale/output.c:1241:13: note: in definition of macro 'YUV2PACKED16WRAPPER'
static void name ## ext ## _2_c(SwsContext *c, const int16_t *_buf[2], \
^
libswscale/output.c:1274:21: warning: 'yuv2rgba64le_1_c' defined but not used [-Wunused-function]
YUV2PACKED16WRAPPER(yuv2, rgba64, rgba64le, AV_PIX_FMT_RGBA64LE, 1, 1)
^
libswscale/output.c:1255:13: note: in definition of macro 'YUV2PACKED16WRAPPER'
static void name ## ext ## _1_c(SwsContext *c, const int16_t *_buf0, \
^
libswscale/output.c:1277:21: warning: 'yuv2bgra64be_X_c' defined but not used [-Wunused-function]
YUV2PACKED16WRAPPER(yuv2, rgba64, bgra64be, AV_PIX_FMT_BGRA64BE, 1, 1)
^
libswscale/output.c:1224:13: note: in definition of macro 'YUV2PACKED16WRAPPER'
static void name ## ext ## _X_c(SwsContext *c, const int16_t *lumFilter, \
^
libswscale/output.c:1277:21: warning: 'yuv2bgra64be_2_c' defined but not used [-Wunused-function]
YUV2PACKED16WRAPPER(yuv2, rgba64, bgra64be, AV_PIX_FMT_BGRA64BE, 1, 1)
^
libswscale/output.c:1241:13: note: in definition of macro 'YUV2PACKED16WRAPPER'
static void name ## ext ## _2_c(SwsContext *c, const int16_t *_buf[2], \
^
libswscale/output.c:1277:21: warning: 'yuv2bgra64be_1_c' defined but not used [-Wunused-function]
YUV2PACKED16WRAPPER(yuv2, rgba64, bgra64be, AV_PIX_FMT_BGRA64BE, 1, 1)
^
libswscale/output.c:1255:13: note: in definition of macro 'YUV2PACKED16WRAPPER'
static void name ## ext ## _1_c(SwsContext *c, const int16_t *_buf0, \
^
libswscale/output.c:1278:21: warning: 'yuv2bgra64le_X_c' defined but not used [-Wunused-function]
YUV2PACKED16WRAPPER(yuv2, rgba64, bgra64le, AV_PIX_FMT_BGRA64LE, 1, 1)
^
libswscale/output.c:1224:13: note: in definition of macro 'YUV2PACKED16WRAPPER'
static void name ## ext ## _X_c(SwsContext *c, const int16_t *lumFilter, \
^
libswscale/output.c:1278:21: warning: 'yuv2bgra64le_2_c' defined but not used [-Wunused-function]
YUV2PACKED16WRAPPER(yuv2, rgba64, bgra64le, AV_PIX_FMT_BGRA64LE, 1, 1)
^
libswscale/output.c:1241:13: note: in definition of macro 'YUV2PACKED16WRAPPER'
static void name ## ext ## _2_c(SwsContext *c, const int16_t *_buf[2], \
^
libswscale/output.c:1278:21: warning: 'yuv2bgra64le_1_c' defined but not used [-Wunused-function]
YUV2PACKED16WRAPPER(yuv2, rgba64, bgra64le, AV_PIX_FMT_BGRA64LE, 1, 1)
^
libswscale/output.c:1255:13: note: in definition of macro 'YUV2PACKED16WRAPPER'
static void name ## ext ## _1_c(SwsContext *c, const int16_t *_buf0, \
^
libswscale/output.c:1286:21: warning: 'yuv2rgba64be_full_X_c' defined but not used [-Wunused-function]
YUV2PACKED16WRAPPER(yuv2, rgba64_full, rgba64be_full, AV_PIX_FMT_RGBA64BE, 1, 1)
^
libswscale/output.c:1224:13: note: in definition of macro 'YUV2PACKED16WRAPPER'
static void name ## ext ## _X_c(SwsContext *c, const int16_t *lumFilter, \
^
libswscale/output.c:1286:21: warning: 'yuv2rgba64be_full_2_c' defined but not used [-Wunused-function]
YUV2PACKED16WRAPPER(yuv2, rgba64_full, rgba64be_full, AV_PIX_FMT_RGBA64BE, 1, 1)
^
libswscale/output.c:1241:13: note: in definition of macro 'YUV2PACKED16WRAPPER'
static void name ## ext ## _2_c(SwsContext *c, const int16_t *_buf[2], \
^
libswscale/output.c:1286:21: warning: 'yuv2rgba64be_full_1_c' defined but not used [-Wunused-function]
YUV2PACKED16WRAPPER(yuv2, rgba64_full, rgba64be_full, AV_PIX_FMT_RGBA64BE, 1, 1)
^
libswscale/output.c:1255:13: note: in definition of macro 'YUV2PACKED16WRAPPER'
static void name ## ext ## _1_c(SwsContext *c, const int16_t *_buf0, \
^
libswscale/output.c:1287:21: warning: 'yuv2rgba64le_full_X_c' defined but not used [-Wunused-function]
YUV2PACKED16WRAPPER(yuv2, rgba64_full, rgba64le_full, AV_PIX_FMT_RGBA64LE, 1, 1)
^
libswscale/output.c:1224:13: note: in definition of macro 'YUV2PACKED16WRAPPER'
static void name ## ext ## _X_c(SwsContext *c, const int16_t *lumFilter, \
^
libswscale/output.c:1287:21: warning: 'yuv2rgba64le_full_2_c' defined but not used [-Wunused-function]
YUV2PACKED16WRAPPER(yuv2, rgba64_full, rgba64le_full, AV_PIX_FMT_RGBA64LE, 1, 1)
^
libswscale/output.c:1241:13: note: in definition of macro 'YUV2PACKED16WRAPPER'
static void name ## ext ## _2_c(SwsContext *c, const int16_t *_buf[2], \
^
libswscale/output.c:1287:21: warning: 'yuv2rgba64le_full_1_c' defined but not used [-Wunused-function]
YUV2PACKED16WRAPPER(yuv2, rgba64_full, rgba64le_full, AV_PIX_FMT_RGBA64LE, 1, 1)
^
libswscale/output.c:1255:13: note: in definition of macro 'YUV2PACKED16WRAPPER'
static void name ## ext ## _1_c(SwsContext *c, const int16_t *_buf0, \
^
libswscale/output.c:1290:21: warning: 'yuv2bgra64be_full_X_c' defined but not used [-Wunused-function]
YUV2PACKED16WRAPPER(yuv2, rgba64_full, bgra64be_full, AV_PIX_FMT_BGRA64BE, 1, 1)
^
libswscale/output.c:1224:13: note: in definition of macro 'YUV2PACKED16WRAPPER'
static void name ## ext ## _X_c(SwsContext *c, const int16_t *lumFilter, \
^
libswscale/output.c:1290:21: warning: 'yuv2bgra64be_full_2_c' defined but not used [-Wunused-function]
YUV2PACKED16WRAPPER(yuv2, rgba64_full, bgra64be_full, AV_PIX_FMT_BGRA64BE, 1, 1)
^
libswscale/output.c:1241:13: note: in definition of macro 'YUV2PACKED16WRAPPER'
static void name ## ext ## _2_c(SwsContext *c, const int16_t *_buf[2], \
^
libswscale/output.c:1290:21: warning: 'yuv2bgra64be_full_1_c' defined but not used [-Wunused-function]
YUV2PACKED16WRAPPER(yuv2, rgba64_full, bgra64be_full, AV_PIX_FMT_BGRA64BE, 1, 1)
^
libswscale/output.c:1255:13: note: in definition of macro 'YUV2PACKED16WRAPPER'
static void name ## ext ## _1_c(SwsContext *c, const int16_t *_buf0, \
^
libswscale/output.c:1291:21: warning: 'yuv2bgra64le_full_X_c' defined but not used [-Wunused-function]
YUV2PACKED16WRAPPER(yuv2, rgba64_full, bgra64le_full, AV_PIX_FMT_BGRA64LE, 1, 1)
^
libswscale/output.c:1224:13: note: in definition of macro 'YUV2PACKED16WRAPPER'
static void name ## ext ## _X_c(SwsContext *c, const int16_t *lumFilter, \
^
libswscale/output.c:1291:21: warning: 'yuv2bgra64le_full_2_c' defined but not used [-Wunused-function]
YUV2PACKED16WRAPPER(yuv2, rgba64_full, bgra64le_full, AV_PIX_FMT_BGRA64LE, 1, 1)
^
libswscale/output.c:1241:13: note: in definition of macro 'YUV2PACKED16WRAPPER'
static void name ## ext ## _2_c(SwsContext *c, const int16_t *_buf[2], \
^
libswscale/output.c:1291:21: warning: 'yuv2bgra64le_full_1_c' defined but not used [-Wunused-function]
YUV2PACKED16WRAPPER(yuv2, rgba64_full, bgra64le_full, AV_PIX_FMT_BGRA64LE, 1, 1)
^
libswscale/output.c:1255:13: note: in definition of macro 'YUV2PACKED16WRAPPER'
static void name ## ext ## _1_c(SwsContext *c, const int16_t *_buf0, \
^
libavutil/../compat/strtod.c: In function 'avpriv_strtod':
libavutil/../compat/strtod.c:55:13: warning: assignment discards 'const' qualifier from pointer target type
end = nptr + 8;
^
libavutil/../compat/strtod.c:58:13: warning: assignment discards 'const' qualifier from pointer target type
end = nptr + 3;
^
libavutil/../compat/strtod.c:61:13: warning: assignment discards 'const' qualifier from pointer target type
end = nptr + 9;
^
libavutil/../compat/strtod.c:64:13: warning: assignment discards 'const' qualifier from pointer target type
end = nptr + 4;
^
libavutil/../compat/strtod.c:67:13: warning: assignment discards 'const' qualifier from pointer target type
end = nptr + 9;
^
libavutil/../compat/strtod.c:70:13: warning: assignment discards 'const' qualifier from pointer target type
end = nptr + 4;
^
libavutil/../compat/strtod.c:73:15: warning: passing argument 1 of 'check_nan_suffix' discards 'const' qualifier from pointer target type
end = check_nan_suffix(nptr + 3);
^
libavutil/../compat/strtod.c:28:14: note: expected 'char *' but argument is of type 'const char *'
static char *check_nan_suffix(char *s)
^
libavutil/../compat/strtod.c:77:15: warning: passing argument 1 of 'check_nan_suffix' discards 'const' qualifier from pointer target type
end = check_nan_suffix(nptr + 4);
^
libavutil/../compat/strtod.c:28:14: note: expected 'char *' but argument is of type 'const char *'
static char *check_nan_suffix(char *s)
^
INSTALL libavfilter/libavfilter.a
INSTALL libavformat/libavformat.a
INSTALL libavcodec/libavcodec.a
INSTALL libswresample/libswresample.a
INSTALL libswscale/libswscale.a
INSTALL libavutil/libavutil.a
INSTALL libavfilter/avfilter.h
INSTALL libavfilter/avfiltergraph.h
INSTALL libavfilter/buffersink.h
INSTALL libavfilter/buffersrc.h
INSTALL libavfilter/version.h
INSTALL libavfilter/libavfilter.pc
INSTALL libavformat/avformat.h
INSTALL libavformat/avio.h
INSTALL libavformat/version.h
INSTALL libavformat/avc.h
INSTALL libavformat/url.h
INSTALL libavformat/internal.h
INSTALL libavformat/libavformat.pc
INSTALL libavcodec/avcodec.h
INSTALL libavcodec/avdct.h
INSTALL libavcodec/avfft.h
INSTALL libavcodec/d3d11va.h
INSTALL libavcodec/dirac.h
INSTALL libavcodec/dv_profile.h
INSTALL libavcodec/dxva2.h
INSTALL libavcodec/jni.h
INSTALL libavcodec/mediacodec.h
INSTALL libavcodec/qsv.h
INSTALL libavcodec/vaapi.h
INSTALL libavcodec/vda.h
INSTALL libavcodec/vdpau.h
INSTALL libavcodec/version.h
INSTALL libavcodec/videotoolbox.h
INSTALL libavcodec/vorbis_parser.h
INSTALL libavcodec/xvmc.h
INSTALL libavcodec/libavcodec.pc
INSTALL libswresample/swresample.h
INSTALL libswresample/version.h
INSTALL libswresample/libswresample.pc
INSTALL libswscale/swscale.h
INSTALL libswscale/version.h
INSTALL libswscale/libswscale.pc
INSTALL libavutil/adler32.h
INSTALL libavutil/aes.h
INSTALL libavutil/aes_ctr.h
INSTALL libavutil/application.h
INSTALL libavutil/attributes.h
INSTALL libavutil/audio_fifo.h
INSTALL libavutil/avassert.h
INSTALL libavutil/avstring.h
INSTALL libavutil/avutil.h
INSTALL libavutil/base64.h
INSTALL libavutil/blowfish.h
INSTALL libavutil/bprint.h
INSTALL libavutil/bswap.h
INSTALL libavutil/buffer.h
INSTALL libavutil/cast5.h
INSTALL libavutil/camellia.h
INSTALL libavutil/channel_layout.h
INSTALL libavutil/common.h
INSTALL libavutil/cpu.h
INSTALL libavutil/crc.h
INSTALL libavutil/des.h
INSTALL libavutil/dict.h
INSTALL libavutil/display.h
INSTALL libavutil/downmix_info.h
INSTALL libavutil/dns_cache.h
INSTALL libavutil/error.h
INSTALL libavutil/eval.h
INSTALL libavutil/fifo.h
INSTALL libavutil/file.h
INSTALL libavutil/frame.h
INSTALL libavutil/hash.h
INSTALL libavutil/hmac.h
INSTALL libavutil/hwcontext.h
INSTALL libavutil/hwcontext_cuda.h
INSTALL libavutil/hwcontext_dxva2.h
INSTALL libavutil/hwcontext_qsv.h
INSTALL libavutil/hwcontext_vaapi.h
INSTALL libavutil/hwcontext_vdpau.h
INSTALL libavutil/imgutils.h
INSTALL libavutil/intfloat.h
INSTALL libavutil/intreadwrite.h
INSTALL libavutil/lfg.h
INSTALL libavutil/log.h
INSTALL libavutil/macros.h
INSTALL libavutil/mathematics.h
INSTALL libavutil/mastering_display_metadata.h
INSTALL libavutil/md5.h
INSTALL libavutil/mem.h
INSTALL libavutil/motion_vector.h
INSTALL libavutil/murmur3.h
INSTALL libavutil/opt.h
INSTALL libavutil/parseutils.h
INSTALL libavutil/pixdesc.h
INSTALL libavutil/pixelutils.h
INSTALL libavutil/pixfmt.h
INSTALL libavutil/random_seed.h
INSTALL libavutil/rc4.h
INSTALL libavutil/rational.h
INSTALL libavutil/replaygain.h
INSTALL libavutil/ripemd.h
INSTALL libavutil/samplefmt.h
INSTALL libavutil/sha.h
INSTALL libavutil/sha512.h
INSTALL libavutil/spherical.h
INSTALL libavutil/stereo3d.h
INSTALL libavutil/threadmessage.h
INSTALL libavutil/time.h
INSTALL libavutil/timecode.h
INSTALL libavutil/timestamp.h
INSTALL libavutil/tree.h
INSTALL libavutil/twofish.h
INSTALL libavutil/version.h
INSTALL libavutil/xtea.h
INSTALL libavutil/tea.h
INSTALL libavutil/thread.h
INSTALL libavutil/lzo.h
INSTALL libavutil/avconfig.h
INSTALL libavutil/ffversion.h
INSTALL libavutil/libavutil.pc
--------------------
[*] link ffmpeg
--------------------
link compat/*.o
link libavcodec/*.o
link libavcodec/x86/*.o
link libavfilter/*.o
link libavfilter/x86/*.o
link libavformat/*.o
link libavutil/*.o
link libavutil/x86/*.o
link libswresample/*.o
link libswresample/x86/*.o
link libswscale/*.o
link libswscale/x86/*.o
--------------------
[*] create files for shared ffmpeg
--------------------
--------------------
[*] Finished
--------------------
# to continue to build ijkplayer, run script below,
sh compile-ijk.sh
再执行编译:
cd ..
./compile-ijk.sh all
下面是部分日志:
/home/lcp/Aislli/Dev/android-ndk-r10e/sources/android/cpufeatures/cpu-features.c:319:1: warning: 'parse_hexadecimal' defined but not used [-Wunused-function]
parse_hexadecimal(const char* input, const char* limit, int* result)
^
[x86_64] StaticLibrary : libcpufeatures.a
[x86_64] Compile++ : yuv_static <= compare.cc
[x86_64] Compile++ : yuv_static <= compare_common.cc
[x86_64] Compile++ : yuv_static <= compare_posix.cc
[x86_64] Compile++ : yuv_static <= convert.cc
[x86_64] Compile++ : yuv_static <= convert_argb.cc
[x86_64] Compile++ : yuv_static <= convert_from.cc
[x86_64] Compile++ : yuv_static <= convert_from_argb.cc
[x86_64] Compile++ : yuv_static <= convert_to_argb.cc
[x86_64] Compile++ : yuv_static <= convert_to_i420.cc
[x86_64] Compile++ : yuv_static <= cpu_id.cc
[x86_64] Compile++ : yuv_static <= format_conversion.cc
[x86_64] Compile++ : yuv_static <= planar_functions.cc
[x86_64] Compile++ : yuv_static <= rotate.cc
[x86_64] Compile++ : yuv_static <= rotate_argb.cc
[x86_64] Compile++ : yuv_static <= rotate_mips.cc
[x86_64] Compile++ : yuv_static <= row_any.cc
[x86_64] Compile++ : yuv_static <= row_common.cc
[x86_64] Compile++ : yuv_static <= row_mips.cc
[x86_64] Compile++ : yuv_static <= row_posix.cc
[x86_64] Compile++ : yuv_static <= scale.cc
[x86_64] Compile++ : yuv_static <= scale_argb.cc
[x86_64] Compile++ : yuv_static <= scale_common.cc
[x86_64] Compile++ : yuv_static <= scale_mips.cc
[x86_64] Compile++ : yuv_static <= scale_posix.cc
[x86_64] Compile++ : yuv_static <= video_common.cc
[x86_64] StaticLibrary : libyuv_static.a
[x86_64] Compile : ijkj4a <= j4a_allclasses.c
[x86_64] Compile : ijkj4a <= j4a_base.c
[x86_64] Compile : ijkj4a <= AudioTrack.c
[x86_64] Compile : ijkj4a <= MediaCodec.c
[x86_64] Compile : ijkj4a <= MediaFormat.c
[x86_64] Compile : ijkj4a <= PlaybackParams.c
[x86_64] Compile : ijkj4a <= Build.c
[x86_64] Compile : ijkj4a <= Bundle.c
[x86_64] Compile : ijkj4a <= Buffer.c
[x86_64] Compile : ijkj4a <= ByteBuffer.c
[x86_64] Compile : ijkj4a <= ArrayList.c
[x86_64] Compile : ijkj4a <= IMediaDataSource.c
[x86_64] Compile : ijkj4a <= IAndroidIO.c
[x86_64] Compile : ijkj4a <= IjkMediaPlayer.c
[x86_64] Compile : ijkj4a <= AudioTrack.util.c
[x86_64] Compile : ijkj4a <= ByteBuffer.util.c
[x86_64] StaticLibrary : libijkj4a.a
[x86_64] SharedLibrary : libijksdl.so
[x86_64] Compile : android-ndk-profiler <= prof.c
[x86_64] StaticLibrary : libandroid-ndk-profiler.a
[x86_64] Compile++ : ijksoundtouch <= AAFilter.cpp
[x86_64] Compile++ : ijksoundtouch <= FIFOSampleBuffer.cpp
[x86_64] Compile++ : ijksoundtouch <= FIRFilter.cpp
[x86_64] Compile++ : ijksoundtouch <= cpu_detect_x86.cpp
[x86_64] Compile++ : ijksoundtouch <= sse_optimized.cpp
[x86_64] Compile++ : ijksoundtouch <= RateTransposer.cpp
[x86_64] Compile++ : ijksoundtouch <= InterpolateCubic.cpp
[x86_64] Compile++ : ijksoundtouch <= InterpolateLinear.cpp
[x86_64] Compile++ : ijksoundtouch <= InterpolateShannon.cpp
[x86_64] Compile++ : ijksoundtouch <= TDStretch.cpp
[x86_64] Compile++ : ijksoundtouch <= BPMDetect.cpp
[x86_64] Compile++ : ijksoundtouch <= PeakFinder.cpp
[x86_64] Compile++ : ijksoundtouch <= SoundTouch.cpp
[x86_64] Compile++ : ijksoundtouch <= mmx_optimized.cpp
[x86_64] Compile++ : ijksoundtouch <= ijksoundtouch_wrap.cpp
[x86_64] StaticLibrary : libijksoundtouch.a
[x86_64] SharedLibrary : libijkplayer.so
[x86_64] Install : libijkplayer.so => libs/x86_64/libijkplayer.so
[x86_64] Install : libijksdl.so => libs/x86_64/libijksdl.so
/home/lcp/Aislli/source/ijkplayer/ijkplayer-android/android
到此,需要的.so文件就生成了。
编译好后的项目,各cpu的代码都是分开的,官方代码里是把所有的cpu library关联上,为了方便测试 ,我把armv7a,arm64等这些library里编译好的.so文件都放到了ijkplayer-java下,主项目只需要关联这一个library。
ijkPlayerDemo