diff --git a/.gitignore b/.gitignore index 4b14fb9..8a46597 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ /m4/ /autom4te.cache/ /aclocal.m4 +/compile /config.guess /config.h.in /config.h.in~ diff --git a/libeplayer3/input.cpp b/libeplayer3/input.cpp index c243d30..9ab4b76 100644 --- a/libeplayer3/input.cpp +++ b/libeplayer3/input.cpp @@ -262,10 +262,22 @@ bool Input::Play() return res; } +static std::string lastlog_message; +static unsigned int lastlog_repeats; + static void log_callback(void *ptr __attribute__ ((unused)), int lvl __attribute__ ((unused)), const char *format, va_list ap) { -// if (debug_level > 10) - vfprintf(stderr, format, ap); + char m[1024]; + if (sizeof(m) - 1 > (unsigned int) vsnprintf(m, sizeof(m), format, ap)) { + if (lastlog_message.compare(m) || lastlog_repeats > 999) { + if (lastlog_repeats) + fprintf(stderr, "last message repeated %u times\n", lastlog_repeats); + lastlog_message = m; + lastlog_repeats = 0; + fprintf(stderr, "%s", m); + } else + lastlog_repeats++; + } } bool Input::ReadSubtitle(const char *filename, const char *format, int pid) diff --git a/libeplayer3/writer/pcm.cpp b/libeplayer3/writer/pcm.cpp index 12872e7..413b7d6 100644 --- a/libeplayer3/writer/pcm.cpp +++ b/libeplayer3/writer/pcm.cpp @@ -311,8 +311,11 @@ bool WriterPCM::Write(AVPacket *packet, int64_t pts) break; } + if (packet->data) + packet_size -= len; + if (!got_frame) { - if (!packet->data) + if (!packet->data || !packet_size) break; continue; } @@ -338,9 +341,6 @@ bool WriterPCM::Write(AVPacket *packet, int64_t pts) } pts = 0; - - if (packet->data) - packet_size -= len; } return !packet_size; }