示例#1
0
int iec958buf_fill_zero()
{
   int zero_filled_cnt=0,i2s_status=0,write_ret=0;
   char zerobuf[2048]={0};
   ioctl(dev_fd, AUDIO_SPDIF_GET_I2S_ENABLE_STATUS, &i2s_status);
   while((zero_filled_cnt<iec958_buffer_size) && i2s_status )
   {
       write_ret=iec958_packed_frame_write_958buf(zerobuf,2048);
	   if(write_ret)
	     break;
	   zero_filled_cnt+=2048;
	   ioctl(dev_fd, AUDIO_SPDIF_GET_I2S_ENABLE_STATUS, &i2s_status);
   }
   return 0;

}
示例#2
0
int dts_transenc_process_frame()
{
	int				rv;
	if(write_success_flag)
	{
        	   rv=pcmenc_read_pcm(stream, input_size);//xujian
               if(rv==0)/* no enough pcm data in the buffer */
               {
                    //adec_print("=====read data failed :%d input_size:%d  \n",rv,input_size);
                    if(iec958_check_958buf_level() == 0){
						adec_print("transenc:insert zero pcm data \n"); 
						memset(stream,0,input_size);//insert zero pcm data when 958 hw buffer underrun
                    }
					else{
                    	usleep(1000);
                    	return -1;
					}	
                }
                #ifdef DUMP_FILE
                FILE *fp1=fopen("/mnt/sda4/a.pcm","a+");
                fwrite(stream,1,input_size,fp1);
                fclose(fp1);
                #endif
                
        	rv = enc_ops.enc_encode(dts_transenc_info, stream, output, &output_size);//encode frame
        	#ifdef DUMP_FILE
                FILE *fp2=fopen("/mnt/sda4/a.dts","a+");
                fwrite(output,1,output_size,fp2);
                fclose(fp2);
                #endif
        	rv = iec958_pack_frame(output, output_size);
	}
	rv = iec958_packed_frame_write_958buf(output, output_size);
	if(rv==-1){
	    write_success_flag=0;
	    usleep(1000);
	}	
	else
	    write_success_flag=1;
	
	//adec_print("===pack frame write 958 ret:%d size:%d  \n",rv,output_size);
	return 1;
}