diff options
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.cpp | 57 |
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; |