1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-06-20 06:16:02 +02:00
Files
compat
doc
ffbuild
fftools
libavcodec
aarch64
alpha
arm
avr32
bfin
mips
neon
ppc
sh4
sparc
tests
x86
.gitignore
012v.c
4xm.c
8bps.c
8svx.c
Makefile
a64colors.h
a64multienc.c
a64tables.h
aac.h
aac_ac3_parser.c
aac_ac3_parser.h
aac_adtstoasc_bsf.c
aac_defines.h
aac_parser.c
aaccoder.c
aaccoder_trellis.h
aaccoder_twoloop.h
aacdec.c
aacdec_fixed.c
aacdec_template.c
aacdectab.h
aacenc.c
aacenc.h
aacenc_is.c
aacenc_is.h
aacenc_ltp.c
aacenc_ltp.h
aacenc_pred.c
aacenc_pred.h
aacenc_quantization.h
aacenc_quantization_misc.h
aacenc_tns.c
aacenc_tns.h
aacenc_utils.h
aacenctab.c
aacenctab.h
aacps.c
aacps.h
aacps_fixed.c
aacps_fixed_tablegen.c
aacps_fixed_tablegen.h
aacps_float.c
aacps_tablegen.c
aacps_tablegen.h
aacps_tablegen_template.c
aacpsdata.c
aacpsdsp.h
aacpsdsp_fixed.c
aacpsdsp_float.c
aacpsdsp_template.c
aacpsy.c
aacsbr.c
aacsbr.h
aacsbr_fixed.c
aacsbr_fixed_tablegen.h
aacsbr_tablegen.h
aacsbr_tablegen_common.h
aacsbr_template.c
aacsbrdata.h
aactab.c
aactab.h
aandcttab.c
aandcttab.h
aasc.c
ac3.c
ac3.h
ac3_parser.c
ac3_parser.h
ac3_parser_internal.h
ac3dec.c
ac3dec.h
ac3dec_data.c
ac3dec_data.h
ac3dec_fixed.c
ac3dec_float.c
ac3dsp.c
ac3dsp.h
ac3enc.c
ac3enc.h
ac3enc_fixed.c
ac3enc_float.c
ac3enc_opts_template.c
ac3enc_template.c
ac3tab.c
ac3tab.h
acelp_filters.c
acelp_filters.h
acelp_pitch_delay.c
acelp_pitch_delay.h
acelp_vectors.c
acelp_vectors.h
adpcm.c
adpcm.h
adpcm_data.c
adpcm_data.h
adpcmenc.c
adts_header.c
adts_header.h
adts_parser.c
adts_parser.h
adx.c
adx.h
adx_parser.c
adxdec.c
adxenc.c
agm.c
aic.c
alac.c
alac_data.c
alac_data.h
alacdsp.c
alacdsp.h
alacenc.c
aliaspixdec.c
aliaspixenc.c
allcodecs.c
alsdec.c
amfenc.c
amfenc.h
amfenc_h264.c
amfenc_hevc.c
amr.h
amrnbdata.h
amrnbdec.c
amrwbdata.h
amrwbdec.c
anm.c
ansi.c
apedec.c
apng.h
aptx.c
arbc.c
ass.c
ass.h
ass_split.c
ass_split.h
assdec.c
assenc.c
asv.c
asv.h
asvdec.c
asvenc.c
atrac.c
atrac.h
atrac1.c
atrac1data.h
atrac3.c
atrac3data.h
atrac3plus.c
atrac3plus.h
atrac3plus_data.h
atrac3plusdec.c
atrac3plusdsp.c
atrac9dec.c
atrac9tab.h
audio_frame_queue.c
audio_frame_queue.h
audiodsp.c
audiodsp.h
audiotoolboxdec.c
audiotoolboxenc.c
aura.c
av1.h
av1_frame_merge_bsf.c
av1_frame_split_bsf.c
av1_metadata_bsf.c
av1_parse.c
av1_parse.h
av1_parser.c
avcodec.h
avcodecres.rc
avdct.c
avdct.h
avfft.c
avfft.h
avpacket.c
avpicture.c
avrndec.c
avs.c
avs2_parser.c
avuidec.c
avuienc.c
bethsoftvideo.c
bethsoftvideo.h
bfi.c
bgmc.c
bgmc.h
bink.c
binkaudio.c
binkdata.h
binkdsp.c
binkdsp.h
bintext.c
bintext.h
bit_depth_template.c
bitpacked.c
bitstream.c
bitstream_filter.c
bitstream_filters.c
blockdsp.c
blockdsp.h
bmp.c
bmp.h
bmp_parser.c
bmpenc.c
bmvaudio.c
bmvvideo.c
brenderpix.c
bsf.c
bsf.h
bswapdsp.c
bswapdsp.h
bytestream.h
c93.c
cabac.c
cabac.h
cabac_functions.h
canopus.c
canopus.h
cavs.c
cavs.h
cavs_parser.c
cavsdata.c
cavsdec.c
cavsdsp.c
cavsdsp.h
cbrt_data.c
cbrt_data.h
cbrt_data_fixed.c
cbrt_fixed_tablegen.c
cbrt_tablegen.c
cbrt_tablegen.h
cbrt_tablegen_template.c
cbs.c
cbs.h
cbs_av1.c
cbs_av1.h
cbs_av1_syntax_template.c
cbs_h264.h
cbs_h2645.c
cbs_h2645.h
cbs_h264_syntax_template.c
cbs_h265.h
cbs_h265_syntax_template.c
cbs_internal.h
cbs_jpeg.c
cbs_jpeg.h
cbs_jpeg_syntax_template.c
cbs_mpeg2.c
cbs_mpeg2.h
cbs_mpeg2_syntax_template.c
cbs_vp9.c
cbs_vp9.h
cbs_vp9_syntax_template.c
ccaption_dec.c
cdgraphics.c
cdxl.c
celp_filters.c
celp_filters.h
celp_math.c
celp_math.h
cfhd.c
cfhd.h
cfhddata.c
cga_data.c
cga_data.h
chomp_bsf.c
cinepak.c
cinepakenc.c
clearvideo.c
clearvideodata.h
cljrdec.c
cljrenc.c
cllc.c
cngdec.c
cngenc.c
codec2utils.c
codec2utils.h
codec_desc.c
cook.c
cook_parser.c
cookdata.h
copy_block.h
cos_tablegen.c
cpia.c
crystalhd.c
cscd.c
cuviddec.c
cyuv.c
d3d11va.c
d3d11va.h
dca.c
dca.h
dca_core.c
dca_core.h
dca_core_bsf.c
dca_exss.c
dca_exss.h
dca_lbr.c
dca_lbr.h
dca_parser.c
dca_syncwords.h
dca_xll.c
dca_xll.h
dcaadpcm.c
dcaadpcm.h
dcadata.c
dcadata.h
dcadct.c
dcadct.h
dcadec.c
dcadec.h
dcadsp.c
dcadsp.h
dcaenc.c
dcaenc.h
dcahuff.c
dcahuff.h
dcamath.h
dct.c
dct.h
dct32.h
dct32_fixed.c
dct32_float.c
dct32_template.c
dctref.c
dctref.h
dds.c
decode.c
decode.h
dfa.c
dirac.c
dirac.h
dirac_arith.c
dirac_arith.h
dirac_dwt.c
dirac_dwt.h
dirac_dwt_template.c
dirac_parser.c
dirac_vlc.c
dirac_vlc.h
diracdec.c
diracdsp.c
diracdsp.h
diractab.c
diractab.h
dnxhd_parser.c
dnxhddata.c
dnxhddata.h
dnxhddec.c
dnxhdenc.c
dnxhdenc.h
dolby_e.c
dolby_e.h
dpcm.c
dpx.c
dpx_parser.c
dpxenc.c
dsd.c
dsd.h
dsd_tablegen.h
dsddec.c
dsicinaudio.c
dsicinvideo.c
dss_sp.c
dstdec.c
dump_extradata_bsf.c
dv.c
dv.h
dv_profile.c
dv_profile.h
dv_profile_internal.h
dv_tablegen.c
dv_tablegen.h
dvaudio.h
dvaudio_parser.c
dvaudiodec.c
dvbsub.c
dvbsub_parser.c
dvbsubdec.c
dvbtxt.h
dvd_nav_parser.c
dvdata.c
dvdata.h
dvdec.c
dvdsub_parser.c
dvdsubdec.c
dvdsubenc.c
dvenc.c
dxa.c
dxtory.c
dxv.c
dxva2.c
dxva2.h
dxva2_h264.c
dxva2_hevc.c
dxva2_internal.h
dxva2_mpeg2.c
dxva2_vc1.c
dxva2_vp9.c
eac3_core_bsf.c
eac3_data.c
eac3_data.h
eac3dec.c
eac3enc.c
eac3enc.h
eacmv.c
eaidct.c
eaidct.h
eamad.c
eatgq.c
eatgv.c
eatqi.c
elbg.c
elbg.h
elsdec.c
elsdec.h
encode.c
error_resilience.c
error_resilience.h
escape124.c
escape130.c
evrcdata.h
evrcdec.c
exif.c
exif.h
exr.c
exrdsp.c
exrdsp.h
extract_extradata_bsf.c
faandct.c
faandct.h
faanidct.c
faanidct.h
faxcompr.c
faxcompr.h
fdctdsp.c
fdctdsp.h
ffjni.c
ffjni.h
fft-internal.h
fft.h
fft_fixed.c
fft_fixed_32.c
fft_float.c
fft_init_table.c
fft_table.h
fft_template.c
ffv1.c
ffv1.h
ffv1_template.c
ffv1dec.c
ffv1dec_template.c
ffv1enc.c
ffv1enc_template.c
ffwavesynth.c
fic.c
file_open.c
filter_units_bsf.c
fits.c
fits.h
fitsdec.c
fitsenc.c
flac.c
flac.h
flac_parser.c
flacdata.c
flacdata.h
flacdec.c
flacdsp.c
flacdsp.h
flacdsp_lpc_template.c
flacdsp_template.c
flacenc.c
flashsv.c
flashsv2enc.c
flashsvenc.c
flicvideo.c
flv.h
flvdec.c
flvenc.c
fmtconvert.c
fmtconvert.h
fmvc.c
frame_thread_encoder.c
frame_thread_encoder.h
fraps.c
frwu.c
g2meet.c
g722.c
g722.h
g722dec.c
g722dsp.c
g722dsp.h
g722enc.c
g723_1.c
g723_1.h
g723_1_parser.c
g723_1dec.c
g723_1enc.c
g726.c
g729.h
g729_parser.c
g729data.h
g729dec.c
g729postfilter.c
g729postfilter.h
gdv.c
get_bits.h
gif.c
gif.h
gif_parser.c
gifdec.c
golomb.c
golomb.h
gsm.h
gsm_parser.c
gsmdec.c
gsmdec_data.c
gsmdec_data.h
gsmdec_template.c
h261.c
h261.h
h261_parser.c
h261data.c
h261dec.c
h261enc.c
h263.c
h263.h
h263_parser.c
h263_parser.h
h263data.c
h263data.h
h263dec.c
h263dsp.c
h263dsp.h
h264.h
h2645_parse.c
h2645_parse.h
h264_cabac.c
h264_cavlc.c
h264_direct.c
h264_levels.c
h264_levels.h
h264_loopfilter.c
h264_mb.c
h264_mb_template.c
h264_mc_template.c
h264_metadata_bsf.c
h264_mp4toannexb_bsf.c
h264_mvpred.h
h264_parse.c
h264_parse.h
h264_parser.c
h264_picture.c
h264_ps.c
h264_ps.h
h264_redundant_pps_bsf.c
h264_refs.c
h264_sei.c
h264_sei.h
h264_slice.c
h264addpx_template.c
h264chroma.c
h264chroma.h
h264chroma_template.c
h264data.c
h264data.h
h264dec.c
h264dec.h
h264dsp.c
h264dsp.h
h264dsp_template.c
h264idct.c
h264idct.h
h264idct_template.c
h264pred.c
h264pred.h
h264pred_template.c
h264qpel.c
h264qpel.h
h264qpel_template.c
h265_metadata_bsf.c
h265_profile_level.c
h265_profile_level.h
hap.c
hap.h
hapdec.c
hapenc.c
hapqa_extract_bsf.c
hcom.c
hevc.h
hevc_cabac.c
hevc_data.c
hevc_data.h
hevc_filter.c
hevc_mp4toannexb_bsf.c
hevc_mvs.c
hevc_parse.c
hevc_parse.h
hevc_parser.c
hevc_ps.c
hevc_ps.h
hevc_ps_enc.c
hevc_refs.c
hevc_sei.c
hevc_sei.h
hevcdec.c
hevcdec.h
hevcdsp.c
hevcdsp.h
hevcdsp_template.c
hevcpred.c
hevcpred.h
hevcpred_template.c
hnm4video.c
hpel_template.c
hpeldsp.c
hpeldsp.h
hq_hqa.c
hq_hqa.h
hq_hqadata.c
hq_hqadsp.c
hq_hqadsp.h
hqx.c
hqx.h
hqxdsp.c
hqxdsp.h
hqxvlc.c
htmlsubtitles.c
htmlsubtitles.h
huffman.c
huffman.h
huffyuv.c
huffyuv.h
huffyuvdec.c
huffyuvdsp.c
huffyuvdsp.h
huffyuvenc.c
huffyuvencdsp.c
huffyuvencdsp.h
hwaccel.h
hwaccels.h
idcinvideo.c
idctdsp.c
idctdsp.h
iff.c
iirfilter.c
iirfilter.h
ilbcdata.h
ilbcdec.c
imc.c
imcdata.h
imgconvert.c
imm4.c
imm5.c
imx_dump_header_bsf.c
indeo2.c
indeo2data.h
indeo3.c
indeo3data.h
indeo4.c
indeo4data.h
indeo5.c
indeo5data.h
intelh263dec.c
internal.h
interplayacm.c
interplayvideo.c
intrax8.c
intrax8.h
intrax8dsp.c
intrax8dsp.h
intrax8huf.h
ituh263dec.c
ituh263enc.c
ivi.c
ivi.h
ivi_dsp.c
ivi_dsp.h
j2kenc.c
jacosub.h
jacosubdec.c
jfdctfst.c
jfdctint.c
jfdctint_template.c
jni.c
jni.h
jpeg2000.c
jpeg2000.h
jpeg2000dec.c
jpeg2000dsp.c
jpeg2000dsp.h
jpeg2000dwt.c
jpeg2000dwt.h
jpegls.c
jpegls.h
jpeglsdec.c
jpeglsdec.h
jpeglsenc.c
jpegtables.c
jpegtables.h
jrevdct.c
jvdec.c
kbdwin.c
kbdwin.h
kgv1dec.c
kmvc.c
lagarith.c
lagarithrac.c
lagarithrac.h
latm_parser.c
lcl.h
lcldec.c
lclenc.c
libaomdec.c
libaomenc.c
libaribb24.c
libavcodec.v
libcelt_dec.c
libcodec2.c
libdav1d.c
libdavs2.c
libfdk-aacdec.c
libfdk-aacenc.c
libgsmdec.c
libgsmenc.c
libilbc.c
libkvazaar.c
libmp3lame.c
libopencore-amr.c
libopenh264.c
libopenh264.h
libopenh264dec.c
libopenh264enc.c
libopenjpegdec.c
libopenjpegenc.c
libopus.c
libopus.h
libopusdec.c
libopusenc.c
librav1e.c
librsvgdec.c
libshine.c
libspeexdec.c
libspeexenc.c
libtheoraenc.c
libtwolame.c
libvo-amrwbenc.c
libvorbisdec.c
libvorbisenc.c
libvpx.c
libvpx.h
libvpxdec.c
libvpxenc.c
libwavpackenc.c
libwebpenc.c
libwebpenc_animencoder.c
libwebpenc_common.c
libwebpenc_common.h
libx264.c
libx265.c
libxavs.c
libxavs2.c
libxvid.c
libxvid.h
libzvbi-teletextdec.c
ljpegenc.c
loco.c
log2_tab.c
lossless_audiodsp.c
lossless_audiodsp.h
lossless_videodsp.c
lossless_videodsp.h
lossless_videoencdsp.c
lossless_videoencdsp.h
lpc.c
lpc.h
lsp.c
lsp.h
lzf.c
lzf.h
lzw.c
lzw.h
lzwenc.c
m101.c
mace.c
magicyuv.c
magicyuvenc.c
mathops.h
mathtables.c
mdct15.c
mdct15.h
mdct_fixed.c
mdct_fixed_32.c
mdct_float.c
mdct_template.c
mdec.c
me_cmp.c
me_cmp.h
mediacodec.c
mediacodec.h
mediacodec_surface.c
mediacodec_surface.h
mediacodec_sw_buffer.c
mediacodec_sw_buffer.h
mediacodec_wrapper.c
mediacodec_wrapper.h
mediacodecdec.c
mediacodecdec_common.c
mediacodecdec_common.h
metasound.c
metasound_data.c
metasound_data.h
microdvddec.c
midivid.c
mimic.c
mjpeg.h
mjpeg2jpeg_bsf.c
mjpeg_parser.c
mjpega_dump_header_bsf.c
mjpegbdec.c
mjpegdec.c
mjpegdec.h
mjpegenc.c
mjpegenc.h
mjpegenc_common.c
mjpegenc_common.h
mjpegenc_huffman.c
mjpegenc_huffman.h
mlp.c
mlp.h
mlp_parse.c
mlp_parse.h
mlp_parser.c
mlpdec.c
mlpdsp.c
mlpdsp.h
mlpenc.c
mlz.c
mlz.h
mmaldec.c
mmvideo.c
motion_est.c
motion_est.h
motion_est_template.c
motionpixels.c
motionpixels_tablegen.c
motionpixels_tablegen.h
movsub_bsf.c
movtextdec.c
movtextenc.c
mp3_header_decompress_bsf.c
mpc.c
mpc.h
mpc7.c
mpc7data.h
mpc8.c
mpc8data.h
mpc8huff.h
mpcdata.h
mpeg12.c
mpeg12.h
mpeg12data.c
mpeg12data.h
mpeg12dec.c
mpeg12enc.c
mpeg12framerate.c
mpeg12vlc.h
mpeg2_metadata_bsf.c
mpeg4_unpack_bframes_bsf.c
mpeg4audio.c
mpeg4audio.h
mpeg4data.h
mpeg4video.c
mpeg4video.h
mpeg4video_parser.c
mpeg4video_parser.h
mpeg4videodec.c
mpeg4videoenc.c
mpeg_er.c
mpeg_er.h
mpegaudio.c
mpegaudio.h
mpegaudio_parser.c
mpegaudio_tablegen.c
mpegaudio_tablegen.h
mpegaudiodata.c
mpegaudiodata.h
mpegaudiodec_fixed.c
mpegaudiodec_float.c
mpegaudiodec_template.c
mpegaudiodecheader.c
mpegaudiodecheader.h
mpegaudiodectab.h
mpegaudiodsp.c
mpegaudiodsp.h
mpegaudiodsp_data.c
mpegaudiodsp_fixed.c
mpegaudiodsp_float.c
mpegaudiodsp_template.c
mpegaudioenc_fixed.c
mpegaudioenc_float.c
mpegaudioenc_template.c
mpegaudiotab.h
mpegpicture.c
mpegpicture.h
mpegutils.c
mpegutils.h
mpegvideo.c
mpegvideo.h
mpegvideo_enc.c
mpegvideo_motion.c
mpegvideo_parser.c
mpegvideo_xvmc.c
mpegvideodata.c
mpegvideodata.h
mpegvideodsp.c
mpegvideodsp.h
mpegvideoencdsp.c
mpegvideoencdsp.h
mpl2dec.c
mqc.c
mqc.h
mqcdec.c
mqcenc.c
mscc.c
msgsmdec.c
msgsmdec.h
msmpeg4.c
msmpeg4.h
msmpeg4data.c
msmpeg4data.h
msmpeg4dec.c
msmpeg4enc.c
msrle.c
msrledec.c
msrledec.h
mss1.c
mss12.c
mss12.h
mss2.c
mss2dsp.c
mss2dsp.h
mss3.c
mss34dsp.c
mss34dsp.h
mss4.c
msvideo1.c
msvideo1enc.c
mvcdec.c
mvha.c
mwsc.c
mxpegdec.c
nellymoser.c
nellymoser.h
nellymoserdec.c
nellymoserenc.c
noise_bsf.c
null_bsf.c
nuv.c
nvdec.c
nvdec.h
nvdec_h264.c
nvdec_hevc.c
nvdec_mjpeg.c
nvdec_mpeg12.c
nvdec_mpeg4.c
nvdec_vc1.c
nvdec_vp8.c
nvdec_vp9.c
nvenc.c
nvenc.h
nvenc_h264.c
nvenc_hevc.c
omx.c
on2avc.c
on2avcdata.c
on2avcdata.h
options.c
options_table.h
opus.c
opus.h
opus_celt.c
opus_celt.h
opus_parser.c
opus_pvq.c
opus_pvq.h
opus_rc.c
opus_rc.h
opus_silk.c
opusdec.c
opusdsp.c
opusdsp.h
opusenc.c
opusenc.h
opusenc_psy.c
opusenc_psy.h
opusenc_utils.h
opustab.c
opustab.h
paf.h
pafaudio.c
pafvideo.c
pamenc.c
parser.c
parser.h
parsers.c
pcm-bluray.c
pcm-dvd.c
pcm-dvdenc.c
pcm.c
pcm_tablegen.c
pcm_tablegen.h
pcx.c
pcxenc.c
pel_template.c
pgssubdec.c
pictordec.c
pixblockdsp.c
pixblockdsp.h
pixels.h
pixlet.c
png.c
png.h
png_parser.c
pngdec.c
pngdsp.c
pngdsp.h
pngenc.c
pnm.c
pnm.h
pnm_parser.c
pnmdec.c
pnmenc.c
profiles.c
profiles.h
prores_metadata_bsf.c
proresdata.c
proresdata.h
proresdec.h
proresdec2.c
proresdsp.c
proresdsp.h
proresenc_anatoliy.c
proresenc_kostya.c
prosumer.c
psd.c
psymodel.c
psymodel.h
pthread.c
pthread_frame.c
pthread_internal.h
pthread_slice.c
ptx.c
put_bits.h
qcelpdata.h
qcelpdec.c
qdm2.c
qdm2_tablegen.c
qdm2_tablegen.h
qdm2data.h
qdmc.c
qdrw.c
qpeg.c
qpel_template.c
qpeldsp.c
qpeldsp.h
qsv.c
qsv.h
qsv_api.c
qsv_internal.h
qsvdec.c
qsvdec.h
qsvdec_h2645.c
qsvdec_other.c
qsvenc.c
qsvenc.h
qsvenc_h264.c
qsvenc_hevc.c
qsvenc_jpeg.c
qsvenc_mpeg2.c
qsvenc_vp9.c
qtrle.c
qtrleenc.c
r210dec.c
r210enc.c
ra144.c
ra144.h
ra144dec.c
ra144enc.c
ra288.c
ra288.h
ralf.c
ralfdata.h
rangecoder.c
rangecoder.h
rasc.c
ratecontrol.c
ratecontrol.h
raw.c
raw.h
rawdec.c
rawenc.c
rdft.c
rdft.h
realtextdec.c
rectangle.h
remove_extradata_bsf.c
reverse.c
rkmppdec.c
rl.c
rl.h
rl2.c
rle.c
rle.h
rnd_avg.h
roqaudioenc.c
roqvideo.c
roqvideo.h
roqvideodec.c
roqvideoenc.c
rpza.c
rscc.c
rtjpeg.c
rtjpeg.h
rv10.c
rv10.h
rv10enc.c
rv20enc.c
rv30.c
rv30data.h
rv30dsp.c
rv34.c
rv34.h
rv34_parser.c
rv34data.h
rv34dsp.c
rv34dsp.h
rv34vlc.h
rv40.c
rv40data.h
rv40dsp.c
rv40vlc2.h
s302m.c
s302menc.c
samidec.c
sanm.c
sbc.c
sbc.h
sbc_parser.c
sbcdec.c
sbcdec_data.c
sbcdec_data.h
sbcdsp.c
sbcdsp.h
sbcdsp_data.c
sbcdsp_data.h
sbcenc.c
sbr.h
sbrdsp.c
sbrdsp.h
sbrdsp_fixed.c
sbrdsp_template.c
scpr.c
scpr.h
scpr3.c
scpr3.h
screenpresso.c
sgi.h
sgidec.c
sgienc.c
sgirledec.c
sheervideo.c
sheervideodata.h
shorten.c
simple_idct.c
simple_idct.h
simple_idct_template.c
sinewin.c
sinewin.h
sinewin_fixed.c
sinewin_fixed_tablegen.c
sinewin_tablegen.c
sinewin_tablegen.h
sinewin_tablegen_template.c
sipr.c
sipr.h
sipr16k.c
sipr16kdata.h
sipr_parser.c
siprdata.h
smacker.c
smc.c
smvjpegdec.c
snappy.c
snappy.h
snow.c
snow.h
snow_dwt.c
snow_dwt.h
snowdata.h
snowdec.c
snowenc.c
sonic.c
sp5x.h
sp5xdec.c
speedhq.c
srtdec.c
srtenc.c
startcode.c
startcode.h
subviewerdec.c
sunrast.c
sunrast.h
sunrastenc.c
svq1.c
svq1.h
svq13.c
svq1_cb.h
svq1_vlc.h
svq1dec.c
svq1enc.c
svq1enc.h
svq1enc_cb.h
svq3.c
synth_filter.c
synth_filter.h
tableprint.h
tableprint_vlc.h
tak.c
tak.h
tak_parser.c
takdec.c
takdsp.c
takdsp.h
targa.c
targa.h
targa_y216dec.c
targaenc.c
tdsc.c
textdec.c
texturedsp.c
texturedsp.h
texturedspenc.c
thread.h
tiertexseqv.c
tiff.c
tiff.h
tiff_common.c
tiff_common.h
tiff_data.c
tiff_data.h
tiffenc.c
tmv.c
tpeldsp.c
tpeldsp.h
trace_headers_bsf.c
truehd_core_bsf.c
truemotion1.c
truemotion1data.h
truemotion2.c
truemotion2rt.c
truespeech.c
truespeech_data.h
tscc.c
tscc2.c
tscc2data.h
tta.c
ttadata.c
ttadata.h
ttadsp.c
ttadsp.h
ttaenc.c
ttaencdsp.c
ttaencdsp.h
twinvq.c
twinvq.h
twinvq_data.h
twinvqdec.c
txd.c
ulti.c
ulti_cb.h
unary.h
utils.c
utvideo.c
utvideo.h
utvideodec.c
utvideodsp.c
utvideodsp.h
utvideoenc.c
v210_template.c
v210dec.c
v210dec.h
v210enc.c
v210enc.h
v210x.c
v308dec.c
v308enc.c
v408dec.c
v408enc.c
v410dec.c
v410enc.c
v4l2_buffers.c
v4l2_buffers.h
v4l2_context.c
v4l2_context.h
v4l2_fmt.c
v4l2_fmt.h
v4l2_m2m.c
v4l2_m2m.h
v4l2_m2m_dec.c
v4l2_m2m_enc.c
vaapi.h
vaapi_decode.c
vaapi_decode.h
vaapi_encode.c
vaapi_encode.h
vaapi_encode_h264.c
vaapi_encode_h265.c
vaapi_encode_mjpeg.c
vaapi_encode_mpeg2.c
vaapi_encode_vp8.c
vaapi_encode_vp9.c
vaapi_h264.c
vaapi_hevc.c
vaapi_mjpeg.c
vaapi_mpeg2.c
vaapi_mpeg4.c
vaapi_vc1.c
vaapi_vp8.c
vaapi_vp9.c
vb.c
vble.c
vc1.c
vc1.h
vc1_block.c
vc1_common.h
vc1_loopfilter.c
vc1_mc.c
vc1_parser.c
vc1_pred.c
vc1_pred.h
vc1acdata.h
vc1data.c
vc1data.h
vc1dec.c
vc1dsp.c
vc1dsp.h
vc2enc.c
vc2enc_dwt.c
vc2enc_dwt.h
vcr1.c
vdpau.c
vdpau.h
vdpau_h264.c
vdpau_hevc.c
vdpau_internal.h
vdpau_mpeg12.c
vdpau_mpeg4.c
vdpau_vc1.c
vdpau_vp9.c
version.h
videodsp.c
videodsp.h
videodsp_template.c
videotoolbox.c
videotoolbox.h
videotoolboxenc.c
vima.c
vlc.h
vmdaudio.c
vmdvideo.c
vmnc.c
vorbis.c
vorbis.h
vorbis_data.c
vorbis_enc_data.h
vorbis_parser.c
vorbis_parser.h
vorbis_parser_internal.h
vorbisdec.c
vorbisdsp.c
vorbisdsp.h
vorbisenc.c
vp3.c
vp3_parser.c
vp3data.h
vp3dsp.c
vp3dsp.h
vp4data.h
vp5.c
vp56.c
vp56.h
vp56data.c
vp56data.h
vp56dsp.c
vp56dsp.h
vp56rac.c
vp5data.h
vp6.c
vp6data.h
vp6dsp.c
vp8.c
vp8.h
vp8_parser.c
vp8data.h
vp8dsp.c
vp8dsp.h
vp9.c
vp9.h
vp9_mc_template.c
vp9_metadata_bsf.c
vp9_parser.c
vp9_raw_reorder_bsf.c
vp9_superframe_bsf.c
vp9_superframe_split_bsf.c
vp9block.c
vp9data.c
vp9data.h
vp9dec.h
vp9dsp.c
vp9dsp.h
vp9dsp_10bpp.c
vp9dsp_12bpp.c
vp9dsp_8bpp.c
vp9dsp_template.c
vp9lpf.c
vp9mvs.c
vp9prob.c
vp9recon.c
vp9shared.h
vqavideo.c
vt_internal.h
wavpack.c
wavpack.h
wavpackenc.c
wavpackenc.h
wcmv.c
webp.c
webvttdec.c
webvttenc.c
wma.c
wma.h
wma_common.c
wma_common.h
wma_freqs.c
wma_freqs.h
wmadata.h
wmadec.c
wmaenc.c
wmalosslessdec.c
wmaprodata.h
wmaprodec.c
wmavoice.c
wmavoice_data.h
wmv2.c
wmv2.h
wmv2data.c
wmv2data.h
wmv2dec.c
wmv2dsp.c
wmv2dsp.h
wmv2enc.c
wnv1.c
wrapped_avframe.c
ws-snd1.c
xan.c
xbmdec.c
xbmenc.c
xface.c
xface.h
xfacedec.c
xfaceenc.c
xiph.c
xiph.h
xl.c
xma_parser.c
xpmdec.c
xsubdec.c
xsubenc.c
xvididct.c
xvididct.h
xvmc.h
xvmc_internal.h
xwd.h
xwddec.c
xwdenc.c
xxan.c
y41pdec.c
y41penc.c
ylc.c
yop.c
yuv4dec.c
yuv4enc.c
zerocodec.c
zmbv.c
zmbvenc.c
libavdevice
libavfilter
libavformat
libavresample
libavutil
libpostproc
libswresample
libswscale
presets
tests
tools
.gitattributes
.gitignore
.travis.yml
CONTRIBUTING.md
COPYING.GPLv2
COPYING.GPLv3
COPYING.LGPLv2.1
COPYING.LGPLv3
CREDITS
Changelog
INSTALL.md
LICENSE.md
MAINTAINERS
Makefile
README.md
RELEASE
configure
FFmpeg/libavcodec/sbrdsp_fixed.c

