diff options
author | Xiang, Haihao <haihao.xiang@intel.com> | 2011-06-29 13:02:05 +0800 |
---|---|---|
committer | Xiang, Haihao <haihao.xiang@intel.com> | 2013-05-28 16:46:47 +0800 |
commit | f2c1578d7e5ccc8881894dbebce886116d826419 (patch) | |
tree | c99c311cd751071158ec6da515d101a0db5a137e /test | |
parent | b2ac803864e223e55d6c656fe3e244f020e7a449 (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.c | 30 |
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 |