summaryrefslogtreecommitdiff
path: root/ffmpeg.c
diff options
context:
space:
mode:
authorAlex Converse <aconverse@google.com>2011-04-04 16:07:23 -0700
committerAnton Khirnov <anton@khirnov.net>2011-04-05 09:08:04 +0200
commit14cf0fd2f586471fff4ee379739a5734f568af11 (patch)
treec3c3a2a2aca28d1e95f2f1e28f991f391feea3c0 /ffmpeg.c
parentb84048479888739e0aa8d9e534c49a3ab0e02252 (diff)
Add silence support for AV_SAMPLE_FMT_U8.
Signed-off-by: Anton Khirnov <anton@khirnov.net>
Diffstat (limited to 'ffmpeg.c')
-rw-r--r--ffmpeg.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/ffmpeg.c b/ffmpeg.c
index 5e50db3389..1f7b8879d0 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -1390,6 +1390,14 @@ static void print_report(AVFormatContext **output_files,
}
}
+static void generate_silence(uint8_t* buf, enum AVSampleFormat sample_fmt, size_t size)
+{
+ int fill_char = 0x00;
+ if (sample_fmt == AV_SAMPLE_FMT_U8)
+ fill_char = 0x80;
+ memset(buf, fill_char, size);
+}
+
/* pkt = NULL means EOF (needed to flush decoder buffers) */
static int output_packet(AVInputStream *ist, int ist_index,
AVOutputStream **ost_table, int nb_ostreams,
@@ -1732,7 +1740,7 @@ static int output_packet(AVInputStream *ist, int ist_index,
int frame_bytes = enc->frame_size*osize*enc->channels;
if (allocated_audio_buf_size < frame_bytes)
ffmpeg_exit(1);
- memset(audio_buf+fifo_bytes, 0, frame_bytes - fifo_bytes);
+ generate_silence(audio_buf+fifo_bytes, enc->sample_fmt, frame_bytes - fifo_bytes);
}
ret = avcodec_encode_audio(enc, bit_buffer, bit_buffer_size, (short *)audio_buf);