|
|
@ -115,6 +115,10 @@ static void open_audio(AVFormatContext *oc, AVCodec *codec, AVStream *st) |
|
|
|
samples = av_malloc(audio_input_frame_size * |
|
|
|
samples = av_malloc(audio_input_frame_size * |
|
|
|
av_get_bytes_per_sample(c->sample_fmt) * |
|
|
|
av_get_bytes_per_sample(c->sample_fmt) * |
|
|
|
c->channels); |
|
|
|
c->channels); |
|
|
|
|
|
|
|
if (!samples) { |
|
|
|
|
|
|
|
fprintf(stderr, "Could not allocate audio samples buffer\n"); |
|
|
|
|
|
|
|
exit(1); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* Prepare a 16 bit dummy audio frame of 'frame_size' samples and
|
|
|
|
/* Prepare a 16 bit dummy audio frame of 'frame_size' samples and
|
|
|
@ -139,7 +143,7 @@ static void write_audio_frame(AVFormatContext *oc, AVStream *st) |
|
|
|
AVCodecContext *c; |
|
|
|
AVCodecContext *c; |
|
|
|
AVPacket pkt = { 0 }; // data and size must be 0;
|
|
|
|
AVPacket pkt = { 0 }; // data and size must be 0;
|
|
|
|
AVFrame *frame = avcodec_alloc_frame(); |
|
|
|
AVFrame *frame = avcodec_alloc_frame(); |
|
|
|
int got_packet; |
|
|
|
int got_packet, ret; |
|
|
|
|
|
|
|
|
|
|
|
av_init_packet(&pkt); |
|
|
|
av_init_packet(&pkt); |
|
|
|
c = st->codec; |
|
|
|
c = st->codec; |
|
|
@ -152,7 +156,12 @@ static void write_audio_frame(AVFormatContext *oc, AVStream *st) |
|
|
|
av_get_bytes_per_sample(c->sample_fmt) * |
|
|
|
av_get_bytes_per_sample(c->sample_fmt) * |
|
|
|
c->channels, 1); |
|
|
|
c->channels, 1); |
|
|
|
|
|
|
|
|
|
|
|
avcodec_encode_audio2(c, &pkt, frame, &got_packet); |
|
|
|
ret = avcodec_encode_audio2(c, &pkt, frame, &got_packet); |
|
|
|
|
|
|
|
if (ret < 0) { |
|
|
|
|
|
|
|
fprintf(stderr, "Error encoding audio frame\n"); |
|
|
|
|
|
|
|
exit(1); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (!got_packet) |
|
|
|
if (!got_packet) |
|
|
|
return; |
|
|
|
return; |
|
|
|
|
|
|
|
|
|
|
|