diff --git a/doc/APIchanges b/doc/APIchanges
index 436e994149e139a86b3abf3fe39a41d98522761f..b723e1062d18b5411daaaa5e15966da72e1a8a0f 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -13,6 +13,9 @@ libavutil:     2011-04-18
 
 API changes, most recent first:
 
+2012-08-08 - xxxxxxx - lavu 51.38 - dict.h
+  Add av_dict_count().
+
 2012-08-xx - xxxxxxx - lavc 54.25 - avcodec.h
   Rename CodecID to AVCodecID and all CODEC_ID_* to AV_CODEC_ID_*.
 
diff --git a/libavformat/asfenc.c b/libavformat/asfenc.c
index 7c824a5db4657892403051a2964e7d408dae6333..bcb741e04d56bc776b3989811b9e965282fab8fc 100644
--- a/libavformat/asfenc.c
+++ b/libavformat/asfenc.c
@@ -316,7 +316,7 @@ static int asf_write_header1(AVFormatContext *s, int64_t file_size, int64_t data
 
     duration = asf->duration + PREROLL_TIME * 10000;
     has_title = tags[0] || tags[1] || tags[2] || tags[3] || tags[4];
-    metadata_count = s->metadata ? s->metadata->count : 0;
+    metadata_count = av_dict_count(s->metadata);
 
     bit_rate = 0;
     for(n=0;n<s->nb_streams;n++) {
diff --git a/libavformat/utils.c b/libavformat/utils.c
index 435ffc1c68bc9ba8625bb67469cc1bbf9d98d8ac..b850abfe1dd6deb988d9e954b96242cded67de82 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -3306,7 +3306,7 @@ static void print_fps(double d, const char *postfix){
 
 static void dump_metadata(void *ctx, AVDictionary *m, const char *indent)
 {
-    if(m && !(m->count == 1 && av_dict_get(m, "language", NULL, 0))){
+    if(m && !(av_dict_count(m) == 1 && av_dict_get(m, "language", NULL, 0))){
         AVDictionaryEntry *tag=NULL;
 
         av_log(ctx, AV_LOG_INFO, "%sMetadata:\n", indent);
diff --git a/libavutil/dict.c b/libavutil/dict.c
index cb5f7b160fe24c48df1b457d0195c05c8b0ed3ef..1344613fa965c1d628f0829111d22e4c561f9679 100644
--- a/libavutil/dict.c
+++ b/libavutil/dict.c
@@ -23,6 +23,11 @@
 #include "internal.h"
 #include "mem.h"
 
+int av_dict_count(const AVDictionary *m)
+{
+    return m ? m->count : 0;
+}
+
 AVDictionaryEntry *
 av_dict_get(AVDictionary *m, const char *key, const AVDictionaryEntry *prev, int flags)
 {
diff --git a/libavutil/dict.h b/libavutil/dict.h
index aa076265353fdb7d1cb7e991a9b41349339c641e..72d1e9d25b56e4f43570dfc24b56b558fc647881 100644
--- a/libavutil/dict.h
+++ b/libavutil/dict.h
@@ -86,6 +86,14 @@ typedef struct AVDictionary AVDictionary;
 AVDictionaryEntry *
 av_dict_get(AVDictionary *m, const char *key, const AVDictionaryEntry *prev, int flags);
 
+/**
+ * Get number of entries in dictionary.
+ *
+ * @param m dictionary
+ * @return  number of entries in dictionary
+ */
+int av_dict_count(const AVDictionary *m);
+
 /**
  * Set the given entry in *pm, overwriting an existing entry.
  *
diff --git a/libavutil/version.h b/libavutil/version.h
index bd60d3f282c426b3e434dff9c1caf6a99f9ff20a..de5731a5a5744a273ff1a10c43c2713943d67e9b 100644
--- a/libavutil/version.h
+++ b/libavutil/version.h
@@ -37,8 +37,8 @@
  */
 
 #define LIBAVUTIL_VERSION_MAJOR 51
-#define LIBAVUTIL_VERSION_MINOR 37
-#define LIBAVUTIL_VERSION_MICRO  1
+#define LIBAVUTIL_VERSION_MINOR 38
+#define LIBAVUTIL_VERSION_MICRO  0
 
 #define LIBAVUTIL_VERSION_INT   AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
                                                LIBAVUTIL_VERSION_MINOR, \