[FFmpeg-cvslog] dshow: show device name when outputting buffer overflow log message

rogerdpack git at videolan.org
Fri Mar 28 03:23:17 CET 2014


ffmpeg | branch: master | rogerdpack <rogerpack2005 at gmail.com> | Thu Mar 27 13:44:20 2014 -0600| [773eb74babe07bc5c97c32aa564efc40e2d4b00c] | committer: Michael Niedermayer

dshow: show device name when outputting buffer overflow log message

Signed-off-by: rogerdpack <rogerpack2005 at gmail.com>
Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

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

 libavdevice/dshow.c         |    8 ++++----
 libavdevice/dshow_capture.h |    2 +-
 libavdevice/dshow_pin.c     |    2 +-
 3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/libavdevice/dshow.c b/libavdevice/dshow.c
index 5d4e87c..adf36a7 100644
--- a/libavdevice/dshow.c
+++ b/libavdevice/dshow.c
@@ -180,7 +180,7 @@ static char *dup_wchar_to_utf8(wchar_t *w)
     return s;
 }
 
-static int shall_we_drop(AVFormatContext *s, int index)
+static int shall_we_drop(AVFormatContext *s, int index, enum dshowDeviceType devtype)
 {
     struct dshow_ctx *ctx = s->priv_data;
     static const uint8_t dropscore[] = {62, 75, 87, 100};
@@ -189,7 +189,7 @@ static int shall_we_drop(AVFormatContext *s, int index)
 
     if(dropscore[++ctx->video_frame_num%ndropscores] <= buffer_fullness) {
         av_log(s, AV_LOG_ERROR,
-              "real-time buffer[%d] too full (%d%% of size: %d)! frame dropped!\n", index, buffer_fullness, s->max_picture_buffer);
+              "real-time buffer[%s] too full (%d%% of size: %d)! frame dropped!\n", ctx->device_name[devtype], buffer_fullness, s->max_picture_buffer);
         return 1;
     }
 
@@ -197,7 +197,7 @@ static int shall_we_drop(AVFormatContext *s, int index)
 }
 
 static void
-callback(void *priv_data, int index, uint8_t *buf, int buf_size, int64_t time)
+callback(void *priv_data, int index, uint8_t *buf, int buf_size, int64_t time, enum dshowDeviceType devtype)
 {
     AVFormatContext *s = priv_data;
     struct dshow_ctx *ctx = s->priv_data;
@@ -207,7 +207,7 @@ callback(void *priv_data, int index, uint8_t *buf, int buf_size, int64_t time)
 
     WaitForSingleObject(ctx->mutex, INFINITE);
 
-    if(shall_we_drop(s, index))
+    if(shall_we_drop(s, index, devtype))
         goto fail;
 
     pktl_next = av_mallocz(sizeof(AVPacketList));
diff --git a/libavdevice/dshow_capture.h b/libavdevice/dshow_capture.h
index aff5019..e4b4dce 100644
--- a/libavdevice/dshow_capture.h
+++ b/libavdevice/dshow_capture.h
@@ -254,7 +254,7 @@ struct libAVFilter {
     void *priv_data;
     int stream_index;
     int64_t start_time;
-    void (*callback)(void *priv_data, int index, uint8_t *buf, int buf_size, int64_t time);
+    void (*callback)(void *priv_data, int index, uint8_t *buf, int buf_size, int64_t time, enum dshowDeviceType type);
 };
 
 long          WINAPI libAVFilter_QueryInterface (libAVFilter *, const GUID *, void **);
diff --git a/libavdevice/dshow_pin.c b/libavdevice/dshow_pin.c
index 30e4d95..1c0dca2 100644
--- a/libavdevice/dshow_pin.c
+++ b/libavdevice/dshow_pin.c
@@ -328,7 +328,7 @@ libAVMemInputPin_Receive(libAVMemInputPin *this, IMediaSample *sample)
     priv_data = pin->filter->priv_data;
     index = pin->filter->stream_index;
 
-    pin->filter->callback(priv_data, index, buf, buf_size, curtime);
+    pin->filter->callback(priv_data, index, buf, buf_size, curtime, devtype);
 
     return S_OK;
 }



More information about the ffmpeg-cvslog mailing list