双解码:
video_scaler=0 DispMainVideoScaler
video_scaler=1 DispVCRMultiScaler
设置各层顺序:
RMDispMainMixerPropertyID_LayerOrder
音频PTS的输出:
RUASetProperty:
demux_output:
RMDemuxOutputPropertyID_Open(profile.PtsFIFOCount=512)、RMDemuxOutputPropertyID_EnablePts(TRUE)
以下代码位于函数DCCOpenDemuxOutputWithResources
if ((*ppDemuxOutput)->data_type == EMhwlibData_ASpayload_pts)
{
RMbool send_audio_pts=TRUE;
//RMuint32 audio_ts_priority=0;
//enum DemuxOutputTrigger_type trigger = DemuxOutputTrigger_Pts;
err = RUASetProperty(pDemuxTask->pRUA, demux_output, RMDemuxOutputPropertyID_EnablePts,
&send_audio_pts, sizeof(send_audio_pts), 0 );
//err = RUASetProperty(pDemuxTask->pRUA, demux_output, RMDemuxOutputPropertyID_Trigger, &trigger,
sizeof(trigger), 0 );
//err = RUASetProperty(pDemuxTask->pRUA, demux_output, RMDemuxOutputPropertyID_TransportPriority,
&audio_ts_priority, sizeof(audio_ts_priority), 0 );
}
RUAGetProperty:
RMDemuxOutputPropertyID_Pts45kFifoEntry
以下代码位于函数SaveAudioCallback
while (1) {
struct DemuxOutput_Pts45kFifoEntry_type pts_entry;
err = RUAGetProperty(pDemuxTask->pRUA, pDemuxTask->output_array[i]->demux_output_id,
RMDemuxOutputPropertyID_Pts45kFifoEntry, &pts_entry, sizeof(pts_entry));
if (err == RM_OK) {
RMDBGLOG((ENABLE, "get pts=0x%lx bc=0x%lx/n", pts_entry.pts, pts_entry.byte_counter));
RMuint8 temp[4];
temp[0] = (RMuint8)(pts_entry.byte_counter>>24);
temp[1] = (RMuint8)(pts_entry.byte_counter>>16);
temp[2] = (RMuint8)(pts_entry.byte_counter>>8);
temp[3] = (RMuint8)(pts_entry.byte_counter>>0);
RMWriteFile(pHandle->playback_options.save_audiopts_file_handle, temp, 4, &written);
temp[0] = (RMuint8)(pts_entry.pts>>24);
temp[1] = (RMuint8)(pts_entry.pts>>16);
temp[2] = (RMuint8)(pts_entry.pts>>8);
temp[3] = (RMuint8)(pts_entry.pts>>0);
RMWriteFile(pHandle->playback_options.save_audiopts_file_handle, temp, 4, &written);
}
else
break;
}
SaveAudioCallback的原型改为
static void SaveAudioCallback(RMuint8 *pBuffer, RMuint32 size, void *context, RMuint32 i);
在函数_create_pes_output中
在if (pHandle->playback_options.save_audio_file_handle)函数块中
output_profile.profile.dma.PTSFIFOCount = RMlibplay_pes_output_parameters[output_parameters_index].pts_count;改为
output_profile.profile.dma.PTSFIFOCount = 512;
另外save_audiopts_file_handle自行添加。