summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorXiang, Haihao <haihao.xiang@intel.com>2011-06-29 13:02:05 +0800
committerXiang, Haihao <haihao.xiang@intel.com>2013-05-28 16:46:47 +0800
commitf2c1578d7e5ccc8881894dbebce886116d826419 (patch)
treec99c311cd751071158ec6da515d101a0db5a137e /test
parentb2ac803864e223e55d6c656fe3e244f020e7a449 (diff)
test/encode/avcenc: directly save slice data
Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
Diffstat (limited to 'test')
-rw-r--r--test/encode/avcenc.c30
1 files changed, 27 insertions, 3 deletions
diff --git a/test/encode/avcenc.c b/test/encode/avcenc.c
index 07ec156..1d06ec1 100644
--- a/test/encode/avcenc.c
+++ b/test/encode/avcenc.c
@@ -795,8 +795,6 @@ slice_header(bitstream *bs, int frame_num, int display_frame, int slice_type, in
}
}
-#endif
-
static void
slice_data(bitstream *bs)
{
@@ -837,10 +835,36 @@ build_nal_slice(FILE *avc_fp, int frame_num, int display_frame, int slice_type,
bitstream_end(&bs, avc_fp);
}
+#endif
+
static void
store_coded_buffer(FILE *avc_fp, int frame_num, int display_frame, int slice_type, int is_idr)
{
- build_nal_slice(avc_fp, frame_num, display_frame, slice_type, is_idr);
+ VACodedBufferSegment *coded_buffer_segment;
+ unsigned char *coded_mem;
+ int slice_data_length;
+ VAStatus va_status;
+ VASurfaceStatus surface_status;
+ size_t w_items;
+
+ va_status = vaSyncSurface(va_dpy, surface_ids[SID_INPUT_PICTURE]);
+ CHECK_VASTATUS(va_status,"vaSyncSurface");
+
+ surface_status = 0;
+ va_status = vaQuerySurfaceStatus(va_dpy, surface_ids[SID_INPUT_PICTURE], &surface_status);
+ CHECK_VASTATUS(va_status,"vaQuerySurfaceStatus");
+
+ va_status = vaMapBuffer(va_dpy, avcenc_context.codedbuf_buf_id, (void **)(&coded_buffer_segment));
+ CHECK_VASTATUS(va_status,"vaMapBuffer");
+ coded_mem = coded_buffer_segment->buf;
+
+ slice_data_length = get_coded_bitsteam_length(coded_mem, codedbuf_size);
+
+ do {
+ w_items = fwrite(coded_mem, slice_data_length, 1, avc_fp);
+ } while (w_items != 1);
+
+ vaUnmapBuffer(va_dpy, avcenc_context.codedbuf_buf_id);
}
static void