--- ac3dec.c-original Wed Aug 8 20:49:04 2001 +++ ac3dec.c Fri Aug 10 02:36:30 2001 @@ -208,21 +208,26 @@ //Send the samples to the output device output_play(ac3_frame->audio_data, 256 * 6); } while((ac3_frame = ac3_decode_frame())); + output_close(); } else { uint_8 *start, *end; init_spdif(); - if (output_open(&out_config) < 0) { - fprintf(stderr, "Output open failed\n"); - exit(EXIT_FAILURE); + if (fill_buffer(&start, &end) > 0) + { + if (output_open(&out_config) < 0) { + fprintf(stderr, "Output open failed\n"); + exit(EXIT_FAILURE); + } + signal(SIGINT, ac3dec_signal_handler); + signal(SIGTERM, ac3dec_signal_handler); + signal(SIGABRT, ac3dec_signal_handler); + if (output_spdif(start, end, quiet) >= 0) + while (fill_buffer(&start, &end) > 0) + if (output_spdif(start, end, quiet) < 0) + break; + output_close(); } - signal(SIGINT, ac3dec_signal_handler); - signal(SIGTERM, ac3dec_signal_handler); - signal(SIGABRT, ac3dec_signal_handler); - while (fill_buffer(&start, &end) > 0) - if (output_spdif(start, end, quiet) < 0) - break; } - output_close(); fclose(in_file); } return EXIT_SUCCESS;