summaryrefslogtreecommitdiffstats
path: root/libavcodec
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2017-05-12 16:36:41 +0200
committerAnton Khirnov <anton@khirnov.net>2017-05-20 09:41:30 +0200
commitc3f0357bdf7d3c542aad2c58b94184b9f56edc41 (patch)
tree474d0e74b585fafe784c8d98006eaf6876415f48 /libavcodec
parentd7dcd825dea3681c69a35b3147a3b42f1bf078dd (diff)
downloadffmpeg-streaming-c3f0357bdf7d3c542aad2c58b94184b9f56edc41.zip
ffmpeg-streaming-c3f0357bdf7d3c542aad2c58b94184b9f56edc41.tar.gz
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.
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/hevc_sei.h3
-rw-r--r--libavcodec/hevcdec.c12
-rw-r--r--libavcodec/hevcdec.h2
3 files changed, 8 insertions, 9 deletions
diff --git a/libavcodec/hevc_sei.h b/libavcodec/hevc_sei.h
index bdc283a..b699fef 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 96e47cd..69d5908 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 f2c5892..7adb826 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;
OpenPOWER on IntegriCloud