Opened 13 years ago

Closed 13 years ago

#810 closed defect (fixed)

Muxing MXF audio only files leads to a floating point exception

Reported by: Clément Bœsch Owned by:
Priority: normal Component: avformat
Version: git-master Keywords: mxf fpe
Cc: Blocked By:
Blocking: Reproduced by developer: yes
Analyzed by developer: no

Description

Steps to reproduce:

% make tests/audiogen
% ./tests/audiogen a.sw 48000 2
% ./ffmpeg -ar 48000 -ac 2 -i a.sw -y a.mxf

Backtrace:

(gdb) r
Starting program: /home/ubitux/proj/ffmpeg/ffmpeg_g -ar 48000 -ac 2 -i a.sw -y a.mxf
[Thread debugging using libthread_db enabled]
ffmpeg version N-36003-gf27930c, Copyright (c) 2000-2011 the FFmpeg developers
  built on Dec 21 2011 00:07:07 with gcc 4.6.2 20111125 (prerelease)
  configuration: --enable-gpl --enable-libmp3lame --enable-libvorbis --enable-libxvid --enable-libx264 --enable-libvpx --enable-libtheora --enable-x11grab --enable-libopenjpeg --enable-version3 --enable-libmodplug --enable-libass --cc='ccache cc'
  libavutil    51. 32. 0 / 51. 32. 0
  libavcodec   53. 46. 1 / 53. 46. 1
  libavformat  53. 27. 0 / 53. 27. 0
  libavdevice  53.  4. 0 / 53.  4. 0
  libavfilter   2. 53. 0 /  2. 53. 0
  libswscale    2.  1. 0 /  2.  1. 0
  libpostproc  51.  2. 0 / 51.  2. 0
[s16le @ 0x141d840] Estimating duration from bitrate, this may be inaccurate
Input #0, s16le, from 'a.sw':
  Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #0:0: Audio: pcm_s16le, 48000 Hz, 2 channels, s16, 1536 kb/s
Output #0, mxf, to 'a.mxf':
  Metadata:
    encoder         : Lavf53.27.0
    Stream #0:0: Audio: pcm_s16le, 48000 Hz, 2 channels, s16, 1536 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (pcm_s16le -> pcm_s16le)
Press [q] to stop, [?] for help

Program received signal SIGFPE, Arithmetic exception.
0x0000000000a9ec0b in av_rescale_rnd (a=<optimized out>, b=0, c=0, rnd=<optimized out>) at libavutil/mathematics.c:91
91	            return (a * b + r)/c;
(gdb) bt
#0  0x0000000000a9ec0b in av_rescale_rnd (a=<optimized out>, b=0, c=0, rnd=<optimized out>) at libavutil/mathematics.c:91
#1  0x0000000000553acb in ff_interleave_new_audio_packet (flush=0, stream_index=0, pkt=0x7fffffffbfa0, s=<optimized out>)
    at libavformat/audiointerleave.c:87
#2  ff_audio_rechunk_interleave (s=0x1425c80, out=0x7fffffffc050, pkt=0x0, flush=0, 
    get_packet=0x502fd0 <mxf_interleave_get_packet>, compare_ts=0x502f60 <mxf_compare_timestamps>)
    at libavformat/audiointerleave.c:132
#3  0x0000000000543175 in interleave_packet (flush=0, in=0x7fffffffc300, out=0x7fffffffc050, s=<optimized out>)
    at libavformat/utils.c:3454
#4  av_interleaved_write_frame (s=0x1425c80, pkt=0x7fffffffc300) at libavformat/utils.c:3477
#5  0x00000000004466d5 in write_frame (s=0x1425c80, pkt=0x7fffffffc300, avctx=0x141e860, bsfc=0x0) at ffmpeg.c:833
#6  0x0000000000448ec9 in do_audio_out (ist=0x141dd90, ost=0x1424830, s=0x1425c80, decoded_frame=<optimized out>)
    at ffmpeg.c:1072
#7  transcode_audio (got_output=0x7fffffffc3c8, pkt=0x7fffffffc2a0, ist=0x141dd90) at ffmpeg.c:1838
#8  output_packet (ist=<optimized out>, ost_table=0x1424830, nb_ostreams=<optimized out>, pkt=<optimized out>)
    at ffmpeg.c:2043
#9  0x000000000044b72e in transcode (output_files=0x1424b00, nb_output_files=1, input_files=0x1424c10, nb_input_files=0)
    at ffmpeg.c:2804
#10 0x00000000004432a2 in main (argc=<optimized out>, argv=0x7fffffffe698) at ffmpeg.c:4885
(gdb) 

The time base seems to be set only with when a video stream is specified, so trying to rescale it in case of audio only leads to a floating exception. The issue might also be reproducible with data or subtitles muxing without video.

Change History (3)

comment:1 by Carl Eugen Hoyos, 13 years ago

Reproduced by developer: set
Status: newopen

comment:2 by Michael Niedermayer, 13 years ago

patch on ML

comment:3 by Carl Eugen Hoyos, 13 years ago

Keywords: fpe added
Resolution: fixed
Status: openclosed

The fpe was fixed by Tomas Härdin, I suggest to open a new ticket for the "audio only mxf muxing" enhancement.

Note: See TracTickets for help on using tickets.