summaryrefslogtreecommitdiff
path: root/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp')
-rw-r--r--mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp57
1 files changed, 11 insertions, 46 deletions
diff --git a/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp b/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp
index 032c7a83..987f8b9e 100644
--- a/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp
+++ b/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp
@@ -1933,7 +1933,7 @@ OMX_ERRORTYPE omx_vdec::is_video_session_supported()
return OMX_ErrorNone;
}
-int omx_vdec::log_input_buffers(const char *buffer_addr, int buffer_len)
+int omx_vdec::log_input_buffers(const char *buffer_addr, int buffer_len, uint64_t timeStamp)
{
if (m_debug.in_buffer_log && !m_debug.infile) {
if(!strncmp(drv_ctx.kind,"OMX.qcom.video.decoder.mpeg2", OMX_MAX_STRINGNAME_SIZE)) {
@@ -1965,55 +1965,20 @@ int omx_vdec::log_input_buffers(const char *buffer_addr, int buffer_len)
}
if (!strncmp(drv_ctx.kind, "OMX.qcom.video.decoder.vp8", OMX_MAX_STRINGNAME_SIZE) ||
!strncmp(drv_ctx.kind, "OMX.qcom.video.decoder.vp9", OMX_MAX_STRINGNAME_SIZE)) {
- struct ivf_file_header {
- OMX_U8 signature[4]; //='DKIF';
- OMX_U8 version ; //= 0;
- OMX_U8 headersize ; //= 32;
- OMX_U32 FourCC;
- OMX_U8 width;
- OMX_U8 height;
- OMX_U32 rate;
- OMX_U32 scale;
- OMX_U32 length;
- OMX_U8 unused[4];
- } file_header;
-
- memset((void *)&file_header,0,sizeof(file_header));
- file_header.signature[0] = 'D';
- file_header.signature[1] = 'K';
- file_header.signature[2] = 'I';
- file_header.signature[3] = 'F';
- file_header.version = 0;
- file_header.headersize = 32;
- switch (drv_ctx.decoder_format) {
- case VDEC_CODECTYPE_VP8:
- file_header.FourCC = 0x30385056;
- break;
- case VDEC_CODECTYPE_VP9:
- file_header.FourCC = 0x30395056;
- break;
- default:
- DEBUG_PRINT_ERROR("unsupported format for VP8/VP9");
- break;
- }
- fwrite((const char *)&file_header,
- sizeof(file_header),1,m_debug.infile);
+ bool isVp9 = drv_ctx.decoder_format == VDEC_CODECTYPE_VP9;
+ int width = drv_ctx.video_resolution.frame_width;
+ int height = drv_ctx.video_resolution.frame_height;
+ int fps = drv_ctx.frame_rate.fps_numerator;
+ IvfFileHeader ivfHeader(isVp9, width, height, 1, fps, 0);
+ fwrite((const char *)&ivfHeader,
+ sizeof(ivfHeader),1,m_debug.infile);
}
}
if (m_debug.infile && buffer_addr && buffer_len) {
if (!strncmp(drv_ctx.kind, "OMX.qcom.video.decoder.vp8", OMX_MAX_STRINGNAME_SIZE) ||
!strncmp(drv_ctx.kind, "OMX.qcom.video.decoder.vp9", OMX_MAX_STRINGNAME_SIZE)) {
- struct vpx_ivf_frame_header {
- OMX_U32 framesize;
- OMX_U32 timestamp_lo;
- OMX_U32 timestamp_hi;
- } vpx_frame_header;
- vpx_frame_header.framesize = buffer_len;
- /* Currently FW doesn't use timestamp values */
- vpx_frame_header.timestamp_lo = 0;
- vpx_frame_header.timestamp_hi = 0;
- fwrite((const char *)&vpx_frame_header,
- sizeof(vpx_frame_header),1,m_debug.infile);
+ IvfFrameHeader ivfFrameHeader(buffer_len, timeStamp);
+ fwrite(&ivfFrameHeader, sizeof(ivfFrameHeader), 1, m_debug.infile);
}
fwrite(buffer_addr, buffer_len, 1, m_debug.infile);
}
@@ -6953,7 +6918,7 @@ OMX_ERRORTYPE omx_vdec::empty_this_buffer_proxy(OMX_IN OMX_HANDLETYPE hComp,
handle_demux_data(buffer);
}
- log_input_buffers((const char *)temp_buffer->bufferaddr, temp_buffer->buffer_len);
+ log_input_buffers((const char *)temp_buffer->bufferaddr, temp_buffer->buffer_len, buffer->nTimeStamp);
if (buffer->nFlags & QOMX_VIDEO_BUFFERFLAG_EOSEQ) {
buffer->nFlags &= ~QOMX_VIDEO_BUFFERFLAG_EOSEQ;