summaryrefslogtreecommitdiff
Diffstat
-rw-r--r--drivers/frame_provider/decoder/h265/vh265.c59
-rw-r--r--drivers/frame_provider/decoder/utils/vdec.h4
-rw-r--r--drivers/frame_provider/decoder/utils/vdec_input.c20
-rw-r--r--drivers/frame_provider/decoder/utils/vdec_input.h2
-rw-r--r--drivers/frame_provider/decoder/vp9/vvp9.c45
-rw-r--r--drivers/stream_input/amports/amstream.c20
6 files changed, 149 insertions, 1 deletions
diff --git a/drivers/frame_provider/decoder/utils/vdec_input.c b/drivers/frame_provider/decoder/utils/vdec_input.c
index 284dc02..d10a9bc 100644
--- a/drivers/frame_provider/decoder/utils/vdec_input.c
+++ b/drivers/frame_provider/decoder/utils/vdec_input.c
@@ -864,6 +864,26 @@ int vdec_input_add_chunk(struct vdec_input_s *input, const char *buf,
return -ENOMEM;
}
+ if ((vdec->hdr10p_data_valid == true) &&
+ (vdec->hdr10p_data_size != 0)) {
+ char *new_buf;
+ new_buf = vzalloc(vdec->hdr10p_data_size);
+ if (new_buf) {
+ memcpy(new_buf, vdec->hdr10p_data_buf, vdec->hdr10p_data_size);
+ chunk->hdr10p_data_buf = new_buf;
+ chunk->hdr10p_data_size = vdec->hdr10p_data_size;
+ } else {
+ pr_err("%s:hdr10p data vzalloc size(%d) failed\n",
+ __func__, vdec->hdr10p_data_size);
+ chunk->hdr10p_data_buf = NULL;
+ chunk->hdr10p_data_size = 0;
+ }
+ } else {
+ chunk->hdr10p_data_buf = NULL;
+ chunk->hdr10p_data_size = 0;
+ }
+ vdec->hdr10p_data_valid = false;
+
chunk->magic = 0x4b554843;
if (vdec->pts_valid) {
chunk->pts = vdec->pts;