316 lines
9.4 KiB
C
Raw Normal View History

/*
* AAC Spectral Band Replication decoding functions
* Copyright (c) 2008-2009 Robert Swain ( rob opendot cl )
* Copyright (c) 2009-2010 Alex Converse <alex.converse@gmail.com>
*
* This file is part of FFmpeg.
*
* FFmpeg is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* FFmpeg is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with FFmpeg; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* Note: Rounding-to-nearest used unless otherwise stated
*
*/
#define USE_FIXED 1
#include "aac.h"
#include "config.h"
#include "libavutil/attributes.h"
#include "libavutil/intfloat.h"
#include "sbrdsp.h"
static SoftFloat sbr_sum_square_c(int (*x)[2], int n)
{
SoftFloat ret;
uint64_t accu = 0, round;
uint64_t accu0 = 0, accu1 = 0, accu2 = 0, accu3 = 0;
int i, nz, nz0;
unsigned u;
nz = 0;
for (i = 0; i < n; i += 2) {
accu0 += (int64_t)x[i + 0][0] * x[i + 0][0];
accu1 += (int64_t)x[i + 0][1] * x[i + 0][1];
accu2 += (int64_t)x[i + 1][0] * x[i + 1][0];
accu3 += (int64_t)x[i + 1][1] * x[i + 1][1];
if ((accu0|accu1|accu2|accu3) > UINT64_MAX - INT32_MIN*(int64_t)INT32_MIN || i+2>=n) {
accu0 >>= nz;
accu1 >>= nz;
accu2 >>= nz;
accu3 >>= nz;
while ((accu0|accu1|accu2|accu3) > (UINT64_MAX - accu) >> 2) {
accu0 >>= 1;
accu1 >>= 1;
accu2 >>= 1;
accu3 >>= 1;
accu >>= 1;
nz ++;
}
accu += accu0 + accu1 + accu2 + accu3;
accu0 = accu1 = accu2 = accu3 = 0;
}
}
nz0 = 15 - nz;
u = accu >> 32;
if (u) {
nz = 33;
while (u < 0x80000000U) {
u <<= 1;
nz--;
}
} else
nz = 1;
round = 1ULL << (nz-1);
u = ((accu + round) >> nz);
u >>= 1;
ret = av_int2sf(u, nz0 - nz);
return ret;
}
static void sbr_neg_odd_64_c(int *x)
{
int i;
for (i = 1; i < 64; i += 2)
x[i] = -x[i];
}
static void sbr_qmf_pre_shuffle_c(int *z)
{
int k;
z[64] = z[0];
z[65] = z[1];
for (k = 1; k < 32; k++) {
z[64+2*k ] = -z[64 - k];
z[64+2*k+1] = z[ k + 1];
}
}
static void sbr_qmf_post_shuffle_c(int W[32][2], const int *z)
{
int k;
for (k = 0; k < 32; k++) {
W[k][0] = -z[63-k];
W[k][1] = z[k];
}
}
static void sbr_qmf_deint_neg_c(int *v, const int *src)
{
int i;
for (i = 0; i < 32; i++) {
v[ i] = ( src[63 - 2*i ] + 0x10) >> 5;
v[63 - i] = (-src[63 - 2*i - 1] + 0x10) >> 5;
}
}
static av_always_inline SoftFloat autocorr_calc(int64_t accu)
{
int nz, mant, expo;
unsigned round;
int i = (int)(accu >> 32);
if (i == 0) {
nz = 1;
} else {
nz = 0;
while (FFABS(i) < 0x40000000) {
i *= 2;
nz++;
}
nz = 32-nz;
}
round = 1U << (nz-1);
mant = (int)((accu + round) >> nz);
mant = (mant + 0x40LL)>>7;
mant *= 64;
expo = nz + 15;
return av_int2sf(mant, 30 - expo);
}
static av_always_inline void autocorrelate(const int x[40][2], SoftFloat phi[3][2][2], int lag)
{
int i;
int64_t real_sum, imag_sum;
int64_t accu_re = 0, accu_im = 0;
if (lag) {
for (i = 1; i < 38; i++) {
accu_re += (uint64_t)x[i][0] * x[i+lag][0];
accu_re += (uint64_t)x[i][1] * x[i+lag][1];
accu_im += (uint64_t)x[i][0] * x[i+lag][1];
accu_im -= (uint64_t)x[i][1] * x[i+lag][0];
}
real_sum = accu_re;
imag_sum = accu_im;
accu_re += (uint64_t)x[ 0][0] * x[lag][0];
accu_re += (uint64_t)x[ 0][1] * x[lag][1];
accu_im += (uint64_t)x[ 0][0] * x[lag][1];
accu_im -= (uint64_t)x[ 0][1] * x[lag][0];
phi[2-lag][1][0] = autocorr_calc(accu_re);
phi[2-lag][1][1] = autocorr_calc(accu_im);
if (lag == 1) {
accu_re = real_sum;
accu_im = imag_sum;
accu_re += (uint64_t)x[38][0] * x[39][0];
accu_re += (uint64_t)x[38][1] * x[39][1];
accu_im += (uint64_t)x[38][0] * x[39][1];
accu_im -= (uint64_t)x[38][1] * x[39][0];
phi[0][0][0] = autocorr_calc(accu_re);
phi[0][0][1] = autocorr_calc(accu_im);
}
} else {
for (i = 1; i < 38; i++) {
accu_re += (uint64_t)x[i][0] * x[i][0];
accu_re += (uint64_t)x[i][1] * x[i][1];
}
real_sum = accu_re;
accu_re += (uint64_t)x[ 0][0] * x[ 0][0];
accu_re += (uint64_t)x[ 0][1] * x[ 0][1];
phi[2][1][0] = autocorr_calc(accu_re);
accu_re = real_sum;
accu_re += (uint64_t)x[38][0] * x[38][0];
accu_re += (uint64_t)x[38][1] * x[38][1];
phi[1][0][0] = autocorr_calc(accu_re);
}
}
static void sbr_autocorrelate_c(const int x[40][2], SoftFloat phi[3][2][2])
{
autocorrelate(x, phi, 0);
autocorrelate(x, phi, 1);
autocorrelate(x, phi, 2);
}
static void sbr_hf_gen_c(int (*X_high)[2], const int (*X_low)[2],
const int alpha0[2], const int alpha1[2],
int bw, int start, int end)
{
int alpha[4];
int i;
int64_t accu;
accu = (int64_t)alpha0[0] * bw;
alpha[2] = (int)((accu + 0x40000000) >> 31);
accu = (int64_t)alpha0[1] * bw;
alpha[3] = (int)((accu + 0x40000000) >> 31);
accu = (int64_t)bw * bw;
bw = (int)((accu + 0x40000000) >> 31);
accu = (int64_t)alpha1[0] * bw;
alpha[0] = (int)((accu + 0x40000000) >> 31);
accu = (int64_t)alpha1[1] * bw;
alpha[1] = (int)((accu + 0x40000000) >> 31);
for (i = start; i < end; i++) {
accu = (int64_t)X_low[i][0] * 0x20000000;
accu += (int64_t)X_low[i - 2][0] * alpha[0];
accu -= (int64_t)X_low[i - 2][1] * alpha[1];
accu += (int64_t)X_low[i - 1][0] * alpha[2];
accu -= (int64_t)X_low[i - 1][1] * alpha[3];
X_high[i][0] = (int)((accu + 0x10000000) >> 29);
accu = (int64_t)X_low[i][1] * 0x20000000;
accu += (int64_t)X_low[i - 2][1] * alpha[0];
accu += (int64_t)X_low[i - 2][0] * alpha[1];
accu += (int64_t)X_low[i - 1][1] * alpha[2];
accu += (int64_t)X_low[i - 1][0] * alpha[3];
X_high[i][1] = (int)((accu + 0x10000000) >> 29);
}
}
static void sbr_hf_g_filt_c(int (*Y)[2], const int (*X_high)[40][2],
const SoftFloat *g_filt, int m_max, intptr_t ixh)
{
int m;
int64_t accu;
for (m = 0; m < m_max; m++) {
if (22 - g_filt[m].exp < 61) {
int64_t r = 1LL << (22-g_filt[m].exp);
accu = (int64_t)X_high[m][ixh][0] * ((g_filt[m].mant + 0x40)>>7);
Y[m][0] = (int)((accu + r) >> (23-g_filt[m].exp));
accu = (int64_t)X_high[m][ixh][1] * ((g_filt[m].mant + 0x40)>>7);
Y[m][1] = (int)((accu + r) >> (23-g_filt[m].exp));
}
}
}
static av_always_inline int sbr_hf_apply_noise(int (*Y)[2],
const SoftFloat *s_m,
const SoftFloat *q_filt,
int noise,
int phi_sign0,
int phi_sign1,
int m_max)
{
int m;
for (m = 0; m < m_max; m++) {
unsigned y0 = Y[m][0];
unsigned y1 = Y[m][1];
noise = (noise + 1) & 0x1ff;
if (s_m[m].mant) {
int shift, round;
shift = 22 - s_m[m].exp;
if (shift < 1) {
av_log(NULL, AV_LOG_ERROR, "Overflow in sbr_hf_apply_noise, shift=%d\n", shift);
return AVERROR(ERANGE);
} else if (shift < 30) {
round = 1 << (shift-1);
y0 += (s_m[m].mant * phi_sign0 + round) >> shift;
y1 += (s_m[m].mant * phi_sign1 + round) >> shift;
}
} else {
int shift, round, tmp;
int64_t accu;
shift = 22 - q_filt[m].exp;
if (shift < 1) {
av_log(NULL, AV_LOG_ERROR, "Overflow in sbr_hf_apply_noise, shift=%d\n", shift);
return AVERROR(ERANGE);
} else if (shift < 30) {
round = 1 << (shift-1);
accu = (int64_t)q_filt[m].mant * ff_sbr_noise_table_fixed[noise][0];
tmp = (int)((accu + 0x40000000) >> 31);
y0 += (tmp + round) >> shift;
accu = (int64_t)q_filt[m].mant * ff_sbr_noise_table_fixed[noise][1];
tmp = (int)((accu + 0x40000000) >> 31);
y1 += (tmp + round) >> shift;
}
}
Y[m][0] = y0;
Y[m][1] = y1;
phi_sign1 = -phi_sign1;
}
return 0;
}
#include "sbrdsp_template.c"