X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=ffmpeg.c;h=ddf42726d9df2aa36d3214a2d24584ae52218885;hb=dc265e2b6b6b8a1f461e6db3bbd4568dd6971e56;hp=9f29eac7b1673480771dc4d0b099515050f27167;hpb=c054cff87a3329a1e55abc9cd2659f790f09678e;p=ffmpeg diff --git a/ffmpeg.c b/ffmpeg.c index 9f29eac7b16..ddf42726d9d 100644 --- a/ffmpeg.c +++ b/ffmpeg.c @@ -516,7 +516,7 @@ static void ffmpeg_cleanup(int ret) if (vstats_file) fclose(vstats_file); - av_free(vstats_filename); + av_freep(&vstats_filename); av_freep(&input_streams); av_freep(&input_files); @@ -2270,16 +2270,34 @@ static void print_sdp(void) { char sdp[16384]; int i; + int j; + AVIOContext *sdp_pb; AVFormatContext **avc = av_malloc_array(nb_output_files, sizeof(*avc)); if (!avc) exit_program(1); - for (i = 0; i < nb_output_files; i++) - avc[i] = output_files[i]->ctx; + for (i = 0, j = 0; i < nb_output_files; i++) { + if (!strcmp(output_files[i]->ctx->oformat->name, "rtp")) { + avc[j] = output_files[i]->ctx; + j++; + } + } + + av_sdp_create(avc, j, sdp, sizeof(sdp)); + + if (!sdp_filename) { + printf("SDP:\n%s\n", sdp); + fflush(stdout); + } else { + if (avio_open2(&sdp_pb, sdp_filename, AVIO_FLAG_WRITE, &int_cb, NULL) < 0) { + av_log(NULL, AV_LOG_ERROR, "Failed to open sdp file '%s'\n", sdp_filename); + } else { + avio_printf(sdp_pb, "SDP:\n%s", sdp); + avio_close(sdp_pb); + av_freep(&sdp_filename); + } + } - av_sdp_create(avc, nb_output_files, sdp, sizeof(sdp)); - printf("SDP:\n%s\n", sdp); - fflush(stdout); av_freep(&avc); } @@ -3122,7 +3140,7 @@ static int transcode_init(void) return ret; } - if (want_sdp) { + if (sdp_filename || want_sdp) { print_sdp(); }