dshow: show device name when outputting buffer overflow log message
authorrogerdpack <rogerpack2005@gmail.com>
Thu, 27 Mar 2014 19:44:20 +0000 (13:44 -0600)
committerMichael Niedermayer <michaelni@gmx.at>
Thu, 27 Mar 2014 23:22:55 +0000 (00:22 +0100)
Signed-off-by: rogerdpack <rogerpack2005@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavdevice/dshow.c
libavdevice/dshow_capture.h
libavdevice/dshow_pin.c

index 5d4e87c..adf36a7 100644 (file)
@@ -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));
index aff5019..e4b4dce 100644 (file)
@@ -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 **);
index 30e4d95..1c0dca2 100644 (file)
@@ -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;
 }