[FFmpeg-cvslog] hevcdec: move the MD5 context out of HEVCSEIPictureHash back into HEVCContext

Anton Khirnov git at videolan.org
Tue Oct 31 17:56:35 EET 2017


ffmpeg | branch: master | Anton Khirnov <anton at khirnov.net> | Fri May 12 16:36:41 2017 +0200| [c3f0357bdf7d3c542aad2c58b94184b9f56edc41] | committer: Anton Khirnov

hevcdec: move the MD5 context out of HEVCSEIPictureHash back into HEVCContext

HEVCSEIPictureHash should store only the information extracted from the
bitstream and exported to the higher layer (the decoder or the parser).
The MD5 context is allocated, used and freed by this higher layer, so it
makes more sense for it to also be stored there.

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

 libavcodec/hevc_sei.h |  3 ---
 libavcodec/hevcdec.c  | 12 ++++++------
 libavcodec/hevcdec.h  |  2 ++
 3 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/libavcodec/hevc_sei.h b/libavcodec/hevc_sei.h
index bdc283adb4..b699fef45d 100644
--- a/libavcodec/hevc_sei.h
+++ b/libavcodec/hevc_sei.h
@@ -23,8 +23,6 @@
 
 #include <stdint.h>
 
-#include "libavutil/md5.h"
-
 #include "get_bits.h"
 
 /**
@@ -59,7 +57,6 @@ typedef enum {
 } HEVC_SEI_Type;
 
 typedef struct HEVCSEIPictureHash {
-    struct AVMD5 *md5_ctx;
     uint8_t       md5[3][16];
     uint8_t is_md5;
 } HEVCSEIPictureHash;
diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c
index 96e47cd187..69d5908551 100644
--- a/libavcodec/hevcdec.c
+++ b/libavcodec/hevcdec.c
@@ -2683,7 +2683,7 @@ static int verify_md5(HEVCContext *s, AVFrame *frame)
         int h = (i == 1 || i == 2) ? (height >> desc->log2_chroma_h) : height;
         uint8_t md5[16];
 
-        av_md5_init(s->sei.picture_hash.md5_ctx);
+        av_md5_init(s->md5_ctx);
         for (j = 0; j < h; j++) {
             const uint8_t *src = frame->data[i] + j * frame->linesize[i];
 #if HAVE_BIGENDIAN
@@ -2693,9 +2693,9 @@ static int verify_md5(HEVCContext *s, AVFrame *frame)
                 src = s->checksum_buf;
             }
 #endif
-            av_md5_update(s->sei.picture_hash.md5_ctx, src, w << pixel_shift);
+            av_md5_update(s->md5_ctx, src, w << pixel_shift);
         }
-        av_md5_final(s->sei.picture_hash.md5_ctx, md5);
+        av_md5_final(s->md5_ctx, md5);
 
         if (!memcmp(md5, s->sei.picture_hash.md5[i], 16)) {
             av_log   (s->avctx, AV_LOG_DEBUG, "plane %d - correct ", i);
@@ -2893,7 +2893,7 @@ static av_cold int hevc_decode_free(AVCodecContext *avctx)
 
     pic_arrays_free(s);
 
-    av_freep(&s->sei.picture_hash.md5_ctx);
+    av_freep(&s->md5_ctx);
 
     av_frame_free(&s->tmp_frame);
     av_frame_free(&s->output_frame);
@@ -2939,8 +2939,8 @@ static av_cold int hevc_init_context(AVCodecContext *avctx)
 
     s->max_ra = INT_MAX;
 
-    s->sei.picture_hash.md5_ctx = av_md5_alloc();
-    if (!s->sei.picture_hash.md5_ctx)
+    s->md5_ctx = av_md5_alloc();
+    if (!s->md5_ctx)
         goto fail;
 
     ff_bswapdsp_init(&s->bdsp);
diff --git a/libavcodec/hevcdec.h b/libavcodec/hevcdec.h
index f2c589217f..7adb826e72 100644
--- a/libavcodec/hevcdec.h
+++ b/libavcodec/hevcdec.h
@@ -27,6 +27,7 @@
 #include <stdint.h>
 
 #include "libavutil/buffer.h"
+#include "libavutil/md5.h"
 
 #include "avcodec.h"
 #include "bswapdsp.h"
@@ -462,6 +463,7 @@ typedef struct HEVCContext {
 
     HEVCParamSets ps;
     HEVCSEI sei;
+    struct AVMD5 *md5_ctx;
 
     AVBufferPool *tab_mvf_pool;
     AVBufferPool *rpl_tab_pool;



More information about the ffmpeg-cvslog mailing list