/*init new dvb audio struct for Sigma HW*/
struct audio_data audio_data_t={0};
/*check if Sigma driver finished decoding full stream*/
struct audio_eof_status eof_status={0};
/*sample rate of the audio file */
audio_data_t.SampleRate = 44100;
/*Channel settings */
audio_data_t.OutputChannels = Audio_Out_Ch_LR;
/* SPIDF */
audio_data_t.Spdif = OutputSpdif_Uncompressed;
/* Set Audio Codec */
audio_data_t.Codec = AudioDecoder_Codec_MPEG1;
/* Infos For Sigma HW MPEG audio codec */
audio_data_t.MpegParams.OutputSpdif = audio_data_t.Spdif;
audio_data_t.MpegParams.OutputSurround20 = SurroundAsStream;
audio_data_t.MpegParams.Acmod2DualMode = FALSE;
audio_data_t.MpegParams.OutputDualMode = DualMode_Stereo;
audio_data_t.MpegParams.OutputChannels = Audio_Out_Ch_LR;
audio_data_t.MpegParams.BassMode = 0;
audio_data_t.MpegParams.OutputLfe = FALSE;
fd=open("/dev/dvb/adapter0/audio0"......
ioctl(fd,AUDIO_SOURCE_MEMORY);
ioctl(fd,AUDIO_SET_CODEC, &audio_data_t);
ioctl(fd,AUDIO_PLAY);
while NOT EOF of the audio file
{
read from audio file
write(fd,buf,count); //send buf to dvb audio driver
}
EOF, all stream data has been sent to driver
/*check if Sigma driver finished decoding full stream*/
ioctl(fd,AUDIO_GET_EOF_STATUS, &eof_status);
if(eof_status != 1)
sleep some time, repeat ioctl again, till you got 1
ioctl(fd,AUDIO_STOP,0);