diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-10-12 15:16:53 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2012-10-12 15:34:49 +0200 |
commit | a33ed6bc74b6b8ada925c76c4084afcf8870a048 (patch) | |
tree | 605fa1fc8e55698f892837e7d0191da5e5c34c1c /libavformat/md5proto.c | |
parent | f391e405dfde35bfb3fea9ccc09bd67b5cc0a8f2 (diff) | |
parent | b7f1010c8fce09096057528f7cd29589ea1ae7df (diff) | |
download | ffmpeg-a33ed6bc74b6b8ada925c76c4084afcf8870a048.tar.gz |
Merge commit 'b7f1010c8fce09096057528f7cd29589ea1ae7df'
* commit 'b7f1010c8fce09096057528f7cd29589ea1ae7df':
tools: do not use av_pix_fmt_descriptors directly.
pixdesc: add functions for accessing pixel format descriptors.
build: add support for Tru64 (OSF/1)
md5: Allocate a normal private context for the opaque md5 context pointer
Conflicts:
cmdutils.c
doc/APIchanges
ffprobe.c
libavformat/md5enc.c
libavutil/version.h
tools/graph2dot.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat/md5proto.c')
-rw-r--r-- | libavformat/md5proto.c | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/libavformat/md5proto.c b/libavformat/md5proto.c index f7c8b78fee..6af0a6ed26 100644 --- a/libavformat/md5proto.c +++ b/libavformat/md5proto.c @@ -27,37 +27,41 @@ #include "avio.h" #include "url.h" -#define PRIV_SIZE 128 +struct MD5Context { + struct AVMD5 *md5; +}; static int md5_open(URLContext *h, const char *filename, int flags) { - if (PRIV_SIZE < av_md5_size) { - av_log(NULL, AV_LOG_ERROR, "Insuffient size for MD5 context\n"); - return -1; - } + struct MD5Context *c = h->priv_data; if (!(flags & AVIO_FLAG_WRITE)) return AVERROR(EINVAL); - av_md5_init(h->priv_data); + c->md5 = av_md5_alloc(); + if (!c->md5) + return AVERROR(ENOMEM); + av_md5_init(c->md5); return 0; } static int md5_write(URLContext *h, const unsigned char *buf, int size) { - av_md5_update(h->priv_data, buf, size); + struct MD5Context *c = h->priv_data; + av_md5_update(c->md5, buf, size); return size; } static int md5_close(URLContext *h) { + struct MD5Context *c = h->priv_data; const char *filename = h->filename; uint8_t md5[16], buf[64]; URLContext *out; int i, err = 0; - av_md5_final(h->priv_data, md5); + av_md5_final(c->md5, md5); for (i = 0; i < sizeof(md5); i++) snprintf(buf + i*2, 3, "%02x", md5[i]); buf[i*2] = '\n'; @@ -76,6 +80,8 @@ static int md5_close(URLContext *h) err = AVERROR(errno); } + av_freep(&c->md5); + return err; } @@ -85,5 +91,5 @@ URLProtocol ff_md5_protocol = { .url_open = md5_open, .url_write = md5_write, .url_close = md5_close, - .priv_data_size = PRIV_SIZE, + .priv_data_size = sizeof(struct MD5Context), }; |