[FFmpeg-cvslog] vorbiscomment: simplify API by using av_dict_count()

Anton Khirnov git at videolan.org
Wed May 28 13:16:43 CEST 2014


ffmpeg | branch: master | Anton Khirnov <anton at khirnov.net> | Mon May 26 13:30:10 2014 +0200| [efcde917af407a6031ecff68edd51fce7b83d104] | committer: Anton Khirnov

vorbiscomment: simplify API by using av_dict_count()

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

 libavformat/flacenc.c       |    6 +++---
 libavformat/oggenc.c        |    5 ++---
 libavformat/vorbiscomment.c |    8 +++-----
 libavformat/vorbiscomment.h |    7 ++-----
 4 files changed, 10 insertions(+), 16 deletions(-)

diff --git a/libavformat/flacenc.c b/libavformat/flacenc.c
index 021891d..0365764 100644
--- a/libavformat/flacenc.c
+++ b/libavformat/flacenc.c
@@ -49,12 +49,12 @@ static int flac_write_block_comment(AVIOContext *pb, AVDictionary **m,
                                     int last_block, int bitexact)
 {
     const char *vendor = bitexact ? "Libav" : LIBAVFORMAT_IDENT;
-    unsigned int len, count;
+    unsigned int len;
     uint8_t *p, *p0;
 
     ff_metadata_conv(m, ff_vorbiscomment_metadata_conv, NULL);
 
-    len = ff_vorbiscomment_length(*m, vendor, &count);
+    len = ff_vorbiscomment_length(*m, vendor);
     p0 = av_malloc(len+4);
     if (!p0)
         return AVERROR(ENOMEM);
@@ -62,7 +62,7 @@ static int flac_write_block_comment(AVIOContext *pb, AVDictionary **m,
 
     bytestream_put_byte(&p, last_block ? 0x84 : 0x04);
     bytestream_put_be24(&p, len);
-    ff_vorbiscomment_write(&p, m, vendor, count);
+    ff_vorbiscomment_write(&p, m, vendor);
 
     avio_write(pb, p0, len+4);
     av_freep(&p0);
diff --git a/libavformat/oggenc.c b/libavformat/oggenc.c
index e082a7e..97aba34 100644
--- a/libavformat/oggenc.c
+++ b/libavformat/oggenc.c
@@ -273,18 +273,17 @@ static uint8_t *ogg_write_vorbiscomment(int offset, int bitexact,
     const char *vendor = bitexact ? "Libav" : LIBAVFORMAT_IDENT;
     int size;
     uint8_t *p, *p0;
-    unsigned int count;
 
     ff_metadata_conv(m, ff_vorbiscomment_metadata_conv, NULL);
 
-    size = offset + ff_vorbiscomment_length(*m, vendor, &count) + framing_bit;
+    size = offset + ff_vorbiscomment_length(*m, vendor) + framing_bit;
     p = av_mallocz(size);
     if (!p)
         return NULL;
     p0 = p;
 
     p += offset;
-    ff_vorbiscomment_write(&p, m, vendor, count);
+    ff_vorbiscomment_write(&p, m, vendor);
     if (framing_bit)
         bytestream_put_byte(&p, 1);
 
diff --git a/libavformat/vorbiscomment.c b/libavformat/vorbiscomment.c
index 56936d7..ee06a57 100644
--- a/libavformat/vorbiscomment.c
+++ b/libavformat/vorbiscomment.c
@@ -37,28 +37,26 @@ const AVMetadataConv ff_vorbiscomment_metadata_conv[] = {
     { 0 }
 };
 
-int ff_vorbiscomment_length(AVDictionary *m, const char *vendor_string,
-                            unsigned *count)
+int ff_vorbiscomment_length(AVDictionary *m, const char *vendor_string)
 {
     int len = 8;
     len += strlen(vendor_string);
-    *count = 0;
     if (m) {
         AVDictionaryEntry *tag = NULL;
         while ((tag = av_dict_get(m, "", tag, AV_DICT_IGNORE_SUFFIX))) {
             len += 4 +strlen(tag->key) + 1 + strlen(tag->value);
-            (*count)++;
         }
     }
     return len;
 }
 
 int ff_vorbiscomment_write(uint8_t **p, AVDictionary **m,
-                           const char *vendor_string, const unsigned count)
+                           const char *vendor_string)
 {
     bytestream_put_le32(p, strlen(vendor_string));
     bytestream_put_buffer(p, vendor_string, strlen(vendor_string));
     if (*m) {
+        int count = av_dict_count(*m);
         AVDictionaryEntry *tag = NULL;
         bytestream_put_le32(p, count);
         while ((tag = av_dict_get(*m, "", tag, AV_DICT_IGNORE_SUFFIX))) {
diff --git a/libavformat/vorbiscomment.h b/libavformat/vorbiscomment.h
index 95e1a56..d9ec099 100644
--- a/libavformat/vorbiscomment.h
+++ b/libavformat/vorbiscomment.h
@@ -32,11 +32,9 @@
  * @param m The metadata structure to be parsed. For no metadata, set to NULL.
  * @param vendor_string The vendor string to be added into the VorbisComment.
  * For no string, set to an empty string.
- * @param count Pointer to store the number of tags in m because m->count is "not allowed"
  * @return The length in bytes.
  */
-int ff_vorbiscomment_length(AVDictionary *m, const char *vendor_string,
-                            unsigned *count);
+int ff_vorbiscomment_length(AVDictionary *m, const char *vendor_string);
 
 /**
  * Write a VorbisComment into a buffer. The buffer, p, must have enough
@@ -47,10 +45,9 @@ int ff_vorbiscomment_length(AVDictionary *m, const char *vendor_string,
  * @param p The buffer in which to write.
  * @param m The metadata struct to write.
  * @param vendor_string The vendor string to write.
- * @param count The number of tags in m because m->count is "not allowed"
  */
 int ff_vorbiscomment_write(uint8_t **p, AVDictionary **m,
-                           const char *vendor_string, const unsigned count);
+                           const char *vendor_string);
 
 extern const AVMetadataConv ff_vorbiscomment_metadata_conv[];
 



More information about the ffmpeg-cvslog mailing list