From 27d4c159525be01c2395119ae12523b2040d7ddc Mon Sep 17 00:00:00 2001 From: martii Date: Sat, 5 Apr 2014 19:32:58 +0200 Subject: [PATCH] libeplayer: simplify writer/pcm --- libeplayer3/Makefile.am | 1 + libeplayer3/container/container_ffmpeg.cpp | 4 +-- libeplayer3/include/.writer.h.swp | Bin 12288 -> 0 bytes libeplayer3/include/manager.h | 1 - libeplayer3/output/writer/pcm.cpp | 27 +++++++++------------ 5 files changed, 15 insertions(+), 18 deletions(-) delete mode 100644 libeplayer3/include/.writer.h.swp diff --git a/libeplayer3/Makefile.am b/libeplayer3/Makefile.am index 8baa601..c8066a3 100644 --- a/libeplayer3/Makefile.am +++ b/libeplayer3/Makefile.am @@ -5,6 +5,7 @@ CXXFLAGS = -Wall AM_CPPFLAGS = -I$(srcdir)/include AM_CPPFLAGS += -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE AM_CPPFLAGS += -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS +AM_CPPFLAGS += -ggdb libeplayer3_la_SOURCES = \ container/container.cpp container/container_ffmpeg.cpp \ diff --git a/libeplayer3/container/container_ffmpeg.cpp b/libeplayer3/container/container_ffmpeg.cpp index 19caec2..5771b41 100644 --- a/libeplayer3/container/container_ffmpeg.cpp +++ b/libeplayer3/container/container_ffmpeg.cpp @@ -340,7 +340,7 @@ static void *FFMPEGThread(void *arg) ffmpeg_printf(200, "packet_size %d - index %d\n", packet.size, pid); if (videoTrack && (videoTrack->Id == pid)) { - currentVideoPts = /* CHECK videoTrack->pts = */pts = calcPts(avContext, videoTrack->stream, packet.pts); + currentVideoPts = pts = calcPts(avContext, videoTrack->stream, packet.pts); ffmpeg_printf(200, "VideoTrack index = %d %lld\n", pid, currentVideoPts); @@ -356,7 +356,7 @@ static void *FFMPEGThread(void *arg) } else if (audioTrack && (audioTrack->Id == pid)) { context->currentAudioPtsP = ¤tAudioPts; //FIXME, temporary workaround only if (!context->playback->BackWard) { - currentAudioPts = /* CHECK audioTrack->pts = */pts = calcPts(avContext, audioTrack->stream, packet.pts); + currentAudioPts = pts = calcPts(avContext, audioTrack->stream, packet.pts); ffmpeg_printf(200, "AudioTrack index = %d\n", pid); avOut.pts = pts; diff --git a/libeplayer3/include/.writer.h.swp b/libeplayer3/include/.writer.h.swp deleted file mode 100644 index ec93d81a280bb58cb634eeaa366d6d96fc5eb061..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2OK2oT7{_aU>>AzG&3X_#NF@=S3`sgKq9h_tCXXH2F+&~`L1F0WuE`Yk^bB3q zlf)2>2f>40RuB(*-HRZC3w!b^>Z(@{x(D&>9$isz{a1BQGLuIqLN2n^Z`B5 z`d4*Thje+kn9I}WhQdhqkvJsC}0#Y3K#{90!D#* zNCDY6L*7Pz?~D7q8lTVXJIA-?WE3z87zK<1MggOMQNSo*6fg=H1&jhl0i(eGPyrkN z=ihmdkU!5NdHnys_4ohn#|Zfa{0zPU*TI+I8h8(Q;AQYM=mO`!S@7MXgnSEbfDge{ z@D2!p3#P%dpd0*sfso(858!+7IrtdtfHIf>J)j$01b>_-i)py?}xz zz}F93j!#0p17G;1=}13d~^?Fbdp@3iL7G8^aCpPol+dhQkmjhJ*e3-TlXc~ zfJ%0=;tbGCaY+WuuFctS8gtRa53?lLDgL%BOZV^f~F++N;nFzTqnlEkHMDUM}_F0YrE zk5cZhAr%D8DBEmoN*##ZUcJd(w!eB&*-ltp&D%w`#_{c6kZSd7eK-5|4jss}m2^iw z{~_Rk+}i^-!m`JmNwP&8&lV!q9PdY3d-X7^F*(C3cIZWV#Up`a4s+3(?74LM#CE4@ zV^G_YAec@p@Z+|li3@{{Rm_e|C6&)zDJGU*9-SCVbjUAd7xINfm$`+N#cVdwWhPgA zHPK-;e{7!Pi2?G3*?Dy4c&E`Ryy+b(sGje|g~jRI(os!mm$@q$^wzQxqO9gKi6Lf| z(L`c|jA|pHh1pE@$br*Y9#^geyOJCtUq~)5Wb=tR=ClLZ-krHqgyM+idDdmKb>k$wN3)UtN& zT`lV&8(mbSMg#Ind@x>$)@j_?wT6d1W!FRRbOqTq=oR-smoNhRI@wBH(AJflBJser zEQq;VP48D*l)X~-88#CAOyI0nO`PW|8+4m?NRG8C_k>Ezd5NE|*ZV;;VVTXZaV9mFiLe diff --git a/libeplayer3/include/manager.h b/libeplayer3/include/manager.h index eae1d6e..5f87cfc 100644 --- a/libeplayer3/include/manager.h +++ b/libeplayer3/include/manager.h @@ -42,7 +42,6 @@ typedef struct Track_s { /* length of track */ int64_t duration; -//CHECK int64_t pts; /* context from ffmpeg */ AVFormatContext *avfc; diff --git a/libeplayer3/output/writer/pcm.cpp b/libeplayer3/output/writer/pcm.cpp index 026a634..34ead9b 100644 --- a/libeplayer3/output/writer/pcm.cpp +++ b/libeplayer3/output/writer/pcm.cpp @@ -274,21 +274,12 @@ AVFrame *decoded_frame = NULL; int out_sample_rate = 44100; int out_channels = 2; uint64_t out_channel_layout = AV_CH_LAYOUT_STEREO; -int restart_audio_resampling = 0; +int restart_audio_resampling = 1; static int reset() { initialHeader = 1; - - if (swr) { - swr_free(&swr); - swr = NULL; //FIXME: Needed? - } - if (decoded_frame) { - av_frame_free(&decoded_frame); - decoded_frame = NULL; //FIXME: Needed? - } - + restart_audio_resampling = 1; return 0; } @@ -306,10 +297,16 @@ static int writeData(WriterAVCallData_t *call) if (restart_audio_resampling) { restart_audio_resampling = 0; - reset(); + initialHeader = 1; - call->context->output->Command(call->context, OUTPUT_CLEAR, NULL); - call->context->output->Command(call->context, OUTPUT_PLAY, NULL); + if (swr) { + swr_free(&swr); + swr = NULL; //FIXME: Needed? + } + if (decoded_frame) { + av_frame_free(&decoded_frame); + decoded_frame = NULL; //FIXME: Needed? + } AVCodec *codec = avcodec_find_decoder(c->codec_id); @@ -395,7 +392,7 @@ static int writeData(WriterAVCallData_t *call) int64_t next_out_pts = av_rescale(swr_next_pts(swr, next_in_pts), call->stream->time_base.den, call->stream->time_base.num * (int64_t) out_sample_rate * c->sample_rate); - *(call->context->currentAudioPtsP) = /* audioTrack->pts = */ pts = calcPts(call->avfc, call->stream, next_out_pts); + *(call->context->currentAudioPtsP) = pts = calcPts(call->avfc, call->stream, next_out_pts); out_samples = swr_convert(swr, &output, out_samples, (const uint8_t **) &decoded_frame->data[0], in_samples); uSampleRate = out_sample_rate;