[FFmpeg-cvslog] dshow: tweak logging

rogerdpack git at videolan.org
Mon Jan 26 15:00:01 CET 2015


ffmpeg | branch: master | rogerdpack <rogerpack2005 at gmail.com> | Mon Jan 26 02:03:48 2015 -0700| [61974c7dcca833687d4f3834c7e8200a63a7b4af] | committer: rogerdpack

dshow: tweak logging

Signed-off-by: rogerdpack <rogerpack2005 at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=61974c7dcca833687d4f3834c7e8200a63a7b4af
---

 libavdevice/dshow.c     |    4 ++--
 libavdevice/dshow_pin.c |   12 +++++++++---
 2 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/libavdevice/dshow.c b/libavdevice/dshow.c
index 9ca2519..d03670e 100644
--- a/libavdevice/dshow.c
+++ b/libavdevice/dshow.c
@@ -1044,7 +1044,7 @@ static int dshow_read_header(AVFormatContext *avctx)
     if (ctx->device_name[AudioDevice]) {
         if ((r = dshow_open_device(avctx, devenum, AudioDevice, AudioSourceDevice)) < 0 ||
             (r = dshow_add_device(avctx, AudioDevice)) < 0) {
-            av_log(avctx, AV_LOG_INFO, "Searching for audio device within video devices %s\n", ctx->device_name[AudioDevice]);
+            av_log(avctx, AV_LOG_INFO, "Searching for audio device within video devices for %s\n", ctx->device_name[AudioDevice]);
             /* see if there's a video source with an audio pin with the given audio name */
             if ((r = dshow_open_device(avctx, devenum, AudioDevice, VideoSourceDevice)) < 0 ||
                 (r = dshow_add_device(avctx, AudioDevice)) < 0) {
@@ -1104,7 +1104,7 @@ static int dshow_read_header(AVFormatContext *avctx)
         r = IMediaControl_GetState(control, 0, &pfs);
     }
     if (r != S_OK) {
-        av_log(avctx, AV_LOG_ERROR, "Could not run filter\n");
+        av_log(avctx, AV_LOG_ERROR, "Could not run graph (sometimes caused by a device already in use by other application)\n");
         goto error;
     }
 
diff --git a/libavdevice/dshow_pin.c b/libavdevice/dshow_pin.c
index 5904c28..4f719a6 100644
--- a/libavdevice/dshow_pin.c
+++ b/libavdevice/dshow_pin.c
@@ -304,21 +304,25 @@ libAVMemInputPin_Receive(libAVMemInputPin *this, IMediaSample *sample)
     enum dshowDeviceType devtype = pin->filter->type;
     void *priv_data;
     uint8_t *buf;
-    int buf_size;
+    int buf_size; /* todo should be a long? */
     int index;
     int64_t curtime;
+    int64_t orig_curtime;
+    const char *devtypename = (devtype == VideoDevice) ? "video" : "audio";
+    IReferenceClock *clock = pin->filter->clock;
+    int64_t dummy;
 
     dshowdebug("libAVMemInputPin_Receive(%p)\n", this);
 
     if (!sample)
         return E_POINTER;
 
+    IMediaSample_GetTime(sample, &orig_curtime, &dummy);
+    orig_curtime += pin->filter->start_time;
     if (devtype == VideoDevice) {
         /* PTS from video devices is unreliable. */
-        IReferenceClock *clock = pin->filter->clock;
         IReferenceClock_GetTime(clock, &curtime);
     } else {
-        int64_t dummy;
         IMediaSample_GetTime(sample, &curtime, &dummy);
         if(curtime > 400000000000000000LL) {
             /* initial frames sometimes start < 0 (shown as a very large number here,
@@ -336,6 +340,8 @@ libAVMemInputPin_Receive(libAVMemInputPin *this, IMediaSample *sample)
     priv_data = pin->filter->priv_data;
     index = pin->filter->stream_index;
 
+    av_log(NULL, AV_LOG_VERBOSE, "dshow passing through packet of type %s size %6d timestamp %"PRId64" orig timestamp %"PRId64"\n",
+           devtypename, buf_size, curtime, orig_curtime);
     pin->filter->callback(priv_data, index, buf, buf_size, curtime, devtype);
 
     return S_OK;



More information about the ffmpeg-cvslog mailing list