Opened 5 years ago
Closed 5 years ago
#8081 closed enhancement (duplicate)
support of g729b codec
Reported by: | Aleksandr Ustinov | Owned by: | |
---|---|---|---|
Priority: | wish | Component: | avcodec |
Version: | git-master | Keywords: | g729 |
Cc: | Blocked By: | ||
Blocking: | Reproduced by developer: | no | |
Analyzed by developer: | no |
Description
Summary of the bug:
ffmpeg can't decode g729b codec. I would be nice to have decoder for this codec. Sample file, original codec and reference output attached.
How to reproduce:
ffmpeg -i 662478440-short.wav a1.wav
ffmpeg version N-41686-g91459bd Copyright (c) 2000-2014 the FFmpeg developers built on Apr 30 2015 12:25:50 with gcc 4.9.2 (Ubuntu 4.9.2-0ubuntu1~14.04) configuration: --extra-cflags=-I/home/alex/work/ffmpeg/include --extra-ldflags='-L/home/alex/work/ffmpeg/lib -L/usr/lib64' --bindir=/home/alex/bin --extra-libs=-ldl --enable-gpl --enable-nonfree --enable-version3 --enable-libfdk_aac --enable-libmp3lame --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libopencore-amrnb --enable-libvo-amrwbenc --enable-libopencore-amrwb --enable-libspeex libavutil 54. 7.100 / 54. 7.100 libavcodec 56. 1.100 / 56. 1.100 libavformat 56. 4.101 / 56. 4.101 libavdevice 56. 0.100 / 56. 0.100 libavfilter 5. 1.100 / 5. 1.100 libswscale 3. 0.100 / 3. 0.100 libswresample 1. 1.100 / 1. 1.100 libpostproc 53. 0.100 / 53. 0.100 [wav @ 0x3292c80] Estimating duration from bitrate, this may be inaccurate [wav @ 0x3292c80] Could not find codec parameters for stream 0 (Audio: none (5[1][0][0] / 0x0135), 8000 Hz, 2 channels, 17 kb/s): unknown codec Consider increasing the value for the 'analyzeduration' and 'probesize' options 662478440-short.wav: could not find codec parameters Guessed Channel Layout for Input Stream #0.0 : stereo Input #0, wav, from '662478440-short.wav': Duration: 00:00:20.17, bitrate: 17 kb/s Stream #0:0: Audio: none (5[1][0][0] / 0x0135), 8000 Hz, 2 channels, 17 kb/s No decoder for stream #0:0, filtering impossible Error opening filters!
Any help are very appreciated!
Thank you.
Attachments (2)
Change History (18)
by , 5 years ago
Attachment: | 662478440-short.wav added |
---|
comment:1 by , 5 years ago
Keywords: | g729 added |
---|---|
Priority: | normal → wish |
Type: | sponsoring request → enhancement |
Version: | unspecified → git-master |
Could you confirm that the output file was created from the wav file you attached (and that you did not record and decode at the same time)? I am asking because the output file seems short to me.
comment:2 by , 5 years ago
Yes, it is converted by original codec. It's easy to check. g729b has constant bitrate 17.7kbps and 8khz PCM 16 bit stereo is 256kbps. So result should be about 14x times bigger.
comment:3 by , 5 years ago
Could you confirm that the output file was created from the wav file you attached?
follow-up: 8 comment:6 by , 5 years ago
Replying to AlexanderU:
yes. Are there any specific way to confirm that?
My question was if you used the file that you attached here to create the output file (that you also attached). Afaik, the difference between G.729 and G.729B is that G.729B is able to send (via network) the information that the sender is silent which is a shorter package than an actual audio package, this cannot be done in a wav file, see ticket #7604. If your file would contain such 2-byte Silence Insertion Descriptor packets, the output file would have to be longer (but it is too short even if the input does not contain any Silence Insertion Descriptor packets).
My suspicion is that ACELP.KELVIN uses other coefficients than G.729 or has other small differences.
comment:7 by , 5 years ago
Yes, from search in network it looks like second name of the same codec. I may be wrong about this but our customer claims it's g729b. In the same time I already found difference with ITU g729b specification at least in silence word so probably TwoCC name more correct.
comment:8 by , 5 years ago
Replying to cehoyos:
Replying to AlexanderU:
yes. Are there any specific way to confirm that?
My question was if you used the file that you attached here to create the output file (that you also attached). Afaik, the difference between G.729 and G.729B is that G.729B is able to send (via network) the information that the sender is silent which is a shorter package than an actual audio package, this cannot be done in a wav file, see ticket #7604. If your file would contain such 2-byte Silence Insertion Descriptor packets, the output file would have to be longer (but it is too short even if the input does not contain any Silence Insertion Descriptor packets).
My suspicion is that ACELP.KELVIN uses other coefficients than G.729 or has other small differences.
I agree with you. ACELP.KELVIN looks like modification of g729. I don't know how deep modification is. Sample file contains stream with 11 bytes per packet. g729 has 10 bytes per packet and g729b has 12 bytes per packet (2 silence insertion descriptor + 10 bytes of data)
comment:9 by , 5 years ago
Thank you for the analysis, please test the following patch with more samples:
diff --git a/configure b/configure index 34c2adb4a4..b23009994a 100755 --- a/configure +++ b/configure @@ -2632,6 +2632,7 @@ ac3_decoder_select="ac3_parser ac3dsp bswapdsp fmtconvert mdct" ac3_fixed_decoder_select="ac3_parser ac3dsp bswapdsp mdct" ac3_encoder_select="ac3dsp audiodsp mdct me_cmp" ac3_fixed_encoder_select="ac3dsp audiodsp mdct me_cmp" +acelp_kelvin_decoder_select="g729_decoder" adpcm_g722_decoder_select="g722dsp" adpcm_g722_encoder_select="g722dsp" aic_decoder_select="golomb idctdsp" diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c index d2f9a39ce5..5936cdc467 100644 --- a/libavcodec/allcodecs.c +++ b/libavcodec/allcodecs.c @@ -32,6 +32,7 @@ extern AVCodec ff_a64multi_encoder; extern AVCodec ff_a64multi5_encoder; extern AVCodec ff_aasc_decoder; +extern AVCodec ff_acelp_kelvin_decoder; extern AVCodec ff_aic_decoder; extern AVCodec ff_alias_pix_encoder; extern AVCodec ff_alias_pix_decoder; diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index d234271c5b..7ec4014d8b 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -629,6 +629,7 @@ enum AVCodecID { AV_CODEC_ID_ON2AVC, AV_CODEC_ID_DSS_SP, AV_CODEC_ID_CODEC2, + AV_CODEC_ID_ACELP_KELVIN, AV_CODEC_ID_FFWAVESYNTH = 0x15800, AV_CODEC_ID_SONIC, diff --git a/libavcodec/codec_desc.c b/libavcodec/codec_desc.c index 4d033c20ff..716e278b93 100644 --- a/libavcodec/codec_desc.c +++ b/libavcodec/codec_desc.c @@ -2834,6 +2834,12 @@ static const AVCodecDescriptor codec_descriptors[] = { .long_name = NULL_IF_CONFIG_SMALL("codec2 (very low bitrate speech codec)"), .props = AV_CODEC_PROP_LOSSY, }, + { + .id = AV_CODEC_ID_ACELP_KELVIN, + .name = "ACELP.KELVIN", + .long_name = NULL_IF_CONFIG_SMALL("Sipro ACELP.KELVIN"), + .props = AV_CODEC_PROP_LOSSY, + }, { .id = AV_CODEC_ID_FFWAVESYNTH, .type = AVMEDIA_TYPE_AUDIO, diff --git a/libavcodec/g729_parser.c b/libavcodec/g729_parser.c index 9982dbfffc..5a57025d62 100644 --- a/libavcodec/g729_parser.c +++ b/libavcodec/g729_parser.c @@ -45,9 +45,10 @@ static int g729_parse(AVCodecParserContext *s1, AVCodecContext *avctx, int next; if (!s->block_size) { - av_assert1(avctx->codec_id == AV_CODEC_ID_G729); /* FIXME: replace this heuristic block_size with more precise estimate */ s->block_size = (avctx->bit_rate < 8000) ? G729D_6K4_BLOCK_SIZE : G729_8K_BLOCK_SIZE; + if (avctx->codec_id == AV_CODEC_ID_ACELP_KELVIN) + s->block_size++; s->block_size *= avctx->channels; s->duration = avctx->frame_size; } @@ -76,7 +77,7 @@ static int g729_parse(AVCodecParserContext *s1, AVCodecContext *avctx, } AVCodecParser ff_g729_parser = { - .codec_ids = { AV_CODEC_ID_G729 }, + .codec_ids = { AV_CODEC_ID_G729, AV_CODEC_ID_ACELP_KELVIN }, .priv_data_size = sizeof(G729ParseContext), .parser_parse = g729_parse, .parser_close = ff_parse_close, diff --git a/libavcodec/g729dec.c b/libavcodec/g729dec.c index 2e4756b805..7c7f4d49f2 100644 --- a/libavcodec/g729dec.c +++ b/libavcodec/g729dec.c @@ -424,7 +424,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame_ptr, if ((ret = ff_get_buffer(avctx, frame, 0)) < 0) return ret; - if (buf_size % (G729_8K_BLOCK_SIZE * avctx->channels) == 0) { + if (buf_size % ((G729_8K_BLOCK_SIZE + (avctx->codec_id == AV_CODEC_ID_ACELP_KELVIN)) * avctx->channels) == 0) { packet_type = FORMAT_G729_8K; format = &format_g729_8k; //Reset voice decision @@ -445,6 +445,8 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame_ptr, int bad_pitch = 0; ///< parity check failed int is_periodic = 0; ///< whether one of the subframes is declared as periodic or not out_frame = (int16_t*)frame->data[c]; + if (avctx->codec_id == AV_CODEC_ID_ACELP_KELVIN) + buf++; for (i = 0; i < buf_size; i++) frame_erasure |= buf[i]; @@ -727,7 +729,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame_ptr, } *got_frame_ptr = 1; - return packet_type == FORMAT_G729_8K ? G729_8K_BLOCK_SIZE * avctx->channels : G729D_6K4_BLOCK_SIZE * avctx->channels; + return packet_type == FORMAT_G729_8K ? (G729_8K_BLOCK_SIZE + (avctx->codec_id == AV_CODEC_ID_ACELP_KELVIN)) * avctx->channels : G729D_6K4_BLOCK_SIZE * avctx->channels; } static av_cold int decode_close(AVCodecContext *avctx) @@ -749,3 +751,15 @@ AVCodec ff_g729_decoder = { .close = decode_close, .capabilities = AV_CODEC_CAP_SUBFRAMES | AV_CODEC_CAP_DR1, }; + +AVCodec ff_acelp_kelvin_decoder = { + .name = "ACELP.KELVIN", + .long_name = NULL_IF_CONFIG_SMALL("Sipro ACELP.KELVIN"), + .type = AVMEDIA_TYPE_AUDIO, + .id = AV_CODEC_ID_ACELP_KELVIN, + .priv_data_size = sizeof(G729Context), + .init = decoder_init, + .decode = decode_frame, + .close = decode_close, + .capabilities = AV_CODEC_CAP_SUBFRAMES | AV_CODEC_CAP_DR1, +}; diff --git a/libavformat/riff.c b/libavformat/riff.c index e755ad8d5f..27518216a6 100644 --- a/libavformat/riff.c +++ b/libavformat/riff.c @@ -534,6 +534,7 @@ const AVCodecTag ff_codec_wav_tags[] = { { AV_CODEC_ID_AAC, 0x00ff }, { AV_CODEC_ID_G723_1, 0x0111 }, { AV_CODEC_ID_SIPR, 0x0130 }, + { AV_CODEC_ID_ACELP_KELVIN, 0x0135 }, { AV_CODEC_ID_WMAV1, 0x0160 }, { AV_CODEC_ID_WMAV2, 0x0161 }, { AV_CODEC_ID_WMAPRO, 0x0162 },
comment:10 by , 5 years ago
Thank you very much!
Unfortunately I can't check because i have problems with building.
I get latest version of ffmpeg from git by command:
git clone https://github.com/FFmpeg/FFmpeg.git
Then I apply your path to directory:
cd FFmpeg patch -s -p0 < patch.diff
I checked all the changes applied.
Then I do configure
./configure make
After I try to convert media via command and get the answer:
$./ffmpeg -i 663001843.wav 663001843.wav.result.wav ffmpeg version N-94575-gcff3090 Copyright (c) 2000-2019 the FFmpeg developers built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.11) 20160609 configuration: libavutil 56. 33.100 / 56. 33.100 libavcodec 58. 55.100 / 58. 55.100 libavformat 58. 31.101 / 58. 31.101 libavdevice 58. 9.100 / 58. 9.100 libavfilter 7. 58.100 / 7. 58.100 libswscale 5. 6.100 / 5. 6.100 libswresample 3. 6.100 / 3. 6.100 [wav @ 0x2aca480] Estimating duration from bitrate, this may be inaccurate Guessed Channel Layout for Input Stream #0.0 : stereo Input #0, wav, from '663001843.wav': Duration: 00:18:34.63, bitrate: 17 kb/s Stream #0:0: Audio: ACELP.KELVIN (5[1][0][0] / 0x0135), 8000 Hz, stereo, 17 kb/s Stream mapping: Stream #0:0 -> #0:0 (? (?) -> pcm_s16le (native)) Decoder (codec ACELP.KELVIN) not found for input stream #0:0
May be I need to turn something on at configuration options? I do not see decoder related with g729_decoder after configuration.
Here is the output from ./configure
install prefix /usr/local source path . C compiler gcc C library glibc ARCH x86 (generic) big-endian no runtime cpu detection yes standalone assembly yes x86 assembler yasm 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 AVX2 enabled yes AVX-512 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 no 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 yes makeinfo supports HTML yes External libraries: alsa iconv libxcb_shape libxcb_xfixes zlib bzlib libxcb libxcb_shm lzma External libraries providing hardware acceleration: v4l2_m2m vaapi vdpau Libraries: avcodec avfilter avutil swscale avdevice avformat swresample Programs: ffmpeg ffprobe Enabled decoders: aac avrn flic mp3on4 pictor truemotion1 aac_fixed avrp flv mp3on4float pixlet truemotion2 aac_latm avs fmvc mpc7 pjs truemotion2rt aasc avui fourxm mpc8 png truespeech ac3 ayuv fraps mpeg1_v4l2m2m ppm tscc ac3_fixed bethsoftvid frwu mpeg1video prores tscc2 adpcm_4xm bfi g2m mpeg2_v4l2m2m prosumer tta adpcm_adx bink g723_1 mpeg2video psd twinvq adpcm_afc binkaudio_dct g729 mpeg4 ptx txd adpcm_agm binkaudio_rdft gdv mpeg4_v4l2m2m qcelp ulti adpcm_aica bintext gif mpegvideo qdm2 utvideo adpcm_ct bitpacked gremlin_dpcm mpl2 qdmc v210 adpcm_dtk bmp gsm msa1 qdraw v210x adpcm_ea bmv_audio gsm_ms mscc qpeg v308 adpcm_ea_maxis_xa bmv_video h261 msmpeg4v1 qtrle v408 adpcm_ea_r1 brender_pix h263 msmpeg4v2 r10k v410 adpcm_ea_r2 c93 h263_v4l2m2m msmpeg4v3 r210 vb adpcm_ea_r3 cavs h263i msrle ra_144 vble adpcm_ea_xas ccaption h263p mss1 ra_288 vc1 adpcm_g722 cdgraphics h264 mss2 ralf vc1_v4l2m2m adpcm_g726 cdxl h264_v4l2m2m msvideo1 rasc vc1image adpcm_g726le cfhd hap mszh rawvideo vcr1 adpcm_ima_amv cinepak hcom mts2 realtext vmdaudio adpcm_ima_apc clearvideo hevc mvc1 rl2 vmdvideo adpcm_ima_dat4 cljr hnm4_video mvc2 roq vmnc adpcm_ima_dk3 cllc hq_hqa mwsc roq_dpcm vorbis adpcm_ima_dk4 comfortnoise hqx mxpeg rpza vp3 adpcm_ima_ea_eacs cook huffyuv nellymoser rscc vp4 adpcm_ima_ea_sead cpia hymt nuv rv10 vp5 adpcm_ima_iss cscd iac on2avc rv20 vp6 adpcm_ima_oki cyuv idcin opus rv30 vp6a adpcm_ima_qt dca idf paf_audio rv40 vp6f adpcm_ima_rad dds iff_ilbm paf_video s302m vp7 adpcm_ima_smjpeg dfa ilbc pam sami vp8 adpcm_ima_wav dirac imc pbm sanm vp8_v4l2m2m adpcm_ima_ws dnxhd imm4 pcm_alaw sbc vp9 adpcm_ms dolby_e indeo2 pcm_bluray scpr vplayer adpcm_mtaf dpx indeo3 pcm_dvd screenpresso vqa adpcm_psx dsd_lsbf indeo4 pcm_f16le sdx2_dpcm wavpack adpcm_sbpro_2 dsd_lsbf_planar indeo5 pcm_f24le sgi wcmv adpcm_sbpro_3 dsd_msbf interplay_acm pcm_f32be sgirle webp adpcm_sbpro_4 dsd_msbf_planar interplay_dpcm pcm_f32le sheervideo webvtt adpcm_swf dsicinaudio interplay_video pcm_f64be shorten wmalossless adpcm_thp dsicinvideo jacosub pcm_f64le sipr wmapro adpcm_thp_le dss_sp jpeg2000 pcm_lxf smackaud wmav1 adpcm_vima dst jpegls pcm_mulaw smacker wmav2 adpcm_xa dvaudio jv pcm_s16be smc wmavoice adpcm_yamaha dvbsub kgv1 pcm_s16be_planar smvjpeg wmv1 agm dvdsub kmvc pcm_s16le snow wmv2 aic dvvideo lagarith pcm_s16le_planar sol_dpcm wmv3 alac dxa loco pcm_s24be sonic wmv3image alias_pix dxtory lscr pcm_s24daud sp5x wnv1 als dxv m101 pcm_s24le speedhq wrapped_avframe amrnb eac3 mace3 pcm_s24le_planar srgc ws_snd1 amrwb eacmv mace6 pcm_s32be srt xan_dpcm amv eamad magicyuv pcm_s32le ssa xan_wc3 anm eatgq mdec pcm_s32le_planar stl xan_wc4 ansi eatgv metasound pcm_s64be subrip xbin ape eatqi microdvd pcm_s64le subviewer xbm apng eightbps mimic pcm_s8 subviewer1 xface aptx eightsvx_exp mjpeg pcm_s8_planar sunrast xl aptx_hd eightsvx_fib mjpegb pcm_u16be svq1 xma1 arbc escape124 mlp pcm_u16le svq3 xma2 ass escape130 mmvideo pcm_u24be tak xpm asv1 evrc motionpixels pcm_u24le targa xsub asv2 exr movtext pcm_u32be targa_y216 xwd atrac1 ffv1 mp1 pcm_u32le tdsc y41p atrac3 ffvhuff mp1float pcm_u8 text ylc atrac3al ffwavesynth mp2 pcm_vidc theora yop atrac3p fic mp2float pcm_zork thp yuv4 atrac3pal fits mp3 pcx tiertexseqvideo zero12v atrac9 flac mp3adu pgm tiff zerocodec aura flashsv mp3adufloat pgmyuv tmv zlib aura2 flashsv2 mp3float pgssub truehd zmbv Enabled encoders: a64multi cljr ljpeg pcm_s16be_planar prores_aw v210 a64multi5 comfortnoise magicyuv pcm_s16le prores_ks v308 aac dca mjpeg pcm_s16le_planar qtrle v408 ac3 dnxhd mjpeg_vaapi pcm_s24be r10k v410 ac3_fixed dpx mlp pcm_s24daud r210 vc2 adpcm_adx dvbsub movtext pcm_s24le ra_144 vorbis adpcm_g722 dvdsub mp2 pcm_s24le_planar rawvideo vp8_v4l2m2m adpcm_g726 dvvideo mp2fixed pcm_s32be roq vp8_vaapi adpcm_g726le eac3 mpeg1video pcm_s32le roq_dpcm wavpack adpcm_ima_qt ffv1 mpeg2_vaapi pcm_s32le_planar rv10 webvtt adpcm_ima_wav ffvhuff mpeg2video pcm_s64be rv20 wmav1 adpcm_ms fits mpeg4 pcm_s64le s302m wmav2 adpcm_swf flac mpeg4_v4l2m2m pcm_s8 sbc wmv1 adpcm_yamaha flashsv msmpeg4v2 pcm_s8_planar sgi wmv2 alac flashsv2 msmpeg4v3 pcm_u16be snow wrapped_avframe alias_pix flv msvideo1 pcm_u16le sonic xbm amv g723_1 nellymoser pcm_u24be sonic_ls xface apng gif opus pcm_u24le srt xsub aptx h261 pam pcm_u32be ssa xwd aptx_hd h263 pbm pcm_u32le subrip y41p ass h263_v4l2m2m pcm_alaw pcm_u8 sunrast yuv4 asv1 h263p pcm_dvd pcm_vidc svq1 zlib asv2 h264_v4l2m2m pcm_f32be pcx targa zmbv avrp h264_vaapi pcm_f32le pgm text avui hevc_vaapi pcm_f64be pgmyuv tiff ayuv huffyuv pcm_f64le png truehd bmp jpeg2000 pcm_mulaw ppm tta cinepak jpegls pcm_s16be prores utvideo Enabled hwaccels: h263_vaapi hevc_vaapi mpeg1_vdpau mpeg4_vaapi vc1_vdpau wmv3_vaapi h264_vaapi hevc_vdpau mpeg2_vaapi mpeg4_vdpau vp8_vaapi wmv3_vdpau h264_vdpau mjpeg_vaapi mpeg2_vdpau vc1_vaapi vp9_vaapi Enabled parsers: aac cook dvdsub h264 png vorbis aac_latm dca flac hevc pnm vp3 ac3 dirac g723_1 mjpeg rv30 vp8 adx dnxhd g729 mlp rv40 vp9 av1 dpx gif mpeg4video sbc xma avs2 dvaudio gsm mpegaudio sipr bmp dvbsub h261 mpegvideo tak cavsvideo dvd_nav h263 opus vc1 Enabled demuxers: aa data ifv microdvd pcm_u16le sup aac daud ilbc mjpeg pcm_u24be svag ac3 dcstr image2 mjpeg_2000 pcm_u24le swf acm dfa image2_alias_pix mlp pcm_u32be tak act dhav image2_brender_pix mlv pcm_u32le tedcaptions adf dirac image2pipe mm pcm_u8 thp adp dnxhd image_bmp_pipe mmf pcm_vidc threedostr ads dsf image_dds_pipe mov pjs tiertexseq adx dsicin image_dpx_pipe mp3 pmp tmv aea dss image_exr_pipe mpc pva truehd afc dts image_gif_pipe mpc8 pvf tta aiff dtshd image_j2k_pipe mpegps qcp tty aix dv image_jpeg_pipe mpegts r3d txd amr dvbsub image_jpegls_pipe mpegtsraw rawvideo ty amrnb dvbtxt image_pam_pipe mpegvideo realtext v210 amrwb dxa image_pbm_pipe mpjpeg redspark v210x anm ea image_pcx_pipe mpl2 rl2 vag apc ea_cdata image_pgm_pipe mpsub rm vc1 ape eac3 image_pgmyuv_pipe msf roq vc1t apng epaf image_pictor_pipe msnwc_tcp rpl vividas aptx ffmetadata image_png_pipe mtaf rsd vivo aptx_hd filmstrip image_ppm_pipe mtv rso vmd aqtitle fits image_psd_pipe musx rtp vobsub asf flac image_qdraw_pipe mv rtsp voc asf_o flic image_sgi_pipe mvi s337m vpk ass flv image_sunrast_pipe mxf sami vplayer ast fourxm image_svg_pipe mxg sap vqf au frm image_tiff_pipe nc sbc w64 avi fsb image_webp_pipe nistsphere sbg wav avr g722 image_xpm_pipe nsp scc wc3 avs g723_1 image_xwd_pipe nsv sdp webm_dash_manifest avs2 g726 ingenient nut sdr2 webvtt bethsoftvid g726le ipmovie nuv sds wsaud bfi g729 ircam ogg sdx wsd bfstm gdv iss oma segafilm wsvqa bink genh iv8 paf ser wtv bintext gif ivf pcm_alaw shorten wv bit gsm ivr pcm_f32be siff wve bmv gxf jacosub pcm_f32le sln xa boa h261 jv pcm_f64be smacker xbin brstm h263 kux pcm_f64le smjpeg xmv c93 h264 live_flv pcm_mulaw smush xvag caf hcom lmlm4 pcm_s16be sol xwma cavsvideo hevc loas pcm_s16le sox yop cdg hls lrc pcm_s24be spdif yuv4mpegpipe cdxl hnm lvf pcm_s24le srt cine ico lxf pcm_s32be stl codec2 idcin m4v pcm_s32le str codec2raw idf matroska pcm_s8 subviewer concat iff mgsts pcm_u16be subviewer1 Enabled muxers: a64 dnxhd hevc mpeg1vcd pcm_s24le smoothstreaming ac3 dts hls mpeg1video pcm_s32be sox adts dv ico mpeg2dvd pcm_s32le spdif adx eac3 ilbc mpeg2svcd pcm_s8 spx aiff f4v image2 mpeg2video pcm_u16be srt amr ffmetadata image2pipe mpeg2vob pcm_u16le stream_segment apng fifo ipod mpegts pcm_u24be sup aptx fifo_test ircam mpjpeg pcm_u24le swf aptx_hd filmstrip ismv mxf pcm_u32be tee asf fits ivf mxf_d10 pcm_u32le tg2 asf_stream flac jacosub mxf_opatom pcm_u8 tgp ass flv latm null pcm_vidc truehd ast framecrc lrc nut psp tta au framehash m4v oga rawvideo uncodedframecrc avi framemd5 matroska ogg rm vc1 avm2 g722 matroska_audio ogv roq vc1t avs2 g723_1 md5 oma rso voc bit g726 microdvd opus rtp w64 caf g726le mjpeg pcm_alaw rtp_mpegts wav cavsvideo gif mkvtimestamp_v2 pcm_f32be rtsp webm codec2 gsm mlp pcm_f32le sap webm_chunk codec2raw gxf mmf pcm_f64be sbc webm_dash_manifest crc h261 mov pcm_f64le scc webp dash h263 mp2 pcm_mulaw segafilm webvtt data h264 mp3 pcm_s16be segment wtv daud hash mp4 pcm_s16le singlejpeg wv dirac hds mpeg1system pcm_s24be smjpeg yuv4mpegpipe Enabled protocols: async ffrtmphttp http mmst rtp udp cache file httpproxy pipe srtp udplite concat ftp icecast prompeg subfile unix crypto gopher md5 rtmp tcp data hls mmsh rtmpt tee Enabled filters: abench areverse dcshift haldclut overlay sidechaingate abitscope aselect dctdnoiz haldclutsrc pad sidedata acompressor asendcmd deband hdcd pal100bars signalstats acontrast asetnsamples deblock headphone pal75bars silencedetect acopy asetpts decimate hflip palettegen silenceremove acrossfade asetrate deconvolve highpass paletteuse sinc acrossover asettb dedot highshelf pan sine acrusher ashowinfo deesser hilbert perms smptebars acue asidedata deflate histogram pixdesctest smptehdbars addroi asoftclip deflicker hqx pixscope sobel adeclick asplit deinterlace_vaapi hstack premultiply spectrumsynth adeclip astats dejudder hue prewitt split adelay astreamselect denoise_vaapi hwdownload procamp_vaapi sr aderivative atadenoise derain hwmap pseudocolor ssim adrawgraph atempo deshake hwupload psnr stereotools aecho atrim despill hysteresis qp stereowiden aemphasis avectorscope detelecine idet random streamselect aeval avgblur dilation il readeia608 superequalizer aevalsrc bandpass displace inflate readvitc surround afade bandreject doubleweave interleave realtime swaprect afftdn bass drawbox join remap swapuv afftfilt bbox drawgraph lagfun removegrain tblend afifo bench drawgrid lenscorrection removelogo telecine afir biquad drmeter life replaygain testsrc aformat bitplanenoise dynaudnorm limiter reverse testsrc2 agate blackdetect earwax loop rgbashift threshold agraphmonitor blend ebur128 loudnorm rgbtestsrc thumbnail ahistogram bm3d edgedetect lowpass roberts tile aiir bwdif elbg lowshelf rotate tlut2 aintegral cellauto entropy lumakey scale tmix ainterleave channelmap equalizer lut scale2ref tonemap alimiter channelsplit erosion lut1d scale_vaapi tpad allpass chorus extractplanes lut2 select transpose allrgb chromahold extrastereo lut3d selectivecolor treble allyuv chromakey fade lutrgb sendcmd tremolo aloop chromashift fftdnoiz lutyuv separatefields trim alphaextract ciescope fftfilt mandelbrot setdar unpremultiply alphamerge codecview field maskedclamp setfield unsharp amerge color fieldhint maskedmerge setparams vectorscope ametadata colorbalance fieldmatch maskfun setpts vflip amix colorchannelmixer fieldorder mcompand setrange vfrdet amovie colorhold fifo mergeplanes setsar vibrance amplify colorkey fillborders mestimate settb vibrato amultiply colorlevels firequalizer metadata sharpness_vaapi vignette anequalizer colorspace flanger midequalizer showcqt vmafmotion anlmdn compand floodfill minterpolate showfreqs volume anoisesrc compensationdelay format mix showinfo volumedetect anull concat fps movie showpalette vstack anullsink convolution framepack negate showspatial w3fdif anullsrc convolve framerate nlmeans showspectrum waveform apad copy framestep noformat showspectrumpic weave aperms crop freezedetect noise showvolume xbr aphasemeter crossfeed gblur normalize showwaves xmedian aphaser crystalizer gradfun null showwavespic xstack apulsator cue graphmonitor nullsink shuffleframes yadif arealtime curves greyedge nullsrc shuffleplanes yuvtestsrc aresample datascope haas oscilloscope sidechaincompress zoompan Enabled bsfs: aac_adtstoasc eac3_core hapqa_extract mov2textsub prores_metadata vp9_raw_reorder av1_frame_split extract_extradata hevc_metadata mp3_header_decompress remove_extradata vp9_superframe av1_metadata filter_units hevc_mp4toannexb mpeg2_metadata text2movsub vp9_superframe_split chomp h264_metadata imx_dump_header mpeg4_unpack_bframes trace_headers dca_core h264_mp4toannexb mjpeg2jpeg noise truehd_core dump_extradata h264_redundant_pps mjpega_dump_header null vp9_metadata Enabled indevs: alsa fbdev lavfi oss v4l2 xcbgrab Enabled outdevs: alsa fbdev oss v4l2 License: LGPL version 2.1 or later
Again, Thank you for your help!
comment:11 by , 5 years ago
Sorry, I forgot this change (added above):
diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c index d2f9a39ce5..5936cdc467 100644 --- a/libavcodec/allcodecs.c +++ b/libavcodec/allcodecs.c @@ -32,6 +32,7 @@ extern AVCodec ff_a64multi_encoder; extern AVCodec ff_a64multi5_encoder; extern AVCodec ff_aasc_decoder; +extern AVCodec ff_acelp_kelvin_decoder; extern AVCodec ff_aic_decoder; extern AVCodec ff_alias_pix_encoder; extern AVCodec ff_alias_pix_decoder;
comment:12 by , 5 years ago
Thank you very much it works like a charm!
You are my hero! Thank you again!
comment:13 by , 5 years ago
Were you able to test different samples? Do you have access to the encoder?
comment:15 by , 5 years ago
Yes, I tested on about 10 different files, and it works perfect. Unfortunately I have no access to encoder.
comment:16 by , 5 years ago
Resolution: | → duplicate |
---|---|
Status: | new → closed |
Finally committed as 551fcbbccbca8e78443c049421f01f350d4bc370, thank you for the analysis!
sample file