put back codec closing in destructure, testing with bionic

This commit is contained in:
Isaac Connor 2019-04-03 14:25:18 -04:00
parent 48f7a6f04f
commit b6f35db4de
1 changed files with 14 additions and 10 deletions

View File

@ -104,7 +104,7 @@ VideoStore::VideoStore(
} }
#if LIBAVCODEC_VERSION_CHECK(57, 64, 0, 64, 0) #if LIBAVCODEC_VERSION_CHECK(57, 64, 0, 64, 0)
video_out_stream = avformat_new_stream(oc, video_out_codec); video_out_stream = avformat_new_stream(oc, NULL);
if ( !video_out_stream ) { if ( !video_out_stream ) {
Error("Unable to create video out stream"); Error("Unable to create video out stream");
return; return;
@ -523,7 +523,6 @@ VideoStore::~VideoStore() {
} }
} // end if ( oc->pb ) } // end if ( oc->pb )
#if 0
// I wonder if we should be closing the file first. // I wonder if we should be closing the file first.
// I also wonder if we really need to be doing all the ctx // I also wonder if we really need to be doing all the ctx
// allocation/de-allocation constantly, or whether we can just re-use it. // allocation/de-allocation constantly, or whether we can just re-use it.
@ -532,7 +531,7 @@ VideoStore::~VideoStore() {
if ( video_out_stream ) { if ( video_out_stream ) {
#if LIBAVCODEC_VERSION_CHECK(57, 64, 0, 64, 0) #if LIBAVCODEC_VERSION_CHECK(57, 64, 0, 64, 0)
// We allocate and copy in newer ffmpeg, so need to free it // We allocate and copy in newer ffmpeg, so need to free it
avcodec_free_context(&video_in_ctx); //avcodec_free_context(&video_in_ctx);
#endif #endif
video_in_ctx = NULL; video_in_ctx = NULL;
@ -542,14 +541,12 @@ VideoStore::~VideoStore() {
video_out_codec = NULL; video_out_codec = NULL;
} // end if video_out_codec } // end if video_out_codec
#if LIBAVCODEC_VERSION_CHECK(57, 64, 0, 64, 0) #if LIBAVCODEC_VERSION_CHECK(57, 64, 0, 64, 0)
#endif
avcodec_free_context(&video_out_ctx); avcodec_free_context(&video_out_ctx);
#endif
video_out_ctx = NULL; video_out_ctx = NULL;
} // end if video_out_stream } // end if video_out_stream
#endif
if ( audio_out_stream ) { if ( audio_out_stream ) {
#if 0
if ( audio_in_codec ) { if ( audio_in_codec ) {
avcodec_close(audio_in_ctx); avcodec_close(audio_in_ctx);
Debug(4, "Success closing audio_in_ctx"); Debug(4, "Success closing audio_in_ctx");
@ -558,20 +555,19 @@ VideoStore::~VideoStore() {
#if LIBAVCODEC_VERSION_CHECK(57, 64, 0, 64, 0) #if LIBAVCODEC_VERSION_CHECK(57, 64, 0, 64, 0)
// We allocate and copy in newer ffmpeg, so need to free it // We allocate and copy in newer ffmpeg, so need to free it
#endif
avcodec_free_context(&audio_in_ctx); avcodec_free_context(&audio_in_ctx);
#endif
Debug(4, "Success freeing audio_in_ctx"); Debug(4, "Success freeing audio_in_ctx");
audio_in_ctx = NULL; audio_in_ctx = NULL;
if ( audio_out_ctx ) { if ( audio_out_ctx ) {
avcodec_close(audio_out_ctx); avcodec_close(audio_out_ctx);
Debug(4, "Success closing audio_out_ctx"); Debug(4, "Success closing audio_out_ctx");
avcodec_free_context(&audio_out_ctx);
#if LIBAVCODEC_VERSION_CHECK(57, 64, 0, 64, 0) #if LIBAVCODEC_VERSION_CHECK(57, 64, 0, 64, 0)
avcodec_free_context(&audio_out_ctx);
#endif #endif
} }
audio_out_ctx = NULL; audio_out_ctx = NULL;
#endif
#if defined(HAVE_LIBAVRESAMPLE) || defined(HAVE_LIBSWRESAMPLE) #if defined(HAVE_LIBAVRESAMPLE) || defined(HAVE_LIBSWRESAMPLE)
if ( resample_ctx ) { if ( resample_ctx ) {
@ -621,6 +617,14 @@ bool VideoStore::setup_resampler() {
audio_in_codec = audio_in_codec =
avcodec_find_decoder(audio_in_stream->codecpar->codec_id); avcodec_find_decoder(audio_in_stream->codecpar->codec_id);
audio_in_ctx = avcodec_alloc_context3(audio_in_codec); audio_in_ctx = avcodec_alloc_context3(audio_in_codec);
// Copy params from instream to ctx
ret = avcodec_parameters_to_context(
audio_in_ctx, audio_in_stream->codecpar);
if ( ret < 0 ) {
Error("Unable to copy audio params to ctx %s",
av_make_error_string(ret).c_str());
}
#else #else
// codec is already open in ffmpeg_camera // codec is already open in ffmpeg_camera
audio_in_ctx = audio_in_stream->codec; audio_in_ctx = audio_in_stream->codec;
@ -643,7 +647,7 @@ bool VideoStore::setup_resampler() {
// if the codec is already open, nothing is done. // if the codec is already open, nothing is done.
if ( (ret = avcodec_open2(audio_in_ctx, audio_in_codec, NULL)) < 0 ) { if ( (ret = avcodec_open2(audio_in_ctx, audio_in_codec, NULL)) < 0 ) {
Error("Can't open in codec!"); Error("Can't open audio in codec!");
return false; return false;
} }