Video: Fix uncompressed PCM audio recording

This commit is contained in:
Jeffrey Pfau 2014-12-24 00:06:26 -08:00
parent 6656f53f61
commit 9edf42b454
2 changed files with 4 additions and 3 deletions

View File

@ -26,6 +26,7 @@ Bugfixes:
- GBA Audio: Audio buffer sizes are now correct sizes for both sample rates
- GBA Video: Fix blend issues with obscured middle layers
- Video: Ensure FFmpeg encoder has audio frames
- Video: Fix uncompressed PCM audio recording
Misc:
- Qt: Disable sync to video by default
- GBA: Exit cleanly on FATAL if the port supports it

View File

@ -226,7 +226,7 @@ bool FFmpegEncoderOpen(struct FFmpegEncoder* encoder, const char* outfile) {
encoder->audioFrame = avcodec_alloc_frame();
#endif
if (!encoder->audio->frame_size) {
encoder->audio->frame_size = 1024;
encoder->audio->frame_size = 1;
}
encoder->audioFrame->nb_samples = encoder->audio->frame_size;
encoder->audioFrame->format = encoder->audio->sample_fmt;
@ -368,9 +368,9 @@ void _ffmpegPostAudioFrame(struct GBAAVStream* stream, int32_t left, int32_t rig
int channelSize = 2 * av_get_bytes_per_sample(encoder->audio->sample_fmt);
avresample_convert(encoder->resampleContext,
0, 0, encoder->postaudioBufferSize / channelSize,
0, 0, 0,
(uint8_t**) &encoder->audioBuffer, 0, encoder->audioBufferSize / 4);
if ((ssize_t) avresample_available(encoder->resampleContext) < (ssize_t) encoder->postaudioBufferSize / channelSize) {
if (avresample_available(encoder->resampleContext) < encoder->audioFrame->nb_samples) {
return;
}
#if LIBAVCODEC_VERSION_MAJOR >= 55